五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

18.UntiyShader基礎(chǔ)紋理

2023-06-06 11:33 作者:機智的小草yns  | 我要投稿

1.紋理映射-UV混合


步驟

1.讀取Texture中uv坐標(biāo)的顏色

2.將紋理顏色分別混合環(huán)境光和漫反射

核心代碼 (在上一篇的高光模型代碼中修改)

函數(shù)引用

tex2D() 傳入uv坐標(biāo), 返回紋理對于像素顏色


關(guān)于紋理的Warp Mode主要有兩種,一種是Repeat重復(fù)模式,一種是Clamp裁切模式 ?

Repeat模式,超出0-1,取小數(shù)位

Clamp模式,超出0-1,錯誤的結(jié)果

完整代碼, 素材也在目錄中

https://github.com/smartgrass/MyCodes/blob/main/ShaderLearning/Texture_uv.shader


2.凹凸映射-Bump

\

凹凸映射有兩種方式: 法線紋理 和 高度紋理(跳過)


法線紋理

存儲的是表面法線方向, 用RGB顏色保存法線向量的x,y,z信息

由于紋理RGB分量在[0,1]上 , 需要映射到法線方向的分量的[-1,1]上

????????normal=pixel*2-1

向量的坐標(biāo)系有兩種: ?切線空間 和 模型空間(跳過)

法線紋理一般用的是切線空間

z軸是法線方向 ,? x軸是切線方向, y軸為副切


理解

利用法線貼圖中頂點法線向量,進行漫反射光照(Lambert定律)

步驟:

1.獲取法線貼圖中的頂點法線向量nor, 以及頂點指向燈光的向量lightDir,

2.將nor和lightDir轉(zhuǎn)換到同個空間, 切線空間或世界空間都可以

3.利用Lambert計算像素亮度值, bump = max(0, dot(nor,lightDir))

4.亮度結(jié)果疊加到漫反射中,diffuse*=bump;


核心代碼(切線空間)

函數(shù)引用

ObjSpaceLightDir(float4 v)? 輸入模型空間頂點坐標(biāo), 模型空間中從頂點指向燈光的向量

UnpackNormal(fixed4 packnormal)? 顏色映射到法線向量

由于紋理壓縮格式不同, 解析上有區(qū)別

在unity中, 如果Texture Type為Normal map ,壓縮格式則會變?yōu)镈XT5nm,

但unity的UnpackNormal()都幫我們處理好了

效果


完整代碼

https://github.com/smartgrass/MyCodes/blob/main/ShaderLearning/Texture_bump.shader

選切線空間還是世界空間? ?

差別不大, 跟著5.x選世界空間

如果需要寫世界空間代碼, 需要注意, 結(jié)構(gòu)體無法傳3x3的矩陣, 那么可以使用3個float3來保存

3.漸變紋理-RampTex

左是加了漸變 右是不加的效果

核心代碼

代碼思路

計算dot(worldLightDir,worldNormal) = cosθ 得到[-1,1] 的亮度值,

映射到uv的[0,1]上, 則是 *0.5+0.5, 從而讀取漸變圖坐標(biāo)的顏色值

最后疊加到材質(zhì)顏色上 albedo*=ramp;

理解

頂點漫反射的亮度從0到1的映射到漸變紋理坐標(biāo)顏色上

4.遮罩紋理-SpecularMask

遮罩紋理可以更加精細地控制光照細節(jié),可以得到更細膩的效果

和漸變紋理類似,只不過遮罩紋理是對高光部分進行混合。

核心代碼

這里取r分量作為淹碼值

最后兩部分相對簡單...

18.UntiyShader基礎(chǔ)紋理的評論 (共 條)

分享到微博請遵守國家法律
翼城县| 宁津县| 都匀市| 兴国县| 韶山市| 上蔡县| 青神县| 阿图什市| 漳浦县| 深水埗区| 青田县| 沈阳市| 罗田县| 兴安盟| 新营市| 内江市| 民乐县| 乃东县| 东丽区| 塔河县| 北流市| 宝丰县| 随州市| 庆城县| 开封市| 界首市| 周口市| 望奎县| 三门峡市| 河西区| 泾阳县| 云梦县| 萨嘎县| 双牌县| 汽车| 将乐县| 富顺县| 拉萨市| 温州市| 平凉市| 禄丰县|