struct hiro::draw::GeometryStyle

Overview

Stylization of the rendered geometry. More…

#include <GeometryRenderer.h>

struct GeometryStyle: public hiro::draw::Style {
    // enums

    enum PresetType;
    enum RenderMode;

    // fields

    hiro::draw::GeometryStyle::RenderMode render_mode = hiro::draw::GeometryStyle::RenderMode::faces;
    hiro::shader::Material material;
    bool back_face_culling { false };
    float point_size { 10.0f };
    hiro::draw::ColorSource color_source { hiro::draw::ColorSource::material };
    glw::PTexture2D albedo_texture { nullptr };
    hiro::draw::FacesStyle::NormalSource normal_source { hiro::draw::FacesStyle::NormalSource::flat_normals };
    glw::PTexture2D normal_texture { nullptr };
    bool display_normals { false };
    cogs::Color3f normal_color { cogs::color::BLACK };
    float normal_length { 0.1f };
    cogs::Color3f edge_color { cogs::color::BLACK };
    float edge_width { 1.0f };
    bool use_matcap { false };
    glw::PTexture2D matcap_sampler { nullptr };
    uint32_t object_id { 0u };

    // methods

    static hiro::draw::GeometryStyle GetPreset(hiro::draw::GeometryStyle::PresetType type);
    virtual bool ReadFromStream(std::istream& str);
    virtual void WriteToStream(std::ostream& str);
};

Inherited Members

public:
    // fields

    bool visible = true;
    cogs::Transform transform;

    // methods

    virtual bool ReadFromStream(std::istream& str);
    virtual void WriteToStream(std::ostream& str);

protected:
    // methods

    bool ReadVersion(std::istream& str, const uint32_t expected_version);

Detailed Documentation

Stylization of the rendered geometry.

Fields

hiro::draw::GeometryStyle::RenderMode render_mode = hiro::draw::GeometryStyle::RenderMode::faces

Mode currently used for rendering geometry.

hiro::shader::Material material

Material setting for the faces or points (depending on a selected render mode).

bool back_face_culling { false }

When enabled, faces and edges with normal vector turned away from the camera are hidden.

float point_size { 10.0f }

Size of point in screen pixels. Used only for render modes that include points.

hiro::draw::ColorSource color_source { hiro::draw::ColorSource::material }

Color source used to colorize faces and points.

glw::PTexture2D albedo_texture { nullptr }

Albedo texture. To use, set color source to ColorSource::albedo_map.

hiro::draw::FacesStyle::NormalSource normal_source { hiro::draw::FacesStyle::NormalSource::flat_normals }

Normal source used to calculate the lighting.

glw::PTexture2D normal_texture { nullptr }

Normal texture. To use, set normal source to NormalSource::normal_map.

bool display_normals { false }

When enabled, normal vector for every point is rendered.

cogs::Color3f normal_color { cogs::color::BLACK }

Color of normal vector tips. Used only when normals are displayed.

float normal_length { 0.1f }

Length of normal vectors. Used only when normals are displayed.

cogs::Color3f edge_color { cogs::color::BLACK }

Color of the edges. Used only for render modes that include edges.

float edge_width { 1.0f }

Width of the edges. Used only for render modes that include edges.

bool use_matcap { false }

When enabled, color and lighting is picked from matcap sampler texture.

glw::PTexture2D matcap_sampler { nullptr }

Matcap sampler. Used only when matcap rendering is enabled.

uint32_t object_id { 0u }

Enables shaders to distinguish between various geometrical objects and instances.

Methods

static hiro::draw::GeometryStyle GetPreset(hiro::draw::GeometryStyle::PresetType type)

Creates a new geometry style from the defined preset.

virtual bool ReadFromStream(std::istream& str)

Imports state from stream.

virtual void WriteToStream(std::ostream& str)

Exports state to stream.