【实时渲染】菲涅尔反射率

news/2024/11/15 1:54:15/

《Real Time Rendering 4th》9.5 章读书笔记

经典的折射和反射定律

光通过两个不同介质的界面的时候,会发生反射和折射现象。反射是指光从另一个路径离开界面,折射是指光通过界面进入了另一种介质中。其中满足条件:

  1. 反射角等于入射角
  2. 折射角与入射角满足斯涅尔定律

s i n θ 1 s i n θ 2 = n 2 n 1 \frac{sin\theta_1}{sin\theta_2} = \frac{n2}{n1} sinθ2sinθ1=n1n2

其中 n1, n2 是两个介质的折射率

菲涅尔公式

入射光的电场振动方向可以取与光的传播方向垂直的任意方向。我们可以将电矢量分解为与光的入射面(入射界面法线与光线构成的面)垂直和平行的两个分量,并分别记为 Es (垂直)和 Ep (平行)。

在这里插入图片描述

根据电磁场的边值关系我们可以得到关于这两个分矢量在反射,折射中与入射时的比值关系:
r s = A 1 s ′ A 1 s = − s i n ( θ 1 − θ 2 ) s i n ( θ 1 + θ 2 ) t s = A 2 s A 1 s = 2 s i n θ 2 c o s θ 1 s i n ( θ 1 + θ 2 ) r p = A 1 p ′ A 1 p = t a n ( θ 1 − θ 2 ) t a n ( θ 1 + θ 2 ) t p = A 2 p A 1 p = 2 s i n θ 2 c o s θ 1 s i n ( θ 1 + θ 2 ) c o s ( θ 1 − θ 2 ) \begin{aligned} r_s & = \frac{A'_{1s}}{A_{1s}}=-\frac{sin(\theta_1-\theta_2)}{sin(\theta_1+\theta_2)}\\\ \\ t_s & = \frac{A_{2s}}{A_{1s}}=\frac{2sin\theta_2cos\theta_1}{sin(\theta_1+\theta_2)}\\\ \\ r_p & = \frac{A'_{1p}}{A_{1p}}=\frac{tan(\theta_1-\theta_2)}{tan(\theta_1+\theta_2)}\\\ \\ t_p & = \frac{A_{2p}}{A_{1p}}=\frac{2sin\theta_2cos\theta_1}{sin(\theta_1+\theta_2)cos(\theta_1-\theta_2)}\\\ \\ \end{aligned} rs ts rp tp =A1sA1s=sin(θ1+θ2)sin(θ1θ2)=A1sA2s=sin(θ1+θ2)2sinθ2cosθ1=A1pA1p=tan(θ1+θ2)tan(θ1θ2)=A1pA2p=sin(θ1+θ2)cos(θ1θ2)2sinθ2cosθ1

其中:

  • rs :s 波的反射系数
  • ts :s 波的透射系数
  • rp :p 波的反射系数
  • tp :p 波的透射系数
  • A :对应电矢量的振幅

这四个公式合称 菲涅公式,它描述了两件事情:

  1. 入射光的电矢量的两个分量,即 sp 在发生反射和折射时,能量的再分布规律不同
  2. 两个电矢量分量在发生反射和折射时,其振幅与入射时的振幅之比满足以上关系

当入射角很小的时候,有:
t a n θ ≈ s i n θ ≈ θ s i n θ 1 s i n θ 2 ≈ θ 1 θ 2 ≈ n 2 n 1 = n tan\theta\approx sin\theta\approx\theta\\\ \\ \frac{sin\theta_1}{sin\theta_2}\approx\frac{\theta_1}{\theta_2}\approx \frac{n2}{n1} = n tanθsinθθ sinθ2sinθ1θ2θ1n1n2=n
于是得到菲涅尔公式在接近垂直入射的情况下的近似公式:
r s = − n − 1 n + 1 t s = 2 n + 1 r p = n − 1 n + 1 t p = 2 n + 1 \begin{aligned} r_s & =-\frac{n-1}{n+1}\\\ \\ t_s & =\frac{2}{n+1}\\\ \\ r_p & =\frac{n-1}{n+1}\\\ \\ t_p & =\frac{2}{n+1}\\\ \\ \end{aligned} rs ts rp tp =n+1n1=n+12=n+1n1=n+12
根据菲涅尔公式可以得到一个很重要的物理结论,就是当入射光是从光疏介质进入光密介质(n1 < n2)时,在入射角很小的情况下会发生反射部分发生“半波损失”。但对渲染更重要的是关心反射光,透射光和入射光的能量占比,其中反射能量和入射能量的比值称为反射率,而透射部分与入射部分的能量比值称为透射率,这些都可以从菲涅尔公式推导出来的:

R = A 1 ′ 2 A 1 2 T = n 2 c o s θ 2 n 1 c o s θ 1 A 2 2 A 1 2 = n ⋅ c o s θ 2 c o s θ 1 A 2 2 A 1 2 \begin{aligned} R &= \frac{A'^2_1}{A^2_1}\\\ \\ T &= \frac{n2cos\theta_2}{n1cos\theta_1}\frac{A_2^2}{A_1^2} = n\cdot\frac{cos\theta_2}{cos\theta_1}\frac{A_2^2}{A_1^2} \end{aligned} R T=A12A12=n1cosθ1n2cosθ2A12A22=ncosθ1cosθ2A12A22
其中:

  • R:反射率
  • T:透射率

并且根据能量守恒定律有:
R + T = 1 R+T=1 R+T=1

将菲涅公式带入反射率和透射率方程,可以得到 s 波和 p 波的反射率和透射率。

R s = A 1 s ′ A 1 s = s i n 2 ( θ 1 − θ 2 ) s i n 2 ( θ 1 + θ 2 ) T s = n 2 c o s θ 2 n 1 c o s θ 1 ( A 2 s A 1 s ) 2 = n 2 c o s θ 2 n 1 c o s θ 1 4 s i n 2 θ 2 c o s 2 θ 1 s i n 2 ( θ 1 + θ 2 ) R p = A 1 p ′ A 1 p = t a n 2 ( θ 1 − θ 2 ) t a n 2 ( θ 1 + θ 2 ) T p = n 2 c o s θ 2 n 1 c o s θ 1 ( A 2 p A 1 p ) 2 = n 2 c o s θ 2 n 1 c o s θ 1 4 s i n 2 θ 2 c o s 2 θ 1 s i n 2 ( θ 1 + θ 2 ) c o s 2 ( θ 1 − θ 2 ) \begin{aligned} R_s&=\frac{A'_{1s}}{A_{1s}}=\frac{sin^2(\theta_1-\theta_2)}{sin^2(\theta_1+\theta_2)}\\\ \\ T_s&=\frac{n_2cos\theta_2}{n1cos\theta_1}(\frac{A_{2s}}{A_{1s}})^2=\frac{n2cos\theta_2}{n1cos\theta_1}\frac{4sin^2\theta_2cos^2\theta_1}{sin^2(\theta_1+\theta_2)}\\\ \\ R_p&=\frac{A'_{1p}}{A_{1p}}=\frac{tan^2(\theta_1-\theta_2)}{tan^2(\theta_1+\theta_2)}\\\ \\ T_p&=\frac{n_2cos\theta_2}{n1cos\theta_1}(\frac{A_{2p}}{A_{1p}})^2=\frac{n2cos\theta_2}{n1cos\theta_1}\frac{4sin^2\theta_2cos^2\theta_1}{sin^2(\theta_1+\theta_2)cos^2(\theta_1-\theta_2)}\\\ \\ \end{aligned} Rs Ts Rp Tp =A1sA1s=sin2(θ1+θ2)sin2(θ1θ2)=n1cosθ1n2cosθ2(A1sA2s)2=n1cosθ1n2cosθ2sin2(θ1+θ2)4sin2θ2cos2θ1=A1pA1p=tan2(θ1+θ2)tan2(θ1θ2)=n1cosθ1n2cosθ2(A1pA2p)2=n1cosθ1n2cosθ2sin2(θ1+θ2)cos2(θ1θ2)4sin2θ2cos2θ1

两个波的反射率和透射率又分别满足能量守恒定律:
R s + T s = 1 , R p + T p = 1 R_s + T_s=1,\ R_p+T_p=1 Rs+Ts=1, Rp+Tp=1

对于自然光,s 波和 p 波的能量相等,可以得到自然光的反射率:
R n = 1 2 ( R s + R p ) = 1 2 [ s i n 2 ( θ 1 − θ 2 ) s i n 2 ( θ 1 + θ 2 ) + t a n 2 ( θ 1 − θ 2 ) t a n ( θ 1 + θ 2 ) ] \begin{aligned} R_n &= \frac{1}{2}(R_s+R_p)\\ &=\frac{1}{2}[\frac{sin^2(\theta_1-\theta_2)}{sin^2(\theta_1+\theta_2)}+\frac{tan^2(\theta_1-\theta_2)}{tan^(\theta_1+\theta_2)}] \end{aligned} Rn=21(Rs+Rp)=21[sin2(θ1+θ2)sin2(θ1θ2)+tan(θ1+θ2)tan2(θ1θ2)]

当入射角很小的时候,有:
R n = ( n − 1 n + 1 ) 2 R_n = (\frac{n-1}{n+1})^2 Rn=(n+1n1)2

在《Real Time Rendering 4th》中,这个值被记作 F0,即接近0°入射角时的菲涅尔反射率。当入射角等于90°时,透射率为0,反射率为1。从0°增大到90°的过程中,反射率的变化规律随不同材料,不同波长的光而有所不同。

一个很有趣的事情是,对于不导电的介质而言,它的反射率变化几乎与光波无关,正如左下图所示。而对于良导体,例如金属而言,不同波长的光的反射率变化有较大区别,甚至不是单调的。这与金属的特性有关,即金属中存在大量的自由电子,且这些自由电子一般只分布在金属表面上。这些自由电子在表面层形成表层电流,而金属内部电荷体密度为0。

这两个性质影响着电磁场的边值关系,从而也影响着菲涅尔公式的推导。依赖新的边值关系我们可以得出只有当赋予金属一个复折射率才可以将绝缘介质中得到的折射和反射方程搬到金属这里来。然而,金属这个复折射率还依赖于光的频率,所以对于不同波长的光,它在金属表面的反射特性就表现得不同。也正是因为如此,在渲染中我们可以用一个数字为一个绝缘体指定反射率,但是需要三个数字(RGB)来为金属指定反射率。

在这里插入图片描述

上图分别描绘了从空气进入:玻璃,铜,铝三种材料的反射率变化规律。下图则截取了红绿蓝三原色的截面。可以看出,因为铜的红光反射率很高,所以铜表面呈现偏红的色泽,而铝对于不同波长的光的反射率区别比较小,所以表面呈白色/银色。

实际渲染中,我们无法直接计算这么负责的反射率方程,所以书中给出了简化的版本,同时考虑到人眼的透视效应,自变量从入射角折射角的θ,变成了法线 n 和 入射矢量 l
F ( n , l ) ≈ F 0 + ( 1 − F 0 ) ( 1 − ( n , l ) + ) 5 F(\textbf{n},\textbf{l})\approx F_0 + (1 - F_0)(1-(\textbf{n},\textbf{l})^+)^5 F(n,l)F0+(1F0)(1(n,l)+)5

或者,还提出,在某些程序中会使用以下更通用的版本:
F ( n , l ) ≈ F 0 + ( F 90 − F 0 ) ( 1 − ( n , l ) + ) 1 p F(\textbf{n},\textbf{l})\approx F_0 + (F_{90} - F_0)(1-(\textbf{n},\textbf{l})^+)^{\frac{1}{p}} F(n,l)F0+(F90F0)(1(n,l)+)p1
这个式子不同的地方在于,F90 可以不为1,用来处理一些菲涅尔方程不能很好地进行描述的材料。


http://www.ppmy.cn/news/781709.html

相关文章

MATLAB:菲涅尔公式(反射/透射公式)

目录 案例1&#xff1a;光疏到光密介质 案例2&#xff1a;光密到光疏介质 案例1&#xff1a;光疏到光密介质 平面光波从空气&#xff08;折射率为&#xff09;入射到石英玻璃中&#xff08;折射率为&#xff09;&#xff0c;用 MATLAB作出p、s分量的振幅反射率和振幅透射率以…

Fresnel(菲涅尔)

背景: 菲涅耳公式用来描述光在不同折射率的介质之间的行为。菲涅尔公式是光学中的重要公式&#xff0c;用它能解释反射光的强度、折射光的强度、相位与入射光的强度的关系。 1. 反射公式: fresnel fresnel基础值 fresnel缩放量*pow( 1 - dot( N, V ), 5 ) Code:菲涅尔反射 …

液晶屏的软硬屏之间的battle,谁更胜一筹?

平时所用到的液晶屏硬屏LCD&#xff0c;就是屏幕的像素是鱼鳞状&#xff0c;方向是朝左的&#xff0c;因为类似人字形&#xff0c;所以也俗称“人”。硬屏之所以硬&#xff0c;是因为在屏幕上按压触摸后不会出现水纹&#xff0c;要么是液晶屏加树脂保护膜&#xff0c;要么是硬屏…

​菲涅尔反射(Fresnel Reflection)​理论概要

离线渲染中&#xff0c;通常可以用kd,ks,kt(分别代表物体的漫反射系数&#xff0c;镜面反射系数&#xff0c;透射系数)来简单地描述一个物体的基本材质&#xff0c;例如&#xff0c;我们将一个物体设置为:kd0,ks0.1,kt0.9,即代表一束光击中该物体表面后&#xff0c;其中的90%发…

多焦点菲涅尔透镜

设计准备 所需工具 设计要求 设计一个多焦距 , n 1.5, r 50mm 的菲涅尔透镜。其中 n 是菲涅尔透镜的 折射率&#xff0c;r 是透镜的球冠半径。该菲涅尔透镜应使得目标面上形成一个亮环。 设计原理 边光原理 原理&#xff1a;若一个具有一定光展的光源发出的光线经过一个…

[Sensor] PIR 热释电效应 菲涅尔透镜

前言&#xff1a;作为一名嵌入式软件工程师&#xff0c;适当懂些硬件就行。但我就是“好高骛远”啊&#xff0c;对硬件的原理也充满了好奇。很多自然的原理被利用起来真的很神奇&#xff0c;就像我当前项目中正在使用的一款传感器——PIR&#xff0c;利用假期稍微做个了解&…

惠更斯-菲涅尔原理

惠更斯-菲涅尔原理 惠更斯原理 球形波面上的每一点&#xff08;面源&#xff09;都是一个次级球面波的子波源&#xff0c;子波的波速与频率等于初级波的波速和频率&#xff0c;此后每一时刻的子波波面的包络就是该时刻总的波动的波面。其核心思想是&#xff1a;介质中任一处的…

基于Matlab——夫琅禾夫衍射以及菲涅尔衍射

我以往在学习F分析的时候&#xff0c;编写了一个作业代码&#xff0c;在此附上供大家学习交流。 引言&#xff1a; 在傅里叶光学信息基础中&#xff0c;主要研究的是光在传播过程携带的信息如何去检测得到。如果光在自由空间&#xff08;均匀介质&#xff09;中的传播&#xff…