0

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

float4 uv0      : TEXCOORD0
...
uv0.zw;

紫外线不是只有2吗?我知道 uvw 支持 3 但第四个组件是什么?Α?

在网上的例子中,我只能找到TEXCOORD0used for float2values,而不是float4.

4

2 回答 2

0

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

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

于 2013-03-21T05:13:47.817 回答
0

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

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

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

于 2013-03-21T05:23:49.087 回答