包含此页的版本:
不含此页的版本:
在 Unity 中,您通常将着色器在 GPU 上运行的程序。更多信息
请参阅术语表HLSL 中的程序。若要将 HLSL 代码添加到着色器资产,请将代码放入着色器代码块中。
注意:Unity 还支持用其他语言编写着色器程序,尽管通常不需要或不推荐这样做。有关详细信息,请参阅编写着色器。
本手册的这一部分包括有关以特定于 Unity 的方式使用 HLSL 的信息。有关编写 HLSL 的一般信息,请参阅 Microsoft 的 HLSL 文档。
注意:避免使用CGPROGRAM在着色器代码中,除非你编写表面着色器 为内置渲染管线编写着色器的简化方法。更多信息
请参阅术语表.
HLSL 有两种语法:旧版 DirectX 9 样式语法和更现代的 DirectX 10+ 样式语法。区别主要在于纹理采样函数的工作方式:
Unity 提供了包含预处理器宏的着色器库,以帮助您管理这些差异。有关详细信息,请参阅内置着色器宏。
这顶点着色器 渲染模型时在 3D 模型的每个顶点上运行的程序。更多信息
请参阅术语表是在 3D 模型的每个顶点上运行的程序。很多时候,它不会做任何特别有趣的事情。在这里,我们只是将顶点位置从对象空间转换为所谓的“剪辑空间”,这是 GPU 用来栅格化屏幕上对象的内容。我们还传递未经修改的输入纹理坐标 - 我们需要它在片段着色器中对纹理进行采样。
Fragment Shader 是一个在每个像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素光照是在每个屏幕像素下计算的。更多信息
请参阅术语表该对象占据屏幕上,通常用于计算和输出每个像素的颜色。通常屏幕上有数百万像素,执行片段着色器
为了他们所有人!优化片段着色器是整体游戏性能工作中非常重要的一部分。
一些变量或函数定义后面跟着语义符号 - 例如:POSITION 或 : SV_Target。这些语义符号将这些变量的“含义”传达给 GPU。有关详细信息,请参阅着色器语义页面。