Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2022-05-23 21:54:09 +0300
committerBrecht Van Lommel <brecht@blender.org>2022-05-23 23:09:44 +0300
commitbdab538b3019406cfbd53d99bc40c4dbae27393c (patch)
treeb99f06195bdbd647c275e15f72095c8c4af28eae /source/blender/nodes/shader/nodes/node_shader_wavelength.cc
parenta22ad7fbd391acc65b99336eae0df5c2a49553d9 (diff)
Fix Eevee blackbody wrong with non-default scene linear color space
* Port over new code tables from Cycles * Convert Rec.709 to scene linear for lookup table. * Move code for wavelength and blackbody to IMB so they can access the required transforms, which are not in blenlib. * Remove clamping from blackbody shader to bypass the texture read. Since it's variable now easiest to just always read from the texture than pass additional parameters. * Fold XYZ to RGB conversion into the wavelength table. Ref T68926
Diffstat (limited to 'source/blender/nodes/shader/nodes/node_shader_wavelength.cc')
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_wavelength.cc17
1 files changed, 4 insertions, 13 deletions
diff --git a/source/blender/nodes/shader/nodes/node_shader_wavelength.cc b/source/blender/nodes/shader/nodes/node_shader_wavelength.cc
index 522928a30fa..34fa639dd07 100644
--- a/source/blender/nodes/shader/nodes/node_shader_wavelength.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_wavelength.cc
@@ -3,6 +3,8 @@
#include "node_shader_util.hh"
+#include "IMB_colormanagement.h"
+
namespace blender::nodes::node_shader_wavelength_cc {
static void node_declare(NodeDeclarationBuilder &b)
@@ -20,22 +22,11 @@ static int node_shader_gpu_wavelength(GPUMaterial *mat,
const int size = CM_TABLE + 1;
float *data = static_cast<float *>(MEM_mallocN(sizeof(float) * size * 4, "cie_xyz texture"));
- wavelength_to_xyz_table(data, size);
+ IMB_colormanagement_wavelength_to_rgb_table(data, size);
float layer;
GPUNodeLink *ramp_texture = GPU_color_band(mat, size, data, &layer);
- XYZ_to_RGB xyz_to_rgb;
- get_XYZ_to_RGB_for_gpu(&xyz_to_rgb);
- return GPU_stack_link(mat,
- node,
- "node_wavelength",
- in,
- out,
- ramp_texture,
- GPU_constant(&layer),
- GPU_uniform(xyz_to_rgb.r),
- GPU_uniform(xyz_to_rgb.g),
- GPU_uniform(xyz_to_rgb.b));
+ return GPU_stack_link(mat, node, "node_wavelength", in, out, ramp_texture, GPU_constant(&layer));
}
} // namespace blender::nodes::node_shader_wavelength_cc