图形学
求交运算
大多数求交无外基本就是写出射线方程和被交物体的方程,然后联立求解,根据一直条件是否符合
射线方程
球方程
平面方程
1. 射线与球的求交
求交就好了,最后对t分情况讨论 t的大小然后取值
2.射线与三角形的求交
传统求交方法即联立,求得下式

然后对于t求出的交点坐标是否在三角形内还需进一步判定,可用重心坐标求解
还有一种更高效的方法求交
Möller-Trumbore 算法的核心思想是一步到位的计算出光线是否与三角形相交,主要利用到的知识点是三角形的重心坐标。它是由Tomas Moller 和Ben Trumbore 于1997 年在一篇题名为“Fast, Minimum Storage Ray/Triangle Intersection”的论文中介绍
由三角形内一点都可以由一下方程表示
所以射线与三角形求交可写成如下
化简
写成矩阵形式
求解\(\alpha、\beta、t\)问题就转换为了求解该方程组问题了,只需要使用克拉默法则即可求出\(\alpha、\beta、t\)三个值
克拉默法则
若线性方程的系数矩阵可逆(非奇异),即系数行列式 D≠0,则线性方程有唯一解,其解为
\(x_i = \frac{D_i}{D}\)
最后对比\(\alpha、\beta、t\)是否在\(\left(0,1\right)\)内即可 (具体原因可学习重心坐标)
蒙特卡洛积分
渲染方程需要求解定积分,被积函数通常都是多个维度的复杂函数,我们无法求出解析解。为此我们需要使用蒙特卡洛积分来求解渲染方程。
蒙特卡洛积分形式如下:
其中所选取的样本点,服从概率 pdf(x)
至于为什么要除以pdf, 这里解释非常好https://learnopengl-cn.github.io/07%20PBR/03%20IBL/02%20Specular%20IBL/
从该图中我们可以看出,如果我们对人口任意随机采样,那么挑选身高为 1.70 的人口样本的可能性更高,而样本身高为 1.50 的概率较低。
对其进行求期望,易知期望是无偏的,求其方差,可知标准差和\(\frac{1}{\sqrt{n}}\)成正比,因此如果想要将误差降低1/2,需要提高4倍的采样数
逆变换采样
\(1.\)对于概率密度函数pdf(x),计算它的分布函数cdf(x) (累次积分),如等式(14)所示;
\(2.\)计算\(cdf(x)\)的反函数\(cdf^{-1}(x)\)
\(3.\)对于一个均匀分布的随机数\(\xi\),则X=\(cdf^{-1}(\xi)\), 就是符合该概率分布的随机数
举栗
例如在半球区域上的cos加权的半球采样,有 \(f(x) = c*cos\theta\)
可求得c = \(\frac{1}{\pi}\)
所以取\(pdf(x) = \frac{1}{\pi}*cos\theta * sin\theta\)
对pdf求的边缘分布后,运用逆变换,可得
然后带回极坐标
便可得出采样的方位角
`
float4 CosineSampleHemisphere( float2 E )
{
float Phi = 2 * PI * E.x;
float CosTheta = sqrt( E.y );
float SinTheta = sqrt( 1 - CosTheta * CosTheta );
float3 H;
H.x = SinTheta * cos( Phi );
H.y = SinTheta * sin( Phi );
H.z = CosTheta;
float PDF = CosTheta * (1.0 / PI);
return float4( H, PDF );}
`
SIR
与逆变换采样一样, SIR 是一种在给定 PDF 的情况下生成样本的方法。 尽管 SIR 对目标 PDF 本身的要求要少得多。 然而,这种方法只是对目标分布进行近似采样,并不是真正从目标 PDF 中抽取样本
阴影
PCF -> PCSS->VSSM->MSM
PCSS
- block search
- 计算\(W_{penumbra} = \frac{(d_{receiver} - d_{blocker})*w_{Light} }{d_{Blocker}}\)
- PCF ->就是最后对阴影的采样做了一次卷积


VSSM (Variance Soft Shadow Mapping)
改善PCSS第一步和第三步时采样时的消耗
只需得到 深度的EX、 \(D(X) = E(X^2) - E(X)^2\)
其中深度的平方在生成 shadow map时即可一块生成了
对于期望的求值,可考虑MINPMAP或者SAT
SAT:
一维情况

其实就是预计算

对于二维情况其实也很简单,
只需要先对每行做一次前缀和,然后对每一列做一次前缀和 即可生成SAT。
都完成后
就是求大于深度t(没有遮挡阴影点)的概率了,考虑切比雪夫不等式(甚至不需要知道分布函数)
计算概率如下:

切比雪夫不等式 可认为为约等于
生成后,开始解决问题
PCSS第三个步骤的问题有上式即可解的,下面考虑第一个步骤采样消耗问题
考虑解决blocker search采样问题

其中不遮挡阴影点的比例\(\frac{N_1}{N}\) 可有上述的切比雪夫不等式求解
小心求证,大胆假设! 直接假设$Z_{unocc} $ 是阴影点的深度,有一点点道理 (绝大多数阴影接收点是个平面)
然后就只剩一个未知数了 \(Z_occ\)
(\(Z_{Avg}做一次范围查询即可完成\))
目前主流使用的还是PCSS,虽然有噪声(对于blocker search采样可随机采样几个点)但可接受
MSM(Moment Shadow Mapping)
VSSM其实还存在一些问题,因为我们假设其深度分布是单峰值的,当pdf为多峰值时就会出现不准的情况
如下附图


带来的问题

注意右侧面积为未遮挡的概率
所以为了解决这一假设带来的问题,MSM提出了距的概念,即用多个距来拟合分布函数,具体拟合过于复杂暂且不说


不同于VSSM 当我们有了CDF, 那么对于哪部分的概率就可以很容易得出
然后进行VASSM剩下的步骤即可
用博客园写latex太累了,转战知乎。。

浙公网安备 33010602011771号