小编Zol*_*anE的帖子

在单个float变量中存储两个float值

我想在一个32位浮点变量中存储两个浮点值.编码将在C#中进行,而解码将在HLSL着色器中完成.

到目前为止,我发现的最佳解决方案是将编码值中的小数偏移硬连接,并将它们存储为"载波"浮点的整数和小数:

123.456 -> 12.3 and 45.6
Run Code Online (Sandbox Code Playgroud)

它无法处理负值,但没关系.

但是我想知道是否有更好的方法来做到这一点.

编辑:有关该任务的更多细节:

我正在使用Unity中的固定数据结构,其中顶点数据存储为浮点数.(Float2表示UV,float3正常,依此类推.)显然没有办法正确添加额外的数据,所以我必须在这些限制范围内工作,这就是为什么我认为这完全是一个更普遍的编码数据问题.例如,我可以牺牲二级UV数据来传输2x2额外数据通道.

目标是着色器模型3.0但我不介意解码是否在SM2.0上合理地工作.

只要它"合理",数据丢失就可以了.预期的值范围是0..64,但是当我想到它时,0..1也会很好,因为重新映射到着色器内的任何范围都很便宜.重要的是保持尽可能高的精度.负值并不重要.

c# hlsl

7
推荐指数
1
解决办法
3873
查看次数

标签 统计

c# ×1

hlsl ×1