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

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

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

移除对 UV 和切线的依赖 支持通用曲面方法 使用平面投影 混合三种映射方式 1. 无 UV 坐标的纹理化 通常进行纹理映射的方法是使用网格中每个顶点存储的 UV 坐标。但这并不是唯一的方法。有时,根本没有可用的 UV 坐标。例如,在处理任意形状的程序化几何体时。在运行时创建地形或洞穴系统时,通常无法为适当的纹理展开生成 UV 坐标。在这种情况下,我们必须使用另一种方法...

计算图像亮度(Luminance)。 寻找高对比度像素。 识别对比度边缘。 选择性混合。 搜索边缘端点。 1 搭建场景 显示器的分辨率是有限的。因此,未与像素网格对齐的图像特征会产生锯齿(Aliasing)。对角线和曲线看起来像阶梯,通常被称为“锯齿(jaggies)”。细线可能会断开。比像素还小的高对比度特征有时出现,有时不出现,导致物体移动时产生闪烁,通常被称为...

确定弥散圆(Circle of Confusion,CoC)。 创建 Bokeh(散景)。 对图像进行聚焦和去焦。 分离和合并前景与背景。 1 搭建场景 我们感知光线是因为我们感觉到光子撞击我们的视网膜。同样,摄像机可以记录光线,是因为光子撞击其胶片或图像传感器。在所有情况下,光线都被聚焦以产生清晰的图像,但并非所有东西都能同时处于焦点上。只有特定距离的东西才是清晰的,...

渲染到临时纹理。 通过降采样和升采样进行模糊。 执行渐进式采样。 应用盒式滤波器(Box Filter)。 为图像添加 Bloom。 1 搭建场景 显示器能产生的光量是有限的。它可以从黑色变为全亮,这在 Shader 中对应于 RGB 值 0 和 1。这就是所谓的光的低动态范围(Low Dynamic Range,LDR)。全白像素的亮度因显示器而异,并且可以由用户...

在 GPU 上调整顶点位置。 细分阴影几何体。 跳过细分不可见的三角形。 1 重定位顶点 网格通常由三角形组成,而三角形总是平坦的。曲率的错觉是通过顶点法线添加的。法线贴图可用于添加更多表面不规则的错觉,这些不规则比单个网格三角形还要小。除此之外,视差贴图(Parallax Mapping)使得伪造表面置换成为可能。但所有这些方法都是错觉。使表面更复杂的所谓“最稳健”的方法...

创建 Hull Shader 和 Domain Shader。 细分三角形。 控制细分的方式。 1 Hull 和 Domain 曲面细分是将物体切割成更小部分的艺术。在我们的案例中,我们将细分三角形,从而得到覆盖相同空间的小三角形。这使得为几何体添加更多细节成为可能,尽管在本教程中我们将重点关注曲面细分过程本身。 GPU 能够细分喂给它进行渲染的三角形。它这样做有多种原因...

使用屏幕空间导数或几何着色器获取三角形法线,并利用重心坐标创建可配置宽度的线框效果。

由于视角的原因,当调整摄像机位置时,观察到的事物的相对位置会发生变化,这种视觉现象称为视差。在坐火车高速行驶看窗外的景物,附近的物体看起来很大并且移动很快,而远处的背景看起来很小并且移动较慢。渲染时,相机使用透视模式时,也会出现视差。 视差纹理 之前翻译使用过法线贴图将表面不规则感添加到平滑表面。 它会影响照明,但不会影响表面的实际形状。 因此,该效果视差不明显,通过实现法线贴图基于...