[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50384] trunk/blender: Cycles: merge of changes from tomato branch.
Brecht Van Lommel
brechtvanlommel at pandora.be
Tue Sep 4 15:29:07 CEST 2012
Revision: 50384
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50384
Author: blendix
Date: 2012-09-04 13:29:07 +0000 (Tue, 04 Sep 2012)
Log Message:
-----------
Cycles: merge of changes from tomato branch.
Regular rendering now works tiled, and supports save buffers to save memory
during render and cache render results.
Brick texture node by Thomas.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Textures#Brick_Texture
Image texture Blended Box Mapping.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Textures#Image_Texture
http://mango.blender.org/production/blended_box/
Various bug fixes by Sergey and Campbell.
* Fix for reading freed memory in some node setups.
* Fix incorrect memory read when synchronizing mesh motion.
* Fix crash appearing when direct light usage is different on different layers.
* Fix for vector pass gives wrong result in some circumstances.
* Fix for wrong resolution used for rendering Render Layer node.
* Option to cancel rendering when doing initial synchronization.
* No more texture limit when using CPU render.
* Many fixes for new tiled rendering.
Modified Paths:
--------------
trunk/blender/intern/cycles/app/cycles_test.cpp
trunk/blender/intern/cycles/app/cycles_xml.cpp
trunk/blender/intern/cycles/blender/addon/properties.py
trunk/blender/intern/cycles/blender/addon/ui.py
trunk/blender/intern/cycles/blender/blender_mesh.cpp
trunk/blender/intern/cycles/blender/blender_object.cpp
trunk/blender/intern/cycles/blender/blender_particles.cpp
trunk/blender/intern/cycles/blender/blender_python.cpp
trunk/blender/intern/cycles/blender/blender_session.cpp
trunk/blender/intern/cycles/blender/blender_session.h
trunk/blender/intern/cycles/blender/blender_shader.cpp
trunk/blender/intern/cycles/blender/blender_sync.cpp
trunk/blender/intern/cycles/blender/blender_sync.h
trunk/blender/intern/cycles/blender/blender_util.h
trunk/blender/intern/cycles/device/CMakeLists.txt
trunk/blender/intern/cycles/device/device.cpp
trunk/blender/intern/cycles/device/device.h
trunk/blender/intern/cycles/device/device_cpu.cpp
trunk/blender/intern/cycles/device/device_cuda.cpp
trunk/blender/intern/cycles/device/device_multi.cpp
trunk/blender/intern/cycles/device/device_opencl.cpp
trunk/blender/intern/cycles/kernel/CMakeLists.txt
trunk/blender/intern/cycles/kernel/kernel.cpp
trunk/blender/intern/cycles/kernel/kernel_compat_cpu.h
trunk/blender/intern/cycles/kernel/kernel_globals.h
trunk/blender/intern/cycles/kernel/kernel_path.h
trunk/blender/intern/cycles/kernel/kernel_textures.h
trunk/blender/intern/cycles/kernel/svm/svm.h
trunk/blender/intern/cycles/kernel/svm/svm_image.h
trunk/blender/intern/cycles/kernel/svm/svm_types.h
trunk/blender/intern/cycles/render/buffers.cpp
trunk/blender/intern/cycles/render/buffers.h
trunk/blender/intern/cycles/render/camera.cpp
trunk/blender/intern/cycles/render/camera.h
trunk/blender/intern/cycles/render/graph.cpp
trunk/blender/intern/cycles/render/image.cpp
trunk/blender/intern/cycles/render/image.h
trunk/blender/intern/cycles/render/nodes.cpp
trunk/blender/intern/cycles/render/nodes.h
trunk/blender/intern/cycles/render/scene.cpp
trunk/blender/intern/cycles/render/scene.h
trunk/blender/intern/cycles/render/session.cpp
trunk/blender/intern/cycles/render/session.h
trunk/blender/intern/cycles/render/tile.cpp
trunk/blender/intern/cycles/render/tile.h
trunk/blender/intern/cycles/util/util_math.h
trunk/blender/intern/cycles/util/util_progress.h
trunk/blender/source/blender/blenkernel/BKE_node.h
trunk/blender/source/blender/blenkernel/intern/node.c
trunk/blender/source/blender/editors/space_node/drawnode.c
trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl
trunk/blender/source/blender/makesdna/DNA_node_types.h
trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
trunk/blender/source/blender/makesrna/intern/rna_nodetree_types.h
trunk/blender/source/blender/makesrna/intern/rna_render.c
trunk/blender/source/blender/nodes/CMakeLists.txt
trunk/blender/source/blender/render/extern/include/RE_engine.h
trunk/blender/source/blender/render/extern/include/RE_pipeline.h
trunk/blender/source/blender/render/intern/include/initrender.h
trunk/blender/source/blender/render/intern/include/render_result.h
trunk/blender/source/blender/render/intern/source/external_engine.c
trunk/blender/source/blender/render/intern/source/initrender.c
trunk/blender/source/blender/render/intern/source/pipeline.c
trunk/blender/source/blender/render/intern/source/render_result.c
Added Paths:
-----------
trunk/blender/intern/cycles/device/device_task.cpp
trunk/blender/intern/cycles/device/device_task.h
trunk/blender/intern/cycles/kernel/svm/svm_brick.h
trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_brick.c
Modified: trunk/blender/intern/cycles/app/cycles_test.cpp
===================================================================
--- trunk/blender/intern/cycles/app/cycles_test.cpp 2012-09-04 12:40:47 UTC (rev 50383)
+++ trunk/blender/intern/cycles/app/cycles_test.cpp 2012-09-04 13:29:07 UTC (rev 50384)
@@ -66,12 +66,13 @@
static void session_print_status()
{
- int sample;
+ int sample, tile;
double total_time, sample_time;
string status, substatus;
/* get status */
- options.session->progress.get_sample(sample, total_time, sample_time);
+ sample = options.session->progress.get_sample();
+ options.session->progress.get_tile(tile, total_time, sample_time);
options.session->progress.get_status(status, substatus);
if(substatus != "")
@@ -111,7 +112,7 @@
static void scene_init(int width, int height)
{
- options.scene = new Scene(options.scene_params);
+ options.scene = new Scene(options.scene_params, options.session_params.device);
xml_read_file(options.scene, options.filepath.c_str());
if (width == 0 || height == 0) {
@@ -147,11 +148,12 @@
latency = (elapsed - last);
last = elapsed;
- int sample;
+ int sample, tile;
double total_time, sample_time;
string status, substatus;
- progress.get_sample(sample, total_time, sample_time);
+ sample = progress.get_sample();
+ progress.get_tile(tile, total_time, sample_time);
progress.get_status(status, substatus);
if(substatus != "")
Modified: trunk/blender/intern/cycles/app/cycles_xml.cpp
===================================================================
--- trunk/blender/intern/cycles/app/cycles_xml.cpp 2012-09-04 12:40:47 UTC (rev 50383)
+++ trunk/blender/intern/cycles/app/cycles_xml.cpp 2012-09-04 13:29:07 UTC (rev 50384)
@@ -379,6 +379,9 @@
else if(string_iequals(node.name(), "checker_texture")) {
snode = new CheckerTextureNode();
}
+ else if(string_iequals(node.name(), "brick_texture")) {
+ snode = new BrickTextureNode();
+ }
else if(string_iequals(node.name(), "gradient_texture")) {
GradientTextureNode *blend = new GradientTextureNode();
xml_read_enum(&blend->type, GradientTextureNode::type_enum, node, "type");
Modified: trunk/blender/intern/cycles/blender/addon/properties.py
===================================================================
--- trunk/blender/intern/cycles/blender/addon/properties.py 2012-09-04 12:40:47 UTC (rev 50383)
+++ trunk/blender/intern/cycles/blender/addon/properties.py 2012-09-04 13:29:07 UTC (rev 50384)
@@ -241,12 +241,14 @@
min=1, max=4096,
default=1024,
)
- cls.debug_min_size = IntProperty(
- name="Min Size",
- description="",
- min=1, max=4096,
- default=64,
+
+ cls.resolution_divider = IntProperty(
+ name="Resolution Divider",
+ description="For viewport render, the number of lower resolutions to render before the full resolution",
+ min=1, max=512,
+ default=4,
)
+
cls.debug_reset_timeout = FloatProperty(
name="Reset timeout",
description="",
Modified: trunk/blender/intern/cycles/blender/addon/ui.py
===================================================================
--- trunk/blender/intern/cycles/blender/addon/ui.py 2012-09-04 12:40:47 UTC (rev 50383)
+++ trunk/blender/intern/cycles/blender/addon/ui.py 2012-09-04 13:29:07 UTC (rev 50384)
@@ -197,9 +197,14 @@
sub = col.column(align=True)
sub.label(text="Tiles:")
- sub.prop(cscene, "debug_tile_size")
- sub.prop(cscene, "debug_min_size")
+ sub.prop(rd, "parts_x", text="X")
+ sub.prop(rd, "parts_y", text="Y")
+
+ subsub = sub.column()
+ subsub.enabled = not rd.use_border
+ subsub.prop(rd, "use_save_buffers")
+
col = split.column()
sub = col.column(align=True)
@@ -208,7 +213,11 @@
sub.prop(cscene, "debug_use_spatial_splits")
sub.prop(cscene, "use_cache")
+ sub = col.column(align=True)
+ sub.label(text="Viewport:")
+ sub.prop(cscene, "resolution_divider")
+
class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
bl_label = "Layers"
bl_options = {'DEFAULT_CLOSED'}
Modified: trunk/blender/intern/cycles/blender/blender_mesh.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_mesh.cpp 2012-09-04 12:40:47 UTC (rev 50383)
+++ trunk/blender/intern/cycles/blender/blender_mesh.cpp 2012-09-04 13:29:07 UTC (rev 50384)
@@ -317,11 +317,11 @@
BL::Mesh::vertices_iterator v;
AttributeStandard std = (motion == -1)? ATTR_STD_MOTION_PRE: ATTR_STD_MOTION_POST;
Attribute *attr_M = mesh->attributes.add(std);
- float3 *M = attr_M->data_float3();
+ float3 *M = attr_M->data_float3(), *cur_M;
size_t i = 0;
- for(b_mesh.vertices.begin(v); v != b_mesh.vertices.end() && i < size; ++v, M++, i++)
- *M = get_float3(v->co());
+ for(b_mesh.vertices.begin(v), cur_M = M; v != b_mesh.vertices.end() && i < size; ++v, cur_M++, i++)
+ *cur_M = get_float3(v->co());
/* if number of vertices changed, or if coordinates stayed the same, drop it */
if(i != size || memcmp(M, &mesh->verts[0], sizeof(float3)*size) == 0)
Modified: trunk/blender/intern/cycles/blender/blender_object.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_object.cpp 2012-09-04 12:40:47 UTC (rev 50383)
+++ trunk/blender/intern/cycles/blender/blender_object.cpp 2012-09-04 13:29:07 UTC (rev 50384)
@@ -300,14 +300,16 @@
BL::Scene b_sce = b_scene;
int particle_offset = 1; /* first particle is dummy for regular, non-instanced objects */
- for(; b_sce; b_sce = b_sce.background_set()) {
- for(b_sce.objects.begin(b_ob); b_ob != b_sce.objects.end(); ++b_ob) {
+ bool cancel = false;
+
+ for(; b_sce && !cancel; b_sce = b_sce.background_set()) {
+ for(b_sce.objects.begin(b_ob); b_ob != b_sce.objects.end() && !cancel; ++b_ob) {
bool hide = (render_layer.use_viewport_visibility)? b_ob->hide(): b_ob->hide_render();
- uint ob_layer = get_layer(b_ob->layers(), b_ob->layers_local_view(), object_is_light(*b_ob));
- CYCLES_LOCAL_LAYER_HACK(render_layer.use_localview, ob_layer);
+ uint ob_layer = get_layer(b_ob->layers(), b_ob->layers_local_view(), render_layer.use_localview, object_is_light(*b_ob));
hide = hide || !(ob_layer & scene_layer);
if(!hide) {
+ progress.set_status("Synchronizing object", (*b_ob).name());
int num_particles = object_count_particles(*b_ob);
@@ -349,10 +351,12 @@
particle_offset += num_particles;
}
+
+ cancel = progress.get_cancel();
}
}
- if(!motion) {
+ if(!cancel && !motion) {
sync_background_light();
/* handle removed data and modified pointers */
Modified: trunk/blender/intern/cycles/blender/blender_particles.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_particles.cpp 2012-09-04 12:40:47 UTC (rev 50383)
+++ trunk/blender/intern/cycles/blender/blender_particles.cpp 2012-09-04 13:29:07 UTC (rev 50384)
@@ -199,8 +199,7 @@
for(; b_sce; b_sce = b_sce.background_set()) {
for(b_sce.objects.begin(b_ob); b_ob != b_sce.objects.end(); ++b_ob) {
bool hide = (render_layer.use_viewport_visibility)? b_ob->hide(): b_ob->hide_render();
- uint ob_layer = get_layer(b_ob->layers(), b_ob->layers_local_view(), object_is_light(*b_ob));
- CYCLES_LOCAL_LAYER_HACK(render_layer.use_localview, ob_layer);
+ uint ob_layer = get_layer(b_ob->layers(), b_ob->layers_local_view(), render_layer.use_localview, object_is_light(*b_ob));
hide = hide || !(ob_layer & scene_layer);
if(!hide) {
Modified: trunk/blender/intern/cycles/blender/blender_python.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_python.cpp 2012-09-04 12:40:47 UTC (rev 50383)
+++ trunk/blender/intern/cycles/blender/blender_python.cpp 2012-09-04 13:29:07 UTC (rev 50384)
@@ -80,6 +80,8 @@
/* create session */
BlenderSession *session;
+ Py_BEGIN_ALLOW_THREADS
+
if(rv3d) {
/* interactive session */
int width = region.width();
@@ -91,7 +93,9 @@
/* offline session */
session = new BlenderSession(engine, userpref, data, scene);
}
-
+
+ Py_END_ALLOW_THREADS
+
return PyLong_FromVoidPtr(session);
}
@@ -136,9 +140,13 @@
static PyObject *sync_func(PyObject *self, PyObject *value)
{
+ Py_BEGIN_ALLOW_THREADS
+
BlenderSession *session = (BlenderSession*)PyLong_AsVoidPtr(value);
session->synchronize();
+ Py_END_ALLOW_THREADS
+
Py_RETURN_NONE;
}
Modified: trunk/blender/intern/cycles/blender/blender_session.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_session.cpp 2012-09-04 12:40:47 UTC (rev 50383)
+++ trunk/blender/intern/cycles/blender/blender_session.cpp 2012-09-04 13:29:07 UTC (rev 50384)
@@ -42,14 +42,13 @@
BlenderSession::BlenderSession(BL::RenderEngine b_engine_, BL::UserPreferences b_userpref_,
BL::BlendData b_data_, BL::Scene b_scene_)
: b_engine(b_engine_), b_userpref(b_userpref_), b_data(b_data_), b_scene(b_scene_),
- b_v3d(PointerRNA_NULL), b_rv3d(PointerRNA_NULL),
- b_rr(PointerRNA_NULL), b_rlay(PointerRNA_NULL)
+ b_v3d(PointerRNA_NULL), b_rv3d(PointerRNA_NULL)
{
/* offline render */
- BL::RenderSettings r = b_scene.render();
- width = (int)(r.resolution_x()*r.resolution_percentage()/100);
- height = (int)(r.resolution_y()*r.resolution_percentage()/100);
+ width = b_engine.resolution_x();
+ height = b_engine.resolution_y();
+
background = true;
last_redraw_time = 0.0f;
@@ -60,7 +59,7 @@
BL::BlendData b_data_, BL::Scene b_scene_,
BL::SpaceView3D b_v3d_, BL::RegionView3D b_rv3d_, int width_, int height_)
: b_engine(b_engine_), b_userpref(b_userpref_), b_data(b_data_), b_scene(b_scene_),
- b_v3d(b_v3d_), b_rv3d(b_rv3d_), b_rr(PointerRNA_NULL), b_rlay(PointerRNA_NULL)
+ b_v3d(b_v3d_), b_rv3d(b_rv3d_)
{
/* 3d view render */
width = width_;
@@ -80,17 +79,24 @@
void BlenderSession::create_session()
{
SceneParams scene_params = BlenderSync::get_scene_params(b_scene, background);
- SessionParams session_params = BlenderSync::get_session_params(b_userpref, b_scene, background);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list