UnityHLSL 代码片段

HLSL 代码片段

HLSL 程序代码片段写入到 CGPROGRAMENDCG 关键字之间,或者 HLSLPROGRAMENDHLSL 之间。后一种形式不会自动包含 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 指令是必需的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值