http://www.c4dcn.com

菲涅尔效应电磁波

菲涅尔效应电磁波

菲涅尔效应

菲涅耳效应


我们在湖边散步的时候有没有注意到这个现象?当我们看起来像一个湖的时候,近处的水清澈见底,而远处的天空空倒映在水面上。这就是我们在本文中要讲的菲涅耳效应。菲涅尔可以用来描述光在不同折射率介质之间的行为,其中主要因素是我们的视线与湖面形成的角度的差异。简单来说,当视线垂直于湖面时,反射弱,而当视线不垂直于湖面时,角度越小,反射越强。


菲涅尔效应


为了理解菲涅耳效应,我们先来复习一下光的传播、反射和折射的基础知识:

我们知道光碰到水、玻璃和许多其他物体的表面时会被反射。当光在两种物质的界面上改变传播方向,回到原来的物质时,称为光反射。那折射是怎么发生的呢?当光在两个折射率不同的物体之间传播时,在两个物体的交界处可能会发生折射,当然也会发生反射。例如,如果你看一个球体,球体中心的反射很弱,但在边缘附近很强。然而,这种过度的关系也受到折射率的影响。


像往常一样,我们使用着色器编辑器中的一段代码进行分析。

精密高精度浮点运算;

均匀的vec3颜色;

均匀浮动启动;

均匀浮动端;

均匀浮动α;

改变vec3位置;

改变vec3fNormal

voidmain()

{

如果(!gl_FrontFacing){

丢弃;

}

veC3normal=normalize(fNormal);

veC3eye=normalize(-fposition.XYZ);

floatrim=smoothstep(start,end,1.0-dot(法线,眼睛));

浮动值=clamp(rim,0.0,1.0)*alpha;

gl_FragColor=vec4(值*颜色,长度(值));

}

菲涅尔效应

上图可以理解为在物体不同折射角的照射下,反射效果和清晰度随边缘的距离而变化,即菲涅尔效应。


veC3normal=normalize(fNormal);

其中法线表示物体表面的法线角度。

Normalize就是正常化的意思。归一化就是把要处理的数据限制在我们需要的范围内(本文的范围是0-1)。规范化可以使后续的数据处理更加方便,也可以加快程序运行的收敛速度。正常化也意味着相同的、统一的和综合的意义。

veC3eye=normalize(-fposition.XYZ);

眼睛代表观察者视角的方向。

箝位方法可以返回0和1之间的rim。如果rim小于0,则返回0;如果大于1,它将返回1。

smoothstep(开始,结束,1.0点(正常,眼睛));

Smoothstep方法可以用来生成从0(开始)到1(结束)的平滑过渡值,也称为平滑阶跃函数。常用来描述平滑过渡现象,实现颜色渐变。在上面的例子中,通过点乘来计算法线数据和视角数据,以实现从边缘到中心的过渡。

夹钳(轮辋,0.0,1.0)


最后我们做个总结:菲涅尔效应是指某种材料在不同的距离和角度表现出不同的反射和折射效果。简单理解,就是离我们很远的倒影很模糊,而离我们很远的倒影很清晰。这就是菲涅尔效应的终结。下次见!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。