渲染算法学习(六)--Real-TimePhysically-BasedMaterials

渲染算法学习(六)--Real-TimePhysically-BasedMaterials
⽬录
PBR and PBR Materials
《Physically-Based Rendering》
Physically-Based Rendering (PBR)
任何关于渲染的课题都是基于物理的
材质、灯光、相机(透镜)、光线传播等等
PBR不仅仅包含基于物理的材质,但是通常⼤家说的PBR都⽤来表⽰基于物理的材质
PBR materials in RTR
材质渲染中实时渲染远远落后与离线渲染(材质的丰富程度)
质量和准确度远低于离线渲染
在保证速度的前提下,尽可能提升材质渲染的质量
实时渲染中提到的基于物理的材质,基本上都不是基于物理的 (这句话的意思应该是,为了提升效率,对基于物理的材质渲染⽅法进⾏简化和近似)
优秀的渲染引擎
Pixar – RenderMan
Disney – Hyperion
Weta Digital – Manuka
PBR materials
表⾯上定义
微表⾯模型(不是真正意义上的PBR)
迪斯尼BRDF(⽐较友好,但也不是真正意义上的PBR)
体积上定义
烟和雾
主要关注效率和近似单次散射和多次散射
云、头发、⽪肤
通常不会有太多新的理论,但会有很多实现技巧(hacks)
实时渲染中,性能(速度)是考虑的关键因素。
所有材质都是离线材质算法在保证速度的前提下提⾼渲染质量
Microfacet BRDF
在渲染算法学习(三)中已经有详细笔记,因此这⾥只做⼀些新内容的总结
Normal Distribution Function (NDF)
法线⽅向的⼀个函数
Beckman NDF(这⾥指各向同性Beckmann NDF)
其中
是物体表⾯的粗糙程度(值越⼩越光滑(mirror/specular))是半程向量和宏观法线的夹⾓
公式(1)与渲染算法学习(三)公式(9)是等价的,只是将公式(9)中的项转换成项(已经⼿撕过了)Beckmann NDF类似⾼斯函数
可以表⽰不同粗糙程度的表⾯定义在坡度空间上(slope space)
可以保证在坡度空间下 ,⽆限⼤的函数也能保证不会出现⾯朝下的微表⾯归⼀化性质
保证NDF函数在per unit solid angle上积分为1
GGX分布
分布特点:long tail(长尾)
Beckman分布很快就衰减到接近0
GGX也是很快衰减,但是在衰减到⼀定程度时,衰减的速度会减缓
使⽤GGX分布在渲染光源时,由于其衰减越趋近0,其衰减的速度越慢。因此,⾼光周围会出现很明显的光晕。这种长尾巴可以带来很⾃然渲染的效果。
GTR (Generalized Trowbridge-Reitz)
为GGX扩展⽅法,可以通过调整参数⾃定义尾巴长度
值越⼩,尾巴越长为GGX
取最⼤值时为Beckman NDF
Shadowing-Masking Term (Term G )
该节填⼀下渲染算法学习(三)的坑,详细做⼀下微表⾯模型G项的总结the geometry term G
表⽰微表⾯模型⾃遮挡情况
省委书记秘书光源被遮挡(shadowing)相机看不到的微表⾯(Masking)因此G也称Shadowing-Masking Term G项为了解决由于遮挡产⽣的darkening(变暗)的现象
由于遮挡问题,导致最终渲染结果没有通过计算得到的结果亮。因此需要提供⼀个变暗的操作。变暗
操作的⼀些性质
垂直微表⾯模型看时,不做变暗操作(⽆⾃遮挡)~1
党史文苑
与微表⾯掠射⾓度(grazing angle)看时,会变暗⾮常多(⾃遮挡很多)~0
The Smith shadowing-masking term
分成两部分(由于shadowing和masking是相关的,该⽅法假设这两项不相关)
D (h )=παcos θ24h
e
α2
tan θ2h (1)
αθh h n cos tan γγ=2γ
shadowing masking
其中
为shadowing⾃遮挡项为masking⾃遮挡项
缺陷
roughness越⼤,能量损失越严重(越暗)
因为微表⾯越粗糙,沟壑越多,反射光更容易被其他微表⾯遮挡。因此多次弹射的占⽐越⼤。因此只考虑⼀次弹射计算BRDF,会有能量丢失。
⽩炉测试:测试BRDF能量损失解决⽅法
将损失的能量补回来
准确⽅法[Heitz et al. 2016],适⽤于离线渲染RTR⽅法
被遮挡与发⽣下次弹射是同⼀概念The Kulla-Conty Approximation
通过经验模型来补充丢失的能量
The Kulla-Conty Approximation
如果要补回损失的能量,就要计算出⼀次弹射时有多少出射radiance(因此
Kulla-Conty设从各个⽅向⼊射的radiance为1,即()先求出微表⾯需要进⾏⼀次弹射的着⾊点的出射radiance,公式如下
其中
为BRDF项
该⽅法认为与、⽆关
由于。因此,公式⽆⼊射radiance项渲染⽅程项在公式(3)中被换元
将公式(3)⽤渲染⽅程表⽰
由于单位球⾯可以展开为对  和  的积分
(渲染算法学习(⼆))
单位⽴体⾓换元
令微分公式-- G (i ,o ,m )≈G (i ,m )G (o ,m )11(2)
G (i ,m )1G (o ,m )1L (p ,ω))o o L (p ,ω)=i i 1E (μ)=o f (μ,μ,ϕ)μd μd ϕ
∫0
∫01
o i i i (3)
f (μ,μ,ϕ)o i ϕμo μi L (p ,ω)=i i 1cos E (p ,ω)=o 0f (p ,ω,ω)cosθd ω∫Ω+r i o i i
θϕr sinθdθdϕ2dω=sinθdθdϕE (p ,ω)=o 0f (p ,ω,ω)cosθsinθdθdϕ
∫Ω+r i o i i i μ=sinθ
d sinθ=cosθd θ
微分公式-- 由于公式(3)从积分单位⽴体⾓变为对  和  积分
因此积分线也随之发⽣变化(内层积分和外层积分)
Kulla-Conty 思想
公式(3)计算的结果范围是设计⼀个额外的Lobe,其结果为 公式(3)表⽰,光线在⼀次弹射时出射的Radiance。光源总能量为1。因此,该光线经过⼀次弹射所损失的能量为
这种出射的BRDF Lobe 在不同的⼊射⽅向有不同的值
因此,由于引⽤Shadowing-Masking Term项所损失的能量,可以使⽤上述理论计算出的能量损失项补充
Kulla-Conty 使⽤的补充能量项(称补充的BRDF Lobe)为考虑对称性。
⼊射光线在出射光线损失的能量为相反(对称)⼊射光线在出射光线损失的能量为 需要计算
因此,Kulla-Conty提出的损失项BRDF为
其中明史张溥传
为公式(4)中分母部分
公式(4)分⼦部分可以使⽤公式(3)计算得出
为⼀个数值
证明
上⾯已经推导,损失的能量为 ,因此,使⽤公式(4)的BRDF求解渲染⽅程的结果也应该是⽅程如下
外层对积分结果为 (⼆重积分)
->->-> = d sinθ=cosθd θ
解放军264医院E (p ,ω)=o 0f (p ,ω,ω)μd μdϕ
∫Ω+r i o i i μϕ[0,1]
1−E (μ)
o 1−E (μ)o c (1−E (μ))(1−i E (μ))
o μi μo (1−E (μ))
o μo μi (1−E (μ))
i c f (μ,μ)=ms o i ,E =π(1−E )avg (1−E (μ))(1−E (μ))
o i avg 2E (μ)μd μ
∫01(4)
c E avg 1−E (μ)o 1−
E (μ)
o E (μ)=ms o f (μ,μ,ϕ)μd μd ϕ
∫0
变异系数cv
∫01
ms o i i i (5)
ϕ2πf (μ,μ,ϕ)μd μd ϕ
∫02π
∫01
ms o i i i d ϕf (μ,μ,ϕ)μd μ∫02π∫01
ms o i i i 2πd =∫02π
2π−0
E (μ)=ms o 2πμd μ∫0
1
全球化战略π(1−E )avg (1−E (μ))(1−E (μ))
o i i i
将与积分变量⽆关的变量可以提出
先计算积分的结果(积分公式–定积分)
-  =  =  =  - 因此:
公式(4)中的求解
使⽤split sum思想进⾏求解(不知道是否有解析解的积分)
求解⽅式:预计算、打表要求
积分维度不能过⾼
不依赖于很多参数
中,参数:观测⽅向和积分中的损失BRDF
为每种不同的BRDF单独设计预计算或打表
因此,参数可设为BRDF的Roughness项
的预计算,可以由和BRDF的roughness项组合得到
如果微表⾯BRDF有颜⾊,在计算出射Radiance时会有额外的能量损失(吸收)
先考虑没有颜⾊的⽅法计算出射Radiance 然后考虑,由于颜⾊对能量的吸收带来的能量损失
定义⼀个平均的菲尼尔项
⽆论⼊射⾓有多⼤。计算每次反射时,平均会反射多少能量
2πμd μ
∫E (μ)=ms o 2(1−(1−E )avg (1−E (μ))o ∫01
E (μ)μd μi i i
(1−∫01E (μ)μd μi i i [μ−∫01i μE (μ)]d μi i i
μd μ∫01
i i μE (μ)d μ∫01
i i i
μd μ∫01
i i ∗2
1
1−2∗21022
1μE (μ)d μ∫01
i i i ∗2
1E avg
μd μ∫01i i μE (μ)d μ∫01
i i i
∗21
(1−E )
avg E (μ)=ms o 2∗(1−E )avg (1−E (μ))o ∗21
(1−E )
avg E (μ)=ms o 1−E (μ)
o E =avg 2E (μ)μd μ∫01
E avg μo E avg μo
F (μ)μd μ
∫1

本文发布于:2024-09-21 21:56:20,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/204179.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:渲染   能量   损失   计算
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议