最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

分享到微博請遵守國家法律
阿瓦提县| 安平县| 池州市| 凌源市| 抚远县| 溆浦县| 甘孜县| 呼图壁县| 台北市| 南皮县| 乐都县| 五家渠市| 甘南县| 上虞市| 福清市| 雅江县| 隆尧县| 射洪县| 赣榆县| 肥西县| 南通市| 大宁县| 天柱县| 武汉市| 锡林浩特市| 汶上县| 淮南市| 泾川县| 金堂县| 云霄县| 密云县| 开封市| 翼城县| 明光市| 张家口市| 左权县| 名山县| 建瓯市| 朝阳县| 舒城县| 靖远县|