Fix: EEVEE-Next: Nvidia compilation error

Workaround Error: C1317: qualified actual parameter #1 cannot be converted to less qualified parameter
This commit is contained in:
Miguel Pozo 2023-10-09 13:17:19 +02:00
parent f37a8cda30
commit 25160def62
2 changed files with 14 additions and 9 deletions

View File

@ -37,7 +37,7 @@ float shadow_unpack(uint shadow_bits, uint bit_depth, uint shift)
return float((shadow_bits >> shift) & ~(~0u << bit_depth)) / float((1u << bit_depth) - 1u); return float((shadow_bits >> shift) & ~(~0u << bit_depth)) / float((1u << bit_depth) - 1u);
} }
void light_shadow_single(LightData light, void light_shadow_single(uint l_idx,
const bool is_directional, const bool is_directional,
vec3 P, vec3 P,
vec3 Ng, vec3 Ng,
@ -45,6 +45,8 @@ void light_shadow_single(LightData light,
inout uint shadow_bits, inout uint shadow_bits,
inout uint shift) inout uint shift)
{ {
LightData light = light_buf[l_idx];
if (light.tilemap_index == LIGHT_NO_SHADOW) { if (light.tilemap_index == LIGHT_NO_SHADOW) {
return; return;
} }
@ -73,12 +75,12 @@ void light_shadow_mask(vec3 P, vec3 Ng, float vPz, float thickness, out uint sha
uint shift = 0u; uint shift = 0u;
shadow_bits = 0u; shadow_bits = 0u;
LIGHT_FOREACH_BEGIN_DIRECTIONAL (light_cull_buf, l_idx) { LIGHT_FOREACH_BEGIN_DIRECTIONAL (light_cull_buf, l_idx) {
light_shadow_single(light_buf[l_idx], true, P, Ng, thickness, shadow_bits, shift); light_shadow_single(l_idx, true, P, Ng, thickness, shadow_bits, shift);
} }
LIGHT_FOREACH_END LIGHT_FOREACH_END
LIGHT_FOREACH_BEGIN_LOCAL (light_cull_buf, light_zbin_buf, light_tile_buf, PIXEL, vPz, l_idx) { LIGHT_FOREACH_BEGIN_LOCAL (light_cull_buf, light_zbin_buf, light_tile_buf, PIXEL, vPz, l_idx) {
light_shadow_single(light_buf[l_idx], false, P, Ng, thickness, shadow_bits, shift); light_shadow_single(l_idx, false, P, Ng, thickness, shadow_bits, shift);
} }
LIGHT_FOREACH_END LIGHT_FOREACH_END
} }
@ -117,7 +119,7 @@ void light_eval_single_closure(LightData light,
} }
} }
void light_eval_single(LightData light, void light_eval_single(uint l_idx,
const bool is_directional, const bool is_directional,
inout ClosureLightStack stack, inout ClosureLightStack stack,
vec3 P, vec3 P,
@ -127,6 +129,7 @@ void light_eval_single(LightData light,
uint packed_shadows, uint packed_shadows,
inout uint shift) inout uint shift)
{ {
LightData light = light_buf[l_idx];
int ray_count = uniform_buf.shadow.ray_count; int ray_count = uniform_buf.shadow.ray_count;
int ray_step_count = uniform_buf.shadow.step_count; int ray_step_count = uniform_buf.shadow.step_count;
@ -171,12 +174,12 @@ void light_eval(inout ClosureLightStack stack,
uint shift = 0u; uint shift = 0u;
LIGHT_FOREACH_BEGIN_DIRECTIONAL (light_cull_buf, l_idx) { LIGHT_FOREACH_BEGIN_DIRECTIONAL (light_cull_buf, l_idx) {
light_eval_single(light_buf[l_idx], true, stack, P, Ng, V, thickness, packed_shadows, shift); light_eval_single(l_idx, true, stack, P, Ng, V, thickness, packed_shadows, shift);
} }
LIGHT_FOREACH_END LIGHT_FOREACH_END
LIGHT_FOREACH_BEGIN_LOCAL (light_cull_buf, light_zbin_buf, light_tile_buf, PIXEL, vPz, l_idx) { LIGHT_FOREACH_BEGIN_LOCAL (light_cull_buf, light_zbin_buf, light_tile_buf, PIXEL, vPz, l_idx) {
light_eval_single(light_buf[l_idx], false, stack, P, Ng, V, thickness, packed_shadows, shift); light_eval_single(l_idx, false, stack, P, Ng, V, thickness, packed_shadows, shift);
} }
LIGHT_FOREACH_END LIGHT_FOREACH_END
} }

View File

@ -13,8 +13,10 @@
#pragma BLENDER_REQUIRE(eevee_shadow_lib.glsl) #pragma BLENDER_REQUIRE(eevee_shadow_lib.glsl)
void thickness_from_shadow_single( void thickness_from_shadow_single(
LightData light, const bool is_directional, vec3 P, vec3 Ng, inout vec2 thickness) uint l_idx, const bool is_directional, vec3 P, vec3 Ng, inout vec2 thickness)
{ {
LightData light = light_buf[l_idx];
if (light.tilemap_index == LIGHT_NO_SHADOW) { if (light.tilemap_index == LIGHT_NO_SHADOW) {
return; return;
} }
@ -47,12 +49,12 @@ float thickness_from_shadow(vec3 P, vec3 Ng, float vPz)
vec2 thickness = vec2(0.0); vec2 thickness = vec2(0.0);
LIGHT_FOREACH_BEGIN_DIRECTIONAL (light_cull_buf, l_idx) { LIGHT_FOREACH_BEGIN_DIRECTIONAL (light_cull_buf, l_idx) {
thickness_from_shadow_single(light_buf[l_idx], true, P, Ng, thickness); thickness_from_shadow_single(l_idx, true, P, Ng, thickness);
} }
LIGHT_FOREACH_END LIGHT_FOREACH_END
LIGHT_FOREACH_BEGIN_LOCAL (light_cull_buf, light_zbin_buf, light_tile_buf, PIXEL, vPz, l_idx) { LIGHT_FOREACH_BEGIN_LOCAL (light_cull_buf, light_zbin_buf, light_tile_buf, PIXEL, vPz, l_idx) {
thickness_from_shadow_single(light_buf[l_idx], false, P, Ng, thickness); thickness_from_shadow_single(l_idx, false, P, Ng, thickness);
} }
LIGHT_FOREACH_END LIGHT_FOREACH_END