# namespace hiro::shader

## Overview

Interface for writing shaders. Contains C++ definitions equivalent to GLSL definitions. More…

    namespace shader {

    // structs

    struct Light;
    struct MatAndInv;
    struct Material;
    struct SceneData;

    // global variables

    const int MAX_SCENE_COUNT { 16 };
    const int MAX_CAMERA_COUNT { 16 };
    const int MAX_LIGHT_COUNT { 16 };
    const int MAX_LIGHT_COUNT_PER_SCENE { 4 };
    const int MAX_INSTANCE_COUNT { 32 };
    const int ULOC_RENDER_PASS { 0 };
    const int ULOC_SHADOWING_METHOD { 1 };
    const int ULOC_MODEL_MATRIX { 2 };
    const int ULOC_SCENE_ID { 6 };
    const int ULOC_USE_INSTANCING { 7 };
    const int ULOC_PRE_INSTANCING_MATRIX { 8 };
    const int ULOC_CUSTOM_BEGIN { 12 };
    const int ULOC_CUSTOM_0 { ULOC_CUSTOM_BEGIN + 0 };
    const int ULOC_CUSTOM_1 { ULOC_CUSTOM_BEGIN + 1 };
    const int ULOC_CUSTOM_2 { ULOC_CUSTOM_BEGIN + 2 };
    const int ULOC_CUSTOM_3 { ULOC_CUSTOM_BEGIN + 3 };
    const int ULOC_CUSTOM_4 { ULOC_CUSTOM_BEGIN + 4 };
    const int ULOC_CUSTOM_5 { ULOC_CUSTOM_BEGIN + 5 };
    const int ULOC_CUSTOM_6 { ULOC_CUSTOM_BEGIN + 6 };
    const int ULOC_CUSTOM_7 { ULOC_CUSTOM_BEGIN + 7 };
    const int ULOC_CUSTOM_8 { ULOC_CUSTOM_BEGIN + 8 };
    const int ULOC_CUSTOM_9 { ULOC_CUSTOM_BEGIN + 9 };
    const int ULOC_CUSTOM_10 { ULOC_CUSTOM_BEGIN + 10 };
    const int ULOC_CUSTOM_11 { ULOC_CUSTOM_BEGIN + 11 };
    const int ULOC_CUSTOM_12 { ULOC_CUSTOM_BEGIN + 12 };
    const int ULOC_CUSTOM_13 { ULOC_CUSTOM_BEGIN + 13 };
    const int ULOC_CUSTOM_14 { ULOC_CUSTOM_BEGIN + 14 };
    const int ULOC_CUSTOM_15 { ULOC_CUSTOM_BEGIN + 15 };
    const int ULOC_CUSTOM_16 { ULOC_CUSTOM_BEGIN + 16 };
    const int ULOC_CUSTOM_17 { ULOC_CUSTOM_BEGIN + 17 };
    const int ULOC_CUSTOM_18 { ULOC_CUSTOM_BEGIN + 18 };
    const int ULOC_CUSTOM_19 { ULOC_CUSTOM_BEGIN + 19 };
    const int UBIND_INSTANCING_MATRICES { 0 };
    const int UBIND_VIEW_MATRICES { 1 };
    const int UBIND_SCENE_DATA { 2 };
    const int UBIND_LIGHTS { 3 };
    const int UBIND_CUSTOM_0 { 4 };
    const int UBIND_CUSTOM_1 { 5 };
    const int UBIND_CUSTOM_2 { 6 };
    const int UBIND_CUSTOM_3 { 7 };
    const int UBIND_CUSTOM_4 { 8 };
    const int UBIND_CUSTOM_5 { 9 };
    const int UBIND_CUSTOM_6 { 10 };
    const int UBIND_CUSTOM_7 { 11 };
    const int UBIND_CUSTOM_8 { 12 };
    const int UBIND_CUSTOM_9 { 13 };

    // global functions

    void DrawFullscreen();

    } // namespace shader

## Detailed Documentation

Interface for writing shaders. Contains C++ definitions equivalent to GLSL definitions.

### Global Variables

    const int MAX_SCENE_COUNT { 16 }

Maximal usable number of scenes.

    const int MAX_CAMERA_COUNT { 16 }

Maximal usable number of cameras.

    const int MAX_LIGHT_COUNT { 16 }

Maximal usable number of lights.

    const int MAX_LIGHT_COUNT_PER_SCENE { 4 }

Maximal usable number of lights per scene.

    const int MAX_INSTANCE_COUNT { 32 }

Maximal usable number of Renderer-Style pairs per scene.

    const int ULOC_RENDER_PASS { 0 }

Location of integer identifier of current render system pass.

    const int ULOC_SHADOWING_METHOD { 1 }

Location of integer identifier of shadowing method.

    const int ULOC_MODEL_MATRIX { 2 }

Location of model matrix stored in hiro::draw::Style::transform.

    const int ULOC_SCENE_ID { 6 }

Location of scene index, that currently renders.

    const int ULOC_USE_INSTANCING { 7 }

Location of boolean deciding whether instanced rendering is used.

    const int ULOC_PRE_INSTANCING_MATRIX { 8 }

Location of a pre-instance matrix.

    const int ULOC_CUSTOM_BEGIN { 12 }

First location usable for custom uniform.

    const int ULOC_CUSTOM_0 { ULOC_CUSTOM_BEGIN + 0 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_1 { ULOC_CUSTOM_BEGIN + 1 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_2 { ULOC_CUSTOM_BEGIN + 2 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_3 { ULOC_CUSTOM_BEGIN + 3 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_4 { ULOC_CUSTOM_BEGIN + 4 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_5 { ULOC_CUSTOM_BEGIN + 5 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_6 { ULOC_CUSTOM_BEGIN + 6 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_7 { ULOC_CUSTOM_BEGIN + 7 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_8 { ULOC_CUSTOM_BEGIN + 8 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_9 { ULOC_CUSTOM_BEGIN + 9 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_10 { ULOC_CUSTOM_BEGIN + 10 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_11 { ULOC_CUSTOM_BEGIN + 11 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_12 { ULOC_CUSTOM_BEGIN + 12 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_13 { ULOC_CUSTOM_BEGIN + 13 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_14 { ULOC_CUSTOM_BEGIN + 14 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_15 { ULOC_CUSTOM_BEGIN + 15 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_16 { ULOC_CUSTOM_BEGIN + 16 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_17 { ULOC_CUSTOM_BEGIN + 17 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_18 { ULOC_CUSTOM_BEGIN + 18 }

Location usable for custom uniform.

    const int ULOC_CUSTOM_19 { ULOC_CUSTOM_BEGIN + 19 }

Location usable for custom uniform.

    const int UBIND_INSTANCING_MATRICES { 0 }

Uniform binding location for instance matrices.

    const int UBIND_VIEW_MATRICES { 1 }

Uniform binding location for camera view matrices.

    const int UBIND_SCENE_DATA { 2 }

Uniform binding location for scene data structures.

    const int UBIND_LIGHTS { 3 }

Uniform binding location for light structures.

    const int UBIND_CUSTOM_0 { 4 }

Uniform binding location for custom data.

    const int UBIND_CUSTOM_1 { 5 }

Uniform binding location for custom data.

    const int UBIND_CUSTOM_2 { 6 }

Uniform binding location for custom data.

    const int UBIND_CUSTOM_3 { 7 }

Uniform binding location for custom data.

    const int UBIND_CUSTOM_4 { 8 }

Uniform binding location for custom data.

    const int UBIND_CUSTOM_5 { 9 }

Uniform binding location for custom data.

    const int UBIND_CUSTOM_6 { 10 }

Uniform binding location for custom data.

    const int UBIND_CUSTOM_7 { 11 }

Uniform binding location for custom data.

    const int UBIND_CUSTOM_8 { 12 }

Uniform binding location for custom data.

    const int UBIND_CUSTOM_9 { 13 }

Uniform binding location for custom data.

### Global Functions

    void DrawFullscreen()

Invokes draw for fullscreen.vert shader.