Я новичок в шейдерах и хочу анимировать объект с помощью вершинного шейдера.
Сейчас я просто хочу переместить его с константой. По какой-то причине, вместо того, чтобы двигаться в x-направлении мира, он перемещается в x-направлении камеры. (Поэтому, когда я поворачиваю камеру, объект вращается вместе со мной)
Проект находится в обработке, но я не думаю, что это влияет на шейдер.
КОД ОБРАБОТКИ:
PShader sdr;
void setup() {
size(1000, 1000, P3D);
noStroke();
sdr = loadShader("shdFrag.glsl", "shdVert.glsl");
}
void draw() {
background(200);
// Set camera
camera(0, -300, 700, mouseX-500, 0, 200, 0, 1, 0);
// Ground
resetShader();
beginShape();
fill(100);
vertex(-500, 0, 500);
vertex( 500, 0, 500);
vertex( 500, 0, -500);
vertex(-500, 0, -500);
endShape();
// Red Sphere
shader(sdr);
fill(255, 0, 0);
sphere(100);
}
VERTEX SHADER:
uniform mat4 transform;
attribute vec4 position;
attribute vec4 color;
out vec4 vertColor;
void main() {
vec4 pos = position;
pos.x += 300;
vertColor = color;
gl_Position = transform * pos;
}
FRAGMENT SHADER:
#ifdef GL_ES
precision mediump float;
precision mediump int;
#endif
in vec4 vertColor;
void main() {
vec4 color = vertColor;
gl_FragColor = vec4(color.xyz, 1);
}
GIF того, что происходит: сцена со сферой