# struct hiro::draw::ProjectionParams

## Overview

Projection, camera and viewport parameters. More…

    #include <Scene.h>

    struct ProjectionParams {
        // fields

        int32_t top;
        int32_t left;
        int32_t bottom;
        int32_t right;
        float fov_x;
        float fov_y;
        float near_distance;
        float far_distance;
        glm_ext::TransMat4 view;
        glm_ext::TransMat4 proj;
        float width;
        float height;
        float aspect;

        // methods

        glm::vec3 CastRay(const glm::vec2& clip_coords) const;
        glm::vec2 ScreenToClipCoords(float x, float y) const;
        geom::IRect GetViewport() const;
    };

## Detailed Documentation

Projection, camera and viewport parameters.

### Fields

    int32_t top

Viewport offset from the top window border. In pixels.

    int32_t left

Viewport offset from the left window border. In pixels.

    int32_t bottom

Viewport offset from the bottom window border. In pixels.

    int32_t right

Viewport offset from the right window border. In pixels.

    float fov_x

Horizontal view angle. In radians.

    float fov_y

Vertical view angle, In radians.

    float near_distance

Distance to near projection plane.

    float far_distance

Distance to far projection plane.

    glm_ext::TransMat4 view

Camera view matrix.

    glm_ext::TransMat4 proj

Projection matrix.

    float width

Horizontal pixel resolution of viewport.

    float height

Vertical pixel resolution of viewport.

    float aspect

Aspect ratio of a viewport (width/height);.

### Methods

    glm::vec3 CastRay(const glm::vec2& clip_coords) const

Computes the direction of a ray casted form camera at a given 2D coordinates.

clip_coords 2D coordinate in clip space used for ray generation. If you wish to convert screen coordinates to clip coordinates, see ScreenToClipCoords.

Returns:

Direction of a generated ray. A starting position of a ray is usually camera position.

    glm::vec2 ScreenToClipCoords(float x, float y) const

Converts screen coordinates to clip coordinates.

Screen coordinates are in pixels and are generated for example by mouse events. Clip coordinates are in the range -1.0 and 1.0 range and relative to the viewport.

    geom::IRect GetViewport() const

Returns viewport rectangle area.