From e9984653a827f1f5de8e1a1d019854b77afb1ea5 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Mon, 13 Jan 2014 22:01:39 +0100 Subject: Cycles: Fix Wave texture difference between OSL and SVM, OSL wasn't using the "Scale" properly for distortion. --- intern/cycles/kernel/shaders/node_wave_texture.osl | 12 ++++-------- intern/cycles/kernel/svm/svm_wave.h | 6 ++---- 2 files changed, 6 insertions(+), 12 deletions(-) (limited to 'intern') diff --git a/intern/cycles/kernel/shaders/node_wave_texture.osl b/intern/cycles/kernel/shaders/node_wave_texture.osl index 2de376c62f5..ba40207b446 100644 --- a/intern/cycles/kernel/shaders/node_wave_texture.osl +++ b/intern/cycles/kernel/shaders/node_wave_texture.osl @@ -19,19 +19,15 @@ /* Wave */ -float wave(point p, float scale, string type, float detail, float distortion, float dscale) +float wave(point p, string type, float detail, float distortion, float dscale) { - float x = p[0] * scale; - float y = p[1] * scale; - float z = p[2] * scale; - float n = 0.0; if (type == "Bands") { - n = (x + y + z) * 10.0; + n = (p[0] + p[1] + p[2]) * 10.0; } else if (type == "Rings") { - n = (sqrt(x * x + y * y + z * z) * 20.0); + n = length(p) * 20.0; } if (distortion != 0.0) { @@ -57,7 +53,7 @@ shader node_wave_texture( if (use_mapping) p = transform(mapping, p); - Fac = wave(p, Scale, Type, Detail, Distortion, DetailScale); + Fac = wave(p * Scale, Type, Detail, Distortion, DetailScale); Color = Fac; } diff --git a/intern/cycles/kernel/svm/svm_wave.h b/intern/cycles/kernel/svm/svm_wave.h index 3749135f8c7..7f9081539a4 100644 --- a/intern/cycles/kernel/svm/svm_wave.h +++ b/intern/cycles/kernel/svm/svm_wave.h @@ -18,12 +18,10 @@ CCL_NAMESPACE_BEGIN /* Wave */ -ccl_device_noinline float svm_wave(NodeWaveType type, float3 p, float scale, float detail, float distortion, float dscale) +ccl_device_noinline float svm_wave(NodeWaveType type, float3 p, float detail, float distortion, float dscale) { float n; - p *= scale; - if(type == NODE_WAVE_BANDS) n = (p.x + p.y + p.z) * 10.0f; else /* NODE_WAVE_RINGS */ @@ -51,7 +49,7 @@ ccl_device void svm_node_tex_wave(KernelGlobals *kg, ShaderData *sd, float *stac float distortion = stack_load_float_default(stack, distortion_offset, node2.z); float dscale = stack_load_float_default(stack, dscale_offset, node2.w); - float f = svm_wave((NodeWaveType)type, co, scale, detail, distortion, dscale); + float f = svm_wave((NodeWaveType)type, co*scale, detail, distortion, dscale); if(stack_valid(fac_offset)) stack_store_float(stack, fac_offset, f); if(stack_valid(color_offset)) stack_store_float3(stack, color_offset, make_float3(f, f, f)); -- cgit v1.2.3