SPIRV-Cross/reference/shaders-hlsl-no-opt/asm/frag/switch-block-case-fallthrough.asm.frag
Hans-Kristian Arntzen 581ed0fd59 HLSL: Does not support case-fallthrough.
Disable any fallthrough on HLSL. Risky business if fallthrough blocks
had a barrier(), but can't do anything about that ...
2019-06-27 15:10:17 +02:00

89 lines
1.5 KiB
JavaScript

static int vIndex;
static float4 FragColor;
struct SPIRV_Cross_Input
{
nointerpolation int vIndex : TEXCOORD0;
};
struct SPIRV_Cross_Output
{
float4 FragColor : SV_Target0;
};
void frag_main()
{
int i = 0;
int j;
int _30;
int _31;
if (vIndex != 0 && vIndex != 1 && vIndex != 11 && vIndex != 2 && vIndex != 3 && vIndex != 4 && vIndex != 5)
{
_30 = 2;
}
if (vIndex == 1 || vIndex == 11)
{
_31 = 1;
}
switch (vIndex)
{
case 0:
{
_30 = 3;
j = _30;
_31 = 0;
j = _31;
break;
}
default:
{
j = _30;
_31 = 0;
j = _31;
break;
}
case 1:
case 11:
{
j = _31;
break;
}
case 2:
{
break;
}
case 3:
{
if (vIndex > 3)
{
i = 0;
break;
}
else
{
break;
}
}
case 4:
{
i = 0;
break;
}
case 5:
{
i = 0;
break;
}
}
FragColor = float(i).xxxx;
}
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
{
vIndex = stage_input.vIndex;
frag_main();
SPIRV_Cross_Output stage_output;
stage_output.FragColor = FragColor;
return stage_output;
}