iOS模拟器GL_OES_standard_derivatives
在iOS4上GL_OES_standard_derivatives仅在设备上支持(从我输出扩展时看到的),有没有办法能够:
-
如果支持扩展名,则在片段着色器中检测
-
如果不支持,有没有人有dFdx和dFdy的代码? 似乎无法在谷歌上找到任何东西。
TIA!
我对抗锯齿SDM字体有同样的问题。 您可以使用当前变换矩阵通过平移2个2d向量来计算类似的dfdx / dfdx:
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作为制服发送到您的着色器 – 并简单地与您的参数相乘以获得相同的function,即
dFdx(myval)
现在变成了
dFdx*myval; dFdy(myval) dFdy*myval; fwidth(myval) abs(dFdx*myval)+abs(dFdy*myval);