五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

17.ShaderLab基本光照模型

2023-06-04 00:02 作者:機(jī)智的小草yns  | 我要投稿

記錄記錄...

理論基礎(chǔ): Blinn-Phong反射模型

  • 漫反射(Diffuse reflection)

  • 高光(Specular highlights)

  • 間接/環(huán)境光照(Ambient lighting)

1.漫反射-蘭伯特余弦定律(Lambert):

?diffuse = I * cosθ

L是光源的向量,N是法線向量,I是光源強(qiáng)度。

漫反射 diffuse = I * cosθ

余弦定理 cosθ = L · N / (|L|*|N|)

由于L,N長度都為1, 消去|L|*|N|得

diffuse = L · N * I

排除負(fù)數(shù),得到最終公式

diffuse =max(0, L · N) * I

核心代碼

效果

逐頂點(diǎn)

逐頂點(diǎn)漫反射 完整代碼

參考: https://zhuanlan.zhihu.com/p/110326132

逐像素光照同理, 略

函數(shù)解釋

UnityObjectToWorldNormal 模型空間法線向量->世界空間向量

UnityObjectToClipPos 頂點(diǎn)坐標(biāo) 模型空間->齊次裁切空間


添加環(huán)境光照

此時(shí), 物體的背面是完全暗的,需要添加環(huán)境光照.

在原有基礎(chǔ)上加上ambient 則能有基礎(chǔ)亮度


2.高光反射

反射是對(duì)稱的

I是光源信息,r是反射方向,viewDir是視角方向,gloss是光滑度, n是法線向量

高光反射? specular = I * max(0, r · viewDir)^gloss

反射方向? r=2(n*L)n ― L

或是使用Unity的函數(shù) r = reflect(-L,n)??

視角向量 viewDir = UnityWorldSpaceViewDir(i.worldPos)

頂點(diǎn)世界坐標(biāo) worldPos = mul(unity_ObjectToWorld,v.vertex).xyz;

核心代碼

函數(shù)介紹

reflect(-worldLightDir,worldNormal); ?反射方向 ?

UnityWorldSpaceViewDir 相機(jī)方向

saturate 相當(dāng)于max加clamp(0,1)

unity_ObjectToWorld 坐標(biāo)變換矩陣, 用于局部轉(zhuǎn)世界坐標(biāo)

效果


理解公式 specular = I * max(0, r · viewDir)^gloss? (默認(rèn)gloss>1)

r · viewDir 是向量的點(diǎn)乘, 向量都是經(jīng)過歸一化處理的

所以得到 r· v = |r|*|v|*cosθ = cosθ ,

相當(dāng)于, 反射角與視角向量夾角越小, cosθ越大, 亮度越大

反之, 夾角>90°, 則結(jié)果負(fù)數(shù), max后為0 , 就看不到高光

gloss相當(dāng)于衰減系數(shù), 系數(shù)越大, 光圈越小



逐像素高光反射 完整代碼



17.ShaderLab基本光照模型的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
台南县| 新民市| 塔城市| 嫩江县| 临夏县| 博乐市| 邯郸县| 杭州市| 开封市| 贺州市| 邵阳市| 通城县| 衡阳市| 电白县| 旌德县| 德化县| 蒙城县| 铜陵市| 肇东市| 织金县| 喜德县| 崇左市| 宜春市| 杨浦区| 富锦市| 密云县| 西畴县| 莒南县| 阿鲁科尔沁旗| 东辽县| 布尔津县| 八宿县| 古田县| 辛集市| 长宁县| 洞头县| 临夏县| 视频| 紫金县| 五原县| 成都市|