diff options
author | Jeroen Bakker <jeroen@blender.org> | 2021-01-25 13:17:03 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2021-01-25 13:27:55 +0300 |
commit | ebaa3fcedd2388c6e1a213911b79bfdc1e49df78 (patch) | |
tree | be5ad658f0612481c97d0e25900be3605652b8fc /source/blender/draw | |
parent | 02404ded80ac7d861a45a36960d0a3b279bbf721 (diff) |
Fix T84398: Multiview images show only one view.
The `image_get_gpu_texture` didn't use the iuser->view_index but
recalculated the requested view again. This lead to inconsistent
behavior when switching between multi view textures or stereo textures.
This has been fixed by ensuring that the `iuser->view_index` is always
used.
An Image has only place to store 2 view textures. This is done for
right/left eye compositing. A multi view texture can have more views.
This would lead to reading and writing to unallocated space.
When a multiview texture is requested that is larger than 1. It will
always be cached as being the first eye. The `gpu_view` of the Image is
also used as a cache key to check this.
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/engines/image/image_engine.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/source/blender/draw/engines/image/image_engine.c b/source/blender/draw/engines/image/image_engine.c index 5445685b5ba..04bdee131d7 100644 --- a/source/blender/draw/engines/image/image_engine.c +++ b/source/blender/draw/engines/image/image_engine.c @@ -110,9 +110,7 @@ static void space_image_gpu_texture_get(Image *image, /* update multiindex and pass for the current eye */ BKE_image_multilayer_index(image->rr, &sima->iuser); } - else { - BKE_image_multiview_index(image, &sima->iuser); - } + BKE_image_multiview_index(image, &sima->iuser); if (ibuf) { if (sima->flag & SI_SHOW_ZBUF && (ibuf->zbuf || ibuf->zbuf_float || (ibuf->channels == 1))) { |