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

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

URP | Lambert/Half-Lanbert光照模型

2021-11-27 15:44 作者:那個人真狗  | 我要投稿

光照函數(shù)庫

本次我們需要使用光照的,故需要引用光照函數(shù)庫

//光照函數(shù)庫 #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"


  • 這個庫在那找到打開,下圖

  • 光照的結(jié)構(gòu)體

  • 光照函數(shù) GetMainLight() ? ?獲取燈光。

  • 這里有三個函數(shù)


注意?? HLSL有一個新的變量類型real,定義在commom.hlsl庫里,

  • 這個變量是會根據(jù)不同的平臺編譯float或half。

法線數(shù)據(jù)

模型空間變化到世界空間的法線變換函數(shù)

  • HLSL 獲取法線變換函數(shù) TransformWorldToObjectNormal

這個函數(shù)在 spaceTransforms.hlsl 這個庫里。

Lambert | 蘭伯特

  • 增加光照函數(shù)庫


  • 模型結(jié)構(gòu)體里獲取頂點法線信息



  • 輸出結(jié)構(gòu)體



  • 頂點著色器階段,調(diào)用模型空間轉(zhuǎn)換到世界空間函數(shù)


注意:第二個變量是讓我們確定是否使用標(biāo)準(zhǔn)向量,一般設(shè)置 true

  • 片元著色器階段獲取光照信息




  • 第一段代碼,定義一個變量 ?獲取場景光源信息 ? ?GetMainLight();

    上面也看到函數(shù),有方向,光照距離衰減,陰影衰減,顏色等信息。

    Light mylight = GetMainLight();

  • 第二段代碼,獲取光照顏色,real4 變量就是上面說的 -

    這個變量是會根據(jù)不同的平臺編譯float或half。

    real4 LightColor = real4(mylight.color,1);

    第三段代碼,類似獲取光照方向,前面部分是歸一化一下。

    float3 LightDir = normalize(mylight.direction);

    第四段代碼 ? 計算 LdotN

    float LdotN = dot(LightDir,i.normalWS);

  • 效果

  • Lambert ?蘭伯特光照模型,就是使用 光的方向,和法線方向計算。

漫反射光照符合蘭伯特定律(Lambert's law): 反射光線的強(qiáng)度與表面法線和光源方向之間夾角的余弦值成正比。因此,漫反射部分的計算如下:

Cdiffuse=(Clight · mdiffuse)max(0, n · I ) 其中, n 是表面法線, I 是指向光源的單位矢量, mdiffuse 是材質(zhì)的漫反射顏色, clight 是光源顏色。需要注意的是,我們需要防止法線和光源方向點乘的結(jié)果為負(fù)值,為此,我們使用取最大值的函數(shù)來將其截取到 0, 這可以防止物體被從后面來的光源照亮。

Half-Lanbert ?| 半蘭伯特

  • 半蘭伯特和蘭伯特相比,只是將法線向量與光照方向向量的點乘結(jié)果用一種更好的方式區(qū)間轉(zhuǎn)化到了(0,1)區(qū)間:

  • 效果對比

總結(jié)

  • 學(xué)習(xí)HLSL光照函數(shù)的使用,有哪些新的方法。

  • 頂點法線信息,模型轉(zhuǎn)換到世界空間新的函數(shù)。默認(rèn)設(shè)置 ?true

  • 實現(xiàn)基礎(chǔ)蘭伯特光照模型。


URP | Lambert/Half-Lanbert光照模型的評論 (共 條)

分享到微博請遵守國家法律
堆龙德庆县| 威远县| 丹江口市| 高清| 佛山市| 革吉县| 盐津县| 荔波县| 崇左市| 嘉义县| 阿鲁科尔沁旗| 西和县| 昌都县| 南川市| 从化市| 金乡县| 白水县| 岳池县| 定陶县| 河曲县| 玛多县| 陆丰市| 洞口县| 沈丘县| 襄垣县| 博白县| 安庆市| 海伦市| 青浦区| 清水河县| 昌宁县| 林口县| 彰武县| 台江县| 盘锦市| 汤原县| 麻阳| 兴城市| 开平市| 汤原县| 平舆县|