X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=shaders%2Fblit.h;h=94d3dce07db7da39f050b85b5dec539c793929c5;hb=5f6a4f9df6c8accc89f1920bfe9ace3cbac4c4b6;hp=116007aa8194e58c09644ec8721ac4596ea61f52;hpb=a109f126d8adab622e38fbcc2d4281e75255246a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/shaders/blit.h b/shaders/blit.h index 116007a..94d3dce 100644 --- a/shaders/blit.h +++ b/shaders/blit.h @@ -1,87 +1,18 @@ -#ifndef SHADER_blit_H -#define SHADER_blit_H -static void shader_blit_link(void); -static void shader_blit_register(void); -static struct vg_shader _shader_blit = { - .name = "blit", - .link = shader_blit_link, - .vs = +#pragma once +#include "vg/vg_engine.h" +extern struct vg_shader _shader_blit; +extern GLuint _uniform_blit_uInverseRatio; +extern GLuint _uniform_blit_uTexMain; +static inline void shader_blit_uInverseRatio(v2f v) { -.orig_file = "shaders/blit.vs", -.static_src = -"layout (location=0) in vec2 a_co;\n" -"out vec2 aUv;\n" -"\n" -"uniform vec2 uInverseRatio;\n" -"\n" -"void main()\n" -"{\n" -" gl_Position = vec4(a_co*2.0-1.0,0.0,1.0);\n" -" aUv = a_co * uInverseRatio;\n" -"}\n" -""}, - .fs = -{ -.orig_file = "shaders/blit.fs", -.static_src = -"out vec4 FragColor;\n" -"uniform sampler2D uTexMain;\n" -"\n" -"in vec2 aUv;\n" -"\n" -"float kPi = 3.14159265358979;\n" -"\n" -"vec2 fisheye_distort(vec2 xy)\n" -"{\n" -" float aperture = 1350.0;\n" -" float apertureHalf = 0.5 * aperture * (kPi / 180.0);\n" -" float maxFactor = sin(apertureHalf);\n" -"\n" -" vec2 uv;\n" -" float d = length(xy);\n" -" if(d < (2.0-maxFactor))\n" -" {\n" -" d = length(xy * maxFactor);\n" -" float z = sqrt(1.0 - d * d);\n" -" float r = atan(d, z) / kPi;\n" -" float phi = atan(xy.y, xy.x);\n" -"\n" -" uv.x = r * cos(phi) + 0.5;\n" -" uv.y = r * sin(phi) + 0.5;\n" -" }\n" -" else\n" -" {\n" -" uv = 0.5*xy + 0.5;\n" -" }\n" -" \n" -" return uv;\n" -"}\n" -"\n" -"\n" -"void main()\n" -"{\n" -" vec2 vwarp = 2.0*aUv - 1.0;\n" -" vwarp = fisheye_distort( vwarp );\n" -"\n" -" FragColor = texture( uTexMain, aUv );\n" -"}\n" -""}, -}; - -static GLuint _uniform_blit_uInverseRatio; -static GLuint _uniform_blit_uTexMain; -static void shader_blit_uInverseRatio(v2f v){ glUniform2fv(_uniform_blit_uInverseRatio,1,v); } -static void shader_blit_uTexMain(int i){ +static inline void shader_blit_uTexMain(int i) +{ glUniform1i(_uniform_blit_uTexMain,i); } -static void shader_blit_register(void){ - vg_shader_register( &_shader_blit ); -} -static void shader_blit_use(void){ glUseProgram(_shader_blit.id); } -static void shader_blit_link(void){ - _uniform_blit_uInverseRatio = glGetUniformLocation( _shader_blit.id, "uInverseRatio" ); - _uniform_blit_uTexMain = glGetUniformLocation( _shader_blit.id, "uTexMain" ); +static inline void shader_blit_use(void); +static inline void shader_blit_use(void) +{ + glUseProgram(_shader_blit.id); } -#endif /* SHADER_blit_H */