iOS 模拟器 GL_OES_standard_derivatives

发布于 2024-11-06 12:20:22 字数 192 浏览 0 评论 0原文

在 iOS4 上,GL_OES_standard_derivatives 仅在设备上受支持(从我输出扩展时看到的情况来看),有没有办法能够:

  1. 在片段着色器中检测是否支持扩展

  2. 如果不支持,有人有 dFdx 和 dFdy 的代码吗?似乎在谷歌上找不到任何东西。

蒂亚!

On iOS4 GL_OES_standard_derivatives is only supported on the device (from what I see when I output the extensions), is there a way to be able to:

  1. Detect in the fragment shader if the extension is supported or not

  2. If not supported, does anyone have a the code for the dFdx and dFdy? Can't seems that find anything on google.

TIA!

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

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

发布评论

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

评论(1

萌逼全场 2024-11-13 12:20:22

我对抗锯齿 SDM 字体也有同样的问题。您可以通过以下方式计算类似的 dfdx/dfdx
使用当前变换矩阵转换 2 个 2d 向量:

vec2 p1(0,0); vec2 p2(1,1);

p1=TransformUsingCurrentMatrix(p1);
p2=TransformUsingCurrentMatrix(p2);

float magic=35; // you'll need to play with this - it's linked to screen size I think :P

float dFdx=(p2.x-p1.x)/magic;
float dFdy=(p2.y-p1.y)/magic;

然后将 dFdx/dFdy 作为制服发送到着色器 - 并且只需与您的参数相乘即可获得相同的功能,即

dFdx(myval) 现在变为

dFdx*myval;
dFdy(myval)   dFdy*myval;
fwidth(myval) abs(dFdx*myval)+abs(dFdy*myval);

I had the same issue for antialiasing SDM fonts. You can calculate a similar dfdx/dfdx by
Translating 2 2d vectors using the current transform matrix :

vec2 p1(0,0); vec2 p2(1,1);

p1=TransformUsingCurrentMatrix(p1);
p2=TransformUsingCurrentMatrix(p2);

float magic=35; // you'll need to play with this - it's linked to screen size I think :P

float dFdx=(p2.x-p1.x)/magic;
float dFdy=(p2.y-p1.y)/magic;

then send dFdx/dFdy to your shader as uniforms - and simply multiply with your parameter to get the same functionality i.e.

dFdx(myval) now becomes

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