diff --git a/src/testrender/shading.cpp b/src/testrender/shading.cpp index 113721554..df1bb98b6 100644 --- a/src/testrender/shading.cpp +++ b/src/testrender/shading.cpp @@ -1319,7 +1319,7 @@ process_medium_closure(const ShaderGlobalsType& sg, float path_roughness, 0.f, 1.f)); closure = params->top; ptr_stack[stack_idx] = params->base; - weight_stack[stack_idx++] = weight * base_w; + weight_stack[stack_idx++] = base_w; break; } case MX_ANISOTROPIC_VDF_ID: { diff --git a/testsuite/render-mx-medium-vdf/medium_layer_weight.osl b/testsuite/render-mx-medium-vdf/medium_layer_weight.osl new file mode 100644 index 000000000..dc3a94dda --- /dev/null +++ b/testsuite/render-mx-medium-vdf/medium_layer_weight.osl @@ -0,0 +1,16 @@ +// Copyright Contributors to the Open Shading Language project. +// SPDX-License-Identifier: BSD-3-Clause +// https://github.com/AcademySoftwareFoundation/OpenShadingLanguage + +surface medium_layer_weight(int layered = 0) +{ + closure color medium + = transparent() + anisotropic_vdf(color(0), color(2, 4, 8), 0); + // Keep the layer closure while making its top response negligible. + closure color negligible_top = 1.0e-6 * reflection(N, 1.5); + + if (layered) + Ci = 0.5 * layer(negligible_top, medium); + else + Ci = 0.5 * medium; +} diff --git a/testsuite/render-mx-medium-vdf/ref/out_layer_weight.exr b/testsuite/render-mx-medium-vdf/ref/out_layer_weight.exr new file mode 100644 index 000000000..ac4cd742f Binary files /dev/null and b/testsuite/render-mx-medium-vdf/ref/out_layer_weight.exr differ diff --git a/testsuite/render-mx-medium-vdf/run.py b/testsuite/render-mx-medium-vdf/run.py index 37b6c2686..a9bc7beb0 100755 --- a/testsuite/render-mx-medium-vdf/run.py +++ b/testsuite/render-mx-medium-vdf/run.py @@ -7,5 +7,7 @@ failthresh = 0.01 failpercent = 1 -outputs = [ "out.exr" ] +outputs = [ "out.exr", "out_layer_weight.exr" ] command = testrender("-v -r 98 98 -aa 32 scene.xml out.exr") +command += testrender( + "-r 160 80 -aa 32 scene_layer_weight.xml out_layer_weight.exr") diff --git a/testsuite/render-mx-medium-vdf/scene_layer_weight.xml b/testsuite/render-mx-medium-vdf/scene_layer_weight.xml new file mode 100644 index 000000000..97ed59bd4 --- /dev/null +++ b/testsuite/render-mx-medium-vdf/scene_layer_weight.xml @@ -0,0 +1,23 @@ + + + + + param color sky 1 1 1; + param color horizon 1 1 1; + param color sun 0 0 0; + shader envmap layer1; + + + + + param int layered 0; + shader medium_layer_weight layer1; + + + + + param int layered 1; + shader medium_layer_weight layer1; + + +