Любая идея Как реализовать линзу Sigma с вершинным шейдером - PullRequest
0 голосов
/ 21 ноября 2011

Я пытаюсь реализовать Sigma Lens в OpenGL, используя шейдеры, но возникают некоторые проблемы.

Я передаю координаты текстуры в вершинный шейдер, и я пытался выполнить пространственное преобразование для области фокуса и области перехода.Но это не работает, я получаю только оригинальное изображение.

Вот код для вершинного шейдера.

in vec4 vVertex;
in vec2 vTexCoord;
//in vec4 vNormal;

uniform mat4   mvpMatrix;
//uniform mat4   mvMatrix;
//uniform mat4   normalMatrix;
uniform float  mm;
uniform float  mouseX;
uniform float  mouseY;

// Texture Coordinate to fragment program
smooth out vec2 vVaryingTexCoord;
smooth out vec2 vVaryingcolorCoord;

void main(void) 
    {
    // Pass on the texture coordinates 
    //vVaryingTexCoord = vTexCoord;
    vec2 m = vec2(mouseX,mouseY);
    vec2 pos = vec2(vTexCoord.s,vTexCoord.t);
    if (distance(pos.xy, m.xy) <=0.1) {
        vVaryingcolorCoord.s = m.x + (pos.x-m.x)/mm;
        vVaryingcolorCoord.t = m.y + (pos.y-m.y)/mm;

    }
    else if(0.1 < distance(pos.xy, m.xy) && distance(pos.xy, m.xy) <= 0.2){
        vVaryingcolorCoord.s = m.x + (pos.x-m.x)/0.8;
        vVaryingcolorCoord.t = m.y + (pos.y-m.y)/0.8;

    }
    else {
     vVaryingcolorCoord.st=vTexCoord.st;

    }

    gl_Position = mvpMatrix * vVertex;
   }

Есть что-то, чего мне не хватает, я только начинаю изучать Opengl и GLSL, поэтому, пожалуйста, оцените любую идею.

спасибо

1 Ответ

0 голосов
/ 06 декабря 2011

Этот шейдер не имеет смысла без кода OpenGL, в котором он используется. У меня есть подозрение, что не так, но я не могу сказать без кода рендеринга.

...