siggraph07,来自valve的一个处理alpha test的texture的锯齿问题,以及围绕这个的相关的一些效果的技术。
可以让decal和leaf的渲染的效果提升,而且效率的额外负担很低。
DistanceField
distance field是这个paper的理论基础,所以要先看一下,
link:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.915&rep=rep1&type=pdf
siggraph2k的一个paper。
这个做法的提出并不是在realtime rendering领域,但是随着硬件的提升和开发者基于良好理解的简化,使得distance field可以在游戏中应用。
distance field就是记录离散空间(比如使用octree描述的3d空间和quadtree描述的2d空间)中的一点距离shape的信息。
1.0f-length(delta_position); //这样的东西
那么点在shape内,边缘,边缘附近,距离shape很远,就可以通过这种形式表达出来。
有了这样的信息,就可以做很多应用,其中最有意义的就是边缘柔化(也算是一种反锯齿吧)。
文中还涉及了很多的东西,但是暂且跳过吧。
Improved Alpha-Tested Magnification
valve在实际应用中是使用low resolution distance field,用一个high res的黑白图(只记录某一个texel透明or not)做source,使用blinear filter来生成distance field,所以生成过程是非常快的,现在看来蜗居都可以loading时刻调用一些gpu资源做这个。
图中可见是黑的地方就是没有,白的地方是在shape内部,过渡的地方描述边缘信息,基于这个可以对用来做alpha test或者blend的alpha做调整,进而提升quality。
我们也可以看出:
- 资源消耗很小
- runtime cost很小
- 对pipelein的影响很小
examples
文中提及一个alpha test用一个渐变的值,然后根据distance调整alpha test ref来调整,可以达到逐渐把叶子渐隐的smooth lod transition的效果,很不错。
smoothstep平时用的少,不提及都忘了。
可以有的效果包括:
- antiliasing
- outline
- glow
- drop shadow