Создать вычислительный шейдер
Аналогично ассеты шейдеров, 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
// ...