Вычислительные шейдеры UUSL
UUSL supports compute shaders: there are special functions, semantics and parameters for compute shaders. UUSL поддерживает вычислительные шейдеры: существуют специальные функции, семантика и параметры для вычислительных шейдеров.
In UNIGINE, compute shaders have a *.comp extension. В Unigine вычислительные шейдеры имеют расширение *.comp.
A compute shader is a special part of the graphics pipeline. It allows to execute code on the GPU, read and write buffer data. Вычислительный шейдер - это особая часть графического конвейера. Он позволяет выполнять код на GPU, читать и записывать данные буфера.
- UUSL Data Types and Common Intrinsic FunctionsUUSL Data Types and Common Intrinsic Functions
- UUSL TexturesUUSL Textures
- UUSL SemanticsUUSL Semantics
- UUSL ParametersUUSL Parameters
Main FunctionОсновная функция#
To start and end the void Main function of the compute shader, use the following instructions: Чтобы запустить и завершить функцию void Main вычислительного шейдера, используйте следующие инструкции:
#include <core/materials/shaders/render/common.h>
MAIN_COMPUTE_BEGIN(WIDTH_GROUP,HEIGHT_GROUP)
<your code here>
MAIN_COMPUTE_END
This code is equivalent to: Этот код эквивалентен:
#include <core/materials/shaders/render/common.h>
layout (local_size_x = WIDTH_GROUP, local_size_y = HEIGHT_GROUP) in;
void main() {
<your code here>
}
#include <core/materials/shaders/render/common.h>
[numthreads(WIDTH_GROUP, HEIGHT_GROUP, 1)]
void main(DISPATCH_INFO dispatch_info) {
<your code here>
}
SemanticsСемантика#
UUSL | OpenGL | Direct3D | Description |
---|---|---|---|
GROUP_ID SHARED GROUP_ID | gl_WorkGroupID shared gl_WorkGroupID | SV_GroupID groupshared SV_GroupID | Contains the index of the workgroup currently being operated on by a compute shaderMark a variable for thread-group-shared memory for compute shaders Содержит индекс рабочей группы, над которой в данный момент работает вычислительный шейдер |
GROUP_THREAD_ID MEMORY_BARRIER_SHARED GROUP_THREAD_ID | gl_LocalInvocationID memoryBarrierShared() gl_LocalInvocationID | SV_GroupThreadID GroupMemoryBarrier() SV_GroupThreadID | Contains the index of work item currently being operated on by a compute shaderBlocks execution of all threads in a group until all group shared accesses have been completed Содержит индекс рабочего элемента, над которым в настоящее время работает вычислительный шейдер |
DISPATCH_THREAD_ID MEMORY_BARRIER_SHARED_SYNC DISPATCH_THREAD_ID | gl_GlobalInvocationID memoryBarrierShared() barrier() gl_GlobalInvocationID | SV_DispatchThreadID GroupMemoryBarrierWithGroupSync() SV_DispatchThreadID | Contains the global index of work item currently being operated on by a compute shaderBlocks execution of all threads in a group until all group shared accesses have been completed and all threads in the group have reached this call Содержит глобальный индекс рабочего элемента, над которым в настоящее время работает вычислительный шейдер |
GROUP_INDEX GROUP_INDEX | gl_LocalInvocationIndex gl_LocalInvocationIndex | SV_GroupIndex SV_GroupIndex | Contains the local linear index of work item currently being operated on by a compute shader Содержит локальный линейный индекс рабочего элемента, над которым в данный момент работает вычислительный шейдер |