Version: 6000.3
语言: 中文
基于着色器模型的分支
基于 Unity 版本的分支

基于平台功能的分支

不鼓励直接使用这些平台宏,因为它们并不总是有助于代码的未来保障。例如,如果您正在编写一个着色器在 GPU 上运行的程序。更多信息
请参阅术语表
检查 D3D11 时,你可能希望确保将来将检查扩展为包括 Vulkan。相反,Unity 定义了几个辅助宏(在HLSLSupport.cginc):

宏观: 用:
UNITY_BRANCH 在条件语句之前添加此内容,以告诉编译器应将其编译为实际分支。扩展到[branch]在 HLSL 平台上时。
UNITY_FLATTEN 在条件语句之前添加此内容,以告诉编译器应将其扁平化以避免实际的分支指令。扩展到[flatten]在 HLSL 平台上时。
UNITY_LOOP 此宏使 Unity 生成代码,指示着色器编译器保留for循环作为循环,而不是将其展开为一组固定的作。有关如何使用宏的示例,请参阅在着色器中渲染其他光源
UNITY_NO_SCREENSPACE_SHADOWS 在不使用级联屏幕空间阴影贴图的平台(移动平台)上定义。
UNITY_NO_LINEAR_COLORSPACE 在不支持线性色彩空间的平台(移动平台)上定义。
UNITY_NO_RGBM 在 RGBM压缩一种存储数据的方法,可减少所需的存储空间量。请参阅纹理压缩动画压缩音频压缩构建压缩
请参阅术语表
光照贴图(lightmaps一种预渲染的纹理,包含光源对场景中静态对象的效果。光照贴图覆盖在场景几何体之上,以创建光照效果。更多信息
请参阅术语表
未使用(移动平台)。
UNITY_NO_DXT5nm 在不使用 DXT5nm 法线贴图压缩的平台(移动平台)上定义。
UNITY_FRAMEBUFFER_FETCH_AVAILABLE 在可以使用“帧缓冲区颜色获取”功能的平台(通常是 iOS 平台)上定义。
UNITY_USE_RGBA_FOR_POINT_SHADOWS 在点光源阴影贴图使用具有编码深度的RGBA纹理的平台上定义(其他平台使用单通道浮点纹理)。
UNITY_ATTEN_CHANNEL 定义光衰减纹理的哪个通道包含数据;用于每像素照明代码。定义为 'r' 或 'a'。
UNITY_HALF_TEXEL_OFFSET 在需要将纹素映射到像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素光照是在每个屏幕像素下计算的。更多信息
请参阅术语表
.
UNITY_UV_STARTS_AT_TOP 始终使用值 1 或 0 定义。值 1 表示纹理 V 坐标在纹理“顶部”为 0 的平台上。类似 Direct3D 的平台使用值 1;类似 OpenGL 的平台使用值 0。
UNITY_MIGHT_NOT_HAVE_DEPTH_Texture 定义平台是否可以通过手动将深度渲染到纹理中来模拟阴影贴图或深度纹理。
UNITY_PROJ_COORD(a) 给定一个 4 分量向量,这将返回一个适合投影纹理读取的纹理坐标。在大多数平台上,这会直接返回给定的值。
UNITY_NEAR_CLIP_VALUE 定义为 near 的值剪切平面限制摄像机从当前位置可以看到的距离或距离的平面。摄像机的可视范围介于远裁剪平面和近裁剪平面之间。查看远剪切平面和近剪切平面。更多信息
请参阅术语表
.类似 Direct3D 的平台使用 1.0,而类似 OpenGL 的平台使用 –1.0。
UNITY_VPOS_TYPE 定义像素位置输入 (VPOS) 所需的数据类型:float2在D3D9上,float4别处。
UNITY_CAN_COMPILE_TESSELLATION 当着色器编译器“理解”细分着色器 HLSL 语法时定义 (目前仅 D3D11) 。
UNITY_INITIALIZE_OUTPUT(type,name) 将给定类型的变量名称初始化为零。
UNITY_COMPILER_HLSL,UNITY_COMPILER_HLSL2GLSL,UNITY_COMPILER_CG 指示用于编译着色器的着色器编译器。有关更多详细信息,请参阅有关着色器编译的文档。如果遇到编译器之间非常具体的着色器语法处理差异,并且想要为每个编译器编写不同的代码,请使用此选项。
  • UNITY_REVERSED_Z- 使用反向 Z 缓冲区在平台上定义。存储的 Z 值在 1..0 范围内,而不是 0..1。

其他资源

基于着色器模型的分支
基于 Unity 版本的分支