OpenGL着色语言TRANSFORM_TEX

S.A*_*hid 9 shader unity-game-engine

在unity3d中,有一段顶点着色器的代码:

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; 
}
Run Code Online (Sandbox Code Playgroud)

在下面的行中:

o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
Run Code Online (Sandbox Code Playgroud)

TRANSFORM_TEX函数的主要任务是什么,它在CgFx中是等价的!

Hei*_*bug 12

它只是一个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)
Run Code Online (Sandbox Code Playgroud)

它缩放和偏移纹理坐标. XY值控制所述纹理平铺ZW所述偏移.

  • 那又怎么样? (2认同)