59 lines
1.1 KiB
Plaintext
59 lines
1.1 KiB
Plaintext
|
#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
|
||
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||
|
|
||
|
layout(binding = 0, std430) buffer bar
|
||
|
{
|
||
|
vec4 _data[];
|
||
|
} bar_1;
|
||
|
|
||
|
layout(binding = 1, std430) buffer foo
|
||
|
{
|
||
|
vec4 _data[];
|
||
|
} foo_1;
|
||
|
|
||
|
void _main()
|
||
|
{
|
||
|
SPIRV_CROSS_UNROLL
|
||
|
for (int i = 0; i < 16; i++)
|
||
|
{
|
||
|
bar_1._data[i] = foo_1._data[i];
|
||
|
}
|
||
|
SPIRV_CROSS_LOOP
|
||
|
for (int i_1 = 0; i_1 < 16; i_1++)
|
||
|
{
|
||
|
bar_1._data[15 - i_1] = foo_1._data[i_1];
|
||
|
}
|
||
|
float v = bar_1._data[10].x;
|
||
|
float w = foo_1._data[10].x;
|
||
|
SPIRV_CROSS_BRANCH
|
||
|
if (v > 10.0)
|
||
|
{
|
||
|
foo_1._data[20] = vec4(5.0);
|
||
|
}
|
||
|
float value = 20.0;
|
||
|
SPIRV_CROSS_FLATTEN
|
||
|
if (w > 40.0)
|
||
|
{
|
||
|
value = 20.0;
|
||
|
}
|
||
|
foo_1._data[20] = vec4(value);
|
||
|
}
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
_main();
|
||
|
}
|
||
|
|