mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 20:53:53 +00:00
Workaround for ICE in the DXC shader compiler in debug builds with an EnvironmentMapLight
(#11487)
# Objective DXC+DX12 debug builds with an environment map have been broken since https://github.com/bevyengine/bevy/pull/11366 merged due to an internal compiler error in DXC. I tracked it down to a single `break` statement and reported it upstream (https://github.com/microsoft/DirectXShaderCompiler/issues/6183) ## Solution Workaround the ICE by setting the for loop index variable to the max value of the loop to avoid the `break` that's causing the ICE. This works because it's the last thing in the for loop. The `reflection_probes` and `pbr` examples both appear to still work correctly.
This commit is contained in:
parent
c227fc9fad
commit
45e920c2e1
1 changed files with 6 additions and 1 deletions
|
@ -51,7 +51,12 @@ fn compute_radiances(
|
||||||
if (all(abs(probe_space_pos) <= vec3(0.5))) {
|
if (all(abs(probe_space_pos) <= vec3(0.5))) {
|
||||||
cubemap_index = reflection_probe.cubemap_index;
|
cubemap_index = reflection_probe.cubemap_index;
|
||||||
intensity = reflection_probe.intensity;
|
intensity = reflection_probe.intensity;
|
||||||
break;
|
// TODO: Workaround for ICE in DXC https://github.com/microsoft/DirectXShaderCompiler/issues/6183
|
||||||
|
// This works because it's the last thing that happens in the for loop, and will break as soon as it
|
||||||
|
// goes back to the top of the loop.
|
||||||
|
// We can't use `break` here because of the ICE.
|
||||||
|
// break;
|
||||||
|
reflection_probe_index = light_probes.reflection_probe_count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue