Revision: 43694
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43694
Author:   campbellbarton
Date:     2012-01-25 18:13:58 +0000 (Wed, 25 Jan 2012)
Log Message:
-----------
svn merge ^/trunk/blender -r43685:43693

Revision Links:
--------------
    
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43685

Modified Paths:
--------------
    branches/bmesh/blender/intern/cycles/blender/addon/ui.py
    branches/bmesh/blender/intern/cycles/blender/blender_object.cpp
    branches/bmesh/blender/intern/cycles/blender/blender_session.cpp
    branches/bmesh/blender/intern/cycles/blender/blender_shader.cpp
    branches/bmesh/blender/intern/cycles/device/device_cpu.cpp
    branches/bmesh/blender/intern/cycles/kernel/CMakeLists.txt
    branches/bmesh/blender/intern/cycles/kernel/kernel.cl
    branches/bmesh/blender/intern/cycles/kernel/kernel.cpp
    branches/bmesh/blender/intern/cycles/kernel/kernel.cu
    branches/bmesh/blender/intern/cycles/kernel/kernel.h
    branches/bmesh/blender/intern/cycles/kernel/kernel_emission.h
    branches/bmesh/blender/intern/cycles/kernel/kernel_film.h
    branches/bmesh/blender/intern/cycles/kernel/kernel_object.h
    branches/bmesh/blender/intern/cycles/kernel/kernel_optimized.cpp
    branches/bmesh/blender/intern/cycles/kernel/kernel_path.h
    branches/bmesh/blender/intern/cycles/kernel/kernel_random.h
    branches/bmesh/blender/intern/cycles/kernel/kernel_shader.h
    branches/bmesh/blender/intern/cycles/kernel/kernel_types.h
    branches/bmesh/blender/intern/cycles/kernel/svm/svm_types.h
    branches/bmesh/blender/intern/cycles/render/buffers.cpp
    branches/bmesh/blender/intern/cycles/render/buffers.h
    branches/bmesh/blender/intern/cycles/render/film.cpp
    branches/bmesh/blender/intern/cycles/render/film.h
    branches/bmesh/blender/intern/cycles/render/object.cpp
    branches/bmesh/blender/intern/cycles/render/object.h
    branches/bmesh/blender/intern/cycles/render/shader.cpp
    branches/bmesh/blender/intern/cycles/render/shader.h
    branches/bmesh/blender/release/scripts/startup/bl_ui/space_clip.py
    branches/bmesh/blender/source/blender/blenkernel/BKE_node.h
    branches/bmesh/blender/source/blender/blenkernel/BKE_tracking.h
    branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/scene.c
    branches/bmesh/blender/source/blender/blenkernel/intern/tracking.c
    branches/bmesh/blender/source/blender/editors/armature/reeb.c
    branches/bmesh/blender/source/blender/editors/interface/interface_draw.c
    branches/bmesh/blender/source/blender/editors/space_clip/clip_draw.c
    branches/bmesh/blender/source/blender/editors/space_clip/tracking_ops.c
    branches/bmesh/blender/source/blender/makesdna/DNA_scene_types.h
    branches/bmesh/blender/source/blender/makesrna/intern/rna_access.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_render.c
    branches/bmesh/blender/source/blender/makesrna/intern/rna_scene.c
    branches/bmesh/blender/source/blender/nodes/composite/node_composite_tree.c
    
branches/bmesh/blender/source/blender/nodes/composite/nodes/node_composite_image.c
    branches/bmesh/blender/source/blender/render/intern/source/render_result.c

Added Paths:
-----------
    branches/bmesh/blender/intern/cycles/kernel/kernel_accumulate.h
    branches/bmesh/blender/intern/cycles/kernel/kernel_passes.h

Property Changed:
----------------
    branches/bmesh/blender/
    branches/bmesh/blender/release/


Property changes on: branches/bmesh/blender
___________________________________________________________________
Modified: svn:mergeinfo
   - 
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801
/trunk/blender:39992-43685
   + 
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801
/trunk/blender:39992-43693

Modified: branches/bmesh/blender/intern/cycles/blender/addon/ui.py
===================================================================
--- branches/bmesh/blender/intern/cycles/blender/addon/ui.py    2012-01-25 
17:23:52 UTC (rev 43693)
+++ branches/bmesh/blender/intern/cycles/blender/addon/ui.py    2012-01-25 
18:13:58 UTC (rev 43694)
@@ -183,6 +183,38 @@
 
         layout.separator()
 
+        split = layout.split()
+
+        col = split.column()
+        col.label(text="Passes:")
+        col.prop(rl, "use_pass_combined")
+        col.prop(rl, "use_pass_z")
+        col.prop(rl, "use_pass_normal")
+        col.prop(rl, "use_pass_object_index")
+        col.prop(rl, "use_pass_material_index")
+        col.prop(rl, "use_pass_emit")
+        col.prop(rl, "use_pass_environment")
+
+        col = split.column()
+        col.label()
+        col.label(text="Diffuse:")
+        row = col.row(align=True)
+        row.prop(rl, "use_pass_diffuse_direct", text="Direct", toggle=True)
+        row.prop(rl, "use_pass_diffuse_indirect", text="Indirect", toggle=True)
+        row.prop(rl, "use_pass_diffuse_color", text="Color", toggle=True)
+        col.label(text="Glossy:")
+        row = col.row(align=True)
+        row.prop(rl, "use_pass_glossy_direct", text="Direct", toggle=True)
+        row.prop(rl, "use_pass_glossy_indirect", text="Indirect", toggle=True)
+        row.prop(rl, "use_pass_glossy_color", text="Color", toggle=True)
+        col.label(text="Transmission:")
+        row = col.row(align=True)
+        row.prop(rl, "use_pass_transmission_direct", text="Direct", 
toggle=True)
+        row.prop(rl, "use_pass_transmission_indirect", text="Indirect", 
toggle=True)
+        row.prop(rl, "use_pass_transmission_color", text="Color", toggle=True)
+
+        layout.separator()
+
         rl = rd.layers[0]
         layout.prop(rl, "material_override", text="Material")
 

Modified: branches/bmesh/blender/intern/cycles/blender/blender_object.cpp
===================================================================
--- branches/bmesh/blender/intern/cycles/blender/blender_object.cpp     
2012-01-25 17:23:52 UTC (rev 43693)
+++ branches/bmesh/blender/intern/cycles/blender/blender_object.cpp     
2012-01-25 18:13:58 UTC (rev 43694)
@@ -214,6 +214,7 @@
        /* object sync */
        if(object_updated || (object->mesh && object->mesh->need_update)) {
                object->name = b_ob.name().c_str();
+               object->pass_id = b_ob.pass_index();
                object->tfm = tfm;
 
                /* visibility flags for both parent */

Modified: branches/bmesh/blender/intern/cycles/blender/blender_session.cpp
===================================================================
--- branches/bmesh/blender/intern/cycles/blender/blender_session.cpp    
2012-01-25 17:23:52 UTC (rev 43693)
+++ branches/bmesh/blender/intern/cycles/blender/blender_session.cpp    
2012-01-25 18:13:58 UTC (rev 43694)
@@ -116,9 +116,68 @@
        delete session;
 }
 
+static PassType get_pass_type(BL::RenderPass b_pass)
+{
+       switch(b_pass.type()) {
+               case BL::RenderPass::type_COMBINED:
+                       return PASS_COMBINED;
+
+               case BL::RenderPass::type_Z:
+                       return PASS_DEPTH;
+               case BL::RenderPass::type_NORMAL:
+                       return PASS_NORMAL;
+               case BL::RenderPass::type_OBJECT_INDEX:
+                       return PASS_OBJECT_ID;
+               case BL::RenderPass::type_UV:
+                       return PASS_UV;
+               case BL::RenderPass::type_MATERIAL_INDEX:
+                       return PASS_MATERIAL_ID;
+
+               case BL::RenderPass::type_DIFFUSE_DIRECT:
+                       return PASS_DIFFUSE_DIRECT;
+               case BL::RenderPass::type_GLOSSY_DIRECT:
+                       return PASS_GLOSSY_DIRECT;
+               case BL::RenderPass::type_TRANSMISSION_DIRECT:
+                       return PASS_TRANSMISSION_DIRECT;
+
+               case BL::RenderPass::type_DIFFUSE_INDIRECT:
+                       return PASS_DIFFUSE_INDIRECT;
+               case BL::RenderPass::type_GLOSSY_INDIRECT:
+                       return PASS_GLOSSY_INDIRECT;
+               case BL::RenderPass::type_TRANSMISSION_INDIRECT:
+                       return PASS_TRANSMISSION_INDIRECT;
+
+               case BL::RenderPass::type_DIFFUSE_COLOR:
+                       return PASS_DIFFUSE_COLOR;
+               case BL::RenderPass::type_GLOSSY_COLOR:
+                       return PASS_GLOSSY_COLOR;
+               case BL::RenderPass::type_TRANSMISSION_COLOR:
+                       return PASS_TRANSMISSION_COLOR;
+
+               case BL::RenderPass::type_EMIT:
+                       return PASS_EMISSION;
+               case BL::RenderPass::type_ENVIRONMENT:
+                       return PASS_BACKGROUND;
+
+               case BL::RenderPass::type_DIFFUSE:
+               case BL::RenderPass::type_SHADOW:
+               case BL::RenderPass::type_AO:
+               case BL::RenderPass::type_COLOR:
+               case BL::RenderPass::type_REFRACTION:
+               case BL::RenderPass::type_SPECULAR:
+               case BL::RenderPass::type_REFLECTION:
+               case BL::RenderPass::type_VECTOR:
+               case BL::RenderPass::type_MIST:
+                       return PASS_NONE;
+       }
+       
+       return PASS_NONE;
+}
+
 void BlenderSession::render()
 {
        /* get buffer parameters */
+       SessionParams session_params = 
BlenderSync::get_session_params(b_userpref, b_scene, background);
        BufferParams buffer_params = BlenderSync::get_buffer_params(b_scene, 
b_rv3d, width, height);
        int w = buffer_params.width, h = buffer_params.height;
 
@@ -143,6 +202,25 @@
                /* set layer */
                b_rlay = *b_iter;
 
+               /* add passes */
+               if(session_params.device.type == DEVICE_CPU) { /* todo */
+                       BL::RenderLayer::passes_iterator b_pass_iter;
+                       
+                       for(b_rlay.passes.begin(b_pass_iter); b_pass_iter != 
b_rlay.passes.end(); ++b_pass_iter) {
+                               BL::RenderPass b_pass(*b_pass_iter);
+                               PassType pass_type = get_pass_type(b_pass);
+
+                               if(pass_type != PASS_NONE)
+                                       Pass::add(pass_type, 
buffer_params.passes);
+                       }
+               }
+
+               scene->film->passes = buffer_params.passes;
+               scene->film->need_update = true;
+
+               /* update session */
+               session->reset(buffer_params, session_params.samples);
+
                /* update scene */
                sync->sync_data(b_v3d, active);
 
@@ -165,22 +243,41 @@
 {
        /* get state */
        RenderBuffers *buffers = session->buffers;
+
+       /* copy data from device */
+       if(!buffers->copy_from_device())
+               return;
+
+       BufferParams& params = buffers->params;
        float exposure = scene->film->exposure;
        double total_time, sample_time;
        int sample;
+
        session->progress.get_sample(sample, total_time, sample_time);
 
-       /* get pixels */
-       float4 *pixels = buffers->copy_from_device(exposure, sample);
+       vector<float> pixels(params.width*params.height*4);
 
-       if(!pixels)
-               return;
+       /* copy each pass */
+       BL::RenderLayer::passes_iterator b_iter;
+       
+       for(b_rlay.passes.begin(b_iter); b_iter != b_rlay.passes.end(); 
++b_iter) {
+               BL::RenderPass b_pass(*b_iter);
 
-       /* write pixels */
-       rna_RenderLayer_rect_set(&b_rlay.ptr, (float*)pixels);
+               /* find matching pass type */
+               PassType pass_type = get_pass_type(b_pass);
+               int components = b_pass.channels();
+
+               /* copy pixels */
+               if(buffers->get_pass(pass_type, exposure, sample, components, 
&pixels[0]))
+                       rna_RenderPass_rect_set(&b_pass.ptr, &pixels[0]);
+       }
+
+       /* copy combined pass */
+       if(buffers->get_pass(PASS_COMBINED, exposure, sample, 4, &pixels[0]))
+               rna_RenderLayer_rect_set(&b_rlay.ptr, &pixels[0]);
+
+       /* tag result as updated */
        RE_engine_update_result((RenderEngine*)b_engine.ptr.data, 
(RenderResult*)b_rr.ptr.data);
-
-       delete [] pixels;
 }
 
 void BlenderSession::synchronize()

Modified: branches/bmesh/blender/intern/cycles/blender/blender_shader.cpp
===================================================================
--- branches/bmesh/blender/intern/cycles/blender/blender_shader.cpp     
2012-01-25 17:23:52 UTC (rev 43693)
+++ branches/bmesh/blender/intern/cycles/blender/blender_shader.cpp     
2012-01-25 18:13:58 UTC (rev 43694)
@@ -636,6 +636,7 @@
                        ShaderGraph *graph = new ShaderGraph();
 
                        shader->name = b_mat->name().c_str();
+                       shader->pass_id = b_mat->pass_index();
 
                        /* create nodes */
                        if(b_mat->use_nodes() && b_mat->node_tree()) {

Modified: branches/bmesh/blender/intern/cycles/device/device_cpu.cpp
===================================================================
--- branches/bmesh/blender/intern/cycles/device/device_cpu.cpp  2012-01-25 
17:23:52 UTC (rev 43693)
+++ branches/bmesh/blender/intern/cycles/device/device_cpu.cpp  2012-01-25 
18:13:58 UTC (rev 43694)
@@ -162,7 +162,7 @@
                if(system_cpu_support_optimized()) {
                        for(int y = task.y; y < task.y + task.h; y++) {
                                for(int x = task.x; x < task.x + task.w; x++)
-                                       kernel_cpu_optimized_path_trace(kg, 
(float4*)task.buffer, (unsigned int*)task.rng_state,
+                                       kernel_cpu_optimized_path_trace(kg, 
(float*)task.buffer, (unsigned int*)task.rng_state,
                                                task.sample, x, y, task.offset, 
task.stride);
 
                                if(tasks.worker_cancel())
@@ -174,7 +174,7 @@
                {
                        for(int y = task.y; y < task.y + task.h; y++) {
                                for(int x = task.x; x < task.x + task.w; x++)
-                                       kernel_cpu_path_trace(kg, 
(float4*)task.buffer, (unsigned int*)task.rng_state,
+                                       kernel_cpu_path_trace(kg, 
(float*)task.buffer, (unsigned int*)task.rng_state,
                                                task.sample, x, y, task.offset, 
task.stride);
 
                                if(tasks.worker_cancel())
@@ -194,7 +194,7 @@
                if(system_cpu_support_optimized()) {
                        for(int y = task.y; y < task.y + task.h; y++)
                                for(int x = task.x; x < task.x + task.w; x++)
-                                       kernel_cpu_optimized_tonemap(kg, 
(uchar4*)task.rgba, (float4*)task.buffer,
+                                       kernel_cpu_optimized_tonemap(kg, 
(uchar4*)task.rgba, (float*)task.buffer,
                                                task.sample, task.resolution, 
x, y, task.offset, task.stride);
                }
                else
@@ -202,7 +202,7 @@
                {
                        for(int y = task.y; y < task.y + task.h; y++)
                                for(int x = task.x; x < task.x + task.w; x++)
-                                       kernel_cpu_tonemap(kg, 
(uchar4*)task.rgba, (float4*)task.buffer,
+                                       kernel_cpu_tonemap(kg, 
(uchar4*)task.rgba, (float*)task.buffer,
                                                task.sample, task.resolution, 
x, y, task.offset, task.stride);
                }
        }

Modified: branches/bmesh/blender/intern/cycles/kernel/CMakeLists.txt

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to