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

歡迎光臨散文網(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法線貼圖的評論 (共 條)

分享到微博請遵守國家法律
徐州市| 诏安县| 阿克苏市| 莱芜市| 南康市| 宁津县| 抚州市| 读书| 宝山区| 武隆县| 如东县| 承德市| 淄博市| 黑龙江省| 镇原县| 家居| 甘德县| 襄城县| 定州市| 丘北县| 丹巴县| 包头市| 拜城县| 宣城市| 蓬安县| 泊头市| 黔西| 湘阴县| 江达县| 桓台县| 龙州县| 南开区| 仁怀市| 积石山| 乌鲁木齐县| 南康市| 舞阳县| 莱西市| 鹰潭市| 大田县| 额尔古纳市|