diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2022-07-25 12:25:17 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2022-07-25 12:25:24 +0300 |
commit | c5394f3db83fe189316f420b0613fb00ceefb7ef (patch) | |
tree | d88d5d1a7e16eb010df87bcd77f5710492e92682 /source/blender/draw/engines/eevee_next/eevee_film.cc | |
parent | f814871e8170e53b9eec0e166a7363cc7d210d5f (diff) |
EEVEE-Next: Fix float3 passes being incorrect
Diffstat (limited to 'source/blender/draw/engines/eevee_next/eevee_film.cc')
-rw-r--r-- | source/blender/draw/engines/eevee_next/eevee_film.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee_next/eevee_film.cc b/source/blender/draw/engines/eevee_next/eevee_film.cc index 18e0452da25..49f43265aa8 100644 --- a/source/blender/draw/engines/eevee_next/eevee_film.cc +++ b/source/blender/draw/engines/eevee_next/eevee_film.cc @@ -620,7 +620,16 @@ float *Film::read_pass(eViewLayerEEVEEPassType pass_type) GPU_memory_barrier(GPU_BARRIER_TEXTURE_UPDATE); - return (float *)GPU_texture_read(pass_tx, GPU_DATA_FLOAT, 0); + float *result = (float *)GPU_texture_read(pass_tx, GPU_DATA_FLOAT, 0); + + if (pass_is_float3(pass_type)) { + /* Convert result in place as we cannot do this conversion on GPU. */ + for (auto px : IndexRange(accum_tx.width() * accum_tx.height())) { + *(reinterpret_cast<float3 *>(result) + px) = *(reinterpret_cast<float3 *>(result + px * 4)); + } + } + + return result; } /** \} */ |