EEVEE: World Sun Shadow no longer works in 4.5

On some drivers, the GLSL compiler doesn't reflect the omitted
`local_size_*` of a compute shader inside `gl_WorkGroupSize`.

This lead to the 2D size computation of 1D workgroups to become
0 which was bypassing the parallel reduction algorithms.

Ensuring `local_size_*` are always set fixes the issue.

For clarity, also fix the 1D shaders to not use `gl_WorkGroupSize.y`.
This also fix a copy paste error in the Metal backend.

This issue affected AMD drivers on Windows.

Rel #142046

Candidate for backporting to 4.5 LTS.

Pull Request: https://projects.blender.org/blender/blender/pulls/144056
This commit is contained in:
Clément Foucault
2025-08-07 09:40:57 +02:00
committed by Clément Foucault
parent 936457871e
commit 16430b10f1
7 changed files with 17 additions and 29 deletions

View File

@@ -1220,15 +1220,15 @@ static PyObject *pygpu_shader_info_define(BPyGPUShaderCreateInfo *self, PyObject
PyDoc_STRVAR(
/* Wrap. */
pygpu_shader_info_local_group_size_doc,
".. method:: local_group_size(x, y=-1, z=-1)\n"
".. method:: local_group_size(x, y=1, z=1)\n"
"\n"
" Specify the local group size for compute shaders.\n"
"\n"
" :arg x: The local group size in the x dimension.\n"
" :type x: int\n"
" :arg y: The local group size in the y dimension. Optional. Defaults to -1.\n"
" :arg y: The local group size in the y dimension. Optional. Defaults to 1.\n"
" :type y: int\n"
" :arg z: The local group size in the z dimension. Optional. Defaults to -1.\n"
" :arg z: The local group size in the z dimension. Optional. Defaults to 1.\n"
" :type z: int\n");
static PyObject *pygpu_shader_info_local_group_size(BPyGPUShaderCreateInfo *self, PyObject *args)
{