sig
  module Prim :
    sig
      val rect :
        ?tr:Gg.m4 ->
        ?name:string ->
        ?tex:string -> ?segs:Gg.Size2.t -> ?d2:bool -> Gg.box2 -> Lit.prim
      val cuboid :
        ?tr:Gg.m4 -> ?name:string -> ?dups:bool -> Gg.box3 -> Lit.prim
      val cube : ?tr:Gg.m4 -> ?name:string -> ?dups:bool -> float -> Lit.prim
      val sphere :
        ?tr:Gg.m4 -> ?name:string -> ?level:int -> float -> Lit.prim
      val with_normals :
        ?scalar_type:[ `Float32 | `Float64 ] ->
        ?name:string -> Lit.prim -> Lit.prim
    end
  module Effect :
    sig
      module Wireframe :
        sig
          val model_to_clip : Gg.M4.t Lit.uniform
          val viewport_size : Gg.Size2.t Lit.uniform
          val fill_color : Gg.Color.t Lit.uniform
          val wire_color : Gg.Color.t Lit.uniform
          val wire_width : float Lit.uniform
          val wire_only : bool Lit.uniform
          val create :
            ?raster:Lit.Effect.raster ->
            ?depth:Lit.Effect.depth ->
            ?blend:Lit.Effect.blend ->
            ?fill_color:Gg.Color.t ->
            ?wire_color:Gg.Color.t ->
            ?wire_width:float -> ?wire_only:bool -> unit -> Lit.Effect.t
        end
    end
  module Manip :
    sig
      type rot
      val rot :
        ?center:Gg.p2 ->
        ?radius:float ->
        ?init:Gg.quat -> start:Gg.p2 -> unit -> Litu.Manip.rot
      val rot_update : Litu.Manip.rot -> Gg.p2 -> Gg.quat
    end
end