Revision: 39779
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39779
Author:   blendix
Date:     2011-08-29 17:17:40 +0000 (Mon, 29 Aug 2011)
Log Message:
-----------
Cycles: some tweaks to try to get sm_13 shader compiling.

Modified Paths:
--------------
    branches/cycles/intern/cycles/kernel/kernel_path.h
    branches/cycles/intern/cycles/kernel/svm/svm.h
    branches/cycles/intern/cycles/kernel/svm/svm_clouds.h
    branches/cycles/intern/cycles/kernel/svm/svm_distorted_noise.h
    branches/cycles/intern/cycles/kernel/svm/svm_magic.h
    branches/cycles/intern/cycles/kernel/svm/svm_marble.h
    branches/cycles/intern/cycles/kernel/svm/svm_musgrave.h
    branches/cycles/intern/cycles/kernel/svm/svm_noise.h
    branches/cycles/intern/cycles/kernel/svm/svm_stucci.h
    branches/cycles/intern/cycles/kernel/svm/svm_voronoi.h
    branches/cycles/intern/cycles/kernel/svm/svm_wood.h

Modified: branches/cycles/intern/cycles/kernel/kernel_path.h
===================================================================
--- branches/cycles/intern/cycles/kernel/kernel_path.h  2011-08-29 16:54:13 UTC 
(rev 39778)
+++ branches/cycles/intern/cycles/kernel/kernel_path.h  2011-08-29 17:17:40 UTC 
(rev 39779)
@@ -151,15 +151,8 @@
                if((sd.flag & SD_HOLDOUT) && (path_flag & PATH_RAY_CAMERA)) {
                        float3 holdout_weight = shader_holdout_eval(kg, &sd);
 
-                       if(kernel_data.background.transparent) {
+                       if(kernel_data.background.transparent)
                                Ltransparent += 
average(holdout_weight*throughput);
-                       }
-                       else {
-                               ShaderData sd;
-                               shader_setup_from_background(kg, &sd, &ray);
-                               L += 
holdout_weight*throughput*shader_eval_background(kg, &sd, path_flag);
-                               shader_release(kg, &sd);
-                       }
                }
 #endif
 

Modified: branches/cycles/intern/cycles/kernel/svm/svm.h
===================================================================
--- branches/cycles/intern/cycles/kernel/svm/svm.h      2011-08-29 16:54:13 UTC 
(rev 39778)
+++ branches/cycles/intern/cycles/kernel/svm/svm.h      2011-08-29 17:17:40 UTC 
(rev 39779)
@@ -160,111 +160,157 @@
        while(1) {
                uint4 node = read_node(kg, &offset);
 
-               if(node.x == NODE_SHADER_JUMP) {
-                       if(type == SHADER_TYPE_SURFACE) offset = node.y;
-                       else if(type == SHADER_TYPE_VOLUME) offset = node.z;
-                       else if(type == SHADER_TYPE_DISPLACEMENT) offset = 
node.w;
-                       else return;
-               }
-               else if(node.x == NODE_CLOSURE_BSDF)
-                       svm_node_closure_bsdf(sd, stack, node, randb);
-               else if(node.x == NODE_CLOSURE_EMISSION)
-                       svm_node_closure_emission(sd);
-               else if(node.x == NODE_CLOSURE_BACKGROUND)
-                       svm_node_closure_background(sd);
-               else if(node.x == NODE_CLOSURE_HOLDOUT)
-                       svm_node_closure_holdout(sd);
-               else if(node.x == NODE_CLOSURE_SET_WEIGHT)
-                       svm_node_closure_set_weight(sd, node.y, node.z, node.w);
-               else if(node.x == NODE_CLOSURE_WEIGHT)
-                       svm_node_closure_weight(sd, stack, node.y);
-               else if(node.x == NODE_EMISSION_WEIGHT)
-                       svm_node_emission_weight(kg, sd, stack, node);
-               else if(node.x == NODE_MIX_CLOSURE)
-                       svm_node_mix_closure(sd, stack, node.y, node.z, 
&offset, &randb);
-               else if(node.x == NODE_ADD_CLOSURE)
-                       svm_node_add_closure(sd, stack, node.y, node.z, 
&offset, &randb, &closure_weight);
-               else if(node.x == NODE_JUMP)
-                       offset = node.y;
+               switch(node.x) {
+                       case NODE_SHADER_JUMP: {
+                               if(type == SHADER_TYPE_SURFACE) offset = node.y;
+                               else if(type == SHADER_TYPE_VOLUME) offset = 
node.z;
+                               else if(type == SHADER_TYPE_DISPLACEMENT) 
offset = node.w;
+                               else return;
+                               break;
+                       }
+                       case NODE_CLOSURE_BSDF:
+                               svm_node_closure_bsdf(sd, stack, node, randb);
+                               break;
+                       case NODE_CLOSURE_EMISSION:
+                               svm_node_closure_emission(sd);
+                               break;
+                       case NODE_CLOSURE_BACKGROUND:
+                               svm_node_closure_background(sd);
+                               break;
+                       case NODE_CLOSURE_HOLDOUT:
+                               svm_node_closure_holdout(sd);
+                               break;
+                       case NODE_CLOSURE_SET_WEIGHT:
+                               svm_node_closure_set_weight(sd, node.y, node.z, 
node.w);
+                               break;
+                       case NODE_CLOSURE_WEIGHT:
+                               svm_node_closure_weight(sd, stack, node.y);
+                               break;
+                       case NODE_EMISSION_WEIGHT:
+                               svm_node_emission_weight(kg, sd, stack, node);
+                               break;
+                       case NODE_MIX_CLOSURE:
+                               svm_node_mix_closure(sd, stack, node.y, node.z, 
&offset, &randb);
+                               break;
+                       case NODE_ADD_CLOSURE:
+                               svm_node_add_closure(sd, stack, node.y, node.z, 
&offset, &randb, &closure_weight);
+                               break;
+                       case NODE_JUMP:
+                               offset = node.y;
+                               break;
 #ifdef __TEXTURES__
-               else if(node.x == NODE_TEX_NOISE_F)
-                       svm_node_tex_noise_f(sd, stack, node.y, node.z);
-               else if(node.x == NODE_TEX_NOISE_V)
-                       svm_node_tex_noise_v(sd, stack, node.y, node.z);
-               else if(node.x == NODE_TEX_IMAGE)
-                       svm_node_tex_image(kg, sd, stack, node);
-               else if(node.x == NODE_TEX_ENVIRONMENT)
-                       svm_node_tex_environment(kg, sd, stack, node);
-               else if(node.x == NODE_TEX_SKY)
-                       svm_node_tex_sky(kg, sd, stack, node.y, node.z);
-               else if(node.x == NODE_TEX_BLEND)
-                       svm_node_tex_blend(sd, stack, node);
-               else if(node.x == NODE_TEX_CLOUDS)
-                       svm_node_tex_clouds(sd, stack, node);
-               else if(node.x == NODE_TEX_VORONOI)
-                       svm_node_tex_voronoi(kg, sd, stack, node, &offset);
-               else if(node.x == NODE_TEX_MUSGRAVE)
-                       svm_node_tex_musgrave(kg, sd, stack, node, &offset);
-               else if(node.x == NODE_TEX_MARBLE)
-                       svm_node_tex_marble(kg, sd, stack, node, &offset);
-               else if(node.x == NODE_TEX_MAGIC)
-                       svm_node_tex_magic(sd, stack, node);
-               else if(node.x == NODE_TEX_STUCCI)
-                       svm_node_tex_stucci(kg, sd, stack, node, &offset);
-               else if(node.x == NODE_TEX_DISTORTED_NOISE)
-                       svm_node_tex_distorted_noise(kg, sd, stack, node, 
&offset);
-               else if(node.x == NODE_TEX_WOOD)
-                       svm_node_tex_wood(kg, sd, stack, node, &offset);
+                       case NODE_TEX_NOISE_F:
+                               svm_node_tex_noise_f(sd, stack, node.y, node.z);
+                               break;
+                       case NODE_TEX_NOISE_V:
+                               svm_node_tex_noise_v(sd, stack, node.y, node.z);
+                               break;
+                       case NODE_TEX_IMAGE:
+                               svm_node_tex_image(kg, sd, stack, node);
+                               break;
+                       case NODE_TEX_ENVIRONMENT:
+                               svm_node_tex_environment(kg, sd, stack, node);
+                               break;
+                       case NODE_TEX_SKY:
+                               svm_node_tex_sky(kg, sd, stack, node.y, node.z);
+                               break;
+                       case NODE_TEX_BLEND:
+                               svm_node_tex_blend(sd, stack, node);
+                               break;
+                       case NODE_TEX_CLOUDS:
+                               svm_node_tex_clouds(sd, stack, node);
+                               break;
+                       case NODE_TEX_VORONOI:
+                               svm_node_tex_voronoi(kg, sd, stack, node, 
&offset);
+                               break;
+                       case NODE_TEX_MUSGRAVE:
+                               svm_node_tex_musgrave(kg, sd, stack, node, 
&offset);
+                               break;
+                       case NODE_TEX_MARBLE:
+                               svm_node_tex_marble(kg, sd, stack, node, 
&offset);
+                               break;
+                       case NODE_TEX_MAGIC:
+                               svm_node_tex_magic(sd, stack, node);
+                               break;
+                       case NODE_TEX_STUCCI:
+                               svm_node_tex_stucci(kg, sd, stack, node, 
&offset);
+                               break;
+                       case NODE_TEX_DISTORTED_NOISE:
+                               svm_node_tex_distorted_noise(kg, sd, stack, 
node, &offset);
+                               break;
+                       case NODE_TEX_WOOD:
+                               svm_node_tex_wood(kg, sd, stack, node, &offset);
+                               break;
 #endif
-               else if(node.x == NODE_GEOMETRY)
-                       svm_node_geometry(sd, stack, node.y, node.z);
-               else if(node.x == NODE_GEOMETRY_BUMP_DX)
-                       svm_node_geometry_bump_dx(sd, stack, node.y, node.z);
-               else if(node.x == NODE_GEOMETRY_BUMP_DY)
-                       svm_node_geometry_bump_dy(sd, stack, node.y, node.z);
-               else if(node.x == NODE_LIGHT_PATH)
-                       svm_node_light_path(sd, stack, node.y, node.z, 
path_flag);
-               else if(node.x == NODE_CONVERT)
-                       svm_node_convert(sd, stack, node.y, node.z, node.w);
-               else if(node.x == NODE_VALUE_F)
-                       svm_node_value_f(kg, sd, stack, node.y, node.z);
-               else if(node.x == NODE_VALUE_V)
-                       svm_node_value_v(kg, sd, stack, node.y, &offset);
-               else if(node.x == NODE_MIX)
-                       svm_node_mix(kg, sd, stack, node.y, node.z, node.w, 
&offset);
-               else if(node.x == NODE_ATTR)
-                       svm_node_attr(kg, sd, stack, node);
-               else if(node.x == NODE_ATTR_BUMP_DX)
-                       svm_node_attr_bump_dx(kg, sd, stack, node);
-               else if(node.x == NODE_ATTR_BUMP_DY)
-                       svm_node_attr_bump_dy(kg, sd, stack, node);
-               else if(node.x == NODE_FRESNEL)
-                       svm_node_fresnel(sd, stack, node.y, node.z, node.w);
-               else if(node.x == NODE_SET_DISPLACEMENT)
-                       svm_node_set_displacement(sd, stack, node.y);
-               else if(node.x == NODE_SET_BUMP)
-                       svm_node_set_bump(sd, stack, node.y, node.z, node.w);
-               else if(node.x == NODE_MATH)
-                       svm_node_math(kg, sd, stack, node.y, node.z, node.w, 
&offset);
-               else if(node.x == NODE_VECTOR_MATH)
-                       svm_node_vector_math(kg, sd, stack, node.y, node.z, 
node.w, &offset);
-               else if(node.x == NODE_MAPPING)
-                       svm_node_mapping(kg, sd, stack, node.y, node.z, 
&offset);
-               else if(node.x == NODE_TEX_COORD)
-                       svm_node_tex_coord(kg, sd, stack, node.y, node.z);
-               else if(node.x == NODE_TEX_COORD_BUMP_DX)
-                       svm_node_tex_coord_bump_dx(kg, sd, stack, node.y, 
node.z);
-               else if(node.x == NODE_TEX_COORD_BUMP_DY)
-                       svm_node_tex_coord_bump_dy(kg, sd, stack, node.y, 
node.z);
-               else if(node.x == NODE_EMISSION_SET_WEIGHT_TOTAL)
-                       svm_node_emission_set_weight_total(kg, sd, node.y, 
node.z, node.w);
-               else if(node.x == NODE_END)
-                       break;
-               else
-                       return;
+                       case NODE_GEOMETRY:
+                               svm_node_geometry(sd, stack, node.y, node.z);
+                               break;
+                       case NODE_GEOMETRY_BUMP_DX:
+                               svm_node_geometry_bump_dx(sd, stack, node.y, 
node.z);
+                               break;
+                       case NODE_GEOMETRY_BUMP_DY:
+                               svm_node_geometry_bump_dy(sd, stack, node.y, 
node.z);
+                               break;
+                       case NODE_LIGHT_PATH:
+                               svm_node_light_path(sd, stack, node.y, node.z, 
path_flag);
+                               break;
+                       case NODE_CONVERT:
+                               svm_node_convert(sd, stack, node.y, node.z, 
node.w);
+                               break;
+                       case NODE_VALUE_F:
+                               svm_node_value_f(kg, sd, stack, node.y, node.z);
+                               break;
+                       case NODE_VALUE_V:
+                               svm_node_value_v(kg, sd, stack, node.y, 
&offset);
+                               break;
+                       case NODE_MIX:
+                               svm_node_mix(kg, sd, stack, node.y, node.z, 
node.w, &offset);
+                               break;
+                       case NODE_ATTR:
+                               svm_node_attr(kg, sd, stack, node);
+                               break;
+                       case NODE_ATTR_BUMP_DX:
+                               svm_node_attr_bump_dx(kg, sd, stack, node);
+                               break;
+                       case NODE_ATTR_BUMP_DY:
+                               svm_node_attr_bump_dy(kg, sd, stack, node);
+                               break;
+                       case NODE_FRESNEL:
+                               svm_node_fresnel(sd, stack, node.y, node.z, 
node.w);
+                               break;
+                       case NODE_SET_DISPLACEMENT:
+                               svm_node_set_displacement(sd, stack, node.y);
+                               break;
+                       case NODE_SET_BUMP:
+                               svm_node_set_bump(sd, stack, node.y, node.z, 
node.w);
+                               break;
+                       case NODE_MATH:
+                               svm_node_math(kg, sd, stack, node.y, node.z, 
node.w, &offset);
+                               break;
+                       case NODE_VECTOR_MATH:
+                               svm_node_vector_math(kg, sd, stack, node.y, 
node.z, node.w, &offset);
+                               break;
+                       case NODE_MAPPING:
+                               svm_node_mapping(kg, sd, stack, node.y, node.z, 
&offset);
+                               break;
+                       case NODE_TEX_COORD:
+                               svm_node_tex_coord(kg, sd, stack, node.y, 
node.z);
+                               break;
+                       case NODE_TEX_COORD_BUMP_DX:
+                               svm_node_tex_coord_bump_dx(kg, sd, stack, 
node.y, node.z);
+                               break;
+                       case NODE_TEX_COORD_BUMP_DY:
+                               svm_node_tex_coord_bump_dy(kg, sd, stack, 
node.y, node.z);
+                               break;
+                       case NODE_EMISSION_SET_WEIGHT_TOTAL:
+                               svm_node_emission_set_weight_total(kg, sd, 
node.y, node.z, node.w);
+                               break;
+                       case NODE_END:
+                       default:
+                               sd->svm_closure_weight *= closure_weight;
+                               return;
+               }
        }
-
-       sd->svm_closure_weight *= closure_weight;
 }
 
 CCL_NAMESPACE_END

Modified: branches/cycles/intern/cycles/kernel/svm/svm_clouds.h
===================================================================

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