summaryrefslogtreecommitdiff
path: root/src/shader-node.h
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2022-12-29 17:14:38 -0800
committerVito Caputo <vcaputo@pengaru.com>2022-12-29 17:14:38 -0800
commit4cde73239ee3a7cfa4a83a3f9d8a20effdb115ed (patch)
treedcf7ea64487fa40ec08c984abd729f597300e857 /src/shader-node.h
parent79a1c4c1295328cc59e9b8643d2125f38fb11038 (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.h23
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
© All Rights Reserved