【发布时间】:2019-04-25 21:37:53
【问题描述】:
我想将轴对齐的单位向量编码为单个浮点值。像这样:
0: vec3(0, 0 ,0)
1: vec3(1, 0, 0)
2: vec3(0, 1, 0)
3: vec3(0, 0, 1)
根据表格将浮点数转换为向量我可以编写一个简单的代码
in float axisIndex
...
vec3 axis = vec3(0.0, 0.0, 0.0);
if (axisIndex > 0.5) {
axis = vec3(1.0, 0.0, 0.0);
}
if (axisIndex > 1.5) {
axis = vec3(0.0, 1.0, 0.0);
}
if (axisIndex > 2.5) {
axis = vec3(0.0, 0.0, 1.0);
}
但是如果分支很慢。有没有一种快速的方法可以将浮点数转换为向量,而不使用 if 分支和外部缓冲区,只使用数学?
【问题讨论】:
-
为什么?为什么不只使用有符号字节。这将为您提供每个正常的 3 个字节,这比每个正常的 1 个浮点数少一个。如果你只想要轴对齐的法线,你应该可以用一个字节来完成。
-
感谢您的建议和 twgl 库!