Я пытаюсь реализовать 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, поэтому, пожалуйста, оцените любую идею.
спасибо