Unity 6.3
0 онлайн 115 гостей 3 в системе
Вход
Материалы и шейдеры Шаг 281 из 442

Создать вычислительный шейдер

Аналогично ассеты шейдеров, compute shader assets — это файлы в вашем проекте с расширением .compute. Они написаны на языке DirectX 11 style HLSL, с минимальным количеством директив компиляции #pragma, указывающих, какие функции компилировать как ядра вычислительных шейдеров.

Проверить, поддерживает ли платформа вычислительные шейдеры

Поддержка вычислительных шейдеров может быть запрошена во время выполнения с помощью SystemInfo.supportsComputeShaders.

Создание ассета вычислительного шейдера

Вот базовый пример файла с вычислительным шейдером, который заполняет текстуру красным цветом:

// test.compute

#pragma kernel FillWithRed

RWTexture2D<float4> res;

[numthreads(1,1,1)]
void FillWithRed (uint3 dtid : SV_DispatchThreadID)
{
    res[dtid.xy] = float4(1,0,0,1);
}

Языком является стандартный DX11 HLSL, с дополнительной директивой #pragma kernel FillWithRed. Один файл Asset вычислительного шейдера должен содержать хотя бы одинcompute kernel, который может быть вызван, и эта функция указывается #pragma directive. В файле может быть больше ядер; просто добавьте несколько строк #pragma kernel.

При использовании нескольких строк #pragma kernel, обратите внимание, что комментарии стиля // text не допускаются на одной строке с директивами #pragma kernel, и при их использовании возникают ошибки компиляции.

За строкой #pragma kernel может следовать ряд макросов препроцессора, которые можно определить во время компиляции ядра, например:

#pragma kernel KernelOne SOME_DEFINE DEFINE_WITH_VALUE=1337
#pragma kernel KernelTwo OTHER_DEFINE
// ...