This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Сэмплы материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Вычислительные шейдеры 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, читать и записывать данные буфера.

Рекомендуем ознакомиться
This article assumes you have prior knowledge of the compute shaders. Also, read the following topics on UUSL before proceeding: UUSL Data Types and Common Intrinsic FunctionsUUSL TexturesUUSL SemanticsUUSL ParametersВ этой статье предполагается, что вы уже знакомы с вычислительными шейдерами. Кроме того, прежде чем продолжить, прочтите следующие темы о UUSL:

Main FunctionОсновная функция#

To start and end the void Main function of the compute shader, use the following instructions: Чтобы запустить и завершить функцию void Main вычислительного шейдера, используйте следующие инструкции:

UUSL
#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: Этот код эквивалентен:

OpenGL
#include <core/materials/shaders/render/common.h>

layout (local_size_x = WIDTH_GROUP, local_size_y = HEIGHT_GROUP) in;
void main() {
	<your code here>
}
Direct3D
#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 Содержит локальный линейный индекс рабочего элемента, над которым в данный момент работает вычислительный шейдер
Последнее обновление: 30.11.2023
Build: ()