aboutsummaryrefslogtreecommitdiff
path: root/src/parsec/include/e_shader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/parsec/include/e_shader.h')
-rw-r--r--src/parsec/include/e_shader.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/parsec/include/e_shader.h b/src/parsec/include/e_shader.h
new file mode 100644
index 0000000..4ca6b8f
--- /dev/null
+++ b/src/parsec/include/e_shader.h
@@ -0,0 +1,69 @@
+/*
+ * PARSEC HEADER: e_shader.h
+ */
+
+#ifndef _E_SHADER_H_
+#define _E_SHADER_H_
+
+
+// shader spec
+
+struct shader_s {
+
+ char* name;
+ word iter;
+ word flags;
+ texanim_s* texanim;
+ colrgba_s facecolor;
+ colanim_s* colanim;
+ dword colflags;
+ dword _pad32[ 2 ];
+};
+
+
+// special lod argument for SetFaceShader()
+
+#define ACTIVE_LOD (~0)
+
+
+// argument specification for face shader overriding
+
+enum {
+
+ OVERRIDE_ARG_IDLIST,
+ OVERRIDE_ARG_TEXTURE,
+ OVERRIDE_ARG_GLOBAL,
+
+ OVERRIDE_ARG_NUM_ARGS
+};
+
+
+// external functions
+
+int SetFaceShader( GenObject *obj, dword lod, dword faceid, shader_s *shader );
+
+shader_s* FetchShaderByName( const char *name, dword *shaderid );
+shader_s* FetchShaderById( dword shaderid );
+int RegisterShader( shader_s *shader );
+
+void OverrideShaderFaceByIdList( dword objclass, shader_s *shader, dword *faceids, int count );
+void OverrideShaderFaceByTexture( dword objclass, shader_s *shader, char *texname );
+void OverrideShaderFaceGlobal( dword objclass, shader_s *shader );
+void OverrideShaderFaceGlobalInstanced( GenObject *gobj, shader_s *shader );
+void OverrideShaderFaces( dword objclass, shader_s *shader, int arg );
+void OverrideShaderLodFaces( dword objclass, shader_s *shader, int lod, int arg );
+
+
+// external variables
+
+extern int num_registered_shaders;
+extern shader_s registered_shaders[];
+
+extern dword* override_arg_faceids;
+extern int override_arg_count;
+extern char* override_arg_texname;
+
+
+#endif // _E_SHADER_H_
+
+