类似于 着色器资源,计算 着色器在 GPU 上运行的程序。 更多信息
查看 术语表 资源是项目中的文件,扩展名为 .compute。它们是用 DirectX 11 风格的 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
指令。一个计算着色器资源文件必须包含至少一个可以调用的 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
// ...