Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-01-29 07:42:19 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-01-29 07:42:19 +0400
commitfe26492538edefe60a342bce109e17b9536e5a16 (patch)
treedf81d2485abd06be9cd2f4536a661b05153dff94 /intern
parent8f969fdc40cded16ec58f6810585411adbb5538d (diff)
parentcf9e619889fdcdc457e44d4b384cda091de55673 (diff)
Merged changes in the trunk up to revision 54171.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/blender/addon/__init__.py21
-rw-r--r--intern/cycles/blender/addon/engine.py4
-rw-r--r--intern/cycles/blender/addon/ui.py3
-rw-r--r--intern/cycles/blender/blender_python.cpp15
-rw-r--r--intern/cycles/blender/blender_session.cpp9
-rw-r--r--intern/guardedalloc/intern/mallocn.c10
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;
}