Art*_*ind 9 opengl trigonometry intel glsl
我有一个用GLSL编写的简单的OpenGL 3.3片段着色器.从本质上讲,我正在评估sin(x)适度大的x(10,000到2,000,000之间),如下所示:
#version 330
out vec4 fColor;
void main() {
fColor = vec4(sin(gl_FragCoord.x * gl_FragCoord.y));
}
Run Code Online (Sandbox Code Playgroud)
它在我的NVidia显卡上工作正常,但在我的Intel HD4000上,正弦仅返回四个不同的值(+/- 1.0和大约+/- 0.3),高于大约10,000的输入.
系统:Windows 64bit,(Intel)驱动程序版本15.28.20.64.3347.
我的问题:这是一个错误吗?或者供应商是否可以通过这种方式自由实施正弦?
这在快速三角实现中是一个相当常见的"错误" - 它通常使用适用于范围(-π,π)范围内的值的近似值,但对于大值则很差.
由于GLSL规范对这些函数不需要任何特定级别的精度或精度,因此可以认为只要sin(x)中的误差远小于| x | 没关系,但这个级别的错误似乎过多了.
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |