5547b25afe
Undef values may be of struct type and may be used in constants. Therefore, they must be interleaved with constants and types. Fixes the rest of the Vulkan CTS test `dEQP-VK.spirv_assembly.instruction.compute.opundef.undefined_spec_constant_composite`. (Please excuse the churn in the reference output; it's an inevitable result of this change.)
84 lines
2.2 KiB
GLSL
84 lines
2.2 KiB
GLSL
#version 450
|
|
#if defined(GL_EXT_control_flow_attributes)
|
|
#extension GL_EXT_control_flow_attributes : require
|
|
#define SPIRV_CROSS_FLATTEN [[flatten]]
|
|
#define SPIRV_CROSS_BRANCH [[dont_flatten]]
|
|
#define SPIRV_CROSS_UNROLL [[unroll]]
|
|
#define SPIRV_CROSS_LOOP [[dont_unroll]]
|
|
#else
|
|
#define SPIRV_CROSS_FLATTEN
|
|
#define SPIRV_CROSS_BRANCH
|
|
#define SPIRV_CROSS_UNROLL
|
|
#define SPIRV_CROSS_LOOP
|
|
#endif
|
|
|
|
int _231;
|
|
|
|
layout(binding = 0, std140) uniform Foo
|
|
{
|
|
layout(row_major) mat4 lightVP[64];
|
|
uint shadowCascadesNum;
|
|
int test;
|
|
} _11;
|
|
|
|
layout(location = 0) in vec3 fragWorld;
|
|
layout(location = 0) out int _entryPointOutput;
|
|
|
|
mat4 spvWorkaroundRowMajor(mat4 wrap) { return wrap; }
|
|
|
|
void main()
|
|
{
|
|
int _228;
|
|
do
|
|
{
|
|
bool _225;
|
|
int _229;
|
|
uint _222 = 0u;
|
|
SPIRV_CROSS_UNROLL
|
|
for (;;)
|
|
{
|
|
if (_222 < _11.shadowCascadesNum)
|
|
{
|
|
mat4 _223;
|
|
do
|
|
{
|
|
if (_11.test == 0)
|
|
{
|
|
_223 = mat4(vec4(0.5, 0.0, 0.0, 0.0), vec4(0.0, 0.5, 0.0, 0.0), vec4(0.0, 0.0, 0.5, 0.0), vec4(0.0, 0.0, 0.0, 1.0));
|
|
break;
|
|
}
|
|
_223 = mat4(vec4(1.0, 0.0, 0.0, 0.0), vec4(0.0, 1.0, 0.0, 0.0), vec4(0.0, 0.0, 1.0, 0.0), vec4(0.0, 0.0, 0.0, 1.0));
|
|
break;
|
|
} while(false);
|
|
vec4 _170 = (_223 * spvWorkaroundRowMajor(_11.lightVP[_222])) * vec4(fragWorld, 1.0);
|
|
float _172 = _170.z;
|
|
float _179 = _170.x;
|
|
float _181 = _170.y;
|
|
if ((((_172 >= 0.0) && (_172 <= 1.0)) && (max(_179, _181) <= 1.0)) && (min(_179, _181) >= 0.0))
|
|
{
|
|
_229 = int(_222);
|
|
_225 = true;
|
|
break;
|
|
}
|
|
_222++;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
_229 = _231;
|
|
_225 = false;
|
|
break;
|
|
}
|
|
}
|
|
if (_225)
|
|
{
|
|
_228 = _229;
|
|
break;
|
|
}
|
|
_228 = -1;
|
|
break;
|
|
} while(false);
|
|
_entryPointOutput = _228;
|
|
}
|
|
|