source. Optionally, primitives can be textured or independently colored. ! :param matrix: the model-view-projection matrix, required :param model_matrix: the model matrix, required :param position: vertex buffer containing vertex positions, required :param normal: vertex buffer containing vertex normals, required :param uv: vertex buffer containing vertex texture coordinates, required if use_texture == True :param color: vertex buffer containing vertex colors, required if use_color == True :param sampler: texture to use, required if use_texture == True :param camera_position: the camera position in model space, required :param normal_matrix: the normal matrix, transposed inverse of model matrix, required :param light_direction: vector specifying light direction, default: (1, 1, 1) normalized :param object_color: color for all vertices if textures and color attributes are disabled, default: (0.4, 0.6, 0.8) :param ambient_color: ambient light color, default: (0.3, 0.3, 0.3) :param light_color: directional light color, default: (0.7, 0.7, 0.7) :param specular_power: controls exponent used in specular lighting, default: 32.0 :param specular_multiplier: controls intensity of specular lighting, default: 1.0 :param use_texture: controls whether a texture is to be used, default: False :param use_color: controls whether per-vertex colors are provided, default: False '''