OpenGL着色语言 TRANSFORM_TEX

15
在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中的等效函数是什么!

1个回答

24

这只是一个特定于 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 控制了偏移量


"name" 后面附加的 "##_ST" 是什么意思?找不到相关信息。 - Stevens Miller
@StevensMiller https://en.m.wikipedia.org/wiki/C_preprocessor#Token_concatenation - limserhane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接