Revision: 40163
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40163
Author:   blendix
Date:     2011-09-12 13:13:56 +0000 (Mon, 12 Sep 2011)
Log Message:
-----------
Cycles:
* Fix missing update when editing objects with emission materials.
* Fix preview pass rendering set to 1 not showing full resolution.
* Fix CUDA runtime compiling failing due to missing cache directory.
* Use settings from first render layer for visibility and material override.

And a bunch of incomplete and still disabled code mostly related to closure
sampling.

Modified Paths:
--------------
    branches/cycles/CMakeLists.txt
    branches/cycles/intern/cycles/CMakeLists.txt
    branches/cycles/intern/cycles/blender/addon/ui.py
    branches/cycles/intern/cycles/blender/blender_mesh.cpp
    branches/cycles/intern/cycles/blender/blender_object.cpp
    branches/cycles/intern/cycles/blender/blender_sync.cpp
    branches/cycles/intern/cycles/blender/blender_sync.h
    branches/cycles/intern/cycles/device/device.cpp
    branches/cycles/intern/cycles/device/device_cuda.cpp
    branches/cycles/intern/cycles/device/device_multi.cpp
    branches/cycles/intern/cycles/kernel/kernel_emission.h
    branches/cycles/intern/cycles/kernel/kernel_globals.h
    branches/cycles/intern/cycles/kernel/kernel_light.h
    branches/cycles/intern/cycles/kernel/kernel_path.h
    branches/cycles/intern/cycles/kernel/kernel_shader.h
    branches/cycles/intern/cycles/kernel/kernel_types.h
    branches/cycles/intern/cycles/kernel/osl/osl_shader.cpp
    branches/cycles/intern/cycles/kernel/osl/osl_shader.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_ashikhmin_velvet.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_diffuse.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_microfacet.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_reflection.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_refraction.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_transparent.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_ward.h
    branches/cycles/intern/cycles/kernel/svm/bsdf_westin.h
    branches/cycles/intern/cycles/kernel/svm/emissive.h
    branches/cycles/intern/cycles/kernel/svm/svm.h
    branches/cycles/intern/cycles/kernel/svm/svm_bsdf.h
    branches/cycles/intern/cycles/kernel/svm/svm_closure.h
    branches/cycles/intern/cycles/kernel/svm/svm_types.h
    branches/cycles/intern/cycles/kernel/svm/volume.h
    branches/cycles/intern/cycles/render/light.cpp
    branches/cycles/intern/cycles/render/mesh.cpp
    branches/cycles/intern/cycles/render/nodes.cpp
    branches/cycles/intern/cycles/render/object.cpp
    branches/cycles/intern/cycles/render/session.cpp
    branches/cycles/intern/cycles/render/session.h
    branches/cycles/intern/cycles/render/svm.cpp
    branches/cycles/intern/cycles/render/svm.h
    branches/cycles/intern/cycles/render/tile.cpp
    branches/cycles/intern/cycles/util/util_path.cpp
    branches/cycles/intern/cycles/util/util_path.h

Modified: branches/cycles/CMakeLists.txt
===================================================================
--- branches/cycles/CMakeLists.txt      2011-09-12 13:00:24 UTC (rev 40162)
+++ branches/cycles/CMakeLists.txt      2011-09-12 13:13:56 UTC (rev 40163)
@@ -207,11 +207,10 @@
 # Cycles
 option(WITH_CYCLES                     "Enable Cycles Render Engine" ON)
 OPTION(WITH_CYCLES_OSL         "Build with Open Shading Language support" OFF)
-OPTION(WITH_CYCLES_CUDA                "Build with CUDA support" OFF)
+OPTION(WITH_CYCLES_CUDA                "Build with CUDA binaries" OFF)
 OPTION(WITH_CYCLES_BLENDER     "Build Blender Python extension" ON)
 OPTION(WITH_CYCLES_PARTIO      "Build with Partio point cloud support 
(unfinished)" OFF)
 OPTION(WITH_CYCLES_NETWORK     "Build with network rendering support 
(unfinished)" OFF)
-OPTION(WITH_CYCLES_MULTI       "Build with network rendering support 
(unfinished)" OFF)
 OPTION(WITH_CYCLES_TEST                "Build cycles test application" OFF)
 
 # disable for now, but plan to support on all platforms eventually

Modified: branches/cycles/intern/cycles/CMakeLists.txt
===================================================================
--- branches/cycles/intern/cycles/CMakeLists.txt        2011-09-12 13:00:24 UTC 
(rev 40162)
+++ branches/cycles/intern/cycles/CMakeLists.txt        2011-09-12 13:13:56 UTC 
(rev 40163)
@@ -41,10 +41,6 @@
   add_definitions(-DWITH_NETWORK)
 endif()
 
-if(WITH_CYCLES_MULTI)
-  add_definitions(-DWITH_MULTI)
-endif()
-
 if(WITH_CYCLES_CUDA)
   add_definitions(-DWITH_CUDA_BINARIES)
 endif()
@@ -59,6 +55,7 @@
 
 add_definitions(-DWITH_OPENCL)
 add_definitions(-DWITH_CUDA)
+add_definitions(-DWITH_MULTI)
 
 include_directories(
        ${BOOST_INCLUDE_DIR}

Modified: branches/cycles/intern/cycles/blender/addon/ui.py
===================================================================
--- branches/cycles/intern/cycles/blender/addon/ui.py   2011-09-12 13:00:24 UTC 
(rev 40162)
+++ branches/cycles/intern/cycles/blender/addon/ui.py   2011-09-12 13:13:56 UTC 
(rev 40163)
@@ -140,6 +140,42 @@
         sub.prop(cscene, "debug_bvh_type", text="")
         sub.prop(cscene, "debug_use_spatial_splits")
 
+class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
+    bl_label = "Layers"
+    bl_options = {'DEFAULT_CLOSED'}
+    COMPAT_ENGINES = {'BLENDER_RENDER'}
+
+    def draw(self, context):
+        layout = self.layout
+
+        scene = context.scene
+        rd = scene.render
+
+        # row = layout.row()
+        # row.template_list(rd, "layers", rd.layers, "active_index", rows=2)
+
+        # col = row.column(align=True)
+        # col.operator("scene.render_layer_add", icon='ZOOMIN', text="")
+        # col.operator("scene.render_layer_remove", icon='ZOOMOUT', text="")
+
+        row = layout.row()
+        # rl = rd.layers.active
+        rl = rd.layers[0]
+        row.prop(rl, "name")
+        #row.prop(rd, "use_single_layer", text="", icon_only=True)
+
+        split = layout.split()
+
+        col = split.column()
+        col.prop(scene, "layers", text="Scene")
+
+        col = split.column()
+        col.prop(rl, "layers", text="Layer")
+
+        layout.separator()
+
+        layout.prop(rl, "material_override", text="Material")
+
 class Cycles_PT_post_processing(CyclesButtonsPanel, Panel):
     bl_label = "Post Processing"
     bl_options = {'DEFAULT_CLOSED'}

Modified: branches/cycles/intern/cycles/blender/blender_mesh.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_mesh.cpp      2011-09-12 
13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/blender/blender_mesh.cpp      2011-09-12 
13:13:56 UTC (rev 40163)
@@ -223,8 +223,12 @@
        vector<uint> used_shaders;
 
        BL::Object::material_slots_iterator slot;
-       for(b_ob.material_slots.begin(slot); slot != b_ob.material_slots.end(); 
++slot)
-               find_shader(slot->material(), used_shaders);
+       for(b_ob.material_slots.begin(slot); slot != b_ob.material_slots.end(); 
++slot) {
+               if(render_layer.material_override)
+                       find_shader(render_layer.material_override, 
used_shaders);
+               else
+                       find_shader(slot->material(), used_shaders);
+       }
 
        if(used_shaders.size() == 0)
                used_shaders.push_back(scene->default_surface);

Modified: branches/cycles/intern/cycles/blender/blender_object.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_object.cpp    2011-09-12 
13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/blender/blender_object.cpp    2011-09-12 
13:13:56 UTC (rev 40163)
@@ -108,7 +108,7 @@
 
 /* Object */
 
-void BlenderSync::sync_object(BL::Object b_parent, int b_index, BL::Object 
b_ob, Transform& tfm)
+void BlenderSync::sync_object(BL::Object b_parent, int b_index, BL::Object 
b_ob, Transform& tfm, uint visibility)
 {
        /* light is handled separately */
        if(object_is_light(b_ob)) {
@@ -130,7 +130,7 @@
                object->name = b_ob.name();
                object->tfm = tfm;
                
-               object->visibility = object_ray_visibility(b_ob);
+               object->visibility = object_ray_visibility(b_ob) & visibility;
                if(b_parent.ptr.data != b_ob.ptr.data)
                        object->visibility &= object_ray_visibility(b_parent);
 
@@ -147,13 +147,9 @@
 void BlenderSync::sync_objects(BL::SpaceView3D b_v3d)
 {
        /* layer data */
-       uint layer;
+       uint scene_layer = render_layer.scene_layer;
+       uint layer = render_layer.layer;
        
-       if(b_v3d)
-               layer = get_layer(b_v3d.layers());
-       else
-               layer = get_layer(b_scene.layers());
-       
        /* prepare for sync */
        light_map.pre_sync();
        mesh_map.pre_sync();
@@ -165,8 +161,14 @@
 
        for(b_scene.objects.begin(b_ob); b_ob != b_scene.objects.end(); ++b_ob) 
{
                bool hide = (b_v3d)? b_ob->hide(): b_ob->hide_render();
+               uint ob_layer = get_layer(b_ob->layers());
 
-               if(!hide && get_layer(b_ob->layers()) & layer) {
+               if(!hide && (ob_layer & scene_layer)) {
+                       uint visibility = PATH_RAY_ALL;
+                       
+                       if(!(ob_layer & layer))
+                               visibility &= ~PATH_RAY_CAMERA;
+
                        if(b_ob->is_duplicator()) {
                                /* dupli objects */
                                object_create_duplilist(*b_ob, b_scene);
@@ -176,7 +178,7 @@
 
                                for(b_ob->dupli_list.begin(b_dup); b_dup != 
b_ob->dupli_list.end(); ++b_dup) {
                                        Transform tfm = 
get_transform(b_dup->matrix());
-                                       sync_object(*b_ob, b_index, 
b_dup->object(), tfm);
+                                       sync_object(*b_ob, b_index, 
b_dup->object(), tfm, visibility);
                                        b_index++;
                                }
 
@@ -185,7 +187,7 @@
                        else {
                                /* object itself */
                                Transform tfm = 
get_transform(b_ob->matrix_world());
-                               sync_object(*b_ob, 0, *b_ob, tfm);
+                               sync_object(*b_ob, 0, *b_ob, tfm, visibility);
                        }
                }
        }

Modified: branches/cycles/intern/cycles/blender/blender_sync.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_sync.cpp      2011-09-12 
13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/blender/blender_sync.cpp      2011-09-12 
13:13:56 UTC (rev 40163)
@@ -118,6 +118,7 @@
 {
        sync_integrator();
        sync_film();
+       sync_render_layer(b_v3d);
        sync_shaders();
        sync_objects(b_v3d);
 }
@@ -172,6 +173,29 @@
                filter->tag_update(scene);
 }
 
+/* Render Layer */
+
+void BlenderSync::sync_render_layer(BL::SpaceView3D b_v3d)
+{
+       if(b_v3d) {
+               render_layer.scene_layer = get_layer(b_v3d.layers());
+               render_layer.layer = render_layer.scene_layer;
+               render_layer.material_override = PointerRNA_NULL;
+       }
+       else {
+               BL::RenderSettings r = b_scene.render();
+               BL::RenderSettings::layers_iterator b_rlay;
+
+               for(r.layers.begin(b_rlay); b_rlay != r.layers.end(); ++b_rlay) 
{
+                       render_layer.scene_layer = get_layer(b_scene.layers());
+                       render_layer.layer = get_layer(b_rlay->layers());
+                       render_layer.material_override = 
b_rlay->material_override();
+
+                       break; /* single layer for now */
+               }
+       }
+}
+
 /* Scene Parameters */
 
 SceneParams BlenderSync::get_scene_params(BL::Scene b_scene)

Modified: branches/cycles/intern/cycles/blender/blender_sync.h
===================================================================
--- branches/cycles/intern/cycles/blender/blender_sync.h        2011-09-12 
13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/blender/blender_sync.h        2011-09-12 
13:13:56 UTC (rev 40163)
@@ -72,11 +72,12 @@
        void sync_integrator();
        void sync_view();
        void sync_world();
+       void sync_render_layer(BL::SpaceView3D b_v3d);
        void sync_shaders();
 
        void sync_nodes(Shader *shader, BL::ShaderNodeTree b_ntree);
        Mesh *sync_mesh(BL::Object b_ob, bool object_updated);
-       void sync_object(BL::Object b_parent, int b_index, BL::Object b_object, 
Transform& tfm);
+       void sync_object(BL::Object b_parent, int b_index, BL::Object b_object, 
Transform& tfm, uint visibility);
        void sync_light(BL::Object b_parent, int b_index, BL::Object b_ob, 
Transform& tfm);
 
        /* util */
@@ -99,6 +100,17 @@
 
        Scene *scene;
        bool preview;
+
+       struct RenderLayerInfo {
+               RenderLayerInfo()
+               : scene_layer(0), layer(0),
+                 material_override(PointerRNA_NULL)
+               {}
+
+               uint scene_layer;
+               uint layer;
+               BL::Material material_override;
+       } render_layer;
 };
 
 CCL_NAMESPACE_END

Modified: branches/cycles/intern/cycles/device/device.cpp
===================================================================
--- branches/cycles/intern/cycles/device/device.cpp     2011-09-12 13:00:24 UTC 
(rev 40162)
+++ branches/cycles/intern/cycles/device/device.cpp     2011-09-12 13:13:56 UTC 
(rev 40163)
@@ -84,7 +84,7 @@
 
 void Device::pixels_copy_from(device_memory& mem, int y, int w, int h)
 {
-       mem_copy_from(mem, sizeof(uchar)*4*y*w, sizeof(uchar)*4*w*h);
+       mem_copy_from(mem, sizeof(uint8_t)*4*y*w, sizeof(uint8_t)*4*w*h);
 }
 
 void Device::pixels_free(device_memory& mem)
@@ -104,8 +104,14 @@
        glPixelZoom((float)width/(float)w, (float)height/(float)h);
        glRasterPos2f(0, y);
 
-       glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, (void*)rgba.data_pointer);
+       uint8_t *pixels = (uint8_t*)rgba.data_pointer;
 
+       /* for multi devices, this assumes the ineffecient method that we 
allocate
+          all pixels on the device even though we only render to a subset */
+       pixels += sizeof(uint8_t)*4*y*w;
+
+       glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
+
        glRasterPos2f(0.0f, 0.0f);
        glPixelZoom(1.0f, 1.0f);
 

Modified: branches/cycles/intern/cycles/device/device_cuda.cpp
===================================================================
--- branches/cycles/intern/cycles/device/device_cuda.cpp        2011-09-12 
13:00:24 UTC (rev 40162)
+++ branches/cycles/intern/cycles/device/device_cuda.cpp        2011-09-12 
13:13:56 UTC (rev 40163)
@@ -232,11 +232,16 @@
                double starttime = time_dt();
                printf("Compiling CUDA kernel ...\n");
 

@@ 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