[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39779] branches/cycles/intern/cycles/ kernel: Cycles: some tweaks to try to get sm_13 shader compiling.
Brecht Van Lommel
brechtvanlommel at pandora.be
Mon Aug 29 19:17:41 CEST 2011
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. @@
More information about the Bf-blender-cvs
mailing list