一抗锯齿0最本质的原因0.1 采样频率样本有多密打算用多少离散样本去记录或读取1渲染到多少分辨率的RT上 。2平采样、降采样、超采样。0.2 信号频率内容变化有多密想表现的内容有多细节变化有多快需要更多中间像素去平滑。0.3 texel footprint / 映射关系单个样本覆盖范围0.4 采样与信号频率不匹配1降采样采样频率不足但信号频率过高产生混叠高频被解释为区域低频以偏概全不够平滑导致时间或空间上的跳变产生锯齿、摩尔纹、闪烁等现象。2超采样信号频率不足但采样频率过高区域低频被解释为高频信号依旧是以偏概全但产生的结果可能会是直接的渲染错误。1常见情况1.1 光栅化采样频率不足1光栅化锯齿三角形边缘细小几何远处栏杆等。1.2 View倾斜以及距离过远texel footprint 变大导致一个像素覆盖区域较大以偏概全。1纹理贴图锯齿视角较倾斜且较远处时采样频率 信号频率。2ShadowMap在距离光源远但Camera近的地方漏光是涉及不同Space的情况ShadowMap的Texel投影到接受面的texel footprint过大SM在LightSpace下的采样频率不够导致在CameraSpace下读取时存储的高频阴影信息密度过低。1.3 View晃动1View视角上下左右晃动。2常用解决思路1MSAA与SSAA1MSAA主要解决几何问题比如三角形边缘几何覆盖率硬边 silhouette但对于Shading部分的解决并不理想比如shader 内部高光锯齿、法线贴图闪烁、透明贴图 alpha test 边缘、纹理高频闪烁等情况。2SSAA不管是几何还是Shading全部都能解决唯一缺点就是贵。2预过滤贴图 与 像素重要性1MipMap对贴图预过滤提前生成区域低频的模糊信息。2ClipMap在Camera Space下降低较远距离的信号频率保留或提高近距离的信号频率。3FXAA与SMAA1FXAA亮度梯度检测边缘沿边缘方向平滑便宜但可能糊。2SMAA更精细的边缘检测和模式识别效果可能好于FXAA。4TAA二Direct Shadow0本质Light VisibilityCamera可见但Light不可见。1Basic ShadowMap1Slope-Scale Bias固定 bias 对所有表面都一样但斜面更容易出现 acne需要更大的 bias。通常根据法线和光照方向动态计算float bias max(0.005 * (1.0 - dot(normal, lightDir)), 0.0005);2PCF与PCSS2,1 PCF解决阴影锯齿边缘模糊非物理正确的软阴影。2.2 PCSS3VSM、EVSM、MSM3.1 VSM3.2 EVSM3.3 MSM4CSMCascaded Shadow Maps主要用于场景主光源且平行光比如太阳光和月光。4.1 CPU4.1.1 划分、规定、初始化边界根据 cascadeCount 得到 cascadeCount 1 个 split 边界且Split[0] 就是原本的CameraNear每一段的FarPlane就是Split [n1]。4.1.2 计算子视椎Z轴覆盖边界线性Lerp和Log对数划分两种各有优缺点直接取综合。4.1.3 计算子视椎8个顶点的世界坐标1FOV与Aspect最直观最简单2NDC反算并非真实逆变换而是从CameraView根据理论临时构造4.1.4 计算子视椎的中心Center最简单的直接8个顶点取平均就完事了。4.1.5 通过LookAt构造子视椎的View矩阵LookAtEye PositionTarget PositionUp Vector——Forward Target - Eye。Eye LightPosition 是动态且虚拟的可以随着Cascaded的Center变化而变化具体来讲就是往光源方向回退一段距离Distance。1总览2LookAt3Distance的选取4.1.6 将子视椎体8个顶点变换到LightSpace后计算AABB去构造正交投影矩阵4.2 ShadowPass4.2.1 Culling And DrawCall对每个 cascade基于该 cascade 的 light frustum / caster bounds 做 shadow caster culling。4.2.2 渲染该 cascade 的 ShadowMap4.3 BasePass / LightingPass1根据像素 view-space depth 选择 cascade index2使用 worldPos 乘对应 cascade 的 lightVP3采样对应 cascade ShadowMap做深度比较4.4 常见问题1接缝2闪烁35Contact ShadowScreen Space Contact Shadow屏幕空间往光源方向做短距离RayMarching。6非传统ShadowMap1ColorShadowMap彩色玻璃彩色阴影2Alpha / Opacity Shadow Map半透明阴影3Deep Shadow Map多层半透明遮挡4Layered Shadow Map / Multi-Layer Shadow Map7Ray Traced ShadowsBox / SDF三Indirect ShadowAO0本质Environment Occlusion从宏观中观微观角度来分析被环境几何的遮挡程度。1微观BRDF中的G与Roughness项。2中观比如模型AO材质AO。3宏观RT AO场景级几何遮挡判断近处或远处是否有物体遮挡环境光。1SSAO与SSDO2HBAO3GTAO4RTAO