//基礎紋理
//凹凸對映:使用一張紋理來修改模型表面的法線
//世界空間中的計算
shader "unity shader book/chapter 7/normalmapworldspace"
_bumpmap("normal map",2d) = "bump"{}//bump內建的法線紋理,當沒有提供任何法線紋理時,對應模型自帶的法線資訊
_bumpscale("bump 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" //包含檔案,為了使用一些變數 如_lightcolor0
fixed4 _color;
sampler2d _maintex;
float4 _maintex_st;
sampler2d _bumpmap;
float4 _bumpmap_st;
float _bumpscale;
fixed4 _specular;
float _gloss;
struct a2v ;
struct v2f ;
//修改頂點著色器 計算從切線空間到世界空間的變化
v2f vert(a2v v)
fixed4 frag(v2f i) :sv_target
endcg}}
fallback "specular"
}
法線紋理實踐(一)
以下內容來自 unity shader入門精要 切線空間下計算光照 光照方向,視角方向全部轉換到切線空間下計算。世界空間下 計算光照 將從法線紋理上得到的法線方向轉換到世界空間下,之後再和世界空間下的光照方向,視角方向進行計算。方法一 tangent space rotation是乙個巨集,參考 u...
7 5基礎紋理 遮罩紋理
基礎紋理 遮罩紋理 通過取樣得到遮罩紋理的文素質,然後使用其中某個通道的值來與某種表面屬性進行相乘 使用一張高光遮罩紋理,逐畫素的控制模型表面的高光反射強度 shader unity shader book chapter 7 mask texture bumpmap bump map 2d bum...
對法線紋理和置換紋理的一點改進
displacement 設想深度圖在三角形所在切線空間內。對於點法線不垂直於三角形所在面的情況,比如三角形三個頂點的法線不同,或是視線穿過了當前三角形,而下乙個三角形的法線方向與這乙個三角形的法線方向不同的情況,這個設想就是不成立的。displacement的視線可能穿過texture,即u v超...