首页 > 其他分享 >paper - 2015 - Evaluation of Visual Parameters in Volumetric Path Tracing(1)

paper - 2015 - Evaluation of Visual Parameters in Volumetric Path Tracing(1)

时间:2022-12-03 16:22:17浏览次数:86  
标签:采样 Volumetric 函数 Parameters Tracing BRDF 散射 公式 omega

paper - 2015 - Evaluation of Visual Parameters in Volumetric Path Tracing(1)

Skånberg, R., utfört, E., Jönsson, H.D., & Ropinski, E.T. (2015). Evaluation of Visual Parameters in Volumetric Path Tracing.

1. introduction

在交互式体积渲染领域,研究重点是使用巧妙的方法、近似和简化来解决体积渲染方程,以提供交互式帧速率。为了评估所实施方法的准确性,需要将其与一些参考解决方案进行比较。求解方程的一种方法是使用一种称为路径跟踪的方法,当正确实现时,该方法将提供真实结果的估计。这一估计在给定的计算时间内收敛到真实结果,并且在一般情况下是一个相当缓慢的过程,与任何交互式过程都相去甚远

3 Physically based rendering

3.1 基本辐射计量学

flux:单位时间通过某个区域的所有能量,单位是W,或J/s

irradiance E & Radiant Exitance M: 单位面积单位时间的能量(面积为垂直于光线方向),\(W/m^2\)

solid angle sr

Intensity I : 表示单位立体角,单位时间通过某个区域的所有能量,然而,该量仅用于指定点光源的光谱分布;

Radiance L :从某一个单位立体角看过去的单位面积单位时间上接收的能量,\(W/sr\)

3.3 The rendering equation

这个方程是递归的,并且描述了光离开点x',到达另一个点x,自发光项,和x''到x'处的光对x‘x方向的贡献在半球上的积分和,与几何项g的乘积。(即,x''处发出的光有多少会沿着x'x传输,以及x'处发出的光有多少往x’x传输)。

但是,通常会使用radiance的表述方式,见方程2:

该模型的一个重要限制是,光在被真空隔开的平坦表面之间传输。任何体积效应,例如大气散射和不透明介质,都不包括在方程中,因为它需要光与穿过的介质相互作用的可能性.

3.4 path tracing

path tracing是用来解渲染方程的。[[games101-4-Ray Tracing]] 一文中有部分描述。文中描述了光线爆炸,以及如何处理的过程。

3.4.1 direct light sampling

[[games101-4-Ray Tracing]] 一文中也介绍了直接对光源进行采样的实现。

那么这个时候方程可以写成:

发射项并没有完全消除,这是为了处理这样的情况,即发射表面是第一个被眼睛的路径击中的表面,因为这是包括直接可见物体的发射的唯一机会。还有第二个条件是包含发射,即路径中的前一个采样来自完美镜面反射。这要归功于BRDF中的δ函数,它不可能对来自除完美反射方向以外的任何采样方向的光做出贡献。

3.5 surface reflection

光在穿过一个不同介质的表面的时候,会发生折射,和反射。

可以阅读: 菲涅尔方程(Fresnel Equation)

关键公式如下,有:

Fresnel Equations
unpolarized reflection
snell's law
schlick's approx

3.6 bidirectional scattering distribution function, BSDF

\(\rho(x,\omega_o,\omega_i)\) ,这个函数表示的意思是光从\(\omega_i\)方向过来,然后经过散射,进入到\(\omega_o\)方向的比例。

通常有三种类型的双向分布函数,即双向反射分布函数(BRDF)、双向透射分布函数(BTDF)和相位函数。BTDF表示折射或透射到表面的光,但通常被实现为具有翻转表面法线的BRDF,并被缩放以匹配透射的光量。因此,本文只讨论BRDF和相位函数。

3.7 bidirectional reflectance distribution function, BRDF

reflectance描述BRDF是对于反射光的。文中用\(\rho_r(x,\omega_o,\omega_i)\)表示。

3.7.1 diffuse reflection

最简单的漫反射模型是lambertian模型,见下式:

它假设表面是理想的漫反射。任何碰触到表面的光都会被均匀的散射到各个方向。

3.7.2 perfect specular reflection

最简单的镜面反射模型是完全反射。如图11中的黑色虚线箭头。

3.7.3 glossy reflection

微表面模型示意图见下:

详细内容可以参见: https://zhuanlan.zhihu.com/p/434964126

4. Volume Rendering

基本概念可以参见: 蒙特卡洛体渲染(一):基本概念

主要由吸收,散射,消光系数,透射

消光系数(吸收和out散射)对光的衰减可以得到radiance的透过率,公式如下:

如果消光系数是常数,那么,公式15可以简化为:

4.6 single scattering albedo

这是一个无光谱单位的量,在单位的情况下,它不会导致任何能量因吸收而损失,相反,零的反照率会吸收所有能量

4.7 in scattering

将所有方向进入的光对出射方向的共享积分后如下:

加上自发光项为:

公式里面的\(\rho_p\)表示的是相函数。

4.9 相函数

相函数可以理解成BRDF针对volume的版本。主要有两个关键的不同点,相函数考虑的是整个单位球,第二点是相函数对球的积分是1. 相位函数有效地定义了特定方向散射的概率分布。

非常常见的相函数是,Henyey-Greenstein相函数。他通过单个参数,各项异性因子,来控制散射分布。各项异性因子的范围是\([-1,1]\)。当g=-1的时候,完全的后向散射,g=1的时候,是完全的前向散射,g=0的时候是各项同性散射。

注意,与BRDF不同,这些相位函数不会改变光的光谱分布,它们只定义散射方向的概率。

4.10 volume rendering equation

\(x' = x_0 + t' \omega\)。

第一个公式的第一部分表示的是x0处光强,经过衰减后有多少到达x处。

第一个公式的第二部分表示的是每个位置x‘ 内散射的能量对x出的贡献的积分。

4.13 emission absorption model

这个模型仅考虑发射,和吸收,这个时候,公式24中的内散射项用发射项进行替代,变为:

4.14 single scattering model

一种更复杂的方法是单散射模型,它也部分解决了体积渲染方程。这里它将公式24中的内散射项用直接光源采样进行替代:

4.14 volumetric path tracing

这个方法是沿着射线方向进行距离采样。如果采样得到的距离。如果该距离小于沿射线最近的曲面相交点的距离,则介质中会发生散射,路径将从该散射点而不是曲面上的点进行评估。为了简单起见,该方程是假设参与介质是均匀的且不发光。

因此,路径跟踪算法基本上扩展了光在介质中散射的概率。这意味着基本算法保持不变,但在散射的情况下,将使用相位函数而不是表面模型。具体公式如下:

对于非均匀介质的话,透过率一项会进行更改,\(\sigma_t e^{-\sigma_ts}\),更改为:\(\sigma_t(x+s\omega) T_r(x, x+s\omega)\)。

5. Monte Carlo Integration

定义的列表:

  • X: 随机变量;
  • P(x):累积分布函数,CDF。表示随机采样的值,小于等于x的概率;
  • p(x):概率密度函数,PDF。随机采样某个值的概率。
  • \(\xi\) : 规范一致随机变量,它在[0,1]范围采样概率相等。

一个函数的期望的公式可以写为:

一维的情况,使用均匀采样的Monte Carlo估计fx积分结果,见公式29。

Xi表示在有效区间[a,b]范围随机采样的值。如果 \(f(x) = \int_0^2 (x^2+1) dx\) 。那么随着采样数量的增加,估计误差逐渐减小。

5.1 improving the Monte Carlo estimator

使用非均匀采样,需要引入采样的概率密度函数,如下:

此处需要注意的是p的选择,对结果的影响比较大。

5.2 the inversion method

为了从任意PDF p(x)中提取样本Xi,需要执行以下步骤:

  1. 计算累积分布函数,CDF;\(P(x) = \int_0^xp(x')dx'\)
  2. 计算CDF的倒数,\(P^{-1}(x)\);
  3. 使用均匀分布的\(\xi\),计算得到X,\(X = P^{-1}(\xi)\) 。

可以参见:

(24条消息) 蒙特卡洛方法(Monte-Carlo Simulation)_Hearthougan的博客-CSDN博客_monte-carlo

(24条消息) 逆采样(Inverse Sampling)和拒绝采样(Reject Sampling)原理详解_anshuai_aw1的博客-CSDN博客_逆采样

示例,对于指数函数可以得到如下结果:

6. implementation

TODO

标签:采样,Volumetric,函数,Parameters,Tracing,BRDF,散射,公式,omega
From: https://www.cnblogs.com/grass-and-moon/p/16948247.html

相关文章

  • .NET6之MiniAPI(二十八):Tracing
    Log,Metrics,Tracing是为服务正常运行保驾护航的三件套,前面有介绍过Log和Metrics,本篇说明说一下Tracing。Tracing的思路和Metrics一样,通过三方服务,来达成效果,这里选用的......
  • Parameter 'VARCHAR' not found. Available parameters are [list, param1]
    报错信息:nestedexceptionisorg.apache.ibatis.binding.BindingException:Parameter'VARCHAR'notfound.Availableparametersare[list,param1]org.mybatis.sp......
  • Available parameters are [arg0, collection, list]错误的解决
    关于这个错误每次只要是俩list集合一嵌套起来,就会报出这个错误,检查过,并不是关键字的误用;这个才是根本原因:当mybatis传入参数为list集合的时候;mybatis会自动把其封装为一......
  • 《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》 论文阅读
    《Dapper,aLarge-ScaleDistributedSystemsTracingInfrastructure》论文阅读参考链接:https://bigbully.github.io/Dapper-translation/概述诞生背景当代的互联......
  • Ray-Tracing In One Weekend Part4
    参考博客:(27条消息)【Ray-TracingInOneWeekend】第8章金属材质_杨石兴的博客-CSDN博客反射光的方向是v+2b,n为单位向量,因此b的长度是n点乘v,b的方向和n这个法线方向相......
  • [Typescript] 76. Easy - Parameters
    Implementthebuilt-inParametersgenericwithoutusingit.Forexample:constfoo=(arg1:string,arg2:number):void=>{}typeFunctionParamsType=MyPara......
  • RTCRtpSender - (void)setParameters:
    titleRTCRtpSender-(void)setParameters:(RTC_OBJC_TYPE(RTCRtpParameters)*)parameters{RTCRtpSender->RtpSenderBase:SetParametersRtpSenderBase->RtpSenderBase:......
  • Function parameters(参数) treated as constant
    constwarn=@import("std").debug.warn;fnnormal(x:i32)void{x+=1;warn("{}\n",x);}pubfnmain()void{varz:i32=12;normal(z);......
  • SAP Spartacus 中的 HTTP URL parameters
    使用带有参数请求选项的HttpParams类在HttpRequest中添加URL查询字符串。下面的例子,searchHeroes()方法查询名字中包含搜索词的英雄。首先导入HttpParams类,如下......
  • Save parameters as test data(se37)
     在debug的时候,为了方便测试报错的函数,可以在debug的时候将测试数据设置为变式然后在SE37直接执行变式就可以了,不用每次都去debug跳到函数所在位置。但是,如果是RFC,会出现......