The official Blender project repository.
Go to file
Jeroen Bakker ca0e1d696a Vulkan: Layer tracking during render scope
EEVEE can bind layers of a texture that is also used as an attachment. When binding
the image layout of these specific layers can be different that the image layout of
the whole image.

This fixes the known synchronization issues inside EEVEE. wasp_bot, tree_creature and
wanderer scenes can be rendered without any synchronization issue reported by the
Vulkan validation layers.

Design task: #124214

When beginning to render the attachments are being evaluated. If there is an arrayed
texture (with multiple layers) the individual layers of that texture can be tracked
during until the rendering is ended.

When the same texture is bound to a shader it will be a different layer (otherwise
there is a feedback loop, which isn't allowed). The bound layers will typically need
a different layout the transition to the new layout is executed and recorded. When
the rendering ends, the layers are transitioned back to the layout the texture is
expected in.

It can happen that a layer is used multiple times during the same rendering. In
that case the rendering should be suspended to perform the transition. Image layout
transitions are not allowed during rendering.

There is one place where a layer needs to be transited multiple times that is when
EEVEE wants to extract the thickness from the shadow. The thickness is stored inside
the gbuffer_normal which is also used as an attachment. Eval then samples the thickness
from the gbuffer_normal as a sampler. To work around this issue we suspend the rendering

Pull Request: #124407
2024-07-16 16:39:18 +02:00
.gitea Issue template: Add guidelines surrounding content restrictions 2024-05-31 17:22:07 +02:00
.github Fix: Switch to scheduled trigger for appropriate permission scope in workflow 2024-05-28 14:12:20 +02:00
build_files Merge branch 'blender-v4.2-release' 2024-07-16 17:50:47 +10:00
doc Merge branch 'blender-v4.2-release' 2024-06-14 15:48:27 +02:00
extern Merge branch 'blender-v4.2-release' 2024-07-09 15:21:35 +02:00
intern Cycles: Add an assert for DeviceString construction 2024-07-16 09:43:28 +02:00
lib Fix #124086: blake2 hasher is unavailable on macOS 2024-07-03 14:46:33 +02:00
locale I18N: updated UI translations from git/weblate repository (43b5cb1cbab4c7ea). 2024-07-15 10:36:02 +02:00
release Assets: Update asset repository hash for removed tool icons 2024-07-15 19:11:52 +02:00
scripts Merge branch 'blender-v4.2-release' 2024-07-16 02:23:40 -04:00
source Vulkan: Layer tracking during render scope 2024-07-16 16:39:18 +02:00
tests Cycles tests: Enable MNEE test on Metal on supported macOS version 2024-07-16 09:46:12 +02:00
tools Cleanup: spelling in comments 2024-07-13 16:56:57 +10:00
.clang-format Clang-Format: Ensure single new line at the end of files 2024-02-22 14:42:10 +01:00
.clang-tidy Clang-tidy: Ignore variable name length and .c/.cc include warnings 2022-05-06 15:26:54 +02:00
.editorconfig editorconfig: add HTML entry 2023-12-08 13:28:13 +11:00
.git-blame-ignore-revs Cleanup: add commit to .git-blame-ignore-revs 2023-05-03 20:31:11 +10:00
.gitignore Switch SVN to Git submodules using Git-LFS 2024-02-22 13:50:55 +01:00
.gitmodules Revert "Release: Updates for the 4.2 branch" 2024-06-05 12:33:31 +02:00
AUTHORS AUTHORS: add 2 new authors, 3 updated names 2024-07-05 21:04:39 +10:00
CMakeLists.txt Windows: Disable TBB_MALLOC_PROXY on ARM64 2024-07-04 17:14:42 +02:00
COPYING == docs == 2010-10-13 14:44:22 +00:00
GNUmakefile Cleanup: remove unused icon utilities and make convenience target 2024-06-27 18:28:32 +02:00
make.bat Cleanup: remove unused icon utilities and make convenience target 2024-06-27 18:28:32 +02:00
pyproject.toml Extensions: Support online extensions and move add-ons outside Blender 2024-05-15 19:26:29 +02:00 Docs: Replace most wiki links with links to new developer docs 2024-01-18 16:49:38 +01:00


Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.

Blender screenshot

Project Pages



Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.

See for details.