国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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光照模型的評論 (共 條)

分享到微博請遵守國家法律
民丰县| 满洲里市| 揭西县| 马山县| 通渭县| 呼伦贝尔市| 乌拉特后旗| 惠水县| 余干县| 桐城市| 资源县| 娄烦县| 卓资县| 盖州市| 农安县| 丹东市| 乌海市| 万荣县| 呼伦贝尔市| 通城县| 长葛市| 浦城县| 连云港市| 东丰县| 杭州市| 霍山县| 额尔古纳市| 舞钢市| 崇明县| 维西| 嘉黎县| 吴忠市| 正安县| 尉氏县| 克什克腾旗| 出国| 金堂县| 同江市| 麻栗坡县| 建阳市| 容城县|