UUSL Compute Shaders
UUSL supports compute shaders: there are special functions, semantics and parameters for compute shaders.
In Unigine, compute shaders have a *.comp extension.
A compute shader is a special part of the graphics pipeline. It allows to execute code on the GPU, read and write buffer data.
This article assumes you have prior knowledge of the compute shaders. Also, read the following topics on UUSL before proceeding:
Main Function
To start and end the void Main function of the compute shader, use the following instructions:
MAIN_COMPUTE_BEGIN(WIDTH_GROUP,HEIGHT_GROUP)
<your code here>
END_COMPUTE
You should add a new line (press Enter) after closing the instruction.
This code is equivalent to:
layout (local_size_x = WIDTH_GROUP, local_size_y = HEIGHT_GROUP) in;
void main() {
<your code here>
}
[numthreads(WIDTH_GROUP, HEIGHT_GROUP, 1)]
void main(DISPATCH_INFO dispatch_info) {
<your code here>
}
Semantics
UUSL | OpenGL | Direct3D | Description |
---|---|---|---|
GROUP_ID | gl_WorkGroupID | SV_GroupID | Contains the index of the workgroup currently being operated on by a compute shader |
GROUP_THREAD_ID | gl_LocalInvocationID | SV_GroupThreadID | Contains the index of work item currently being operated on by a compute shader |
DISPATCH_THREAD_ID | gl_GlobalInvocationID | SV_DispatchThreadID | Contains the global index of work item currently being operated on by a compute shader |
GROUP_INDEX | gl_LocalInvocationIndex | SV_GroupIndex | Contains the local linear index of work item currently being operated on by a compute shader |
Last update: 2017-10-20
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)