在内置 渲染管线一系列将场景内容显示在屏幕上的操作。Unity 允许您选择预制渲染管线,或编写自己的渲染管线。 更多信息
参见 词汇表 中,表面 着色器在 GPU 上运行的程序。 更多信息
参见 词汇表 是一种简化的编写与光照交互的着色器的方式。
功能名称 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义 SRP | 内置渲染管线 |
---|---|---|---|---|
表面着色器 | 否 有关在 URP 中创建着色器对象的简化方式,请参阅 着色器图。 |
否 有关在 HDRP 中创建着色器对象的简化方式,请参阅 着色器图。 |
否 | 是 |
编写与光照交互的着色器很复杂。存在不同的光照类型、不同的阴影选项、不同的 渲染路径渲染管线用于渲染图形的技术。选择不同的渲染路径会影响光照和阴影的计算方式。某些渲染路径比其他路径更适合不同的平台和硬件。 更多信息
参见 词汇表(前向和延迟渲染),着色器应该以某种方式处理所有这些复杂性。
表面着色器是一种代码生成方法,它使编写光照着色器比使用低级 顶点/像素着色器程序 更容易。
有关一些示例,请查看 表面着色器示例。
您定义一个“表面函数”,该函数以您需要的任何 UV 或数据作为输入,并填充输出结构 SurfaceOutput
。SurfaceOutput 基本上描述了表面的属性(其漫反射颜色、法线、自发光、镜面反射等)。您用 HLSL 编写此代码。
然后,表面着色器编译器会确定需要哪些输入、填充了哪些输出等等,并生成实际的 顶点和像素着色器,以及处理前向和延迟渲染的渲染通道。
当前,表面着色器编译管道的一些部分不理解 DirectX 11 特定的 HLSL 语法,因此,如果您使用 HLSL 功能(如结构化缓冲区、RWTextures 和其他非 DX9 语法),则必须将其包装在 DX11 专用的预处理器宏中。
有关详细信息,请参阅 平台特定差异 和 使用 HLSL 页面。