Вычислительные шейдеры 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>
[numthreads(WIDTH_GROUP, HEIGHT_GROUP, 1)]
void main(DISPATCH_INFO dispatch_info) {
<your code here>
}
SemanticsСемантика#
UUSL | Direct3D | Description |
---|---|---|
GROUP_ID GROUP_ID | SV_GroupID SV_GroupID | Contains the index of the workgroup currently being operated on by a compute shader Содержит индекс рабочей группы, над которой в данный момент работает вычислительный шейдер |
GROUP_THREAD_ID GROUP_THREAD_ID | SV_GroupThreadID SV_GroupThreadID | Contains the index of work item currently being operated on by a compute shader Содержит индекс рабочего элемента, над которым в настоящее время работает вычислительный шейдер |
DISPATCH_THREAD_ID DISPATCH_THREAD_ID | SV_DispatchThreadID SV_DispatchThreadID | Contains the global index of work item currently being operated on by a compute shader Содержит глобальный индекс рабочего элемента, над которым в настоящее время работает вычислительный шейдер |
GROUP_INDEX GROUP_INDEX | SV_GroupIndex SV_GroupIndex | Contains the local linear index of work item currently being operated on by a compute shader Содержит локальный линейный индекс рабочего элемента, над которым в данный момент работает вычислительный шейдер |
KeywordsКлючевые слова#
UUSL | Direct3D | Описание |
---|---|---|
SHARED | groupshared | Mark a variable for thread-group-shared memory for compute shadersПомечает переменную для разделяемой группой потоков памяти для вычислительных шейдеров |
MEMORY_BARRIER_SHARED | GroupMemoryBarrier() | Blocks execution of all threads in a group until all group shared accesses have been completedБлокирует выполнение всех потоков в группе до тех пор, пока не будут завершены все групповые общие доступы |
MEMORY_BARRIER_SHARED_SYNC | GroupMemoryBarrierWithGroupSync() | Blocks 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Блокирует выполнение всех потоков в группе, пока не будут завершены все групповые общие доступы и все потоки в группе не достигнут этого вызова |