diff options
author | Jeroen Bakker <jeroen@blender.org> | 2021-06-02 17:53:39 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2021-06-02 17:54:01 +0300 |
commit | 730a46e87d261543c9550ddef406894e14d5bea6 (patch) | |
tree | 3298ec168bbdc22a035ac04d53b350091cf947b0 /source | |
parent | f944121700daf267766399ef368834be3cdec518 (diff) |
EEVEE: AOVs not same as cycles.
EEVEE uses hashing to sync aov names and types with the gpu. For the type a hashed value was overridden making `decalA` and `decalB` choose the same hash. This patches fixes this by removing the most significant bit.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_renderpasses.c | 2 | ||||
-rw-r--r-- | source/blender/nodes/shader/nodes/node_shader_output_aov.c | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_renderpasses.c b/source/blender/draw/engines/eevee/eevee_renderpasses.c index 5739024993e..5ada53ab98c 100644 --- a/source/blender/draw/engines/eevee/eevee_renderpasses.c +++ b/source/blender/draw/engines/eevee/eevee_renderpasses.c @@ -79,7 +79,7 @@ bool EEVEE_renderpasses_only_first_sample_pass_active(EEVEE_Data *vedata) * type the rest of the bits are used for the name hash. */ int EEVEE_renderpasses_aov_hash(const ViewLayerAOV *aov) { - int hash = BLI_hash_string(aov->name); + int hash = BLI_hash_string(aov->name) << 1; SET_FLAG_FROM_TEST(hash, aov->type == AOV_TYPE_COLOR, EEVEE_AOV_HASH_COLOR_TYPE_MASK); return hash; } diff --git a/source/blender/nodes/shader/nodes/node_shader_output_aov.c b/source/blender/nodes/shader/nodes/node_shader_output_aov.c index 403b3e6d9d6..7e7e1b703f1 100644 --- a/source/blender/nodes/shader/nodes/node_shader_output_aov.c +++ b/source/blender/nodes/shader/nodes/node_shader_output_aov.c @@ -43,8 +43,9 @@ static int node_shader_gpu_output_aov(GPUMaterial *mat, { GPUNodeLink *outlink; NodeShaderOutputAOV *aov = (NodeShaderOutputAOV *)node->storage; - /* Keep in sync with `renderpass_lib.glsl#render_pass_aov_hash`. */ - unsigned int hash = BLI_hash_string(aov->name) & ~1; + /* Keep in sync with `renderpass_lib.glsl#render_pass_aov_hash` and + * `EEVEE_renderpasses_aov_hash`. */ + unsigned int hash = BLI_hash_string(aov->name) << 1; GPU_stack_link(mat, node, "node_output_aov", in, out, &outlink); GPU_material_add_output_link_aov(mat, outlink, hash); |