Fix #120919: EEVEE-Next: Intel UHD support for probe remapping. #121105

Merged
Jeroen Bakker merged 4 commits from Jeroen-Bakker/blender:eevee/fix/120919-probe-remap into main 2024-05-06 17:02:58 +02:00
2 changed files with 4 additions and 2 deletions

View File

@ -34,6 +34,7 @@
#define CULLING_TILE_GROUP_SIZE 256
/* Reflection Probes. */
/* When changed update parallel sum loop in `eevee_reflection_probe_remap_comp.glsl`. */
#define SPHERE_PROBE_REMAP_GROUP_SIZE 32
#define SPHERE_PROBE_GROUP_SIZE 16
#define SPHERE_PROBE_SELECT_GROUP_SIZE 64

View File

@ -125,12 +125,13 @@ void main()
const uint group_size = gl_WorkGroupSize.x * gl_WorkGroupSize.y;
/* Parallel sum. Result is stored inside local_radiance[0]. */
local_radiance[local_index] = radiance.xyzz * sample_weight;
Jeroen-Bakker marked this conversation as resolved

You missed that line. The result summed inside the LDS is then undefined.

You missed that line. The result summed inside the LDS is then undefined.
for (uint stride = group_size / 2; stride > 0; stride /= 2) {
uint stride = group_size / 2;
for (int i = 0; i < 10; i++) {
barrier();
Jeroen-Bakker marked this conversation as resolved

Can you try this instead? This construct works fine in other shaders.

uint stride = group_size / 2;
for (int i = 0; i < 11; i++) {
  barrier();
  if (local_index < stride) {
    local_radiance[local_index] += local_radiance[local_index + stride];
  }
  stride /= 2;
}
Can you try this instead? This construct works fine in other shaders. ``` uint stride = group_size / 2; for (int i = 0; i < 11; i++) { barrier(); if (local_index < stride) { local_radiance[local_index] += local_radiance[local_index + stride]; } stride /= 2; }
if (local_index < stride) {
local_radiance[local_index] += local_radiance[local_index + stride];
}
stride /= 2;
}
barrier();