首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >着色语言中内置函数的精度是多少?

着色语言中内置函数的精度是多少?
EN

Stack Overflow用户
提问于 2019-11-03 15:27:00
回答 1查看 44关注 0票数 0

在移动设备上进行精度转换可能会导致性能下降。我想最小化我们的着色器(glsles,hlsl和spir-v)中的转换。我被内置的函数精度搞糊涂了。

考虑以下代码:

代码语言:javascript
复制
mediump float a, b;
mediump float c = max(a, b);
代码语言:javascript
复制
mediump float a, b;
float c = max(a, b);
代码语言:javascript
复制
mediump float a, b;
mediump float c = sin(max(a, b));
代码语言:javascript
复制
mediump float2 uv;
uniform mediump sampler2D tex;
mediump float c = texture2D(tex, uv);

会发生什么转换?如果内置函数返回类型依赖于参数,则代码#1、#3、#4不能进行转换。是对的吗?

EN

回答 1

Stack Overflow用户

发布于 2019-12-08 21:25:20

我不认为你总是可以预测转化,因为着色器编译器将优化使用最低的精度和尽可能少的转化。但我怀疑你有错误的心态,正在为一些无关紧要的事情进行微观优化。对于典型的实现,精确转换应该是非常便宜的。你应该关注的是对你的输入、输出和其他变量不必要地使用高精度的,这应该会有更大的影响。

最简单和最优化的方法是将precision mediump float;放在着色器的顶部,因此精度默认为mediump,然后在支持降低精度的设备(即移动GPU)上进行测试,并查看是否有任何损坏。然后,您可以有选择地在必要的位置添加highp

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58678213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档