[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20424] trunk/blender/source/blender: Bugfix #18801
Ton Roosendaal
ton at blender.org
Tue May 26 15:46:08 CEST 2009
Revision: 20424
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20424
Author: ton
Date: 2009-05-26 15:46:08 +0200 (Tue, 26 May 2009)
Log Message:
-----------
Bugfix #18801
Third transparent shadow bug... this time it's a Material Node, which
has mirror + transp-shadow on, and when it traces its own material it
enters an eternal loop...
Raytracing + shading + materialnode combo really needs work!
Modified Paths:
--------------
trunk/blender/source/blender/nodes/intern/SHD_nodes/SHD_material.c
trunk/blender/source/blender/render/extern/include/RE_shader_ext.h
trunk/blender/source/blender/render/intern/source/rayshade.c
Modified: trunk/blender/source/blender/nodes/intern/SHD_nodes/SHD_material.c
===================================================================
--- trunk/blender/source/blender/nodes/intern/SHD_nodes/SHD_material.c 2009-05-26 12:57:16 UTC (rev 20423)
+++ trunk/blender/source/blender/nodes/intern/SHD_nodes/SHD_material.c 2009-05-26 13:46:08 UTC (rev 20424)
@@ -130,7 +130,9 @@
nodestack_get_vec(&shi->translucency, SOCK_VALUE, in[MAT_IN_TRANSLUCENCY]);
}
+ shi->nodes= 1; /* temp hack to prevent trashadow recursion */
node_shader_lamp_loop(shi, &shrnode); /* clears shrnode */
+ shi->nodes= 0;
/* write to outputs */
if(node->custom1 & SH_NODE_MAT_DIFF) {
Modified: trunk/blender/source/blender/render/extern/include/RE_shader_ext.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_shader_ext.h 2009-05-26 12:57:16 UTC (rev 20423)
+++ trunk/blender/source/blender/render/extern/include/RE_shader_ext.h 2009-05-26 13:46:08 UTC (rev 20424)
@@ -171,6 +171,7 @@
/* from initialize, part or renderlayer */
short do_preview; /* for nodes, in previewrender */
short thread, sample; /* sample: ShadeSample array index */
+ short nodes; /* indicate node shading, temp hack to prevent recursion */
unsigned int lay;
int layflag, passflag, combinedflag;
Modified: trunk/blender/source/blender/render/intern/source/rayshade.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rayshade.c 2009-05-26 12:57:16 UTC (rev 20423)
+++ trunk/blender/source/blender/render/intern/source/rayshade.c 2009-05-26 13:46:08 UTC (rev 20424)
@@ -263,7 +263,8 @@
shade_input_set_shade_texco(shi);
if(is->mode==RE_RAY_SHADOW_TRA) {
- if(shi->mat->nodetree && shi->mat->use_nodes) {
+ /* temp hack to prevent recursion */
+ if(shi->nodes==0 && shi->mat->nodetree && shi->mat->use_nodes) {
ntreeShaderExecTree(shi->mat->nodetree, shi, shr);
shi->mat= vlr->mat; /* shi->mat is being set in nodetree */
}
@@ -1299,6 +1300,7 @@
shi.xs= origshi->xs;
shi.ys= origshi->ys;
shi.lay= origshi->lay;
+ shi.nodes= origshi->nodes;
shade_ray(is, &shi, &shr);
if (traflag & RAY_TRA)
More information about the Bf-blender-cvs
mailing list