Index: trunk/src/gl/gl_device.cc
===================================================================
--- trunk/src/gl/gl_device.cc	(revision 313)
+++ trunk/src/gl/gl_device.cc	(revision 316)
@@ -47,4 +47,9 @@
 #endif
 
+	m_shader_header  = "#version 120\n";
+	for ( auto& i : get_uniform_factory() ) 
+		m_shader_header += "uniform "+datatype_to_glsl_type( i.second->get_datatype() )+" "+i.first+";\n";
+	for ( auto& i : get_link_uniform_factory() ) 
+		m_shader_header += "uniform sampler2D "+i.first+";\n";
 }
 
Index: trunk/src/gl/gl_enum.cc
===================================================================
--- trunk/src/gl/gl_enum.cc	(revision 313)
+++ trunk/src/gl/gl_enum.cc	(revision 316)
@@ -277,2 +277,21 @@
 	}
 }
+
+std::string nv::datatype_to_glsl_type( datatype type )
+{
+	switch( type )
+	{
+	case INT            : return "int";
+	case FLOAT          : return "float";
+	case FLOAT_VECTOR_2 : return "vec2";
+	case FLOAT_VECTOR_3 : return "vec3";
+	case FLOAT_VECTOR_4 : return "vec4";
+	case FLOAT_MATRIX_2 : return "mat2";
+	case FLOAT_MATRIX_3 : return "mat3";
+	case FLOAT_MATRIX_4 : return "mat4";
+	case INT_VECTOR_2   : return "ivec2";
+	case INT_VECTOR_3   : return "ivec3";
+	case INT_VECTOR_4   : return "ivec4";
+	default : return "error";
+	}
+}
