-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
this code makes the shader compiler crash and burn and explode
if (color.A == 0)
{
ColorF shadow = shadowMap.SampleUV(uv);
int shadowIdxA = (int)float.Floor(shadowIndex);
int shadowIdxB = (int)float.Ceiling(shadowIndex);
bool inShadowA = IsInShadow(shadow, shadowIdxA);
bool inShadowB = IsInShadow(shadow, shadowIdxB);
if (inShadowA && inShadowB)
{
return new(0, 0, 0, .5f);
}
if (inShadowA)
{
float x = ShaderIntrinsics.Fract(shadowIndex);
return ColorF.Lerp(new ColorF(.0f, .0f, .0f, .5f), new ColorF(.0f, .0f, .0f, .0f), x);
}
if (inShadowB)
{
float x = ShaderIntrinsics.Fract(shadowIndex);
return ColorF.Lerp(new ColorF(.0f, .0f, .0f, .0f), new ColorF(.0f, .0f, .0f, .5f), 1f - x);
}
ShaderIntrinsics.Discard();
}offending compiler output:
((!(var8 && var9)) ? {
46 | ((!(var8)) ? {
47 | ((!(var9)) ? discard : {
48 | var11 = SimulationFramework_ColorF_Lerp(vec4(0.0000000, 0.0000000, 0.0000000, 0.0000000), vec4(0.0000000, 0.0000000, 0.0000000, 0.5000000), 1.0000000 - fract(shadowIndex));
49 | return var11;
50 | });
51 | } : {
52 | var11 = SimulationFramework_ColorF_Lerp(vec4(0.0000000, 0.0000000, 0.0000000, 0.5000000), vec4(0.0000000, 0.0000000, 0.0000000, 0.0000000), fract(shadowIndex));
53 | return var11;
54 | });
55 | } : {
56 | var11 = vec4(0.0000000, 0.0000000, 0.0000000, 0.5000000);
57 | return var11;
58 | });
Metadata
Metadata
Assignees
Labels
No labels