diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2022-12-29 17:14:38 -0800 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2022-12-29 17:14:38 -0800 |
commit | 4cde73239ee3a7cfa4a83a3f9d8a20effdb115ed (patch) | |
tree | dcf7ea64487fa40ec08c984abd729f597300e857 /src/shader-node.h | |
parent | 79a1c4c1295328cc59e9b8643d2125f38fb11038 (diff) |
plasma-node,shader-node: break out maga plasma shaderrev4
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.
Diffstat (limited to 'src/shader-node.h')
-rw-r--r-- | src/shader-node.h | 23 |
1 files changed, 21 insertions, 2 deletions
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 |