资讯动态

SSAO(屏幕空间环境光遮蔽)

发布时间:2026/8/24 8:17:37 来源:尧图企业网站定制
一句话理解SSAO 是一种廉价地伪造环境光遮蔽效果的技术在物体相互靠近的缝隙、角落、褶皱处压暗一点让画面更有立体感和接触感。它不追求物理正确只追求看起来对、而且够快。先搞清楚它在解决什么问题真实世界里环境光天光、反射光这种四面八方来的漫射光会被几何结构挡住。想想墙角、桌子和地面的接缝、褶皱的布料——这些凹进去、被周围挡住的地方接收到的环境光更少所以更暗。这个现象叫Ambient Occlusion环境光遮蔽。如果不做 AO纯环境光会把物体照得平平的、像贴纸一样飘在场景里。加上 AO物体之间才有接触感和体积感。问题是真正算 AO 很贵。你得对每个点向四面八方发射射线看有多少被周围几何挡住——这是离线渲染如电影的做法实时游戏扛不住。SSAO 的取巧思路SSAO 的 “SS” Screen Space屏幕空间。核心 trick 是不去遍历整个 3D 场景算遮蔽而是只利用已经渲染出来的深度缓冲depth buffer在屏幕这张 2D 图上做近似。基本流程拿到深度图和法线图。深度图记录了每个像素离相机多远。对每个像素在它周围采样一圈点通常在一个半球范围内取若干个采样点。比较深度如果采样点的深度显示这里有东西挡在前面、比当前点更近就认为当前点被遮蔽了一点。统计周围被挡住的采样点越多 → 遮蔽越强 → 这个像素越暗。模糊 合成结果噪点多做一次模糊再乘到环境光项上。因为只在屏幕空间、只用深度信息成本和场景复杂度基本无关这是它能实时的关键。关键参数调效果时会碰到参数作用调大/调小Radius采样半径多大范围内找遮蔽太大 → 该亮的地方也暗、发灰太小 → 只有极细缝有效果Sample Count采样数每像素采几个点越多越平滑但越贵Intensity强度遮蔽压暗的程度太大 → 缝隙发黑、脏Bias偏移避免自遮蔽误判太小会有一层灰蒙蒙的噪声SSAO 的天生缺陷因为它只看屏幕正因为只用屏幕空间信息它有几个绕不开的问题屏幕外的东西不参与遮蔽一个物体在画面外它本该在画面内投下的 AO 就丢了。被遮挡的深度信息拿不到深度图只记录了最前面一层背后的几何一无所知。噪点 / 边缘瑕疵采样数有限会产生噪声通常靠模糊掩盖但模糊又会让边缘漏光或糊掉。视角依赖转动相机时同一个角落的 AO 可能会闪烁、变化。演进你会听到的一堆变体SSAO 是 Crytek 在 2007 年Crysis带火的之后出了一堆改进版本质都是在更准、更快、更少噪点上做文章HBAO / HBAOHorizon-Based基于地平线角度质量更好GTAOGround Truth AO更接近物理正确现在很主流SSAO 的各种引擎实现Unity 的 URP/HDRP、UE 都内置了。什么时候用、什么时候别用值得用想低成本提升画面立体感、接触阴影尤其室内、有大量几何细节的场景。要注意移动端开销敏感SSAO 属于可关的画质选项级别如果你的光照本身就用了烘焙 AO 或光追 AO屏幕空间的这层可能是多余甚至冲突的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价