WebGL不支持逐位操作。因此,我将 Year A_hat B_hat C_hat D_hat E_hat F_hat G_hat H_hat I_hat J_hat
1 2001 7.618084 7.521736 8.709448 7.967254 8.096049 7.932307 7.997542 7.552510 7.855070 8.136634
2 2002 7.662074 7.521647 9.150131 7.967285 8.095947 7.932320 7.997708 7.552295 7.855037 8.136680
3 2003 7.234079 7.521702 9.005576 7.967083 8.096054 7.932381 7.997711 7.552369 7.855063 8.136535
4 2004 7.919614 7.521760 8.787972 7.967088 8.096149 7.932181 7.997613 7.552552 7.854865 8.136433
5 2005 8.073512 7.521898 8.865025 7.967149 8.096250 7.932232 7.997742 7.552446 7.854703 8.136329
6 2006 7.919455 7.521738 8.572195 7.967149 8.096238 7.932222 7.997629 7.552423 7.854840 8.136423
7 2007 7.706265 7.521663 7.864789 7.967141 8.096114 7.932165 7.997734 7.552438 7.854872 8.136405
8 2008 7.010270 7.521775 7.802812 7.967079 8.095963 7.932270 7.997677 7.552331 7.854913 8.136533
9 2009 6.888603 7.521787 7.992457 7.967257 8.095926 7.932154 7.997648 7.552284 7.854947 8.136511
10 2010 6.951684 7.521864 8.130820 7.967297 8.095874 7.932169 7.997624 7.552245 7.855069 8.136587
11 2011 6.919762 7.521800 7.726980 7.967294 8.095964 7.932056 7.997646 7.552268 7.855106 8.136625
12 2012 7.976188 7.521912 7.670982 7.967325 8.095944 7.932025 7.997481 7.552206 7.855076 8.136553
13 2013 8.045479 7.521849 7.759875 7.967385 8.095928 7.932168 7.997529 7.552346 7.855074 8.136648
14 2014 8.437745 7.521808 7.485442 7.967260 8.096013 7.932149 7.997449 7.552503 7.855118 8.136644
15 2015 8.321283 7.521701 7.328202 7.967307 8.095962 7.932257 7.997381 7.552420 7.855088 8.136548
制服转换为int
。然后使用divide和mod来提取每个字节。
但是,由于精度问题,如果我的float
太大,将int
转换为float
会失去一些精确度。有没有优雅的解决方案来解决这个问题?目前我的想法是只在我的4字节int
制服中存储3个字节。
答案 0 :(得分:0)
它不是100%清楚你想做什么。首先,要认识到32位浮点数有23位尾数。那个小于3个字节。此外,您的着色器可能以较低的精度运行,如fp16或8.8定点。所以你的问题的答案是:否。
退后一步,想一想为什么要在低端着色器中使用整数。通常,mod技巧用于将浮点值打包(和解包)到rgba字节纹理或帧缓冲区中。
对于制服来说,这没什么意义。着色器仍将以低(浮点)精度运行。所以你做的任何数学运算最多都是23位。你可以提供漂亮的浮法制服。