我们如何知道 GLSL 函数的 I/O 使用的精度是多少?

发布于 2024-11-16 20:53:29 字数 497 浏览 2 评论 0原文

Apple 表示

许多内置函数使用 中等精度的输入和输出。 如果您的应用程序提供 低精度浮点值如 参数或将结果分配给 低精度浮点变量, 着色器可能必须包括 附加指令来转换 值。

此信息位于何处?我在规范中没有找到它(我一直在各处使用 lowp,在查看顶部的链接后对此感到担忧。)

Apple says

Many built-in functions use
medium-precision inputs and outputs.
If your application provides
low-precision floating-point values as
parameters or assigns the results to a
low-precision floating-point variable,
the shader may have to include
additional instructions to convert the
values.

Where is this information located? I didn't find it in the spec. (I've been using lowp all over the place, and have concerns about it after checking out the link at the top.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

对不⑦ 2024-11-23 20:53:29

我还没有使用 iPhone 的实现(仅在 WebGL 和 Android 上),但正如我从您发布的 Apple 代码片段中看到的,他们声明他们的实现使用 mediump,因此,如果您使用lowp,那么他们的实现必须将这些低精度浮点值转换为中等精度值(浮点转换不像整数转换,它们必须调整尾数和指数)。

请记住,GLSL(或 DX11 的 HLSL)着色器被编译为特定于实现的代码。

I haven't used iPhone's implementation yet (just on WebGL and Android) but as i can see from the Apple snippet you posted, they are stating that their implementation uses mediump, so if you're using lowp then their implementation will have to convert those low precision floating point values to medium precision values (floating point conversion isn't like integer conversions, they have to adjust mantissas and exponents).

Remember that GLSL (or HLSL for DX11) shaders get compiled into implementation specific code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文