该页面描述 正向渲染路径(Forward Rendering Path)的详细内容。
正向渲染路径会在一个或多个 Pass 中渲染每个物体,这取决于影响物体的光照。灯光的设置和强度(intensity)不一样,正向渲染的光照也不一样。
实现细节
在正向渲染中,一些影响物体表面的明亮灯光将会以全像素点亮模式(fully per-pixel lit mode)渲染出来。然后,最多4个点光源在每顶点(per-vertex)被计算。
其他的光照作为球面调和函数 / 球谐函数(Spherical Harmonics,SH)被计算出来,虽然它更快,但只是一个近似值。一个灯光是否是像素光照(per-pixel light)取决于以下条件:
- 设置为不重要(Not Important)渲染模式的光照总是 逐顶点 或者 球面调和 处理。
- 平行光总是像素计算的。
- 设置为重要(Important )渲染模式的光照总是 像素计算的。
- 如果以上结果比当前在 Quality Setting 中的像素光源少,那么为了降低亮度,更多的光照将逐像素渲染。
渲染的流程如下:
- 基本的 Pass 应用于一个逐像素(per-pixel)的平行光和所有的逐顶点(per-vertex)或球面调和(SH)处理的光照。
- 其他的像素光在附加的 Pass 被渲染,每个光源一个 Pass。
例如,如果某些物体被一些数量的光源影响(如图下所示,影响A到H):
我们假设光源 A 到 H 有同样的颜色、光照强度,以及自动的渲染模式。这些光源将为该物体做一个精确的分类排序。最亮的光源将按逐像素点亮模式(per-pixel lit mode)从 A 到 D 渲染。
注意到光组的重叠(Per-Pixel、Per-vertex、SH之间)。例如,最近的像素光融入顶点点亮模式(per-vertex lit mode),所以在移动的物体和光源周围会有比较少的光照出现(light popping)。
Base Pass
Base Pass 使用一个逐像素(per-pixel)的平行光和所有的顶点或球面调和光源(SH/vertex lights)渲染。该 Pass 也会添加到任何光照贴图(lightmaps),环境光(ambient )和从Shader发射的平行光。
平行光在该 Pass 的渲染具有阴影 (Shadows)。要注意的是烘焙的物体不会从球面调和光源(SH lights)得到光照。
当在 Shader 的 “Pass Flag”(告诉引擎它们期望被渲染到引擎的时间和方式) 中启用了 “OnlyDirectional”时,正向的 Base Pass 仅渲染主要的平行光( directional light),
环境光或光照探头(ambient/lightprobe),光照贴图(lightmaps )(球面调和光和顶点光照不包括在 Pass 数据内)。
Additional Passes
额外 Passes 的渲染受物体每个额外的像素光影响。在该 Pass 的光源默认是不会有阴影的(因此正向渲染支持一个带阴影的平行光),除非使用 Multi_Compile_fwdadd_fullshadows 变形快捷方式。
性能考虑
球面调和光源(Spherical Harmonics lights)的渲染速度是很快的。它们在 CPU 内具有很小的开销,并且很容易被 GPU 接受(那是因为 Base Pass 会计算球面调和光照,但由于 SH Lights 的工作原理,无论多少个 SH Lights 它们的开销是一样的)。
球面调和光照(SH Lights)的弊端如下:
- 它们在物体的顶点被计算,而不是按像素。这意味着它们将不支持光照缓存(light Cookies)或法线贴图(normal maps)。
- 球面调和光照(SH Lights)调用的频率是很低的,你不能用 SH Lights 做一些明显的光照过度。它们也只会影响漫射光照(Diffuse Light),在高光曲线反射区 / 镜面反射(specular highlights)的调用频率也是很低的。
- SH Light 不是局部的,接近物体表面的球面调和点光源(point or spot SH lights)看起来是错误的。
总之,球面调和光照(SH Lights)对于小的动态物体往往是不够的。
相关推荐
1. **正向渲染路径(Forward Rendering Path)**:适用于简单场景,它为每个光源计算一次阴影。 2. **延迟渲染路径(Deferred Rendering Path)**:适合复杂场景,所有光源的阴影在同一时间计算,但需要更多的GPU...
Unity的渲染管线分为传统前向渲染(Legacy Forward Rendering Path)和统一渲染管线(Universal Render Pipeline, URP),其中URP提供更现代、高性能的解决方案。在"UnityProject_KnightsVow"中,我们需要查看项目...
此外,每个Camera组件也有自己的Rendering Path设置,可以根据需要调整。 Shader的选择和编写直接影响到渲染路径的效果。在Deferred Lighting中,Shader主要关注多重纹理的处理,而在Vertex Lit和Forward Rendering...
- Deferred rendering path in URP requires URP 12.0 or later. - Supports Windows, Mac and WebGL 2 platforms. - In forward rendering mode, reflections can't be added to terrain. - VR not supported. ...
Shiny SSRR adds advanced Screen Space ...in pipeline.- Shiny SSRR for URP (Universal Rendering Pipeline).Both packages offer the same functionality and support forward and deferred rendering path.
Unity的Rendering Path(渲染路径)设置为Deferred Lighting(延迟光照)或者Forward Rendering(向前渲染)时都可以使用天空盒。 使用天空盒的好处有很多,首先,它们能提供一个无需额外性能消耗的背景,因为它们...
- **局部设置**:在Inspector面板中为单个对象设置Rendering Path。 #### 五、渲染路径与Shader的关系 不同的渲染路径对Shader有不同的要求,理解这些关系对于优化Shader至关重要: - **Deferred Lighting**:...
9. **Rendering Path**:选择不同的渲染路径,包括Use Player Settings、Vertex Lit、Forward和Deferred Lighting。Vertex Lit适合简单的光照效果,Forward适用于多种光源,而Deferred Lighting则用于复杂的光照计算...
通过Resources文件夹或Asset导入,然后在场景中设置渲染路径(Rendering Path)为"Deferred Lighting"或"Forward Plus",并选择合适的天空盒,即可在场景中应用这些预设的天空效果。 总之,这35个天空盒资源为Unity...
10. **Rendering Path**:选择不同的渲染方式: - Use Player Settings:使用播放器设置的渲染路径。 - Vertex Lit:基于顶点的光照计算。 - Forward:快速渲染,适用于多光源环境。 - Deferred Lighting:延迟...
* Rendering Path:渲染路径该选项定义相机将要使用的渲染方法。 三、摄像机的渲染路径 * Use Player Settings:使用播放器设置,该相机将使用任意一个播放器设置中所设置的渲染路径。 * Vertex Lit: 顶点光照本...
C Switch between Free Camera and Camera Animation Path 场景管理 Numpad1 Load High Settings and Reload Simulation Numpad2 Load Normal Settings and Reload Simulation Numpad3 Load Low Settings and ...
笔记本的风扇控制 ---------------------------------------- 09 November 2006. Summary of changes for version 20061109: 1) ACPI CA Core Subsystem: Optimized the Load ASL operator in the case where the...