07 A Glimpse of Industrial Solutions
1. Anti-Aliasing
1.1 Temporel Anti-Aliasing (TAA)
- 对于静止图像,每一帧的采样取像素内不同的区域,循环变化,下一帧复用上一帧的信息,考虑到递归,就会使得等效SSP变大。
- 对于运动物体,使用motion vector来查找。
- 如果出现遮挡等问题使得信息不可用,就采取相应的clamp等方法。
1.2 MSAA 与SSAA
- SSAA
- 使用更大的分辨率去做渲染,然后压小;可见开销很大
- MSAA
- 对采样的点,如果一个三角形只采到一个点就用该点shading,如果对一个三角形才到多个点则用这些点中间的点做shading;因此需要维护一张表,记录采样点的颜色和深度
- samples复用,将采样点放在邻近像素中间,就可以复用
1.3 Image based anti-alisaing solution
- FXAA->MLAA->SMAA(Enhanced subpixel morphological AA)
- 矢量化
1.4 G-Buffer不可以做反走样,否则就会失去意义
2. Temporal Super Resolution
2.1 DLSS
- 提升了分辨率,那么相应的细化的像素就难以找到上一帧的对应信息,不能直接clamp,容易糊掉。
- DLSS 2.0就提供了利用temporal的方法。
- 其他:
3. Shading
3.1 Deferred Shading 延迟渲染
- 光栅化时,如果从远到近做shading时,就需要对每个fragment做shading。
- 第一次光栅化不做shading,只更新depth buffer
- 第二次光栅化只对等于depth的部分做shading。
- 因为深度buffer不可以做AA,所以不能做aa,但是可以使用TAA或者图像方法。
3.2 Tiled Shading
- 把屏幕分割成小块,对每一块做shading,如此一来可以减少需要考虑光源的数量
- 因为光源在考虑立体角时会有平方反比的关系,所以可以假设每个光源都有自己的一个作用范围,如此一来不同的小块经过的光源范围数量是变少的,只需要渲染能影响到他的光源就可以了。
3.3 Clustered Shading
- 不仅对根据屏幕分割的长条做光源贡献判断,进一步的,对每一片的深度也进行切分,即将三维空间分割成三维立体块,然后对每一个立体块做光源贡献。
4. Level of Detail Solution(LoD)
- 在RTR中,即cascaded。
- cascaded shadow map:离camera比较近的区域生成比较精确的shadow map,而在较远的地方可以粗糙一些。在不同的细致程度的shadow map有重叠区域,这是为了防止shadow map切换时有问题,所以在重叠区域内按照距离选择一个map。
- cascaded LPV:可以在距离比较远的地方使用更大的格子来传播。
5. Global Illumination Solution
软件方法
- 对近处使用高精度的SDF,远处使用低精度的
- 如果有强的方向光源或者点光源,使用RSM
- DDGI
硬件方法 - 使用低精度模型
- RTXGI
6. 其他
来源
本文来自博客园,作者:ETHERovo,转载请注明原文链接:https://www.cnblogs.com/etherovo/p/17368324.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律