Version: Unity 6.0 (6000.0)
语言 : 中文
计算着色器简介
在计算着色器中使用 HLSL 和 ShaderLab

创建计算着色器

类似于着色器资源,计算着色器资源是项目中的资源文件,文件扩展名为 .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 行时,请注意在 #pragma kernel 指令的同一行上不允许 // text 样式的注释,如果使用,会导致编译错误。

可选择性地在 #pragma kernel 行后面添加要在编译该内核时定义的多个预处理器宏,例如:

#pragma kernel KernelOne SOME_DEFINE DEFINE_WITH_VALUE=1337
#pragma kernel KernelTwo OTHER_DEFINE
// ...
计算着色器简介
在计算着色器中使用 HLSL 和 ShaderLab