我的项目是浮点数据的2D可视化。数据被加载到浮点纹理中,然后在片段着色器中处理。但是许多移动设备不支持WebGL中的浮点纹理,因此我使用常规的无符号字节RBGA纹理来模拟它们。这很有效,但我在一个不支持片段着色器的高精度的设备上遇到问题。我必须手动执行线性过滤,因为在过滤之前需要解压缩浮点数才能获得正确的结果。
WebGL并不要求设备支持片段着色器中的高精度浮点数。到目前为止我实验过的大多数设备仍然支持它们,但现在我发现至少有一个设备没有。
设备报告它在所有精度的顶点着色器中支持高精度(min和max = 2 127 ,precision = 23),但仅支持mediump(min和max = 2 15 ,precision = 10)在片段着色器中。
我需要高精度的一个值是纹理坐标。在这个设备上,我得到的神器看起来就像我之前遇到的纹理坐标精度太低时的神器。
我计算顶点着色器中的纹理坐标并传递它们。在顶点着色器中它们具有高精度,但如果设备不支持片段着色器中的高精度,它们会在片段着色器中发生什么?
它们会自动转换为中等精度吗?
这是否意味着即使顶点着色器支持更高的精度,也无法访问具有更高精度坐标的纹理而不是片段着色器的最大值?