包含此页的版本:
不含此页的版本:
纹理和采样器在 Unity 中不是单独的对象,因此要在计算中使用它们着色器在 GPU 上运行的程序。更多信息
请参阅术语表您必须遵循以下特定于 Unity 的规则之一:
使用与纹理名称相同的名称,并使用sampler在开头(例如,Texture2D MyTex; SamplerState samplerMyTex).在这种情况下,采样器将初始化为该纹理的过滤器/包装/aniso 设置。
使用预定义的采样器。为此,名称必须具有Linear或Point(对于过滤模式)和Clamp或Repeat(对于包装模式)。例如SamplerState MyLinearClampSampler创建具有线性滤波器模式和钳制包络模式的采样器。
有关更多信息,请参阅有关采样器状态的文档。
可以使用关键字生成计算着色器的多个变体,就像使用图形着色器一样。
有关变型的一般信息,请参阅着色器变体Unity 根据着色器关键字及其状态的特定组合生成的着色器程序的版本。一个着色器对象可以包含多个着色器变体。更多信息
请参阅术语表.有关如何在计算着色器中实现这些功能的信息,请参阅在 HLSL 中声明和使用着色器关键字和 ComputeShader API 文档。
通常,计算着色器文件是用 HLSL 编写的,并自动编译或转换为所有必要的平台。但是,可以阻止翻译成其他语言(即仅保留 HLSL 平台),也可以手动编写 GLSL 计算代码。
以下信息仅适用于仅 HLSL 或仅 GLSL 计算着色器,不适用于跨平台生成。这是因为此信息可能会导致计算着色器源从某些平台中排除。
计算着色器源被包围CGPROGRAM和ENDCG关键字不会针对非 HLSL 平台进行处理。
计算着色器源被包围GLSLPROGRAM和ENDGLSL关键字被视为 GLSL 源,并逐字发出。这仅在面向 OpenGL 或 GLSL 平台时有效。还应注意,虽然自动转换的着色器遵循缓冲区上的 HLSL 数据布局,但手动编写的 GLSL 着色器遵循 GLSL 布局规则。