编程与软件工程nothings.org
角落并非如此:关于屏幕空间环境光遮蔽(2012)
Corners Don't Look Like That: Regarding Screenspace Ambient Occlusion (2012)
2015 — 2022,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
这是 2012 年一篇讨论屏幕空间环境光遮蔽(SSAO)的图形学文章:作者用实拍照片和图表指出,现实中的墙角不会像 SSAO 渲染的那样在凹角处明显变暗,SSAO 的明暗模型与真实光照并不一致。文章因此质疑把 SSAO 当作物理正确效果的做法,并解释墙角光照实际如何形成。
为什么经久不衰:它把“看起来对”和“物理正确”的差距讲得很直观,是理解 SSAO 这类实时近似为何存在、又错在哪里的经典材料,今天读仍有助于判断光追时代的取舍。
HN 评论精选
SSAO 本质是性能妥协;理解真实墙角光照能帮助开发者改进近似效果。
非常详尽地拆解了现实中墙角光照究竟如何发生,以及实现 SSAO 的人对此的普遍误解。老实说,SSAO 就是个性能取巧手段。但这没关系!游戏引擎里满是这种取巧:事情可以“不对”,但只要足够接近预期,我们一般注意不到。不过 shader 作者读读这类文章没坏处,也许即使 AO 仍是近似,这些问题也能处理得更好。
olliej查看英文原文
Very thorough break down of how lighting in corners actually happens in reality, and the general misunderstanding of it in people implementing SSAO. Honestly SSAO is just a performance hack. But that's ok! Game engines and the like are filled with performance hacks where things can be "wrong" but sufficiently close to what's expected that we don't (generally) notice it. Sometimes it's approximations (fast inverse sqrt for example), movement (strafe + forward having faster movement), or lighting (artificial glow, halos, SSAO, etc). That said it wouldn't hurt for shader writers to read something like this, because maybe these issues can be handled better even though the AO is still just being approximated.
文章自己的图表似乎与其论点矛盾,反而支持 SSAO 所模拟的凹角变暗现象。
这篇文章的论点大致是“表面在凹角附近并不会明显变暗,所以用 SSAO 不好”,但这页上又有那么多图表表明:表面确实会随着接近凹角而经验性地变暗,而且看起来相当像能用 SSAO 廉价模拟的样子……
jameshart查看英文原文
For an article whose thesis is broadly ‘surfaces don’t darken much towards concave corners, so using SSAO is bad’, there sure are a lot of graphs on this page that show that surfaces definitely, empirically darken as they approach concave corners, in a way that looks rather like it could be quite cheaply simulated using SSAO…
AO 假设均匀环境光,而真实房间的反弹光有方向性,因此差异在预期之内。
值得拿现实和“Ground Truth Ambient Occlusion”做对比来重温这篇文章。另外,AO 墙角与他的客厅不匹配并不奇怪:AO 建模的是光线从四面八方均匀射入的环境——就像你身处一个巨大发光的白色球体内部。他客厅的墙壁可能是被间接光照亮的,但反弹光仍有很强的方向性。
corysama查看英文原文
It would be interesting to revisit this comparing reality vs “Groung Truth Ambient Occlusion”. http://iryoku.com/downloads/Practical-Realtime-Strategies-for-Accurate-Indirect-Occlusion.pdf Also, it's not entirely surprising that AO wall corners don't match his living room. AO models an environment with light coming in from all directions uniformly --as if you were inside of a giant, glowing white sphere. His living room walls may be lit indirectly. But, there is still a lot of directionality to the bounced light.
SSAO 是被性能约束逼出的实用方案,并非开发者眼中的物理正确效果。
我在 3D 行业工作,可以很有把握地说开发者并不“热爱”SSAO。只是给动态模型做真正的环境光遮蔽既难设置,又会彻底耗尽大多数游戏的性能预算;而在多数 3D 引擎里,加 SSAO 只要几分钟,每帧约 1ms。希望支持光追的显卡普及后能改变。但在此之前,我们知道 SSAO 是个 hack,知道它物理不正确,只用它是因为(做得好的话)比没有 AO 或只给静态模型做 AO 好看。
esperent查看英文原文
> Game developers are in love with screenspace ambient occlusion (SSAO). I work in 3d and I think I can say with confidence that developers are not in love with SSAO. It's just that real ambient occlusion for moving models is both really hard to set up and would totally blow the performance budget for most games, while in most 3d engines you can add SSAO in couple of minutes and it costs ~1ms per frame. That will hopefully change as graphics cards that support raytracing become more common. But in the meantime, we know SSAO is a hack. We know it doesn't look physically correct, we only use it because (if done well) it looks better than the alternative, which is no ambient occlusion, or ambient occlusion only on static models.
历次讨论
同类还值得读
开源应用架构
The Architecture of Open Source Applications
《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。
编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选编程语言简史:简短、不完整且多半错误
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。
编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.comSQLite 是如何测试的
How SQLite is tested
SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…
编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选高级编程语言(2009)
Advanced programming languages (2009)
Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…
编程与软件工程上首页 8 次 · 2009–2022matt.might.net我的 Forth 与栈机器经历
Yosefk - My history with Forth & stack machines
作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。
编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选