# struct hiro::shader::Light

## Overview

Definition of scene light. More…

    #include <ShaderApi.h>

    struct Light {
        // fields

        glm::mat4 view { 1.0f };
        glm::vec4 position { 0.0f };
        cogs::Color3f color { cogs::color::WHITE };
        float ambient_intensity { 0.1f };
        float in_camera_space { false };
        bool cast_shadow { false };
        uint8_t __padding0 { 0 };
        uint16_t __padding1 { 0 };
        glm::vec2 __padding2 { 0.0f };

        // methods

        static hiro::shader::Light CreateLight(const glm::vec4& position, const cogs::Color3f& color, float ambient_intensity, bool in_camera_space);
        static hiro::shader::Light CreatePointLight(const glm::vec3& position, const cogs::Color3f& color, float ambient_intensity);
        static hiro::shader::Light CreateDirectionalLight(const glm::vec3& direction, const cogs::Color3f& color, float ambient_intensity);
        static hiro::shader::Light CreateHeadLight(const cogs::Color3f& color);
        static hiro::shader::Light CreateShadowSunLight(const glm::vec3& direction, const cogs::Color3f& color, float ambient_intensity, const geom::Sphere& scene_bounds);
        static hiro::shader::Light CreateShadowSpotlight(const glm::vec3& position, const glm::mat4& view, const glm::mat4& projection, const cogs::Color3f& color);
        static hiro::shader::Light CreateShadowPointLight(const glm::vec3& position, const cogs::Color3f& color, float ambient_intensity, const geom::Sphere& scene_bounds);
    };

## Detailed Documentation

Definition of scene light.

### Fields

    glm::vec4 position { 0.0f }

Lighting position or direction (defined by homogeneous coordinate).

    cogs::Color3f color { cogs::color::WHITE }

Generated color influence of light.

    float ambient_intensity { 0.1f }

Ambient color influence of light.

    float in_camera_space { false }

Whether is light position defined in camera space.

### Methods

    static hiro::shader::Light CreateHeadLight(const cogs::Color3f& color)

A point light whose position is at the position of the camera, oriented in direction of view.

    static hiro::shader::Light CreateShadowSunLight(const glm::vec3& direction, const cogs::Color3f& color, float ambient_intensity, const geom::Sphere& scene_bounds)

An experimental version of directional light that is able to cast shadows.

    static hiro::shader::Light CreateShadowSpotlight(const glm::vec3& position, const glm::mat4& view, const glm::mat4& projection, const cogs::Color3f& color)

An experimental version of spot light that is able to cast shadows.

    static hiro::shader::Light CreateShadowPointLight(const glm::vec3& position, const cogs::Color3f& color, float ambient_intensity, const geom::Sphere& scene_bounds)

An experimental version of point light that is able to cast shadows.