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

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

URP | Normal法線貼圖

2021-11-29 20:26 作者:那個人真狗  | 我要投稿

法線概念

法線是有 正反區(qū)別(-1,1)

  • DirectX12 里Y軸是N方向

不同平臺使用的貼圖正反是不一樣的。

  • 不同平臺使用的法線格式

HLSL調(diào)用法線貼圖注意哪些

結(jié)構(gòu)體

  • 在頂點結(jié)構(gòu)體中,我們需要獲取模型的頂點法線,頂點切線。

  • 輸出到片元著色器結(jié)構(gòu)體中

  • 這里說一下UV信息,為什么是float4類型,

    這里的uv.xy儲存的是漫反射貼圖的uv,uv.zw儲存的法線的uv信息。

    這樣的好處是合并到一起。

  • 法線,切線,副切正常類型是,

定義變量

  • 屬性里定義一張法線貼圖。以及控制法線的變量

  • 把一些變量放到C-buffer里。貼圖采樣也是。

頂點階段

  • 頂點階段,需要把頂點法線,頂點切線轉(zhuǎn)換成世界空間下。


  • 第一部分 儲存的顏色貼圖,法線貼圖的UV采樣信息

  • 第二部分,把頂點法線,頂點切線轉(zhuǎn)換成世界空間,輸出。

    計算出副切線的數(shù)值。并在乘切線的w值判斷正負,在乘負奇數(shù)縮放影響因子。

  • 這里注意,

    • v.tangentOS.w

      值為-1或者1,由DCC軟件中的切線自動生成,和頂點的環(huán)繞順序有關。

    • unity_WorldTransformParams.w

      定義于unityShaderVariables.cginc中.

      模型的Scale值是三維向量,即xyz,當這三個值中有奇數(shù)個值為負時(1個或者3個值全為負時),unity_WorldTransformParams.w = -1,否則為1.

  • 第三部分 ?計算出世界空間下的頂點坐標。儲存到法線,切線,副切線的W通道中。

  • 注意:這里為什么需要把頂點位置穿片元著色器,我們是需要計算 視角向量(ViewDir)

    還有第二套寫法,

擴展 在頂點著色器階段,計算視角向量。

  • 片元結(jié)構(gòu)體

    切線和法線,都是float3的類型了,

  • 在頂點階段計算出viewDirWS 世界空間下的視角方向。

片元著色器

  • 在片元著色器階段計算出TBN矩陣,這里需要把法線的信息和模型的法線信息混合起來,

    因為我們上面是使用模型頂點信息計算的高光,或者漫反射。 那單獨看一下模型法線信息。


  • 這個結(jié)果就缺少細節(jié),,看一下漫反射。


  • 現(xiàn)在法線信息 是有倆部分組成 ? ,法線貼圖是增加細節(jié)的。

    新法線信息 = ?模型頂點法線 + 法線貼圖

  • 第一部分讀取法線貼圖

????????讀取貼圖,????

  • 計算TBN ? 在讀取貼圖,增加一個控制貼圖的強度的數(shù)值。

  • 貼圖信息和TBN結(jié)合

  • 獲取視角方向,光照方向 計算出半角向量

  • 使用新法線計算出漫反射

  • 增加上前面學習到的漫反射,高光發(fā)射


  • 效果

代碼實現(xiàn)


URP | Normal法線貼圖的評論 (共 條)

分享到微博請遵守國家法律
固阳县| 韶关市| 永德县| 浦东新区| 东安县| 宜阳县| 赤壁市| 南通市| 吴江市| 犍为县| 辽宁省| 茂名市| 峡江县| 桦川县| 甘洛县| 阿拉尔市| 固始县| 临江市| 勐海县| 玛纳斯县| 泌阳县| 繁峙县| 永靖县| 本溪市| 德兴市| 瑞昌市| 大同市| 米易县| 织金县| 无锡市| 丰原市| 临泉县| 泸西县| 滨海县| 安义县| 张家港市| 白沙| 凤阳县| 舟山市| 广宗县| 德州市|