此页面详细介绍了 Unity 内置 渲染管线一系列操作,将场景内容显示在屏幕上。Unity 允许您从预构建的渲染管线中选择,或编写自己的渲染管线。 更多信息
参见 词汇表 中的 延迟着色 渲染路径渲染管线用于渲染图形的技术。选择不同的渲染路径会影响光照和着色的计算方式。一些渲染路径比其他路径更适合不同的平台和硬件。 更多信息
参见 词汇表。有关延迟着色的技术概述,请参阅 Wikipedia: 延迟着色。
使用延迟着色时,影响 游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、相机、航点等。游戏对象的功能由附加到它的组件定义。 更多信息
参见 词汇表 的灯光数量没有限制。所有灯光都在每个像素上进行评估,这意味着它们都与 法线贴图一种凹凸贴图纹理,允许您为模型添加表面细节,例如凹凸、凹槽和划痕,这些细节会像真正的几何体一样捕捉光线。
参见 词汇表 等相互作用正确。此外,所有灯光都可以具有曲奇和阴影。
延迟着色具有以下优点:光照处理开销与灯光照射的 像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素光照在每个屏幕像素处进行计算。 更多信息
参见 词汇表 数量成正比,不依赖于场景复杂度。因此,通过使灯光保持较小,可以提高性能。延迟着色也具有高度一致且可预测的行为。每个灯光的效应都在每个像素处计算,因此没有在大型三角形上分解的光照计算。
另一方面,延迟着色对抗锯齿没有真正的支持,并且无法处理半透明游戏对象(这些游戏对象使用 前向 渲染进行渲染)。也不支持 网格Unity 的主要图形基元。网格构成了您的 3D 世界的大部分。Unity 支持三角形或四边形多边形网格。Nurbs、Nurms、Subdiv 表面必须转换为多边形。 更多信息
参见 词汇表 渲染器的“接收阴影”标志,并且 剔除蒙版允许您通过图层来包含或省略要由相机渲染的对象。
参见 词汇表 仅以有限的方式支持。您只能使用最多四个剔除蒙版。也就是说,您的剔除 图层蒙版一个值,定义要包含或排除在操作中的图层,例如渲染、碰撞或您自己的代码。 更多信息
参见 词汇表 至少必须包含所有图层减去四个任意图层,因此必须设置 32 个图层中的 28 个。否则,您会遇到图形伪影。
它需要具有多重渲染目标 (MRT) 的显卡,着色器在 GPU 上运行的程序。 更多信息
参见 词汇表 模型 3.0(或更高版本)以及对深度 渲染纹理一种特殊的纹理类型,在运行时创建和更新。要使用它们,首先创建一个新的渲染纹理,并指定您的相机之一渲染到其中。然后,您可以像使用普通纹理一样在材质中使用渲染纹理。 更多信息
参见 词汇表 的支持。大多数 2006 年之后制造的 PC 显卡都支持延迟着色,从 GeForce 8xxx、Radeon X2400、Intel G45 开始。
在移动设备上,延迟着色在所有运行至少 OpenGL ES 3.0 的设备上都受支持。
注意:使用正交投影时,不支持延迟渲染。如果 相机一个组件,在场景中创建特定视点的图像。输出要么绘制到屏幕上,要么作为纹理捕获。 更多信息
参见 词汇表 的投影模式设置为正交,则相机将回退到前向渲染。
注意:延迟渲染在内置渲染管线中不支持单通道立体实例化。
延迟着色中实时灯光的渲染开销与灯光照亮的像素数量成正比,不依赖于场景复杂度。因此,小型点光源或聚光灯非常便宜,如果它们被场景游戏对象完全或部分遮挡,那么它们甚至更便宜。
当然,具有阴影的灯光比没有阴影的灯光要昂贵得多。在延迟着色中,投射阴影的游戏对象仍然需要为每个投射阴影的灯光渲染一次或多次。此外,应用阴影的光照着色器比禁用阴影时使用的光照着色器具有更高的渲染开销。
具有不支持延迟着色的着色器的对象在延迟着色完成后使用 前向渲染一种渲染路径,根据影响对象的灯光,以一到多个通道渲染每个对象。前向渲染对灯光本身的处理方式也不同,具体取决于它们的设置和强度。 更多信息
参见 词汇表 路径进行渲染。
G 缓冲区中渲染目标(RT0 - RT4)的默认布局如下所示。数据类型放置在每个渲染目标的各个通道中。使用的通道显示在括号中。
因此,默认 G 缓冲区布局为 160 位/像素(非 HDR)或 192 位/像素(HDR)。
如果使用 阴影蒙版 或混合光照的距离阴影蒙版模式,则会使用第五个目标。
因此,G 缓冲区布局为 192 位/像素(非 HDR)或 224 位/像素(HDR)。
如果硬件不支持五个并发渲染目标,则使用阴影蒙版的对象将回退到前向渲染路径。发射 + 光照缓冲区 (RT3) 以对数方式编码,以提供比使用 ARGB32 纹理通常可能更大的动态范围,前提是相机没有使用 HDR高动态范围
参见 词汇表。
请注意,当相机使用 HDR 渲染时,不会为发射 + 光照缓冲区 (RT3) 创建单独的渲染目标;相反,相机渲染到的渲染目标(即传递到图像效果的渲染目标)用作 RT3。
G 缓冲区通道为每个游戏对象渲染一次。漫反射和镜面反射颜色、表面光滑度、世界空间法线以及发射 + 环境 + 反射 + 光照贴图渲染到 G 缓冲区纹理中。G 缓冲区纹理设置为全局着色器属性,以便着色器(CameraGBufferTexture0 .. CameraGBufferTexture3 名称)在以后访问。
光照通道根据 G 缓冲区和深度计算光照。光照在屏幕空间中计算,因此处理时间与场景复杂度无关。光照添加到发射缓冲区。
不穿过相机近裁剪平面的点光源和聚光灯以 3D 形状渲染,同时启用 Z 缓冲区的场景测试。这使得部分或完全遮挡的点光源和聚光灯非常便宜。方向光以及穿过近裁剪平面的点光源或聚光灯以全屏 四边形一个类似于平面的基元对象,但它的边只有 1 个单位长,它只使用 4 个顶点,表面在局部坐标空间的 XY 平面中定向。 更多信息
参见 词汇表 渲染。
如果灯光启用了阴影,那么它们也会在此通道中渲染和应用。请注意,阴影不是“免费的”;阴影投射器需要渲染,并且必须应用更复杂的光照着色器。
唯一可用的光照模型是标准模型。如果您想要不同的模型,可以通过将修改后的 Internal-DeferredShading.shader 文件(来自 内置着色器)放到“Assets”文件夹中名为“Resources”的文件夹中来修改光照通道着色器。然后打开图形设置(菜单:编辑>项目设置,然后单击图形类别)。将“延迟”下拉菜单更改为“自定义着色器”。然后将显示的“着色器”选项更改为您正在使用的着色器。