7 5基礎紋理 遮罩紋理

2021-10-04 21:07:23 字數 1072 閱讀 4956

//基礎紋理:遮罩紋理

//通過取樣得到遮罩紋理的文素質,然後使用其中某個通道的值來與某種表面屬性進行相乘

//使用一張高光遮罩紋理,逐畫素的控制模型表面的高光反射強度

shader "unity shader book/chapter 7/mask texture"

_bumpmap("bump map",2d) = "bump"{}

_bumpscale("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

cgprogram

#pragma vertex vert

#pragma fragment frag

#include "lighting.cginc"

fixed4 _color;

sampler2d _maintex;

float4 _maintex_st;//_maintex,_bumpmap,_specularmask定義公共的紋理屬性變數。

//這種方式節省需要儲存的紋理座標數目,修改主紋理的平鋪係數和偏移係數會同時影響3個紋理的裁員

sampler2d _bumpmap;

float _bumpscale;

sampler2d _specularmask;

float _specularscale;

fixed4 _specular;

float _gloss;

struct a2v ;

struct v2f ;

v2f vert(a2v v)

fixed4 frag(v2f i):sv_target

endcg}}

fallback "specular"

}

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

遮罩允許我們保護某些區域,使它們免於修改 使用遮罩紋理來控制光照,可以得到更加細膩的效果 使用遮罩紋理可以控制紋理的混合,比如裸露土地 草地的紋理等 原理 通過取樣得到遮罩紋理的紋素值,然後使用某個通道的值與某種表面屬性進行相乘,這樣當該通道的值為0時,可以保護表面不受該屬性的影響.在實際的遊戲製作...

UnityShader初級篇 遮罩紋理

shader unity shaders book chapter 7 mask texture bumpmap normal map 2d bump bumpscale bump scale float 1.0 高光反射遮罩紋理 specularmask specular mask 2d whit...

shader學習之路 紋理遮罩

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