Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #version 330 core
- layout (points) in;
- layout (triangle_strip, max_vertices = 6) out;
- uniform float rotation;
- const float PI = 3.14159265359;
- const float scale = 0.5f;
- void emitVertex(vec2 vert){
- gl_Position = vec4(vert, 0, 1f);
- EmitVertex();
- }
- void createArrow(vec2 mid, int reflect, float rotation, vec2 translation, float scale){
- mat2 m;
- if(reflect == 1){
- m = mat2(-1, 0, 0, 1);
- }
- else{
- m = mat2(1, 0, 0, 1);
- }
- m = m * mat2(cos(rotation), sin(rotation), -sin(rotation), cos(rotation));
- translation = translation * mat2(cos(rotation), sin(rotation), -sin(rotation), cos(rotation));
- emitVertex(translation + mid * m * scale);
- emitVertex(translation + (mid + vec2(0.1f, -0.1f)) * m * scale);
- emitVertex(translation + (mid + vec2(0f, 0.4f)) * m * scale);
- }
- void createArrow(vec2 mid, float rotation, vec2 translation, float scale) {
- createArrow(mid, 0, rotation, translation, scale);
- createArrow(mid, 1, rotation, translation, scale);
- }
- void main(){
- vec2 mid = gl_in[0].gl_Position.xy;
- createArrow(mid + vec2(0f, 1f), rotation, vec2(0f, 0f), scale);
- EndPrimitive();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement