体渲染相函数介绍

相函数在体积光传输中的作用类似于表面渲染方程中的BRDF作用,求出一个比例。 BRDF是在表面法线的方向半球上定义,相函数则是描述了光在整个方向半球上的分布。相函数具体是描述了给定入射光经过介质散射之后每个出射光的分布。如下图,其中r是针对特定方向的加权。

 

在体渲染中,相位函数的形式主要分为对称相位函数和非对称相位函数。

1)对称相位函数常用于生成匀质体数据(homogeneous volume data)的纹理效果。具体来说,通过在空间中生成一组随机数值(通常在 [0, 1] 区间内),然后对这些数值进行傅里叶变换,生成对称相位函数,最终将相位函数与某种空间噪声(如Perlin噪声)进行组合,生成一些具有连续性和自然性的纹理效果。

2)非对称相位函数则通常用于生成不规则或非匀质体数据(heterogeneous volume data)的纹理效果。这是因为,非对称相位函数的相位角不相等,能够产生更多的相位失真(phase distortion)和相位差异(phase discrepancy),从而生成更加复杂的纹理效果,如火焰、云朵等。

实现对称相函数的方式中,在OpenGL中可以通过1D纹理预存储相位函数项,并通过V(相机到样本)和L(光线到样本)向量的点积作为索引,来进行类似查找表的操作,直接读取rgb值然后结合直接照明,最终实现对称相位函数。

Henyey-Greenstein Phase Function

对称相函数的波长依赖性不是相函数重要特征,通常,只需要相函数描述光的散射倾向于向前或向后散射成都,在这种情况下,Henyey-Greenstein是一个很好的选择。

 g是相函数的各项异性,g=0时,光在所有方向上的散射都相等,g在[0,1]范围内的正值表示前向散射。下图使用不同的g,每个图都绘制了多个相位函数,g从0到0.9不等。左边的图显示了在球体上积分为1的相位函数(归一化)。右侧的图显示了已被“重新规范化”到[0..1]范围内的相位函数,以便在具有通用照明的交互式图形中使用。

这个相函数已经被归一化,只有光强度用辐射辐照度表示时,归一化相函数才真正有意义。归一化相函数才真正有意义散射的辐照度=相函数 * 辐照度(irradiance)。

问题有两个

1)在交互式图形应用程序中,使用rgb颜色分量,而颜色分量在[0,1]范围内,没有实际的关联单元。

2)使用如Blinn-phong的着色模型不能能量守恒。

试图在这种通用光设置中使用归一化相位函数问题就很清楚了。举个例子,如果光源rgb值为I(1,1,1),使用各向同性相函数G(0,0)计算正向散射的光,得到光Iforward = (0.079, 0.079, 0.079),在显示颜色几乎为黑色,本来是白光就变成黑光了。还有相反的,如果使用前向峰值相函数G(0,0.8)来计算前向散射光,会得到Iforward = (3.58,3.58,3.58)亮度使开始的几倍,都失去了能量守恒的意义。那么如何解决这个问题呢?是把G算出来的结果都控制在[0,1]内,一般可以通过相函数除其最大值来进行归一化,HenyeyGreenstein相位函数在0相位角处总是有一个最大值,所以重整化相位函数是

在实际中,通过2D纹理来缓存这些相函数信息,横坐标就是标准化的相位角,纵坐标就是g值。在使用相函数进行体渲染时候,g项可以指定为传输函数中的附加光学特性以及颜色和不透明度。比如在渲染云的时候,密度低的外部条纹将具有高度前向峰值的相函数,密度高的具有各项同性的相函数。可以将g设置为1-alpha来获得好的结果。 

Mie Scattering Phase Functions

波长相关的相函数在我们寻找更特殊的散射效应时发挥作用,比如彩虹。这些现象之所以如此独特或罕见,是因为它们需要非常特定的物理条件,即相对均匀大小的雨滴或相对均匀悬浮在空气中的非常细的水颗粒。相函数本身需要非常复杂的基于物理的模拟来计算数百个单独的波长。幸运的是,有一个工具可用于计算、可视化和分析这些复杂的效应。Philip Laven的MiePlot是一个生成这些特殊目的相函数的优秀工具。请记住,虽然这个工具可以为特定的波长生成散射函数,但是一个三波长相函数(红色、绿色和蓝色各一个)并不会产生很好的渲染结果。这是因为我们用于显示的RGB通道是为了覆盖三个波长间隔,而不是三个单独的波长。此外,这个工具被设计为模拟非常特定大小的水颗粒的散射效应,改变颗粒的大小可能会导致非常不同的相函数。当我们对颗粒大小的分布进行散射模拟时,我们可以观察到,颗粒大小的异质性越来越大,相函数就越来越没有波长依赖性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值