Shader筆記7 基礎紋理 遮罩紋理

2021-09-28 11:00:50 字數 1501 閱讀 5597

遮罩允許我們保護某些區域,使它們免於修改

使用遮罩紋理來控制光照,可以得到更加細膩的效果

使用遮罩紋理可以控制紋理的混合,比如裸露土地、草地的紋理等

原理:通過取樣得到遮罩紋理的紋素值,然後使用某個通道的值與某種表面屬性進行相乘,這樣當該通道的值為0時,可以保護表面不受該屬性的影響.

在實際的遊戲製作中,我們充分利用一張遮罩的rgba四個通道,來儲存不同的屬性:比如把高光反射的強度儲存在r通道,把邊緣光照的強度儲存在g通道,把高光反射的指數部分儲存在b通道,最後把自發光強度儲存在a通道

效果:

//「bump」沒有指定法線貼圖時,用自己頂點自帶的法線

_bumpsacle

("bump scale"

,float)

=1.0

_specularmask

("specular mask"

,2d)

="white"

//高光反射遮罩紋理

_specularscale

("specular scale"

,float)

=1.0

//控制遮罩影響度的係數

_specular (

"specular"

, color)=(

1,1,

1,1)

_gloss (

"gloss"

,range

(8.0

,256))

=20} subshader

lod100

pass

;struct v2f

; fixed4 _color;

fixed4 _specular;

float _specularscale;

float _bumpsacle;

float4 _gloss;

sampler2d _maintex;

sampler2d _bumpmap;

sampler2d _specularmask;

//定義乙個共用的紋理屬性變數修改主紋理的平鋪係數和偏移係數,會同時影響_maintex,_bumpmap,_specularmask 三個紋理的取樣

//可以節省需要儲存的紋理座標數目(很多套紋理可以使用同一種平鋪和位移操作)

float4 _maintex_st;

v2f vert (a2v v)

fixed4 frag (v2f i)

: sv_target

endcg

}} fallback"specular"

}

shader學習之路 紋理遮罩

遮罩可以保護某些區域,使他們免於某些修改。例如 模型表面某些區域反光強烈一些,而某些區域弱一些,或者用於混合多張紋理 流程 通過取樣得到這招紋理的紋理素值,然後使用其中某個 或某幾個 通道的值來與某種表面屬性進行相乘,這樣,當該通道的值為0時,可以保護表面不受該屬性的影響。總而言之,使用遮罩紋理可以...

7 5基礎紋理 遮罩紋理

基礎紋理 遮罩紋理 通過取樣得到遮罩紋理的文素質,然後使用其中某個通道的值來與某種表面屬性進行相乘 使用一張高光遮罩紋理,逐畫素的控制模型表面的高光反射強度 shader unity shader book chapter 7 mask texture bumpmap bump map 2d bum...

TA之路 Shader學習09(遮罩紋理)

遮罩允許我們可以保護某些區域,使他們免於某些修改。例如 我們希望模型表面某些區域的反光強一些,某些區域弱一些,為了得到更加細膩的效果,我們就可以使用遮罩紋理控制光照。另一種常見的應用是用於製作丟性材質時需要混合多張,例如表現草地的紋理,表現石子4的紋理,表現裸露土地的紋理等等,遮罩紋理可以控制如何混...