[置頂] Cg入門21:Fragment shader - 2D紋理采樣


體紋理:是啥? tex2D 以前只能在Fragment程序中紋理采樣 UV坐標系:其實點為左下角,范圍為【0,1】,U為x軸,V為y軸

Texture.wrapMode 循環模式:TextureWrapMode.Clamp:設置紋理充滿拉伸使用TextureWrapMode.Repeat:紋理重復平鋪使用 如果采用Repeat,那么等於U>=1的情況就會用紋理圖在右邊在平鋪一張圖
Texture.filterMode 過濾模式: Point:像素過濾(不進行過濾 Bilinear:雙線性 Trilinear:三線的
UV紋理采樣: UV 紋理
貼圖后效果:立體空間的UV坐標為左上角,U為水平向右方向,V為垂直向下方向 ,默認范圍[0,1] 
源代碼:
Shader "Sbin/TexShader"{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_U("U",range(-0001,0.001)) = 0
_V("V",range(0,1)) = 0
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"

sampler2D _MainTex;
float _U;
float _V;

struct v2f{
float4 pos:POSITION;
float2 uv:TEXCOORD0;
};

v2f vert (appdata_base v)
{
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
o.uv = v.texcoord.xy;
return o;
}

fixed4 frag (v2f v) : COLOR
{
fixed4 col = tex2D(_MainTex, v.uv);//第一個參數:紋理,第二個參數UV向量
return col;
}
ENDCG
}
}
}


紋理平鋪縮放和偏移:
Tiling :縮放模型UV紋理采樣坐標;比如:Tiling x=2,表示把模型UV坐標的U擴大2倍,U范圍值變成2,紋理如果WrapMode選擇Repeat,那么U軸方向就會紋理采樣兩次。V軸同理
Offset:偏移模型UV紋理采樣坐標;比如:Offset x = 0.1,表示把模型UV坐標往左編譯,然后再采樣UV紋理貼圖。

以上兩種操作導致如下效果:

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com