遮罩允許我們保護某些區域,使它們免於修改
使用遮罩紋理來控制光照,可以得到更加細膩的效果
使用遮罩紋理可以控制紋理的混合,比如裸露土地、草地的紋理等
原理:通過取樣得到遮罩紋理的紋素值,然後使用某個通道的值與某種表面屬性進行相乘,這樣當該通道的值為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的紋理,表現裸露土地的紋理等等,遮罩紋理可以控制如何混...