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:
authorClément Foucault <foucault.clem@gmail.com>2022-07-25 12:25:17 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-07-25 12:25:24 +0300
commitc5394f3db83fe189316f420b0613fb00ceefb7ef (patch)
treed88d5d1a7e16eb010df87bcd77f5710492e92682 /source/blender/draw/engines/eevee_next/eevee_film.cc
parentf814871e8170e53b9eec0e166a7363cc7d210d5f (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.cc11
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;
}
/** \} */