Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/svm/svm_noisetex.h
| Show First 20 Lines • Show All 134 Lines • ▼ Show 20 Lines | ccl_device void noise_texture_4d(float4 co, | ||||
| *value = fractal_noise_4d(p, detail, roughness); | *value = fractal_noise_4d(p, detail, roughness); | ||||
| if (color_is_needed) { | if (color_is_needed) { | ||||
| *color = make_float3(*value, | *color = make_float3(*value, | ||||
| fractal_noise_4d(p + random_float4_offset(4.0f), detail, roughness), | fractal_noise_4d(p + random_float4_offset(4.0f), detail, roughness), | ||||
| fractal_noise_4d(p + random_float4_offset(5.0f), detail, roughness)); | fractal_noise_4d(p + random_float4_offset(5.0f), detail, roughness)); | ||||
| } | } | ||||
| } | } | ||||
| ccl_device void svm_node_tex_noise(KernelGlobals *kg, | ccl_device_noinline int svm_node_tex_noise(const KernelGlobals *kg, | ||||
| ShaderData *sd, | ShaderData *sd, | ||||
| float *stack, | float *stack, | ||||
| uint dimensions, | uint dimensions, | ||||
| uint offsets1, | uint offsets1, | ||||
| uint offsets2, | uint offsets2, | ||||
| int *offset) | int offset) | ||||
| { | { | ||||
| uint vector_stack_offset, w_stack_offset, scale_stack_offset; | uint vector_stack_offset, w_stack_offset, scale_stack_offset; | ||||
| uint detail_stack_offset, roughness_stack_offset, distortion_stack_offset; | uint detail_stack_offset, roughness_stack_offset, distortion_stack_offset; | ||||
| uint value_stack_offset, color_stack_offset; | uint value_stack_offset, color_stack_offset; | ||||
| svm_unpack_node_uchar4( | svm_unpack_node_uchar4( | ||||
| offsets1, &vector_stack_offset, &w_stack_offset, &scale_stack_offset, &detail_stack_offset); | offsets1, &vector_stack_offset, &w_stack_offset, &scale_stack_offset, &detail_stack_offset); | ||||
| svm_unpack_node_uchar4(offsets2, | svm_unpack_node_uchar4(offsets2, | ||||
| &roughness_stack_offset, | &roughness_stack_offset, | ||||
| &distortion_stack_offset, | &distortion_stack_offset, | ||||
| &value_stack_offset, | &value_stack_offset, | ||||
| &color_stack_offset); | &color_stack_offset); | ||||
| uint4 defaults1 = read_node(kg, offset); | uint4 defaults1 = read_node(kg, &offset); | ||||
| uint4 defaults2 = read_node(kg, offset); | uint4 defaults2 = read_node(kg, &offset); | ||||
| float3 vector = stack_load_float3(stack, vector_stack_offset); | float3 vector = stack_load_float3(stack, vector_stack_offset); | ||||
| float w = stack_load_float_default(stack, w_stack_offset, defaults1.x); | float w = stack_load_float_default(stack, w_stack_offset, defaults1.x); | ||||
| float scale = stack_load_float_default(stack, scale_stack_offset, defaults1.y); | float scale = stack_load_float_default(stack, scale_stack_offset, defaults1.y); | ||||
| float detail = stack_load_float_default(stack, detail_stack_offset, defaults1.z); | float detail = stack_load_float_default(stack, detail_stack_offset, defaults1.z); | ||||
| float roughness = stack_load_float_default(stack, roughness_stack_offset, defaults1.w); | float roughness = stack_load_float_default(stack, roughness_stack_offset, defaults1.w); | ||||
| float distortion = stack_load_float_default(stack, distortion_stack_offset, defaults2.x); | float distortion = stack_load_float_default(stack, distortion_stack_offset, defaults2.x); | ||||
| Show All 34 Lines | ccl_device_noinline int svm_node_tex_noise(const KernelGlobals *kg, | ||||
| } | } | ||||
| if (stack_valid(value_stack_offset)) { | if (stack_valid(value_stack_offset)) { | ||||
| stack_store_float(stack, value_stack_offset, value); | stack_store_float(stack, value_stack_offset, value); | ||||
| } | } | ||||
| if (stack_valid(color_stack_offset)) { | if (stack_valid(color_stack_offset)) { | ||||
| stack_store_float3(stack, color_stack_offset, color); | stack_store_float3(stack, color_stack_offset, color); | ||||
| } | } | ||||
| return offset; | |||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||