当前位置:网站首页>UnityShader入门精要——PBS基于物理的渲染
UnityShader入门精要——PBS基于物理的渲染
2022-06-24 23:04:00 【果冻喜之郎】
1 PBS理论与数学基础
材质折射率:如果光在传播时介质的折射率发生了变化,光的传播方向就会发生变化。特别是,如果折射率是突变的,就会发生光的散射现象。
菲涅尔等式:光在不同介质的边界会被分割成两个方向:反射方向和折射方向。而有多少百分比的光会被反射(另一部分就是被折射了)则是由菲涅耳等式(Fresnel equations)来描述的。
微表面反射:微表面的法线方向变化角度小,表面反射的光线方向变化也比较小,物体的高光反射更加清晰;粗糙表面则相反,得到的高光反射效果更模糊。
微表面折射: 这些光被折射到物体的内部,一部分被介质吸收,一部分又被散射到外部。金属材质具有很高的吸收系数,因此,所有被折射的光往往会被立刻吸收,被金属内部的自由电子转化成
其他形式的能量。
次表面散射光:非金属材质则会同时表现出吸收和散射两种现象,这些被散射出去的光又被称为次表面散射光(subsurface-scattered light)
辐射率:辐射率是单位面积、单位方向上光源的辐射通量,通常用L来表示,被认为是对单一光线的亮度和颜色评估。在渲染中,我们通常会基于表面的入射光线的入射辐射率Li来计算出射辐射率L0,这个过程也往往被称为是着色(shading) 过程。
双向反射分布函数BRDF:当一束光线沿着入射方向I到达表面某点时,f(I,v)表示了有多少部分的能量被反射到了观察方向v上。大多数情况下,BRDF可以用f(I,v)来表示,其中I为入射方向和v为观察方向(双向的含义)。这种情况下,绕着表面法线旋转入射方向或观察方向并不会影响BRDF的结果,这种BRDF被称为是各项同性(isotropic) 的BRDF。与之对应的则是各向异性(anisotropic) 的BRDF。
反射等式:
精确光源:指的是那些方向确定、大小为无线小的光源,例如,常见的点光源、聚光灯等。我们使用I。来表示它的方向,使用Chight 表示它的颜色。
如果场景中包含了多个精确光源,我们可以把它们分别代入上面的式子进行计算,然后把它们的结果相加即可。
下面,我们来看一下反射等式中的重要组成部分一BRDF是如何得到的。可以看出,BRDF决定了着色过程是否是基于物理的。这可以由BRDF是否满足两个特性来判断:它是否满足交换律(reciprocity) 和能量守恒(energy conservation)。
交换律要求当交换I和v的值后,BRDF的值不变,即f(v·I)=f(I·v)。
而能量守恒则要求表面反射的能量不能超过入射的光能,即
漫反射项: Cdiff表示漫反射光线所占的比例,它也通常被称为是漫反射颜色(diffusecolor)。
高光反射项:
假设表面法线为n,这些微面元的法线m并不都等于n,因此,不同的微面元会把同一入射方向的光线反射到不同的方向上。而当我们计算BRDF时,入射方向I和观察方向v都会被给定,这意味着只有一部分微面元反射的光线才会进入到我们的眼睛中,这部分微面元会恰好把光线反射到方向v上, 即它们的法线m等于I和v的一半,也就是我们一直看到的半角度矢量h(half-anglevector,也被称为half vector).
D(h)是微面元的法线分布函数(normaldistributionfunction, NDF),它用于计算有多少比例的微面元的法线满足m=h,只有这部分微面元才会把光线从I方向反射到v上。
G(I,v,h)是阴影遮掩函数(shadowing masking function),它用于计算那些满足m=h的微面元中有多少会由于遮挡而不会被人眼看到,因此它给出了活跃的微面元( active microfacets)所占的浓度,只有活跃的微面元才会成功地把光线反射到观察方向上。
F(I,h)则是这些活跃微面元的菲涅尔反射(Fresnel reflectance)函数,它可以告诉我们每个活跃的微面元会把多少入射光线反射到观察方向上,即表示了反射光线占入射光线的比率。
4(n D)(n. v)是用于校正从微面元的局部空间到整体宏观表面数量差异的校正因子。
边栏推荐
- Can automate - 10k, can automate - 20K, do you understand automated testing?
- What are the reasons for the abnormal playback of the online channel of the channel accessed by easycvr national standard protocol?
- 内网学习笔记(5)
- Talking about the advantages of flying book in development work | community essay solicitation
- 把 Oracle 数据库从 Windows 系统迁移到 Linux Oracle Rac 集群环境(1)——迁移数据到节点1
- How to quickly familiarize yourself with the code when you join a new company?
- 【第26天】给定 n 个元素的升序数组nums,求实现一个函数在nums中寻找target的下标 | 初识二分查找
- Android Internet of things application development (smart Park) - set sensor threshold dialog interface
- Left hand dreams right hand responsibilities GAC Honda not only pays attention to sales but also children's safety
- 入坑机器学习:一,绪论
猜你喜欢
Test / development programmers, 30, do you feel confused? And where to go
元宇宙的生态圈
EasyCVR国标协议接入的通道,在线通道部分播放异常是什么原因?
Random list random generation of non repeating numbers
Left hand dreams right hand responsibilities GAC Honda not only pays attention to sales but also children's safety
qt打包exe文件,解决“无法定位程序输入点_ZdaPvj于动态链接库Qt5Cored.dll”
如何通过EasyCVR接口监测日志观察平台拉流情况?
Use of hashcat
Redis
Sumati gamefi ecological overview, element design in the magical world
随机推荐
LeetCode 210:课程表 II (拓扑排序)
Left hand dreams right hand responsibilities GAC Honda not only pays attention to sales but also children's safety
LINQ query (3)
E - Average and Median(二分)
When an interface has an exception, how do you analyze the exception?
李宏毅《机器学习》丨6. Convolutional Neural Network(卷积神经网络)
当他们在私域里,掌握了分寸感
[day 26] given the ascending array nums of n elements, find a function to find the subscript of target in nums | learn binary search
Experience of epidemic prevention and control, home office and online teaching | community essay solicitation
NPM package publishing tutorial
LINQ 查询(3)
背了八股文,六月赢麻了……
Rod and Schwartz cooperated with ZhongGuanCun pan Lianyuan Institute to carry out 6G technology research and early verification
Explanation of FTP protocol
F - Spices(线性基)
Intranet learning notes (7)
把 Oracle 数据库从 Windows 系统迁移到 Linux Oracle Rac 集群环境(4)—— 修改 oracle11g rac 集群的 scanIP
把 Oracle 数据库从 Windows 系统迁移到 Linux Oracle Rac 集群环境(2)——将数据库转换为集群模式
如何卸载cuda
Random list random generation of non repeating numbers