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

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

分享到微博請遵守國家法律
武威市| 弥渡县| 沧州市| 鹤山市| 汨罗市| 彰化县| 安丘市| 滦南县| 营山县| 辽中县| 涡阳县| 林芝县| 崇仁县| 新平| 靖安县| 乾安县| 渭源县| 寿宁县| 越西县| 随州市| 盐城市| 九龙坡区| 鱼台县| 辽中县| 华蓥市| 广宗县| 攀枝花市| 阳西县| 保德县| 临海市| 蕉岭县| 阜宁县| 齐齐哈尔市| 南靖县| 高密市| 香河县| 禄丰县| 辰溪县| 宁陕县| 上饶县| 井冈山市|