From c068f22329d5cc722622a2183bbb22eef2093df7 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 24 Aug 2026 11:16:07 +0200 Subject: initial import --- src/parsec/include/e_shader.h | 69 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/parsec/include/e_shader.h (limited to 'src/parsec/include/e_shader.h') 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_ + + -- cgit v1.2.3