版本:Unity 6 (6000.0)
语言:英语
计算着色器简介
在计算着色器中使用 HLSL 和 ShaderLab

创建计算着色器

类似于 着色器资源,计算 着色器在 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
// ...
计算着色器简介
在计算着色器中使用 HLSL 和 ShaderLab