绘制管线中的计算频率

最简单的情况

image.png

几何管线

参数曲面,生成连续曲面

image.png

管线的几何部分

image.png

Geometry Shader,其实不好用,过于自由的修改顶点,没法知道顶点总数。导致速度慢,从而用的少。

Tessellation shader 曲面细分着色器

image.png

使用重心坐标插值出细分后的顶点值

image.png
  • 更平滑的几何 PNTriangles

  • 增加几何细节 Displacement Map

细分后定点也许会沿法线变化,在硬边的情况下,可能会出现裂缝

Mesh shader

直接在计算管线里生成任意 Mesh

image.png
image.png

着色管线

以 Quad 即四个像素为单位执行,为了 ddx, ddy,通常为了抗锯齿。 写入是覆盖了像素中心。

MSAA 抗锯齿,Color Blend 的时候每个像素多次采样判断是否全覆盖像素,不过计算每个像素还是只算中心一次。 可以硬件 MSAA,也可以手写 shader msaa

Variable Shading Rate

采用不同的着色范围,不一定是一个像素着色一次。

  1. 根据画面的不同区域重要程度

  2. 根据角色重要程度

  3. 根据材质重要程度

  4. 根据高频低频区域

image.png

几何项

  • 高频

    • 发现变化大

    • 几何细节多

  • 低频区域

    • 平坦

    • 光滑

屏幕信号

频谱分析

  • 高频

    • 光照变化剧烈

    • 纹理细节丰富

  • 低频

    • 光照平缓

    • 纹理较为一致

    • 比较远

着色项

  • 高频

    • 高光的 Lobe 中心

    • 影音的半影区域

  • 低频

    • 漫反射

    • 原理高光中心

    • 完全被影子遮蔽

分辨率

  • AO

  • GI

都可以降分辨率渲染

着色方程优化

  • Move to Vertex / Tesslation

  • Multi-rate shading

最后更新于

这有帮助吗?