sig
  type uniform_type =
      FLOAT
    | FLOAT_VEC2
    | FLOAT_VEC3
    | FLOAT_VEC4
    | INT
    | INT_VEC2
    | INT_VEC3
    | INT_VEC4
    | BOOL
    | BOOL_VEC2
    | BOOL_VEC3
    | BOOL_VEC4
    | FLOAT_MAT2
    | FLOAT_MAT3
    | FLOAT_MAT4
    | SAMPLER_1D
    | SAMPLER_2D
    | SAMPLER_3D
    | SAMPLER_CUBE
    | SAMPLER_1D_SHADOW
    | SAMPLER_2D_SHADOW
    | UNDEFINED
  type 'a t
  type sampler_2d_shadow = int
  val set : 'Osg.??.-> '-> unit
  val set_element : 'Osg.??.-> int -> '-> unit
  val int : string -> int -> int Osg.??.t
  val float : string -> float -> float Osg.??.t
  val vec2 : string -> Osg.Vec2.t -> Osg.Vec2.t Osg.??.t
  val vec3 : string -> Osg.Vec3.t -> Osg.Vec3.t Osg.??.t
  val vec4 : string -> Osg.Vec4.t -> Osg.Vec4.t Osg.??.t
  val mat4 : string -> Osg.Matrix.t -> Osg.Matrix.t Osg.??.t
  val sampler_2d_shadow :
    string -> Osg.??.sampler_2d_shadow -> Osg.??.sampler_2d_shadow Osg.??.t
end