gpt4 book ai didi

android - glsl es dFdx/dFdy 模拟

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:20 44 4
gpt4 key购买 nike

我正在编写跨平台应用程序。它应该在 Android 设备上运行。
我想使用 dFdx/dFdy 进行抗锯齿。但是,不幸的是,glsl es 2.0 不支持导数。

我可以用什么东西代替 dFdx/dFdy 吗? IE。 1/sprite_width, 1/sprite_height 以屏幕像素为单位。

正如我所说,我需要它才能在 Android 设备上运行。我看到我的设备支持 GL_OES_standard_derivatives,它允许它使用这个函数。所有android opengl es 2.0设备都支持吗?

最佳答案

正如我所说,许多 Opengl ES 2.0 设备都支持 GL_OES_standard_derivatives 扩展。
但是对于那些不这样做的人,我做了这个解决方法:

float myFunc(vec2 p){
return p.x*p.x - p.y; // that's our function. We want derivative from it.
}


// this calculated in vertex shader
// width/height = triangle/quad width/height in px;
vec2 pixel_step = vec2(1/width, 1/height);

float current = myFunc(texCoord);
float dfdx = myFunc(texCoord + pixel_step.x) - current;
float dfdy = myFunc(texCoord + pixel_step.y) - current;

float fwidth = abs(dx) + abs(dy); // from khronos doc #http://www.khronos.org/registry/gles/extensions/OES/OES_standard_derivatives.txt

附言我得到的结果与 glsl 内置函数非常接近,有点模糊(在我的着色器中)。为了解决这个问题,我在 1/1.75 上添加了 multiply pixel_step。如果有人知道原因,请告诉我。

关于android - glsl es dFdx/dFdy 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22442304/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com