diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-01-29 07:42:19 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-01-29 07:42:19 +0400 |
commit | fe26492538edefe60a342bce109e17b9536e5a16 (patch) | |
tree | df81d2485abd06be9cd2f4536a661b05153dff94 /intern | |
parent | 8f969fdc40cded16ec58f6810585411adbb5538d (diff) | |
parent | cf9e619889fdcdc457e44d4b384cda091de55673 (diff) |
Merged changes in the trunk up to revision 54171.
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/blender/addon/__init__.py | 21 | ||||
-rw-r--r-- | intern/cycles/blender/addon/engine.py | 4 | ||||
-rw-r--r-- | intern/cycles/blender/addon/ui.py | 3 | ||||
-rw-r--r-- | intern/cycles/blender/blender_python.cpp | 15 | ||||
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 9 | ||||
-rw-r--r-- | intern/guardedalloc/intern/mallocn.c | 10 |
6 files changed, 46 insertions, 16 deletions
diff --git a/intern/cycles/blender/addon/__init__.py b/intern/cycles/blender/addon/__init__.py index 36fb5c0418d..16cfdca8977 100644 --- a/intern/cycles/blender/addon/__init__.py +++ b/intern/cycles/blender/addon/__init__.py @@ -39,6 +39,7 @@ class CyclesRender(bpy.types.RenderEngine): bl_idname = 'CYCLES' bl_label = "Cycles Render" bl_use_shading_nodes = True + bl_use_preview = True def __init__(self): self.session = None @@ -48,23 +49,23 @@ class CyclesRender(bpy.types.RenderEngine): # final render def update(self, data, scene): - if not self.session: - engine.create(self, data, scene) + if self.is_preview: + if not self.session: + use_osl = bpy.context.scene.cycles.shading_system + + engine.create(self, data, scene, + None, None, None, use_osl) else: - engine.reset(self, data, scene) + if not self.session: + engine.create(self, data, scene) + else: + engine.reset(self, data, scene) engine.update(self, data, scene) def render(self, scene): engine.render(self) - # preview render - # def preview_update(self, context, id): - # pass - # - # def preview_render(self): - # pass - # viewport render def view_update(self, context): if not self.session: diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py index ef700ba26f1..8958ca3e42e 100644 --- a/intern/cycles/blender/addon/engine.py +++ b/intern/cycles/blender/addon/engine.py @@ -30,7 +30,7 @@ def init(): _cycles.init(path, user_path) -def create(engine, data, scene, region=0, v3d=0, rv3d=0): +def create(engine, data, scene, region=0, v3d=0, rv3d=0, preview_osl=False): import bpy import _cycles @@ -44,7 +44,7 @@ def create(engine, data, scene, region=0, v3d=0, rv3d=0): if rv3d: rv3d = rv3d.as_pointer() - engine.session = _cycles.create(engine.as_pointer(), userpref, data, scene, region, v3d, rv3d) + engine.session = _cycles.create(engine.as_pointer(), userpref, data, scene, region, v3d, rv3d, preview_osl) def free(engine): diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index c4fee6f2de7..9d0b6d96f47 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -1205,6 +1205,9 @@ def get_panels(): types.PARTICLE_PT_force_fields, types.PARTICLE_PT_vertexgroups, types.PARTICLE_PT_custom_props, + types.MATERIAL_PT_preview, + types.DATA_PT_preview, + types.WORLD_PT_preview, ) diff --git a/intern/cycles/blender/blender_python.cpp b/intern/cycles/blender/blender_python.cpp index d164920ceff..676fba76ddf 100644 --- a/intern/cycles/blender/blender_python.cpp +++ b/intern/cycles/blender/blender_python.cpp @@ -52,8 +52,9 @@ static PyObject *init_func(PyObject *self, PyObject *args) static PyObject *create_func(PyObject *self, PyObject *args) { PyObject *pyengine, *pyuserpref, *pydata, *pyscene, *pyregion, *pyv3d, *pyrv3d; + int preview_osl; - if(!PyArg_ParseTuple(args, "OOOOOOO", &pyengine, &pyuserpref, &pydata, &pyscene, &pyregion, &pyv3d, &pyrv3d)) + if(!PyArg_ParseTuple(args, "OOOOOOOp", &pyengine, &pyuserpref, &pydata, &pyscene, &pyregion, &pyv3d, &pyrv3d, &preview_osl)) return NULL; /* RNA */ @@ -91,14 +92,22 @@ static PyObject *create_func(PyObject *self, PyObject *args) Py_BEGIN_ALLOW_THREADS if(rv3d) { - /* interactive session */ + /* interactive viewport session */ int width = region.width(); int height = region.height(); session = new BlenderSession(engine, userpref, data, scene, v3d, rv3d, width, height); } else { - /* offline session */ + /* override some settings for preview */ + if(engine.is_preview()) { + PointerRNA cscene = RNA_pointer_get(&sceneptr, "cycles"); + + RNA_boolean_set(&cscene, "shading_system", preview_osl); + RNA_boolean_set(&cscene, "use_progressive_refine", true); + } + + /* offline session or preview render */ session = new BlenderSession(engine, userpref, data, scene); } diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 3913323c21c..650d3d387ee 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -288,7 +288,14 @@ void BlenderSession::write_render_tile(RenderTile& rtile) void BlenderSession::update_render_tile(RenderTile& rtile) { - do_write_update_render_tile(rtile, true); + /* use final write for preview renders, otherwise render result wouldn't be + * be updated in blender side + * would need to be investigated a bit further, but for now shall be fine + */ + if (!b_engine.is_preview()) + do_write_update_render_tile(rtile, true); + else + do_write_update_render_tile(rtile, false); } void BlenderSession::render() diff --git a/intern/guardedalloc/intern/mallocn.c b/intern/guardedalloc/intern/mallocn.c index 559d1138ffb..93cb2f6d4d1 100644 --- a/intern/guardedalloc/intern/mallocn.c +++ b/intern/guardedalloc/intern/mallocn.c @@ -52,6 +52,10 @@ # include <sys/mman.h> #endif +#if defined(_MSC_VER) +# define __func__ __FUNCTION__ +#endif + #include "MEM_guardedalloc.h" /* Only for debugging: @@ -360,6 +364,9 @@ void *MEM_reallocN(void *vmemh, size_t len) MEM_freeN(vmemh); } + else { + newp = MEM_mallocN(len, __func__); + } return newp; } @@ -391,6 +398,9 @@ void *MEM_recallocN(void *vmemh, size_t len) MEM_freeN(vmemh); } + else { + newp = MEM_callocN(len, __func__); + } return newp; } |