mirror of
https://github.com/mkxp-z/mkxp-z.git
synced 2025-08-24 15:53:45 +02:00

PortableGL supports shaders, but requires them to be compiled ahead-of-time to C or C++. I'll write a compiler later to translate from GLSL to this format automatically at build time.
25 lines
1.4 KiB
C
25 lines
1.4 KiB
C
#include "blurV.pgl.h"
|
|
|
|
void mkxpBlurVVS(float *_output, pgl_vec4 *_attribs, Shader_Builtins *builtins, void *_uniforms)
|
|
{
|
|
struct BlurVVarying *output = (struct BlurVVarying *)_output;
|
|
struct BlurVAttribs *attribs = (struct BlurVAttribs *)_attribs;
|
|
struct BlurVUniforms *uniforms = (struct BlurVUniforms *)_uniforms;
|
|
|
|
builtins->gl_Position = mult_mat4_vec4(uniforms->projMat, (pgl_vec4){attribs->position.x, attribs->position.y, 0, 1});
|
|
output->v_texCoord = mult_vec2s(attribs->texCoord, uniforms->texSizeInv);
|
|
output->v_blurCoord[0] = mult_vec2s((pgl_vec2){attribs->texCoord.x, attribs->texCoord.y-1.0f}, uniforms->texSizeInv);
|
|
output->v_blurCoord[1] = mult_vec2s((pgl_vec2){attribs->texCoord.x, attribs->texCoord.y+1.0f}, uniforms->texSizeInv);
|
|
}
|
|
|
|
void mkxpBlurVFS(float *_input, Shader_Builtins *builtins, void *_uniforms)
|
|
{
|
|
struct BlurVVarying *input = (struct BlurVVarying *)_input;
|
|
struct BlurVUniforms *uniforms = (struct BlurVUniforms *)_uniforms;
|
|
|
|
pgl_vec4 frag = {0, 0, 0, 0};
|
|
frag = add_vec4s(frag, mkxp_pgl_texture2D(uniforms->texture, input->v_texCoord.x, input->v_texCoord.y));
|
|
frag = add_vec4s(frag, mkxp_pgl_texture2D(uniforms->texture, input->v_blurCoord[0].x, input->v_blurCoord[0].y));
|
|
frag = add_vec4s(frag, mkxp_pgl_texture2D(uniforms->texture, input->v_blurCoord[1].x, input->v_blurCoord[1].y));
|
|
builtins->gl_FragColor = div_vec4s(frag, (pgl_vec4){3.0, 3.0, 3.0, 3.0});
|
|
}
|