gpt4 book ai didi

optimization - 如何将四个无符号字节(0-255)编码为浮点并使用HLSL再次返回?

转载 作者:行者123 更新时间:2023-12-03 16:59:21 25 4
gpt4 key购买 nike

我面临的任务是,我的hlsl着色器之一需要每个像素进行多个纹理查找。我的2d纹理固定为256 * 256,因此在此约束下,两个字节应足以处理任何给定的纹理像素。然后,我的想法是在每个float中放置两个xy坐标,当打包为Vector4格式图像时,在像素空间中为我提供了八个xy坐标。然后,将这八个坐标用于采样另一个纹理。

这样做的原因是为了节省图形内存并尝试优化处理时间,因为那样的话我就不需要多次纹理查找。

顺便说一句:有谁知道使用1个采样对4个浮点数进行16个字节的编码/解码是否比使用未编码数据的4个采样慢?



编辑:这是用于着色器模型3

最佳答案

如果您定位SM 4.0-SM 5.0,则可以使用Binary CastsBitwise operations

uint4 myUInt4 = asuint(myFloat4);

uint x0 = myUInt4.x & 0x000000FF; //extract two xy-coordinates (x0,y0), (x1,y1)
uint y0 = (myUInt4.x & 0x0000FF00) >> 8;
uint x1 = (myUInt4.x & 0x00FF0000) >> 16;
uint y1 = (myUInt4.x & 0xFF000000) >> 24;

//repeat operation for .y .z and .w coordinates


对于以前的着色器模型,我认为它可能会更复杂,因为它取决于FP精度。

关于optimization - 如何将四个无符号字节(0-255)编码为浮点并使用HLSL再次返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2889712/

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