HLSL 代码片段
HLSL 程序代码片段写入到 CGPROGRAM 和 ENDCG 关键字之间,或者 HLSLPROGRAM 和 ENDHLSL 之间。后一种形式不会自动包含 HLSLSupport 和 UnityShaderVariables 内置头文件。
在代码片段的开头,可使用 #pragma 语句的形式提供编译指令。以下指令可指示要编译的着色器函数:
- #pragma vertex name - 作为顶点着色器来编译函数 name。
- #pragma fragment name - 作为片元着色器来编译函数 name。
- #pragma geometry name - 作为 DX10 几何着色器来编译函数 name。如下所述,设置此选项会自动开启 #pragma target 4.0。
- #pragma hull name - 作为 DX11 外壳着色器来编译函数 name。如下所述,设置此选项会自动开启 #pragma target 5.0。
- #pragma domain name - 作为 DX11 域着色器来编译函数 name。如下所述,设置此选项会自动开启 #pragma target 5.0。
其他编译指令:
- #pragma target name - 要编译到的着色器目标。有关详细信息,请参阅着色器编译目标页面。
- #pragma require feature …- 对着色器需要的 GPU 功能进行精细控制,请参阅着色器编译目标页面以了解详细信息。
- #pragma only_renderers 空格分隔的名称 - 仅为给定的渲染器编译着色器。默认情况下,将为所有渲染器编译着色器。请参阅下文中的_渲染器_以了解详细信息。
- #pragma exclude_renderers 空格分隔的名称 - 不为给定渲染器编译着色器。默认情况下,将为所有渲染器编译着色器。请参阅下文中的_渲染器_以了解详细信息。
- #pragma multi_compile … - 用于处理多个着色器变体。
- #pragma enable_d3d11_debug_symbols - 为针对 DirectX 11 编译的着色器生成调试信息,这将允许您通过 Visual Studio 2012(或更高版本)图形调试器来调试着色器。
- #pragma hardware_tier_variants 渲染器名称 - 为每个可以运行所选渲染器的硬件层生成每个编译着色器的多个着色器硬件变体。请参阅下文中的_渲染器_以了解详细信息。
- #pragma hlslcc_bytecode_disassembly - embed disassembled HLSLcc bytecode into translated shader.
- #pragma disable_fastmath - enables precise IEEE 754 rules, mostly involving NaN handling (currently only affects Metal platform).
- #pragma glsl_es2 - When set in a GLSL shader, generate a GLSL ES 1.0(OpenGL ES 2.0), even when the shader target is OpenGL ES 3.
每个代码片段必须至少包含一个顶点程序和一个片元程序。因此,#pragma vertex 和 #pragma fragment 指令是必需的。
1661

被折叠的 条评论
为什么被折叠?



