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

歡迎光臨散文網(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ǔ)紋理的評論 (共 條)

分享到微博請遵守國家法律
宣武区| 嘉义市| 罗定市| 宣武区| 郸城县| 泰安市| 高清| 建阳市| 旬邑县| 陇川县| 河池市| 昔阳县| 松潘县| 将乐县| 南和县| 封丘县| 丹棱县| 仙桃市| 安塞县| 五原县| 隆昌县| 郓城县| 胶南市| 湟中县| 翼城县| 福州市| 乐平市| 景宁| 博爱县| 绥德县| 霍邱县| 靖安县| 武义县| 含山县| 宜春市| 嘉善县| 淳化县| 右玉县| 额敏县| 平乐县| 云梦县|