danini-the-panini/mittsu-opengl

View on GitHub
lib/mittsu/opengl/plugins/sprite_vertex.glsl

Summary

Maintainability
Test Coverage
#version 330

uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
uniform float rotation;
uniform vec2 scale;
uniform vec2 uvOffset;
uniform vec2 uvScale;

in vec2 position;
in vec2 uv;

out vec2 vUV;

void main() {
  vUV = uvOffset + uv * uvScale;

  vec2 alignedPosition = position * scale;

  vec2 rotatedPosition;
  rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;
  rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;

  vec4 finalPosition;

  finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
  finalPosition.xy += rotatedPosition;
  finalPosition = projectionMatrix * finalPosition;

  gl_Position = finalPosition;
}