intro
acm transaction on graphics 15的一个文章; https://dl.acm.org/doi/10.1145/2766988 整体偏学术,主要是对马岛的siggraph20的course中有引用,顺着看过来,还挺有意思; 论文本身有点晦涩,看起来有点枯燥,把这个视频传了(半熟肉)https://www.bilibili.com/video/BV1MK411P71x?from=search&seid=10817193380449311591
overview
sggx microflake distribution是处理volume 渲染的一个方法;
像fur,fabric,植被这种,物理比较正确的方式还是要按照volume去建模; 像之前
安柏霖:[sig16]《神秘海域4》中的volumetric-based materialszhuanlan.zhihu.com
里的技术还是偏hack的,没有做正确的建模和计算。
在sggx之前,是有zhao shuang老师的很多在volume渲染方面的很多工作. 对于毛发这种,是属于各向异性的体数据,一般使用的建模是microflake;毛发这种完整说来是:spatially-varing properties of anisotropic microflake participating media; microflake就是如图理解就行,就是volume中一堆小片,用这个来建模各种体数据;
但是之前的做法是超高精度的渲染方式,细节很高,但是消耗太大; 而且数学模型也不容易去downsample。 sggx是使用了一个更加简单,以及容易lod的表达,极大地提升了这个渲染的效率,因此也在一些游戏中开始被使用;
关键点
整篇文章关键点两个:
- roughness物理属性的直觉表达,是microflake在各个方向上的投影面积(project area)
- 然后使用ellipsoid(椭球体)来表达建模,把解析公式的方式,转变成geometry的方式,进而把整个问题大幅度简化
这里作者首先从light在volume中传播的方式来进行反推,最后得出roughness就是microflake在各个方向上的project area; 然后进行downsample的时候也要围绕这个来做; 一旦有了project area这个关键点,那么建模就相对直接
就是使用ellipsoid来建模,可以做到和原来的microflake等效;
这样normal distribution什么的也都有了,sggx的ellipsoid模型也可以把ggx distribution统一进来;
然后ellisoid表达就是一个矩阵就有了,各种简洁; 进而各种dowsample等等的操作就简单了;
结果
sggx normal distribution能够在效果相近的情况下,大幅度提升渲染效率,可以说是挺犀利了;