在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;
}


在下面的行中:

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


TRANSFORM_TEX函数的主要任务是什么,以及它在CgFx中的等效功能是什么!

最佳答案

这只是特定于Unity3D的宏,没有等效的Cg
您可以在文件中找到此宏定义:


Unity \ Editor \ 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值控制纹理平铺和ZW偏移量。

关于unity3d - OpenGL着色语言TRANSFORM_TEX,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14942210/

10-11 14:25