`sig
type color_material =
[ `ambient | `ambient_and_diffuse | `diffuse | `emission | `specular ]
val color_material : face:Gl.face -> GlLight.color_material -> unit
type fog_param =
[ `End of float
| `color of Gl.rgba
| `density of float
| `index of float
| `mode of [ `exp | `exp2 | `linear ]
| `start of float ]
val fog : GlLight.fog_param -> unit
type light_param =
[ `ambient of Gl.rgba
| `constant_attenuation of float
| `diffuse of Gl.rgba
| `linear_attenuation of float
| `position of Gl.point4
| `quadratic_attenuation of float
| `specular of Gl.rgba
| `spot_cutoff of float
| `spot_direction of Gl.point3
| `spot_exponent of float ]
val light : num:int -> GlLight.light_param -> unit
val light_model :
[ `ambient of Gl.rgba
| `color_control of [ `separate_specular_color | `single_color ]
| `local_viewer of bool
| `two_side of bool ] -> unit
type material_param =
[ `ambient of Gl.rgba
| `ambient_and_diffuse of Gl.rgba
| `color_indexes of float * float * float
| `diffuse of Gl.rgba
| `emission of Gl.rgba
| `shininess of float
| `specular of Gl.rgba ]
val material : face:Gl.face -> GlLight.material_param -> unit
end`