gpt4 book ai didi

directx-11 - HSLS float1,..., float4 及其字段

转载 作者:行者123 更新时间:2023-12-04 03:03:44 33 4
gpt4 key购买 nike

我看到 HSLS 有 float 和 float (1-4) 之后的数字和很多字段 (r, rr, rrrr, arar,...)(我在 HLSL Tool 的帮助下看到这些字段| 谢谢致 Tim Jones :D - 我无法想象(目前)没有这个工具我们怎么能对 HSLS 进行编程)。

我尝试查找有关此数据类型及其字段的引用,但我找不到任何关于它的信息(为什么数字 1-4 及其字段的含义。在 C++ 中,float 只是 float ,在这里,什么是 float )

以下是我目前的进展:

根据this article

float - 32-bit floating point value.

For example, here is a 4-component signed-normalized float-variable declaration.

snorm float4 fourComponentIEEEFloat;

它没有回答我的问题:这段代码是什么意思

RWTexture2D<float4> testTexture         : register(u0);

[numthreads(@value( threads_per_group_x ), @value( threads_per_group_y ), @value( threads_per_group_z ))]
void main
(
uint3 gl_LocalInvocationID : SV_GroupThreadID,
uint3 gl_GlobalInvocationID : SV_DispatchThreadId
)
{
testTexture[gl_GlobalInvocationID.xy].xyzw = float4( float2(gl_LocalInvocationID.xy) / 16.0f, 0.0f, 1.0f );
}

我可能稍微明白 float2(gl_LocalInvocationID.xy) 是 2 个 float

testTexture[gl_GlobalInvocationID.xy].xyzw = float4( float2(gl_LocalInvocationID.xy) / 16.0f, 0.0f, 1.0f );

相等

testTexture[gl_GlobalInvocationID.xy].xyzw = float4(gl_LocalInvocationID.x / 16.0f, gl_LocalInvocationID.y / 16.0f, 0.0f, 1.0f);

但是不知道对不对,另外,字段r,rr,rrrr,arar,……我前面提过。

感谢阅读。

最佳答案

这些字段不是真正的字段,而是 Source Register Swizzling (doc)。

float4 是一个四分量浮点向量,其中分量为 x、y、z 和 w。由于 float4 也经常用作颜色,因此这些组件也可以通过 r、g、b 和 a 来寻址(因此 .xyzw 相当于 .rgba)。

Source swizzling 使您能够内联交换、减少或重复组件,因此如果您只需要 float3 vec 的 xy 组件,则可以改为编写 vec.xy float2(vec.x, vec.y) 之类的东西。如果您想交换 float4 color 的颜色 channel 以进行某些计算,您可以轻松编写 color.bgra 来交换红色和蓝色分量。最后,您还可以复制 channel ,例如 vec.xxxx 以获得所有四个组件中带有 vec.xfloat4。也允许组合这些方法,例如vec.yzxx

关于directx-11 - HSLS float1,..., float4 及其字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46577239/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com