
自定义渲染管线:点光源与聚光灯阴影 (翻译十)
为点光源和聚光灯添加实时阴影支持,使用透视投影渲染和采样阴影,并使用自定义立方体贴图。

为点光源和聚光灯添加实时阴影支持,使用透视投影渲染和采样阴影,并使用自定义立方体贴图。

扩展渲染管线以支持点光源和聚光灯,包含实时渲染和烘焙光照,同时实现每物体最多8个光源的限制。

创建一个电路板般的材质。 添加对 MODS 蒙版贴图的支持。 引入一个辅助细节贴图。 执行切线空间法线贴图。 背景 到目前为止,我们一直使用非常简单的材质来测试渲染管线。但它也应该支持复杂的材质,这样我们可以表现更有趣的表面。在本教程中,我们将借助几张纹理创建一个艺术风格的电路材质。 漫反射贴图 我们材质的核心是漫反射贴图(Albedo Map)。它由几层不同深浅的...

使用LOD Groups。 LOD 级别之间的渐变淡入淡出。 通过采样反射探针来反射环境。 支持可选的菲涅尔反射。 Core Principles 许多小型物体可以为场景增添细节,使其更加有趣。然而,太小而无法覆盖多个像素的细节会退化为模糊的噪点。在这些视觉尺度上,最好不渲染它们,这样也可以释放 CPU 和 GPU 来渲染更重要的东西。我们还可以决定在物体仍然可以区分时...

烘焙静态阴影。 将实时光照与烘焙阴影结合。 混合实时阴影和烘焙阴影。 支持最多四个阴影掩码光源。 烘焙阴影 使用光照贴图的一个优点是我们不受最大阴影距离的限制。烘焙阴影不会被剔除,但它们也无法改变。理想情况下,我们可以在最大阴影距离内使用实时阴影,而在那之后使用烘焙阴影。Unity 的阴影掩码(Shadowmask)混合光照模式使这成为可能。 距离阴影掩码 让我们考...

烘焙静态全局光照 创建Meta pass 支持自发光 烘焙静态光照 到目前为止,我们都是在渲染时计算所有光照,但这并不是唯一的选择。光照也可以预先计算并存储在光照贴图和探针中。这样做有两个主要原因:减少实时计算量,以及添加在运行时无法计算间接光照。后者就是所谓全局光照(Global Illumination)的一部分:光照不是直接从光源发出,而是通过反射、环境或自发光表面间...

渲染阴影 当绘制物体时,表面和光照信息就足以计算光照了。但是两者之间可能有东西阻挡光线,在我们正在绘制的表面上投下阴影。为了使阴影成为可能,我们必须以某种方式让着色器知道阴影投射物体。有多种技术可以做到这一点。最常见的方法是生成一个阴影贴图,存储光线从光源出发在击中表面之前可以传播多远。同一方向上更远的任何东西都不能被同一个光源照亮。Unity 的渲染管线使用这种方法,我们也一样。 ...

增加对多个方向光着色(shading)的支持。 已升级至 2022.3.62f2 1 光照 (Lighting) 如果我们想创建一个更真实的场景,那么我们就必须模拟光如何与表面相互作用。这需要一个比我们目前拥有的不发光(unlit)着色器更复杂的着色器。 1.1 受光着色器 (Lit Shader) 复制 UnlitPass.hlsl 文件并将其重命名为 LitPass.h...

编写一个 HLSL shader 支持 SRP batcher、GPU instancing 以及 dynamic batching 为每个对象配置材质属性,并随机绘制多个对象 创建透明(transparent)和镂空(cutout)材质 Shaders 为了绘制物体,CPU 必须告诉 GPU 绘制什么以及如何绘制。绘制的内容通常是一个 mesh。如何绘制则由 shad...

这是关于创建自定义脚本化渲染管线(Scriptable Render Pipeline, SRP)的系列教程的第一部分。它涵盖了我们将要在未来扩展的准系统渲染管线的初始创建。 创建渲染管线资源和实例 渲染摄像机视图 执行剔除、过滤和排序 分离不透明、透明和无效阶段 处理多个摄像机。 1 Render Pipeline 为了渲染任何内容,Unity 必须确定需...