兰伯特

半兰伯特光照模型

≡放荡痞女 提交于 2020-02-20 03:45:15
由于使用漫反射光照的时候 在光照面和半光照面结合处出现了锯齿形状,影响模型的效果,Value公司 提出一种技术,在原兰伯特光照模型基础上做出了修改解决了漫反射中的的问题,依次被称为 半兰伯特光照模型 。 广义半兰伯特计算公式: (C * M )(α( )+β) 没有采用max 函数来防止点积为负值,采用的是α倍的缩放和β倍的偏移。一般情况下,α和β的值均为0.5 这样也可以将结果从[-1,1]映射到[0,1],这样在被光面 也可以有明暗变化(不同的点积结果会映射成不同的值),而不是像之前那样都为0在被光面。 半兰伯特模型 是一种是视觉加强技术,没有物理依据的。 与漫反射的逐像素光照相比,只是修改了片元函数中漫反射的计算 Shader "Custom/HalfLambert" { Properties { _DiffuseColor("Color",Color)=(1.0,1.0,1.0,1.0) } SubShader { pass { Tags{"LightMode"="ForwardBase"} CGPROGRAM #pragma vertex vert #pragma fragment frag #include "Lighting.cginc" fixed4 _DiffuseColor; struct a2v { float4 vertPos:POSITION;

兰伯特余弦定理(Lambert)

大兔子大兔子 提交于 2019-11-30 18:13:24
兰伯特余弦定理(Lambert) 1. 关于光照强烈度的思考 垂直照向平面的线比从侧面照向平面的线更加强烈(见下图)。 假设有一块很小的区域dA。当法线向量n与光照向量L平行时,区域dA受到的光线照射最多。随着n和L之间的夹角θ逐渐增大,区域dA受到的光线照射量会越来越少 (因为很多光线都无法照射到dA表面上了)。 2. 推导兰伯特(Lambert)余弦定理 们可以从这个概念中推导出一个函数,根据顶点法线和光照向量之间的夹角返回不同的光照强度。(注意,光照向量是从表面指向光源的向量;也就是,它与线的传播方向正好相反。)当顶点法线与照向量完全重叠时(即,它们的角度为0º时),该函数返回最大强度值;随着顶点法线与照向量之间的夹角逐渐增大,该函数返回的强度值会越来越小。当θ>90º时,说明光线照射的是物体背面,此时我们应该将强度设置为0。兰伯特(Lambert)余弦定理给出了上述函数的定义: f(θ) = max(cosθ,0) = max(L•n,0) 其中,L和n是单位向量。下图是f(θ)的曲线图。我们可以看到,随着θ的变化,强度在0.0到1.0(即,0%到100%)之间变化。 (当−2≤θ≤ 2时,函数f(θ) = max(cosθ,0) = max(L•n,0)的曲线图。注意,π/2≈1.57。) 来源: https://blog.csdn.net/sinat_24229853