[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58901] branches/soc-2013-paint: Merge trunk -r58900 into soc-2013-paint
Antony Riakiotakis
kalast at gmail.com
Sun Aug 4 16:04:25 CEST 2013
Revision: 58901
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58901
Author: psy-fi
Date: 2013-08-04 14:04:23 +0000 (Sun, 04 Aug 2013)
Log Message:
-----------
Merge trunk -r58900 into soc-2013-paint
Revision Links:
--------------
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58900
Modified Paths:
--------------
branches/soc-2013-paint/intern/cycles/blender/addon/ui.py
branches/soc-2013-paint/intern/cycles/blender/blender_session.cpp
branches/soc-2013-paint/intern/cycles/kernel/closure/bsdf.h
branches/soc-2013-paint/intern/cycles/kernel/kernel_accumulate.h
branches/soc-2013-paint/intern/cycles/kernel/kernel_light.h
branches/soc-2013-paint/intern/cycles/kernel/kernel_passes.h
branches/soc-2013-paint/intern/cycles/kernel/kernel_path.h
branches/soc-2013-paint/intern/cycles/kernel/kernel_shader.h
branches/soc-2013-paint/intern/cycles/kernel/kernel_subsurface.h
branches/soc-2013-paint/intern/cycles/kernel/kernel_types.h
branches/soc-2013-paint/intern/cycles/kernel/svm/svm_types.h
branches/soc-2013-paint/intern/cycles/render/film.cpp
branches/soc-2013-paint/intern/guardedalloc/MEM_guardedalloc.h
branches/soc-2013-paint/intern/guardedalloc/intern/mallocn.c
branches/soc-2013-paint/intern/rigidbody/rb_bullet_api.cpp
branches/soc-2013-paint/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
branches/soc-2013-paint/source/blender/blenkernel/BKE_node.h
branches/soc-2013-paint/source/blender/blenkernel/intern/DerivedMesh.c
branches/soc-2013-paint/source/blender/blenkernel/intern/dynamicpaint.c
branches/soc-2013-paint/source/blender/blenkernel/intern/fmodifier.c
branches/soc-2013-paint/source/blender/blenkernel/intern/movieclip.c
branches/soc-2013-paint/source/blender/blenkernel/intern/navmesh_conversion.c
branches/soc-2013-paint/source/blender/blenkernel/intern/object.c
branches/soc-2013-paint/source/blender/blenkernel/intern/pbvh.c
branches/soc-2013-paint/source/blender/blenkernel/intern/pointcache.c
branches/soc-2013-paint/source/blender/blenlib/BLI_utildefines.h
branches/soc-2013-paint/source/blender/blenlib/intern/BLI_heap.c
branches/soc-2013-paint/source/blender/blenlib/intern/BLI_mempool.c
branches/soc-2013-paint/source/blender/blenlib/intern/buffer.c
branches/soc-2013-paint/source/blender/blenloader/intern/readfile.c
branches/soc-2013-paint/source/blender/blenloader/intern/writefile.c
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_construct.c
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_core.c
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_edgeloop.c
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_operators.c
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_polygon.c
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_polygon.h
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_private.h
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_queries.c
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_queries.h
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_structure.c
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_structure.h
branches/soc-2013-paint/source/blender/bmesh/intern/bmesh_walkers.c
branches/soc-2013-paint/source/blender/bmesh/operators/bmo_create.c
branches/soc-2013-paint/source/blender/bmesh/operators/bmo_edgenet.c
branches/soc-2013-paint/source/blender/bmesh/operators/bmo_join_triangles.c
branches/soc-2013-paint/source/blender/bmesh/operators/bmo_wireframe.c
branches/soc-2013-paint/source/blender/bmesh/tools/bmesh_decimate_dissolve.c
branches/soc-2013-paint/source/blender/collada/MeshImporter.cpp
branches/soc-2013-paint/source/blender/compositor/nodes/COM_RenderLayersNode.cpp
branches/soc-2013-paint/source/blender/editors/interface/interface_layout.c
branches/soc-2013-paint/source/blender/editors/mesh/editface.c
branches/soc-2013-paint/source/blender/editors/mesh/editmesh_loopcut.c
branches/soc-2013-paint/source/blender/editors/mesh/editmesh_tools.c
branches/soc-2013-paint/source/blender/editors/mesh/editmesh_utils.c
branches/soc-2013-paint/source/blender/editors/object/object_modifier.c
branches/soc-2013-paint/source/blender/editors/space_logic/logic_window.c
branches/soc-2013-paint/source/blender/editors/space_outliner/outliner_draw.c
branches/soc-2013-paint/source/blender/editors/space_outliner/outliner_edit.c
branches/soc-2013-paint/source/blender/editors/space_outliner/outliner_intern.h
branches/soc-2013-paint/source/blender/editors/space_outliner/outliner_select.c
branches/soc-2013-paint/source/blender/editors/space_outliner/outliner_tools.c
branches/soc-2013-paint/source/blender/editors/space_outliner/outliner_tree.c
branches/soc-2013-paint/source/blender/editors/space_outliner/space_outliner.c
branches/soc-2013-paint/source/blender/editors/space_view3d/drawobject.c
branches/soc-2013-paint/source/blender/editors/space_view3d/view3d_select.c
branches/soc-2013-paint/source/blender/editors/transform/transform.c
branches/soc-2013-paint/source/blender/makesdna/DNA_dynamicpaint_types.h
branches/soc-2013-paint/source/blender/makesdna/DNA_outliner_types.h
branches/soc-2013-paint/source/blender/makesdna/DNA_scene_types.h
branches/soc-2013-paint/source/blender/makesdna/DNA_space_types.h
branches/soc-2013-paint/source/blender/makesrna/intern/makesrna.c
branches/soc-2013-paint/source/blender/makesrna/intern/rna_dynamicpaint.c
branches/soc-2013-paint/source/blender/makesrna/intern/rna_gpencil.c
branches/soc-2013-paint/source/blender/makesrna/intern/rna_object_force.c
branches/soc-2013-paint/source/blender/makesrna/intern/rna_render.c
branches/soc-2013-paint/source/blender/makesrna/intern/rna_scene.c
branches/soc-2013-paint/source/blender/modifiers/intern/MOD_weightvgedit.c
branches/soc-2013-paint/source/blender/modifiers/intern/MOD_weightvgproximity.c
branches/soc-2013-paint/source/blender/nodes/composite/nodes/node_composite_image.c
branches/soc-2013-paint/source/blender/render/intern/raytrace/rayobject_octree.cpp
branches/soc-2013-paint/source/blender/render/intern/source/render_result.c
branches/soc-2013-paint/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
branches/soc-2013-paint/source/gameengine/Ketsji/BL_ActionManager.cpp
branches/soc-2013-paint/source/gameengine/Ketsji/KX_MeshProxy.cpp
branches/soc-2013-paint/source/gameengine/Ketsji/KX_NavMeshObject.cpp
branches/soc-2013-paint/source/gameengine/Ketsji/KX_ObstacleSimulation.cpp
branches/soc-2013-paint/source/gameengine/Ketsji/KX_PolyProxy.h
branches/soc-2013-paint/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
branches/soc-2013-paint/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
branches/soc-2013-paint/source/gameengine/Rasterizer/RAS_2DFilterManager.h
branches/soc-2013-paint/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.cpp
branches/soc-2013-paint/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp
branches/soc-2013-paint/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp
branches/soc-2013-paint/source/gameengine/SceneGraph/SG_Tree.cpp
branches/soc-2013-paint/source/gameengine/VideoTexture/BlendType.h
branches/soc-2013-paint/source/gameengine/VideoTexture/Exception.cpp
branches/soc-2013-paint/source/gameengine/VideoTexture/FilterSource.h
branches/soc-2013-paint/source/gameengine/VideoTexture/ImageMix.h
branches/soc-2013-paint/source/gameengine/VideoTexture/ImageRender.cpp
Modified: branches/soc-2013-paint/intern/cycles/blender/addon/ui.py
===================================================================
--- branches/soc-2013-paint/intern/cycles/blender/addon/ui.py 2013-08-04 12:40:46 UTC (rev 58900)
+++ branches/soc-2013-paint/intern/cycles/blender/addon/ui.py 2013-08-04 14:04:23 UTC (rev 58901)
@@ -373,7 +373,13 @@
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)
-
+ col.label(text="Subsurface:")
+ row = col.row(align=True)
+ row.prop(rl, "use_pass_subsurface_direct", text="Direct", toggle=True)
+ row.prop(rl, "use_pass_subsurface_indirect", text="Indirect", toggle=True)
+ row.prop(rl, "use_pass_subsurface_color", text="Color", toggle=True)
+
+ col.separator()
col.prop(rl, "use_pass_emit", text="Emission")
col.prop(rl, "use_pass_environment")
col.prop(rl, "use_pass_ambient_occlusion")
Modified: branches/soc-2013-paint/intern/cycles/blender/blender_session.cpp
===================================================================
--- branches/soc-2013-paint/intern/cycles/blender/blender_session.cpp 2013-08-04 12:40:46 UTC (rev 58900)
+++ branches/soc-2013-paint/intern/cycles/blender/blender_session.cpp 2013-08-04 14:04:23 UTC (rev 58901)
@@ -216,6 +216,8 @@
return PASS_GLOSSY_DIRECT;
case BL::RenderPass::type_TRANSMISSION_DIRECT:
return PASS_TRANSMISSION_DIRECT;
+ case BL::RenderPass::type_SUBSURFACE_DIRECT:
+ return PASS_SUBSURFACE_DIRECT;
case BL::RenderPass::type_DIFFUSE_INDIRECT:
return PASS_DIFFUSE_INDIRECT;
@@ -223,6 +225,8 @@
return PASS_GLOSSY_INDIRECT;
case BL::RenderPass::type_TRANSMISSION_INDIRECT:
return PASS_TRANSMISSION_INDIRECT;
+ case BL::RenderPass::type_SUBSURFACE_INDIRECT:
+ return PASS_SUBSURFACE_INDIRECT;
case BL::RenderPass::type_DIFFUSE_COLOR:
return PASS_DIFFUSE_COLOR;
@@ -230,6 +234,8 @@
return PASS_GLOSSY_COLOR;
case BL::RenderPass::type_TRANSMISSION_COLOR:
return PASS_TRANSMISSION_COLOR;
+ case BL::RenderPass::type_SUBSURFACE_COLOR:
+ return PASS_SUBSURFACE_COLOR;
case BL::RenderPass::type_EMIT:
return PASS_EMISSION;
Modified: branches/soc-2013-paint/intern/cycles/kernel/closure/bsdf.h
===================================================================
--- branches/soc-2013-paint/intern/cycles/kernel/closure/bsdf.h 2013-08-04 12:40:46 UTC (rev 58900)
+++ branches/soc-2013-paint/intern/cycles/kernel/closure/bsdf.h 2013-08-04 14:04:23 UTC (rev 58901)
@@ -45,6 +45,7 @@
switch(sc->type) {
case CLOSURE_BSDF_DIFFUSE_ID:
+ case CLOSURE_BSDF_BSSRDF_ID:
label = bsdf_diffuse_sample(sc, sd->Ng, sd->I, sd->dI.dx, sd->dI.dy, randu, randv,
eval, omega_in, &domega_in->dx, &domega_in->dy, pdf);
break;
@@ -134,6 +135,7 @@
if(dot(sd->Ng, omega_in) >= 0.0f) {
switch(sc->type) {
case CLOSURE_BSDF_DIFFUSE_ID:
+ case CLOSURE_BSDF_BSSRDF_ID:
eval = bsdf_diffuse_eval_reflect(sc, sd->I, omega_in, pdf);
break;
#ifdef __SVM__
@@ -195,6 +197,7 @@
else {
switch(sc->type) {
case CLOSURE_BSDF_DIFFUSE_ID:
+ case CLOSURE_BSDF_BSSRDF_ID:
eval = bsdf_diffuse_eval_transmit(sc, sd->I, omega_in, pdf);
break;
#ifdef __SVM__
@@ -262,6 +265,7 @@
switch(sc->type) {
case CLOSURE_BSDF_DIFFUSE_ID:
+ case CLOSURE_BSDF_BSSRDF_ID:
bsdf_diffuse_blur(sc, roughness);
break;
#ifdef __SVM__
Modified: branches/soc-2013-paint/intern/cycles/kernel/kernel_accumulate.h
===================================================================
--- branches/soc-2013-paint/intern/cycles/kernel/kernel_accumulate.h 2013-08-04 12:40:46 UTC (rev 58900)
+++ branches/soc-2013-paint/intern/cycles/kernel/kernel_accumulate.h 2013-08-04 14:04:23 UTC (rev 58901)
@@ -33,6 +33,7 @@
eval->glossy = make_float3(0.0f, 0.0f, 0.0f);
eval->transmission = make_float3(0.0f, 0.0f, 0.0f);
eval->transparent = make_float3(0.0f, 0.0f, 0.0f);
+ eval->subsurface = make_float3(0.0f, 0.0f, 0.0f);
if(type == CLOSURE_BSDF_TRANSPARENT_ID)
eval->transparent = value;
@@ -40,8 +41,10 @@
eval->diffuse = value;
else if(CLOSURE_IS_BSDF_GLOSSY(type))
eval->glossy = value;
- else
+ else if(CLOSURE_IS_BSDF_TRANSMISSION(type))
eval->transmission = value;
+ else if(CLOSURE_IS_BSDF_BSSRDF(type))
+ eval->subsurface = value;
}
else
eval->diffuse = value;
@@ -58,8 +61,10 @@
eval->diffuse += value;
else if(CLOSURE_IS_BSDF_GLOSSY(type))
eval->glossy += value;
- else
+ else if(CLOSURE_IS_BSDF_TRANSMISSION(type))
eval->transmission += value;
+ else if(CLOSURE_IS_BSDF_BSSRDF(type))
+ eval->subsurface += value;
/* skipping transparent, this function is used by for eval(), will be zero then */
}
@@ -77,7 +82,8 @@
return is_zero(eval->diffuse)
&& is_zero(eval->glossy)
&& is_zero(eval->transmission)
- && is_zero(eval->transparent);
+ && is_zero(eval->transparent)
+ && is_zero(eval->subsurface);
}
else
return is_zero(eval->diffuse);
@@ -93,6 +99,7 @@
eval->diffuse *= value;
eval->glossy *= value;
eval->transmission *= value;
+ eval->subsurface *= value;
/* skipping transparent, this function is used by for eval(), will be zero then */
}
@@ -124,18 +131,22 @@
L->color_diffuse = make_float3(0.0f, 0.0f, 0.0f);
L->color_glossy = make_float3(0.0f, 0.0f, 0.0f);
L->color_transmission = make_float3(0.0f, 0.0f, 0.0f);
+ L->color_subsurface = make_float3(0.0f, 0.0f, 0.0f);
L->direct_diffuse = make_float3(0.0f, 0.0f, 0.0f);
L->direct_glossy = make_float3(0.0f, 0.0f, 0.0f);
L->direct_transmission = make_float3(0.0f, 0.0f, 0.0f);
+ L->direct_subsurface = make_float3(0.0f, 0.0f, 0.0f);
L->indirect_diffuse = make_float3(0.0f, 0.0f, 0.0f);
L->indirect_glossy = make_float3(0.0f, 0.0f, 0.0f);
L->indirect_transmission = make_float3(0.0f, 0.0f, 0.0f);
+ L->indirect_subsurface = make_float3(0.0f, 0.0f, 0.0f);
L->path_diffuse = make_float3(0.0f, 0.0f, 0.0f);
L->path_glossy = make_float3(0.0f, 0.0f, 0.0f);
L->path_transmission = make_float3(0.0f, 0.0f, 0.0f);
+ L->path_subsurface = make_float3(0.0f, 0.0f, 0.0f);
L->emission = make_float3(0.0f, 0.0f, 0.0f);
L->background = make_float3(0.0f, 0.0f, 0.0f);
@@ -164,14 +175,15 @@
L->path_diffuse = bsdf_eval->diffuse*value;
L->path_glossy = bsdf_eval->glossy*value;
L->path_transmission = bsdf_eval->transmission*value;
+ L->path_subsurface = bsdf_eval->subsurface*value;
- *throughput = L->path_diffuse + L->path_glossy + L->path_transmission;
+ *throughput = L->path_diffuse + L->path_glossy + L->path_transmission + L->path_subsurface;
L->direct_throughput = *throughput;
}
else {
/* transparent bounce before first hit, or indirectly visible through BSDF */
- float3 sum = (bsdf_eval->diffuse + bsdf_eval->glossy + bsdf_eval->transmission + bsdf_eval->transparent)*inverse_pdf;
+ float3 sum = (bsdf_eval->diffuse + bsdf_eval->glossy + bsdf_eval->transmission + bsdf_eval->transparent + bsdf_eval->subsurface)*inverse_pdf;
*throughput *= sum;
}
}
@@ -230,6 +242,7 @@
L->direct_diffuse += throughput*bsdf_eval->diffuse*shadow;
L->direct_glossy += throughput*bsdf_eval->glossy*shadow;
L->direct_transmission += throughput*bsdf_eval->transmission*shadow;
+ L->direct_subsurface += throughput*bsdf_eval->subsurface*shadow;
if(is_lamp) {
L->shadow.x += shadow.x*shadow_fac;
@@ -239,7 +252,7 @@
}
else {
/* indirectly visible lighting after BSDF bounce */
- float3 sum = bsdf_eval->diffuse + bsdf_eval->glossy + bsdf_eval->transmission;
+ float3 sum = bsdf_eval->diffuse + bsdf_eval->glossy + bsdf_eval->transmission + bsdf_eval->subsurface;
L->indirect += throughput*sum*shadow;
}
}
@@ -273,17 +286,19 @@
#ifdef __PASSES__
/* this division is a bit ugly, but means we only have to keep track of
* only a single throughput further along the path, here we recover just
- * the indirect parth that is not influenced by any particular BSDF type */
+ * the indirect path that is not influenced by any particular BSDF type */
if(L->use_light_pass) {
L->direct_emission = safe_divide_color(L->direct_emission, L->direct_throughput);
L->direct_diffuse += L->path_diffuse*L->direct_emission;
L->direct_glossy += L->path_glossy*L->direct_emission;
L->direct_transmission += L->path_transmission*L->direct_emission;
+ L->direct_subsurface += L->path_subsurface*L->direct_emission;
L->indirect = safe_divide_color(L->indirect, L->direct_throughput);
L->indirect_diffuse += L->path_diffuse*L->indirect;
L->indirect_glossy += L->path_glossy*L->indirect;
L->indirect_transmission += L->path_transmission*L->indirect;
+ L->indirect_subsurface += L->path_subsurface*L->indirect;
}
#endif
}
@@ -295,6 +310,7 @@
L->path_diffuse = make_float3(0.0f, 0.0f, 0.0f);
L->path_glossy = make_float3(0.0f, 0.0f, 0.0f);
L->path_transmission = make_float3(0.0f, 0.0f, 0.0f);
+ L->path_subsurface = make_float3(0.0f, 0.0f, 0.0f);
L->direct_emission = make_float3(0.0f, 0.0f, 0.0f);
L->indirect = make_float3(0.0f, 0.0f, 0.0f);
@@ -309,8 +325,8 @@
path_radiance_sum_indirect(L);
float3 L_sum = L->emission
- + L->direct_diffuse + L->direct_glossy + L->direct_transmission
- + L->indirect_diffuse + L->indirect_glossy + L->indirect_transmission;
+ + L->direct_diffuse + L->direct_glossy + L->direct_transmission + L->direct_subsurface
+ + L->indirect_diffuse + L->indirect_glossy + L->indirect_transmission + L->indirect_subsurface;
if(!kernel_data.background.transparent)
L_sum += L->background;
@@ -337,10 +353,12 @@
L->direct_diffuse = make_float3(0.0f, 0.0f, 0.0f);
L->direct_glossy = make_float3(0.0f, 0.0f, 0.0f);
L->direct_transmission = make_float3(0.0f, 0.0f, 0.0f);
+ L->direct_subsurface = make_float3(0.0f, 0.0f, 0.0f);
L->indirect_diffuse = make_float3(0.0f, 0.0f, 0.0f);
L->indirect_glossy = make_float3(0.0f, 0.0f, 0.0f);
L->indirect_transmission = make_float3(0.0f, 0.0f, 0.0f);
+ L->indirect_subsurface = make_float3(0.0f, 0.0f, 0.0f);
L->emission = make_float3(0.0f, 0.0f, 0.0f);
}
@@ -357,10 +375,12 @@
L->direct_diffuse *= scale;
L->direct_glossy *= scale;
L->direct_transmission *= scale;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list