diff options
Diffstat (limited to 'intern/gawain/gawain/gwn_shader_interface.h')
-rw-r--r-- | intern/gawain/gawain/gwn_shader_interface.h | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/intern/gawain/gawain/gwn_shader_interface.h b/intern/gawain/gawain/gwn_shader_interface.h index 4c3d44cadbd..1411bd24e7c 100644 --- a/intern/gawain/gawain/gwn_shader_interface.h +++ b/intern/gawain/gawain/gwn_shader_interface.h @@ -33,28 +33,24 @@ typedef enum { } Gwn_UniformBuiltin; typedef struct Gwn_ShaderInput { - const char* name; + struct Gwn_ShaderInput* next; + uint32_t name_offset; unsigned name_hash; - GLenum gl_type; Gwn_UniformBuiltin builtin_type; // only for uniform inputs - GLint size; + GLenum gl_type; // only for attrib inputs + GLint size; // only for attrib inputs GLint location; } Gwn_ShaderInput; -typedef struct Gwn_ShaderInput_Entry { - struct Gwn_ShaderInput_Entry* next; - Gwn_ShaderInput* shader_input; -} Gwn_ShaderInput_Entry; - #define GWN_NUM_SHADERINTERFACE_BUCKETS 1009 typedef struct Gwn_ShaderInterface { - uint16_t uniform_ct; - uint16_t attrib_ct; - Gwn_ShaderInput_Entry* uniform_buckets[GWN_NUM_SHADERINTERFACE_BUCKETS]; - Gwn_ShaderInput_Entry* attrib_buckets[GWN_NUM_SHADERINTERFACE_BUCKETS]; + GLint program; + uint32_t name_buffer_offset; + Gwn_ShaderInput* attrib_buckets[GWN_NUM_SHADERINTERFACE_BUCKETS]; + Gwn_ShaderInput* uniform_buckets[GWN_NUM_SHADERINTERFACE_BUCKETS]; Gwn_ShaderInput* builtin_uniforms[GWN_NUM_UNIFORMS]; - Gwn_ShaderInput inputs[0]; // dynamic size, uniforms followed by attribs + char* name_buffer; } Gwn_ShaderInterface; Gwn_ShaderInterface* GWN_shaderinterface_create(GLint program_id); |