[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40163] branches/cycles: Cycles:
Brecht Van Lommel
brechtvanlommel at pandora.be
Mon Sep 12 15:13:56 CEST 2011
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. @@
More information about the Bf-blender-cvs
mailing list