菲涅耳效应

菲涅耳效应

 

 当光从一种具有折射率为n1的介质向另一种具有折射率为n2的介质传播时,在两者的交界处(通常称作界面)可能会同时发生光的反射和折射。

菲涅耳效应_第1张图片
图中P为入射光,S为折射光,Q为反射光。这些反射和折射光的夹角遵守反射定律折射定律。我记得以前中学物理老师讲光学的时候,一般讲到这就完了,很少提及入射光的能量被反射光和折射光分走了多少。而这个正是遵守着菲涅耳反射定律。

 

菲涅耳反射:

反射比:入射光的功率被界面反射的比例。

折射比:入射光的功率被界面折射的比例。

 

光的偏振:

光是一种横向电磁波;这意味着电场矢量和磁场的矢量垂直于波的传播方向。当某个波列的所有电场矢量都处于同一平面时,我们可以说这个波是平面偏振或线偏振。这个平面的方向即为偏振方向。如图

菲涅耳效应_第2张图片
 偏振方向其实是一个定义,大家定义为电场的方向,所以这里的偏振方向是垂直的。

 

入射光和反射光会形成一个平面,如果偏振矢量垂直于该平面,则称为 s 偏振。如果光线的偏振矢量在这个平面内,则称为 p 偏振。反射比和透射比的具体形式还与入射光的偏振有关。

 

1.s 偏振:


 2.p 偏振:


 3.无偏振:(光波是一段一段的,当所有的方向一致时才有偏振方向,不一致时就是无偏振)

这里的Rs,Rp和R都是反射比,而折射比为:T = 1 - R。这里的R和T是比不是率,所以我们还需要求出率来:

结论:

1.对于给定的折射率和且入射光为p偏振光时,当入射角为某一定值时为零,此时p偏振光被完全透射而无反射光出射。这个角度被称作布儒斯特角,其实就是完全折射角。

2.当光从光密介质向光疏介质传播时(即时),存在一个临界的入射角,对于大于此入射角的入射光,此时入射光完全被界面反射。这种现象称作全内反射,临界角被称作全反射临界角。

 
 
 factor = bias + scale * (1.0f + I·N)power
 color = factor * 反射光颜色 + (1 - factor) * 折射光颜色
 其中,bias为偏移系数,scale为缩放系数,power为Fresnel指数,I为入射光方向向量,N为发向量。边缘或表面的尖锐程度. (油漆丝绸:1,液体: 2-8)。
#if ENV_MAP == 1
    /// 菲涅耳效果
    float3 etaRatio = float3(0.7f , 0.8f , 0.6f);
    float3 I = worldpos - g_vEyeModel;
    float3 R = reflect(I ,normal);
    float3 Tred = refract(I , -normal , etaRatio.x);
    float3 Tgreen = refract(I , -normal , etaRatio.y);
    float3 Tblue = refract(I , -normal , etaRatio.z);
    float refFactor = 0.1f + 0.1f * pow(1.0f + dot(I , normal) , 1.0f);
    float4 reflectedColor = texCUBE(EnvSampler ,R);
    float4 refractedColor;
    refractedColor.r = texCUBE(EnvSampler , Tred).r;
    refractedColor.g = texCUBE(EnvSampler , Tgreen).g;
    refractedColor.b = texCUBE(EnvSampler , Tblue).b;
    refractedColor.a = 1;
    float4 combColor = lerp(refractedColor , reflectedColor , refFactor);
    color = lerp(color , combColor , 0.8f);
#endif

 

你可能感兴趣的:(菲涅耳效应)