refactor: moved frag shader init to func
This commit is contained in:
parent
aa9ac7f057
commit
61da2ef3b3
1 changed files with 22 additions and 36 deletions
|
@ -87,6 +87,24 @@ error:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// initializes a provided fragment shader and returns false if unsuccessful
|
||||||
|
bool init_frag_shader(struct gles2_tex_shader *shader, GLuint prog) {
|
||||||
|
shader->program = prog;
|
||||||
|
if (!shader->program) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
shader->proj = glGetUniformLocation(prog, "proj");
|
||||||
|
shader->tex = glGetUniformLocation(prog, "tex");
|
||||||
|
shader->alpha = glGetUniformLocation(prog, "alpha");
|
||||||
|
shader->pos_attrib = glGetAttribLocation(prog, "pos");
|
||||||
|
shader->tex_attrib = glGetAttribLocation(prog, "texcoord");
|
||||||
|
shader->width = glGetUniformLocation(prog, "width");
|
||||||
|
shader->height = glGetUniformLocation(prog, "height");
|
||||||
|
shader->position = glGetUniformLocation(prog, "position");
|
||||||
|
shader->radius = glGetUniformLocation(prog, "radius");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Hyprland way?
|
// TODO: Hyprland way?
|
||||||
struct fx_renderer *fx_renderer_create(struct wlr_egl *egl) {
|
struct fx_renderer *fx_renderer_create(struct wlr_egl *egl) {
|
||||||
struct fx_renderer *renderer = calloc(1, sizeof(struct fx_renderer));
|
struct fx_renderer *renderer = calloc(1, sizeof(struct fx_renderer));
|
||||||
|
@ -149,51 +167,19 @@ struct fx_renderer *fx_renderer_create(struct wlr_egl *egl) {
|
||||||
renderer->shaders.corner.radius = glGetUniformLocation(prog, "radius");
|
renderer->shaders.corner.radius = glGetUniformLocation(prog, "radius");
|
||||||
renderer->shaders.corner.thickness = glGetUniformLocation(prog, "thickness");
|
renderer->shaders.corner.thickness = glGetUniformLocation(prog, "thickness");
|
||||||
|
|
||||||
|
// fragment shaders
|
||||||
prog = link_program(tex_vertex_src, tex_fragment_src_rgba);
|
prog = link_program(tex_vertex_src, tex_fragment_src_rgba);
|
||||||
renderer->shaders.tex_rgba.program = prog;
|
if (!init_frag_shader(&renderer->shaders.tex_rgba, prog)) {
|
||||||
if (!renderer->shaders.tex_rgba.program) {
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
renderer->shaders.tex_rgba.proj = glGetUniformLocation(prog, "proj");
|
|
||||||
renderer->shaders.tex_rgba.tex = glGetUniformLocation(prog, "tex");
|
|
||||||
renderer->shaders.tex_rgba.alpha = glGetUniformLocation(prog, "alpha");
|
|
||||||
renderer->shaders.tex_rgba.pos_attrib = glGetAttribLocation(prog, "pos");
|
|
||||||
renderer->shaders.tex_rgba.tex_attrib = glGetAttribLocation(prog, "texcoord");
|
|
||||||
renderer->shaders.tex_rgba.width = glGetUniformLocation(prog, "width");
|
|
||||||
renderer->shaders.tex_rgba.height = glGetUniformLocation(prog, "height");
|
|
||||||
renderer->shaders.tex_rgba.position = glGetUniformLocation(prog, "position");
|
|
||||||
renderer->shaders.tex_rgba.radius = glGetUniformLocation(prog, "radius");
|
|
||||||
|
|
||||||
prog = link_program(tex_vertex_src, tex_fragment_src_rgbx);
|
prog = link_program(tex_vertex_src, tex_fragment_src_rgbx);
|
||||||
renderer->shaders.tex_rgbx.program = prog;
|
if (!init_frag_shader(&renderer->shaders.tex_rgbx, prog)) {
|
||||||
if (!renderer->shaders.tex_rgbx.program) {
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
renderer->shaders.tex_rgbx.proj = glGetUniformLocation(prog, "proj");
|
|
||||||
renderer->shaders.tex_rgbx.tex = glGetUniformLocation(prog, "tex");
|
|
||||||
renderer->shaders.tex_rgbx.alpha = glGetUniformLocation(prog, "alpha");
|
|
||||||
renderer->shaders.tex_rgbx.pos_attrib = glGetAttribLocation(prog, "pos");
|
|
||||||
renderer->shaders.tex_rgbx.tex_attrib = glGetAttribLocation(prog, "texcoord");
|
|
||||||
renderer->shaders.tex_rgbx.width = glGetUniformLocation(prog, "width");
|
|
||||||
renderer->shaders.tex_rgbx.height = glGetUniformLocation(prog, "height");
|
|
||||||
renderer->shaders.tex_rgbx.position = glGetUniformLocation(prog, "position");
|
|
||||||
renderer->shaders.tex_rgbx.radius = glGetUniformLocation(prog, "radius");
|
|
||||||
|
|
||||||
prog = link_program(tex_vertex_src, tex_fragment_src_external);
|
prog = link_program(tex_vertex_src, tex_fragment_src_external);
|
||||||
renderer->shaders.tex_ext.program = prog;
|
if (!init_frag_shader(&renderer->shaders.tex_ext, prog)) {
|
||||||
if (!renderer->shaders.tex_ext.program) {
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
renderer->shaders.tex_ext.proj = glGetUniformLocation(prog, "proj");
|
|
||||||
renderer->shaders.tex_ext.tex = glGetUniformLocation(prog, "tex");
|
|
||||||
renderer->shaders.tex_ext.alpha = glGetUniformLocation(prog, "alpha");
|
|
||||||
renderer->shaders.tex_ext.pos_attrib = glGetAttribLocation(prog, "pos");
|
|
||||||
renderer->shaders.tex_ext.tex_attrib = glGetAttribLocation(prog, "texcoord");
|
|
||||||
renderer->shaders.tex_ext.width = glGetUniformLocation(prog, "width");
|
|
||||||
renderer->shaders.tex_ext.height = glGetUniformLocation(prog, "height");
|
|
||||||
renderer->shaders.tex_ext.position = glGetUniformLocation(prog, "position");
|
|
||||||
renderer->shaders.tex_ext.radius = glGetUniformLocation(prog, "radius");
|
|
||||||
prog = link_program(tex_vertex_src, tex_fragment_src_rgba);
|
|
||||||
|
|
||||||
wlr_egl_unset_current(renderer->egl);
|
wlr_egl_unset_current(renderer->egl);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue