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