#if !defined SLANG_LINK_H\r
#define SLANG_LINK_H\r
\r
-#include "slang_assemble.h"\r
-#include "slang_execute.h"\r
+#include "slang_compile.h"\r
\r
#if defined __cplusplus\r
extern "C" {\r
#endif\r
\r
-#define SLANG_UNIFORM_BINDING_VERTEX 0\r
-#define SLANG_UNIFORM_BINDING_FRAGMENT 1\r
-#define SLANG_UNIFORM_BINDING_MAX 2\r
+enum\r
+{\r
+ SLANG_SHADER_VERTEX,\r
+ SLANG_SHADER_FRAGMENT,\r
+ SLANG_SHADER_MAX\r
+};\r
\r
typedef struct\r
{\r
slang_export_data_quant *quant;\r
char *name;\r
- GLuint address[SLANG_UNIFORM_BINDING_MAX];\r
+ GLuint address[SLANG_SHADER_MAX];\r
} slang_uniform_binding;\r
\r
typedef struct\r
GLuint count;\r
} slang_uniform_bindings;\r
\r
+typedef struct\r
+{\r
+ slang_export_data_quant *quant;\r
+ char *name;\r
+} slang_active_uniform;\r
+\r
+typedef struct\r
+{\r
+ slang_active_uniform *table;\r
+ GLuint count;\r
+} slang_active_uniforms;\r
+\r
+typedef struct\r
+{\r
+ slang_export_data_quant *quant;\r
+ GLuint frag_address;\r
+} slang_texture_usage;\r
+\r
+typedef struct\r
+{\r
+ slang_texture_usage *table;\r
+ GLuint count;\r
+} slang_texture_usages;\r
+\r
+GLvoid slang_texture_usages_ctr (slang_texture_usages *);\r
+GLvoid slang_texture_usages_dtr (slang_texture_usages *);\r
+\r
+enum\r
+{\r
+ SLANG_COMMON_FIXED_MODELVIEWMATRIX,\r
+ SLANG_COMMON_FIXED_PROJECTIONMATRIX,\r
+ SLANG_COMMON_FIXED_MODELVIEWPROJECTIONMATRIX,\r
+ SLANG_COMMON_FIXED_TEXTUREMATRIX,\r
+ SLANG_COMMON_FIXED_NORMALMATRIX,\r
+ SLANG_COMMON_FIXED_MODELVIEWMATRIXINVERSE,\r
+ SLANG_COMMON_FIXED_PROJECTIONMATRIXINVERSE,\r
+ SLANG_COMMON_FIXED_MODELVIEWPROJECTIONMATRIXINVERSE,\r
+ SLANG_COMMON_FIXED_TEXTUREMATRIXINVERSE,\r
+ SLANG_COMMON_FIXED_MODELVIEWMATRIXTRANSPOSE,\r
+ SLANG_COMMON_FIXED_PROJECTIONMATRIXTRANSPOSE,\r
+ SLANG_COMMON_FIXED_MODELVIEWPROJECTIONMATRIXTRANSPOSE,\r
+ SLANG_COMMON_FIXED_TEXTUREMATRIXTRANSPOSE,\r
+ SLANG_COMMON_FIXED_MODELVIEWMATRIXINVERSETRANSPOSE,\r
+ SLANG_COMMON_FIXED_PROJECTIONMATRIXINVERSETRANSPOSE,\r
+ SLANG_COMMON_FIXED_MODELVIEWPROJECTIONMATRIXINVERSETRANSPOSE,\r
+ SLANG_COMMON_FIXED_TEXTUREMATRIXINVERSETRANSPOSE,\r
+ SLANG_COMMON_FIXED_NORMALSCALE,\r
+ SLANG_COMMON_FIXED_DEPTHRANGE,\r
+ SLANG_COMMON_FIXED_CLIPPLANE,\r
+ SLANG_COMMON_FIXED_POINT,\r
+ SLANG_COMMON_FIXED_FRONTMATERIAL,\r
+ SLANG_COMMON_FIXED_BACKMATERIAL,\r
+ SLANG_COMMON_FIXED_LIGHTSOURCE,\r
+ SLANG_COMMON_FIXED_LIGHTMODEL,\r
+ SLANG_COMMON_FIXED_FRONTLIGHTMODELPRODUCT,\r
+ SLANG_COMMON_FIXED_BACKLIGHTMODELPRODUCT,\r
+ SLANG_COMMON_FIXED_FRONTLIGHTPRODUCT,\r
+ SLANG_COMMON_FIXED_BACKLIGHTPRODUCT,\r
+ SLANG_COMMON_FIXED_TEXTUREENVCOLOR,\r
+ SLANG_COMMON_FIXED_EYEPLANES,\r
+ SLANG_COMMON_FIXED_EYEPLANET,\r
+ SLANG_COMMON_FIXED_EYEPLANER,\r
+ SLANG_COMMON_FIXED_EYEPLANEQ,\r
+ SLANG_COMMON_FIXED_OBJECTPLANES,\r
+ SLANG_COMMON_FIXED_OBJECTPLANET,\r
+ SLANG_COMMON_FIXED_OBJECTPLANER,\r
+ SLANG_COMMON_FIXED_OBJECTPLANEQ,\r
+ SLANG_COMMON_FIXED_FOG,\r
+ SLANG_COMMON_FIXED_MAX\r
+};\r
+\r
+enum\r
+{\r
+ SLANG_VERTEX_FIXED_POSITION,\r
+ SLANG_VERTEX_FIXED_POINTSIZE,\r
+ SLANG_VERTEX_FIXED_CLIPVERTEX,\r
+ SLANG_VERTEX_FIXED_COLOR,\r
+ SLANG_VERTEX_FIXED_SECONDARYCOLOR,\r
+ SLANG_VERTEX_FIXED_NORMAL,\r
+ SLANG_VERTEX_FIXED_VERTEX,\r
+ SLANG_VERTEX_FIXED_MULTITEXCOORD0,\r
+ SLANG_VERTEX_FIXED_MULTITEXCOORD1,\r
+ SLANG_VERTEX_FIXED_MULTITEXCOORD2,\r
+ SLANG_VERTEX_FIXED_MULTITEXCOORD3,\r
+ SLANG_VERTEX_FIXED_MULTITEXCOORD4,\r
+ SLANG_VERTEX_FIXED_MULTITEXCOORD5,\r
+ SLANG_VERTEX_FIXED_MULTITEXCOORD6,\r
+ SLANG_VERTEX_FIXED_MULTITEXCOORD7,\r
+ SLANG_VERTEX_FIXED_FOGCOORD,\r
+ SLANG_VERTEX_FIXED_FRONTCOLOR,\r
+ SLANG_VERTEX_FIXED_BACKCOLOR,\r
+ SLANG_VERTEX_FIXED_FRONTSECONDARYCOLOR,\r
+ SLANG_VERTEX_FIXED_BACKSECONDARYCOLOR,\r
+ SLANG_VERTEX_FIXED_TEXCOORD,\r
+ SLANG_VERTEX_FIXED_FOGFRAGCOORD,\r
+ SLANG_VERTEX_FIXED_MAX\r
+};\r
+\r
+enum\r
+{\r
+ SLANG_FRAGMENT_FIXED_FRAGCOORD,\r
+ SLANG_FRAGMENT_FIXED_FRONTFACING,\r
+ SLANG_FRAGMENT_FIXED_FRAGCOLOR,\r
+ SLANG_FRAGMENT_FIXED_FRAGDATA,\r
+ SLANG_FRAGMENT_FIXED_FRAGDEPTH,\r
+ SLANG_FRAGMENT_FIXED_COLOR,\r
+ SLANG_FRAGMENT_FIXED_SECONDARYCOLOR,\r
+ SLANG_FRAGMENT_FIXED_TEXCOORD,\r
+ SLANG_FRAGMENT_FIXED_FOGFRAGCOORD,\r
+ SLANG_FRAGMENT_FIXED_MAX\r
+};\r
+\r
+enum\r
+{\r
+ SLANG_COMMON_CODE_MAIN,\r
+ SLANG_COMMON_CODE_MAX\r
+};\r
+\r
typedef struct\r
{\r
slang_uniform_bindings uniforms;\r
- slang_machine *machines[SLANG_UNIFORM_BINDING_MAX];\r
+ slang_active_uniforms active_uniforms;\r
+ slang_texture_usages texture_usage;\r
+ GLuint common_fixed_entries[SLANG_SHADER_MAX][SLANG_COMMON_FIXED_MAX];\r
+ GLuint vertex_fixed_entries[SLANG_VERTEX_FIXED_MAX];\r
+ GLuint fragment_fixed_entries[SLANG_FRAGMENT_FIXED_MAX];\r
+ GLuint code[SLANG_SHADER_MAX][SLANG_COMMON_CODE_MAX];\r
+ slang_machine *machines[SLANG_SHADER_MAX];\r
+ slang_assembly_file *assemblies[SLANG_SHADER_MAX];\r
} slang_program;\r
\r
GLvoid slang_program_ctr (slang_program *);\r