Version: 6000.3
语言: 中文
计算着色器简介
在计算着色器中使用 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 kernelline 后面可以选择在编译该内核时定义许多预处理器宏,例如:

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