我正在尝试使用HLSL代码作为实验的基础,但我不明白uv.zw代表什么?它显示:
float4 uv0 : TEXCOORD0
...
uv0.zw;
不是uv只有2吗?我知道uvw支持3但是第四个组件是什么?阿尔法?
在在线示例中,我只能找到用于TEXCOORD0
值的float2
,而不是float4
。
答案 0 :(得分:0)
纹理可以是3D,因此纹理坐标可以具有第三维z。
如果您熟悉齐次坐标,您会知道在3D坐标上表示各种变换的一种方法是通过齐次坐标进行4D,这会增加“w”坐标。
答案 1 :(得分:0)
GPU中的所有值实际上都是float4的幕后花絮 - 声明float或float2等只是限制了所使用的通道数。
如果float2值访问.zw通道,它在技术上是未定义的,但编译器可能会接受它。所以要小心。
在HLSL中,名称“uv”没有内在定义 - 您可以声明具有该名称的任何类型的变量。