2022-09-12 Eevee/Viewport Module Meeting

Practical Info

This is a weekly video chat meeting for planning and discussion of Blender Eevee/viewport module development. Any contributor (developer, UI/UX designer, writer, …) working on Eevee/viewport in Blender is welcome to join.

For users and other interested parties, we ask to read the meeting notes instead so that the meeting can remain focused.

  • Google Meet
  • Next Meeting: September 19, 2022, 11:30 AM to 12:00 PM Amsterdam Time (Your local time: 2022-09-19T09:30:00Z2022-09-19T10:00:00Z)


  • Omar Emara
  • Clément Foucault
  • Jeroen Bakker


  • New container type (Pool) was introduced in BLI. [⚙ D15894 BLI: Add new `blender::Pool` container]
  • Found a limitation with the new shadow mapping design. Spend the week redesigning and documenting a new approach. It would improve shadow tile caching, but requires a more complex data-flow.
  • Development will start, but would require to rewrite the current shadow mapping code.
  • Cryptomatte patch has been accepted and will be merged ASAP. Due to recent changes there are some regressions that needs to be fixed before landing.

Metal Backend

  • Submitted a number of small patches proposing geometry shader alternative path implementations for Metal, minor GLSL source changes to avoid shader global namespace pollution and high level render boundaries for Metal resource autoreleasepools.
  • Patch pending submission by Thomas containing MTLContext core implementation, GHOST_ContextCGL modifications and MTLImmediate modules.
  • With all of these patches in place, we get first pixels on-screen with Metal. Please note that the GHOST_ContextCGL modifications will likely require some iteration and discussion. These changes are required as Metal requires device consistency after initialisation and does not need to use any of the OpenGL interop path and can present directly to the swapchain. It feels like it may be best to create a separate GHOST_ContextMTL, but I’d like to hear thoughts on this.

Next tasks

  • Iterate on Metal patch feedback.
  • Submit eGPUTextureUsageFlags flags patch
  • Submit MTLBatch + MTLDrawList patches once the MTLContext/MTLImmediate/MTLVertBuf patch is merged.
  • Following this, the Metal viewport will be functional, but we require porting of outstanding shaders to use GPUShaderCreateInfo in order to be usable. Following this, I’ll focus on EEVEE Next compatibility with Metal.

Viewport compositing

  • Fast gaussian blur had precision issues, reason is that the CPU implementation uses doubles. Although doubles can be used on modern GPU cards, they are known to be slow.
  • Different methods have been tried and checked.
  • Most promising one would use a switch based on the blur size and type. The used whitepaper mentions to have a error between the fast algorithm and the ground based algorithm. This could be used as a cut-point.

Production Scenes

  • In project Heist the volume rendering has a change to fail, probably due to the complexity of the scenes.
  • After research the NVIDIA driver doesn’t handle the resolve volumetric pass when failing. The attached buffers aren’t the one that are fed to the shader.
  • Sometimes after a save of the scene, the issue disappears.
  • Idea is to split of the resolve volumetric pass to reduce the code complexity. If that fails we could make the resolve pass into an compute shader.

Scene attributes

  • Alexander Agrilov is working on a patch to add scene attributes into the shader graph. This patch would work with Cycles and EEVEE. Guidance is needed so EEVEE-Next could be supported as well.