Commit: b091542fe91353c15dd7240ba7ce8ecf72d4011b Author: OmarSquircleArt Date: Thu Aug 8 17:56:19 2019 +0200 Branches: soc-2019-cycles-procedural https://developer.blender.org/rBb091542fe91353c15dd7240ba7ce8ecf72d4011b
Avoid writing to input variables and using reserved function names. Previously, we edited the input variables directly, OSL doesn't like that. Moreover, we used the name `noise`, which is already a built-in function, so we changed the function names to `noise_texture_*` instead. =================================================================== M intern/cycles/kernel/shaders/node_noise_texture.osl M intern/cycles/kernel/svm/svm_noisetex.h M source/blender/gpu/shaders/gpu_shader_material.glsl M source/blender/nodes/shader/nodes/node_shader_tex_noise.c =================================================================== diff --git a/intern/cycles/kernel/shaders/node_noise_texture.osl b/intern/cycles/kernel/shaders/node_noise_texture.osl index 2113d162137..6e68017596c 100644 --- a/intern/cycles/kernel/shaders/node_noise_texture.osl +++ b/intern/cycles/kernel/shaders/node_noise_texture.osl @@ -55,8 +55,9 @@ vector4 random_vector4_offset(float seed) 100.0 + noise("hash", seed, 3.0) * 100.0); } -float noise(float p, float detail, float distortion, output color Color) +float noise_texture(float co, float detail, float distortion, output color Color) { + float p = co; if (distortion != 0.0) { p += safe_noise(p + random_float_offset(0.0)) * distortion; } @@ -68,8 +69,9 @@ float noise(float p, float detail, float distortion, output color Color) return value; } -float noise(vector2 p, float detail, float distortion, output color Color) +float noise_texture(vector2 co, float detail, float distortion, output color Color) { + vector2 p = co; if (distortion != 0.0) { p += vector2(safe_noise(p + random_vector2_offset(0.0)) * distortion, safe_noise(p + random_vector2_offset(1.0)) * distortion); @@ -82,8 +84,9 @@ float noise(vector2 p, float detail, float distortion, output color Color) return value; } -float noise(vector3 p, float detail, float distortion, output color Color) +float noise_texture(vector3 co, float detail, float distortion, output color Color) { + vector3 p = co; if (distortion != 0.0) { p += vector3(safe_noise(p + random_vector3_offset(0.0)) * distortion, safe_noise(p + random_vector3_offset(1.0)) * distortion, @@ -97,8 +100,9 @@ float noise(vector3 p, float detail, float distortion, output color Color) return value; } -float noise(vector4 p, float detail, float distortion, output color Color) +float noise_texture(vector4 co, float detail, float distortion, output color Color) { + vector4 p = co; if (distortion != 0.0) { p += vector4(safe_noise(p + random_vector4_offset(0.0)) * distortion, safe_noise(p + random_vector4_offset(1.0)) * distortion, @@ -131,13 +135,13 @@ shader node_noise_texture(int use_mapping = 0, float w = W * Scale; if (dimensions == "1D") - Value = noise(w, Detail, Distortion, Color); + Value = noise_texture(w, Detail, Distortion, Color); else if (dimensions == "2D") - Value = noise(vector2(p[0], p[1]), Detail, Distortion, Color); + Value = noise_texture(vector2(p[0], p[1]), Detail, Distortion, Color); else if (dimensions == "3D") - Value = noise(p, Detail, Distortion, Color); + Value = noise_texture(p, Detail, Distortion, Color); else if (dimensions == "4D") - Value = noise(vector4(p[0], p[1], p[2], w), Detail, Distortion, Color); + Value = noise_texture(vector4(p[0], p[1], p[2], w), Detail, Distortion, Color); else error("Unknown dimension!"); } diff --git a/intern/cycles/kernel/svm/svm_noisetex.h b/intern/cycles/kernel/svm/svm_noisetex.h index 03f489efcad..c74c118c42e 100644 --- a/intern/cycles/kernel/svm/svm_noisetex.h +++ b/intern/cycles/kernel/svm/svm_noisetex.h @@ -50,9 +50,10 @@ ccl_device_inline float4 random_float4_offset(float seed) 100.0f + hash_float2_to_float(make_float2(seed, 3.0f)) * 100.0f); } -ccl_device void tex_noise_1d( - float p, float detail, float distortion, bool color_is_needed, float *value, float3 *color) +ccl_device void noise_texture_1d( + float co, float detail, float distortion, bool color_is_needed, float *value, float3 *color) { + float p = co; if (distortion != 0.0f) { p += noise_1d(p + random_float_offset(0.0f)) * distortion; } @@ -65,9 +66,10 @@ ccl_device void tex_noise_1d( } } -ccl_device void tex_noise_2d( - float2 p, float detail, float distortion, bool color_is_needed, float *value, float3 *color) +ccl_device void noise_texture_2d( + float2 co, float detail, float distortion, bool color_is_needed, float *value, float3 *color) { + float2 p = co; if (distortion != 0.0f) { p += make_float2(noise_2d(p + random_float2_offset(0.0f)) * distortion, noise_2d(p + random_float2_offset(1.0f)) * distortion); @@ -81,9 +83,10 @@ ccl_device void tex_noise_2d( } } -ccl_device void tex_noise_3d( - float3 p, float detail, float distortion, bool color_is_needed, float *value, float3 *color) +ccl_device void noise_texture_3d( + float3 co, float detail, float distortion, bool color_is_needed, float *value, float3 *color) { + float3 p = co; if (distortion != 0.0f) { p += make_float3(noise_3d(p + random_float3_offset(0.0f)) * distortion, noise_3d(p + random_float3_offset(1.0f)) * distortion, @@ -98,9 +101,10 @@ ccl_device void tex_noise_3d( } } -ccl_device void tex_noise_4d( - float4 p, float detail, float distortion, bool color_is_needed, float *value, float3 *color) +ccl_device void noise_texture_4d( + float4 co, float detail, float distortion, bool color_is_needed, float *value, float3 *color) { + float4 p = co; if (distortion != 0.0f) { p += make_float4(noise_4d(p + random_float4_offset(0.0f)) * distortion, noise_4d(p + random_float4_offset(1.0f)) * distortion, @@ -143,29 +147,28 @@ ccl_device void svm_node_tex_noise(KernelGlobals *kg, float value; float3 color; - switch (dimensions) { case 1: - tex_noise_1d(w, detail, distortion, stack_valid(color_offset), &value, &color); + noise_texture_1d(w, detail, distortion, stack_valid(color_offset), &value, &color); break; case 2: - tex_noise_2d(make_float2(vector.x, vector.y), - detail, - distortion, - stack_valid(color_offset), - &value, - &color); + noise_texture_2d(make_float2(vector.x, vector.y), + detail, + distortion, + stack_valid(color_offset), + &value, + &color); break; case 3: - tex_noise_3d(vector, detail, distortion, stack_valid(color_offset), &value, &color); + noise_texture_3d(vector, detail, distortion, stack_valid(color_offset), &value, &color); break; case 4: - tex_noise_4d(make_float4(vector.x, vector.y, vector.z, w), - detail, - distortion, - stack_valid(color_offset), - &value, - &color); + noise_texture_4d(make_float4(vector.x, vector.y, vector.z, w), + detail, + distortion, + stack_valid(color_offset), + &value, + &color); break; default: kernel_assert(0); diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 58572e13af8..806bffea806 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -3549,7 +3549,7 @@ vec4 random_vec4_offset(float seed) 100.0 + hash_vec2_to_float(vec2(seed, 3.0)) * 100.0); } -void node_tex_noise_1d( +void node_noise_texture_1d( vec3 co, float w, float scale, float detail, float distortion, out float value, out vec4 color) { float p = w * scale; @@ -3564,7 +3564,7 @@ void node_tex_noise_1d( 1.0); } -void node_tex_noise_2d( +void node_noise_texture_2d( vec3 co, float w, float scale, float detail, float distortion, out float value, out vec4 color) { vec2 p = co.xy * scale; @@ -3580,7 +3580,7 @@ void node_tex_noise_2d( 1.0); } -void node_tex_noise_3d( +void node_noise_texture_3d( vec3 co, float w, float scale, float detail, float distortion, out float value, out vec4 color) { vec3 p = co * scale; @@ -3597,7 +3597,7 @@ void node_tex_noise_3d( 1.0); } -void node_tex_noise_4d( +void node_noise_texture_4d( vec3 co, float w, float scale, float detail, float distortion, out float value, out vec4 color) { vec4 p = vec4(co, w) * scale; diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_noise.c b/source/blender/nodes/shader/nodes/node_shader_tex_noise.c index 98d88907566..1b71287834d 100644 --- a/source/blender/nodes/shader/nodes/node_shader_tex_noise.c +++ b/source/blender/nodes/shader/nodes/node_shader_tex_noise.c @@ -82,13 +82,13 @@ static int node_shader_gpu_tex_noise(GPUMaterial *mat, NodeTexNoise *tex = (NodeTexNoise *)node->storage; switch (tex->dimensions) { case 1: - return GPU_stack_link(mat, node, "node_tex_noise_1d", in, out); + return GPU_stack_link(mat, node, "node_noise_texture_1d", in, out); case 2: - return GPU_stack_link(mat, node, "node_tex_noise_2d", in, out); + return GPU_stack_link(mat, node, "node_noise_texture_2d", in, out); case 3: - return GPU_stack_link(mat, node, "node_tex_noise_3d", in, out); + return GPU_stack_link(mat, node, "node_noise_texture_3d", in, out); case 4: - return GPU_stack_link(mat, node, "node_tex_noise_4d", in, out); + return GPU_stack_link(mat, node, "node_noise_texture_4d", in, out); default: return 0; } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs