2024-09-16 Viewport & EEVEE Module Meeting

Practical Info

This is a weekly video chat meeting for planning and discussion of Blender Viewport & EEVEE module development. Any contributor (developer, UI/UX designer, writer, …) working on Viewport & EEVEE 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: 23 September 2023, 11:30 AM to 12:00 PM Amsterdam Time (Your local time: 2024-09-23T09:30:00Z2024-09-23T10:00:00Z)

Attendees

  • Clement
  • James
  • Jeroen
  • Miguel

Metal

Vertex fetch API doesn’t support index ranges that are shifted by the base index. This result in UV drawing issues but also incompatibility in other areas. This will be fixed by the Overlay engine and the primitive expansion API it is using. For the short term we will not implement a fix for 4.3 as this as it is a regression that is already out there for several years. In 4.4 it will be fixed by enabling the overlay engine.

Experimental Metal version for open subdiv. The initial implementation showed an order of magnitude slower performance as each vertex is evaluated in its own GPU submission. Currently checking if we can push the vertex loop closer to the actual submission so more work can be shared. There are still options to move to a totally different implementation where we do a batch based approach. This needs more research as Blender does more than a regular subdivision and that might be limited on user side.

Overlay

Main development of Overlay engine has been completed. The actual stabilization/performance optimization will be planned for Blender 4.4.

NPR

Core has been merged into the development branch (not main) A blog post is in the making.

[#127591 - WIP: NPR: Image Sockets - blender - Blender Projects] Development continued on touch store/image sockets. Architecture will first be reviewed intern in the Module before asking wider feedback.

OpenGL

[Fix #127437: Crash with parallel shader compilation · a602e5530a - blender - Blender Projects] Avoid race conditions and handle pending async compilations when compiling synchronously.

Vulkan

[blender/blender#127418] Did an experiment to see how we could reduce the startup times when using Vulkan. Most time was spent on shader compilation. For OpenGL we introduced a parallel compilation feature. When implementing this in Vulkan we detected issues in the SPIR-V compiler (especially the optimizer) that blocked parallel execution. However where it was blocking didn’t need to be blocked at all. This was reported and has been fixed up-stream.

The startup time was still to large (5-8 seconds) where most time was spent on front-end compilation step of shaders. Shaders that could already be cached in the pipeline can skip the front-end compilation step at all. Vulkan has an extension for it VK_EXT_shader_module_identifier. However this is quite complex to introduce in the current setup and it still needed a cache to store the identifiers. For now we added a disk cache for SPIR-V binaries. These binaries can work on any platform, but still needs to be compiled to specific GPUs (backend compilation step). Until now we didn’t detect any performance issue with the backend compilation step.

7 Likes