uv.zw在HLSL中意味着什么?

时间:2013-03-21 01:09:02

标签: graphics 3d shader hlsl

我正在尝试使用HLSL代码作为实验的基础,但我不明白uv.zw代表什么?它显示:

float4 uv0      : TEXCOORD0
...
uv0.zw;

不是uv只有2吗?我知道uvw支持3但是第四个组件是什么?阿尔法?

在在线示例中,我只能找到用于TEXCOORD0值的float2,而不是float4

2 个答案:

答案 0 :(得分:0)

纹理可以是3D,因此纹理坐标可以具有第三维z。

如果您熟悉齐次坐标,您会知道在3D坐标上表示各种变换的一种方法是通过齐次坐标进行4D,这会增加“w”坐标。

答案 1 :(得分:0)

GPU中的所有值实际上都是float4的幕后花絮 - 声明float或float2等只是限制了所使用的通道数。

如果float2值访问.zw通道,它在技术上是未定义的,但编译器可能会接受它。所以要小心。

在HLSL中,名称“uv”没有内在定义 - 您可以声明具有该名称的任何类型的变量。