(bind-func shader_update_material
(let ((data:float* (alloc (* 4 4))) (i:i32 0))
(lambda (shader:ShaderProgram* ambient:|4,float| diffuse:|4,float| emissive:|4,float| specular:|4,float| shininess:float)
(array_4_ptr_copy ambient (pref-ptr data 0))
(array_4_ptr_copy diffuse (pref-ptr data 4))
(array_4_ptr_copy emissive (pref-ptr data 8))
(array_4_ptr_copy specular (pref-ptr data 12))
(glUniform4fv (glGetUniformLocation (id shader) "MaterialAmbient") 1 (pref-ptr data 0))
(glUniform4fv (glGetUniformLocation (id shader) "MaterialDiffuse") 1 (pref-ptr data 4))
(glUniform4fv (glGetUniformLocation (id shader) "MaterialEmissive") 1 (pref-ptr data 8))
(glUniform4fv (glGetUniformLocation (id shader) "MaterialSpecular") 1 (pref-ptr data 12))
(glUniform1f (glGetUniformLocation (id shader) "MaterialShininess") shininess)
(glUniform1i (glGetUniformLocation (id shader) "emitVColour") XTM_EMIT_VCOLOUR)
void)))