Version: 6000.3
语言: 中文
创建计算着色器
运行计算着色器

在计算着色器中使用 HLSL 和 ShaderLab

使用纹理采样器

纹理和采样器在 Unity 中不是单独的对象,因此要在计算中使用它们着色器在 GPU 上运行的程序。更多信息
请参阅术语表
您必须遵循以下特定于 Unity 的规则之一:

  • 使用与纹理名称相同的名称,并使用sampler在开头(例如,Texture2D MyTex; SamplerState samplerMyTex).在这种情况下,采样器将初始化为该纹理的过滤器/包装/aniso 设置。

  • 使用预定义的采样器。为此,名称必须具有LinearPoint(对于过滤模式)和ClampRepeat(对于包装模式)。例如SamplerState MyLinearClampSampler创建具有线性滤波器模式和钳制包络模式的采样器。

有关更多信息,请参阅有关采样器状态的文档。

使用关键字

可以使用关键字生成计算着色器的多个变体,就像使用图形着色器一样。

有关变型的一般信息,请参阅着色器变体Unity 根据着色器关键字及其状态的特定组合生成的着色器程序的版本。一个着色器对象可以包含多个着色器变体。更多信息
请参阅术语表
.有关如何在计算着色器中实现这些功能的信息,请参阅在 HLSL 中声明和使用着色器关键字ComputeShader API 文档

仅 HLSL 或仅 GLSL 计算着色器

通常,计算着色器文件是用 HLSL 编写的,并自动编译或转换为所有必要的平台。但是,可以阻止翻译成其他语言(即仅保留 HLSL 平台),也可以手动编写 GLSL 计算代码。

以下信息仅适用于仅 HLSL 或仅 GLSL 计算着色器,不适用于跨平台生成。这是因为此信息可能会导致计算着色器源从某些平台中排除。

  • 计算着色器源被包围CGPROGRAMENDCG关键字不会针对非 HLSL 平台进行处理。

  • 计算着色器源被包围GLSLPROGRAMENDGLSL关键字被视为 GLSL 源,并逐字发出。这仅在面向 OpenGL 或 GLSL 平台时有效。还应注意,虽然自动转换的着色器遵循缓冲区上的 HLSL 数据布局,但手动编写的 GLSL 着色器遵循 GLSL 布局规则。

创建计算着色器
运行计算着色器