2013-02-18 39 views
7

在unity3d有一個頂點着色器的一段代碼:OpenGL着色語言TRANSFORM_TEX

v2f vert(appdata_full v) { 
    v2f o; 

    o.pos = mul (UNITY_MATRIX_MVP, v.vertex); 
    o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); 
    o.vertexColor = v.color * _TintColor; 

    return o; 
} 

在下面幾行:

o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); 

TRANSFORM_TEX功能的主要任務是什麼,什麼是它的在CgFx中是等價的!

回答

8

這只是一個Unity3D特定,沒有Cg等效。 您可以找到該文件在此宏定義:

團結\編輯\ DATA \ CGIncludes \ UnityCG.inc

它是這樣定義的:

// Transforms 2D UV by scale/bias property 
#define TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw) 

它擴展和偏移紋理座標。 XY values controls texture tiling and ZW the offset

+2

所以它是做什麼的? – 2015-10-14 00:30:28