From 4cde73239ee3a7cfa4a83a3f9d8a20effdb115ed Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Thu, 29 Dec 2022 17:14:38 -0800 Subject: plasma-node,shader-node: break out maga plasma shader Performing the maga branch in the shader slows things down considerably. This commit gets rid of the in-shader branch by splitting the plasma fragment shader into maga and non-maga variants. This required adding shader vector support to shader-node so multiple shaders could be supplied, with a selector index pointer used to pick which is used by the render function. --- src/shader-node.h | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/shader-node.h') diff --git a/src/shader-node.h b/src/shader-node.h index 34fccc2..7c93c81 100644 --- a/src/shader-node.h +++ b/src/shader-node.h @@ -24,7 +24,26 @@ typedef struct m4f_t m4f_t; typedef void (shader_node_uniforms_func_t)(void *uniforms_ctxt, void *render_ctxt, unsigned n_uniforms, const int *uniforms, const m4f_t *transform, float alpha); -stage_t * shader_node_new_shader(const stage_conf_t *conf, shader_t *shader, const m4f_t *transform, shader_node_uniforms_func_t *uniforms_func, void *uniforms_ctxt); -stage_t * shader_node_new_src(const stage_conf_t *conf, const char *vs_src, const char *fs_src, const m4f_t *transform, shader_node_uniforms_func_t *uniforms_func, void *uniforms_ctxt, unsigned n_uniforms, const char **uniforms); +typedef struct shader_conf_t { + shader_t *shader; + const m4f_t *transform; + shader_node_uniforms_func_t *uniforms_func; + void *uniforms_ctxt; +} shader_conf_t; + +typedef struct shader_src_conf_t { + const char *vs_src, *fs_src; + const m4f_t *transform; + shader_node_uniforms_func_t *uniforms_func; + void *uniforms_ctxt; + unsigned n_uniforms; + const char **uniforms; +} shader_src_conf_t; + +stage_t * shader_node_new_shaderv(const stage_conf_t *conf, unsigned n_shader_confs, const shader_conf_t *shader_confs, unsigned *index_ptr); +stage_t * shader_node_new_shader(const stage_conf_t *conf, const shader_conf_t *shader_conf); + +stage_t * shader_node_new_srcv(const stage_conf_t *conf, unsigned n_shader_src_confs, const shader_src_conf_t *shader_src_conf, unsigned *index_ptr); +stage_t * shader_node_new_src(const stage_conf_t *conf, const shader_src_conf_t *shader_src_conf); #endif -- cgit v1.2.3