Анимация вершинного шейдера вращается вместе с камерой - PullRequest
0 голосов
/ 11 марта 2020

Я новичок в шейдерах и хочу анимировать объект с помощью вершинного шейдера.

Сейчас я просто хочу переместить его с константой. По какой-то причине, вместо того, чтобы двигаться в 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 того, что происходит: сцена со сферой

...