|
|
@ -0,0 +1,37 @@ |
|
|
|
|
|
// Copyright 2019 yuzu Emulator Project |
|
|
|
|
|
// Licensed under GPLv2 or any later version |
|
|
|
|
|
// Refer to the license.txt file included. |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
* Build instructions: |
|
|
|
|
|
* $ glslangValidator -V $THIS_FILE -o output.spv |
|
|
|
|
|
* $ spirv-opt -O --strip-debug output.spv -o optimized.spv |
|
|
|
|
|
* $ xxd -i optimized.spv |
|
|
|
|
|
* |
|
|
|
|
|
* Then copy that bytecode to the C++ file |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
#version 460 core |
|
|
|
|
|
|
|
|
|
|
|
layout (local_size_x = 1024) in; |
|
|
|
|
|
|
|
|
|
|
|
layout (std430, set = 0, binding = 0) buffer OutputBuffer { |
|
|
|
|
|
uint output_indexes[]; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
layout (push_constant) uniform PushConstants { |
|
|
|
|
|
uint first; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
void main() { |
|
|
|
|
|
uint primitive = gl_GlobalInvocationID.x; |
|
|
|
|
|
if (primitive * 6 >= output_indexes.length()) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const uint quad_map[6] = uint[](0, 1, 2, 0, 2, 3); |
|
|
|
|
|
for (uint vertex = 0; vertex < 6; ++vertex) { |
|
|
|
|
|
uint index = first + primitive * 4 + quad_map[vertex]; |
|
|
|
|
|
output_indexes[primitive * 6 + vertex] = index; |
|
|
|
|
|
} |
|
|
|
|
|
} |