Skip to content
Snippets Groups Projects
Select Git revision
  • develop default protected
  • kw/decoupled-viewer-renderer
  • fix-imgui-docking
  • jn/develop
  • ak/shader_ortho
  • ak/test_shader
  • kschuster/develop
  • kw/texture-renderable-uv-modify
  • born/viewer-style-tweaks
  • ak/develop
  • js/point-pipeline
  • ak/grid_bug
  • pt/jittering-fix
  • ak/jittering
  • fix/imgui-modalwindow-deprecation
  • feature/structured-interface
  • bone-import
  • kw/develop
  • depthtransparent-texture-leak
  • jschakib
  • 0.9.1
  • 0.9.0
22 results

glow-extras

  • Clone with SSH
  • Clone with HTTPS
  • Forked from Glow / glow-extras
    77 commits behind the upstream repository.
    Philip Trettner's avatar
    Philip Trettner authored
    Take custom FoV into account when computing viewer camera distance
    
    See merge request Glow/glow-extras!127
    4f5e90b2
    History

    Glow Extras

    Companion library for glow with convenience and helper functions. Separated into mostly independent sub-libraries.

    Libraries

    glfw

    Efficiently get a Glow application up and running. Features:

    • Context and window creation
    • Input handling
    • Main loop
    • Basic profiling
    • Optional default pipeline and camera setup

    Noteworthy classes:

    • GlfwApp - All-in-one Glow application
    • GlfwContext - Used by GlfwApp, encapsulates a Window and its OpenGL context

    Dependencies: aion

    pipeline

    Pre-built, configurable clustered forward renderer. Read the guide for more. Features:

    • Temporal Anti-Aliasing
    • Tube Lights, GPU clustering
    • Cascaded shadow mapping, PCF
    • SSAO
    • Order-independent transparency
    • Bloom, Postprocessing

    Noteworthy classes:

    • RenderPipeline - Encapsulates every pipeline stage, used to interface with the pipeline
    • RenderScene - POD-struct with all runtime-configurable pipeline settings

    camera

    A camera, various controllers and several utility functions. Used by glfw and pipeline. Features:

    • Camera matrix calculation
    • WASD, mouselook and target orbit controllers
    • Optional motion smoothing

    Noteworthy classes:

    • Camera - The camera
    • SmoothedCamera - Like Camera but with smoothed movement, intercompatible

    geometry

    Template-heavy library for generating simple geometry (VertexArrays in particular)

    Noteworthy classes: Quad, Cube, UVSphere, FullscreenTriangle

    assimp

    Import mesh files to create VertexArrays.

    Dependency: assimp

    timing

    Timing and performance profiling.

    Noteworthy classes:

    • CpuTimer - High-precision, platform-independent CPU timer
    • GpuTimer - High-precision, non-stalling GPU timer

    Dependencies: aion

    Smaller libraries

    • colors - Color utilities
    • debugging - GUI OpenGL error log, line drawing helper
    • material - PBR (GGX) shader helpers, IBL precalculation and utilities
    • input - Input handling, used by GlfwApp
    • shader - Miscellaneous shader helpers, WIP
    • viewer - Polymesh Viewer, WIP

    Usage

    Add git submodule

    git submodule add https://www.graphics.rwth-aachen.de:9000/Glow/glow-extras.git
    git submodule update --init --recursive

    Add to cmake (be sure to do that after glow)

    add_subdirectory(path/to/glow-extras)

    Choose which libraries you need

    # all
    target_link_libraries(YourLib PUBLIC glow-extras)
    
    # .. or single ones
    target_link_libraries(YourLib PUBLIC glow-extras-camera)
    target_link_libraries(YourLib PUBLIC glow-extras-geometry)
    target_link_libraries(YourLib PUBLIC glow-extras-pipeline)

    CAUTION: If you use extras that require dependencies, you have to add them manually before. E.g. for glow-extras-assimp:

    add_subdirectory(path/to/assimp) # https://graphics.rwth-aachen.de:9000/ptrettner/assimp-lean
    add_subdirectory(path/to/glow-extras) # AFTER dependencies
    
    target_link_libraries(YourLib PUBLIC glow-extras-assimp) # internally depends on assimp

    glow-extras will disable (and tell you) all sub-libs that were disabled due to missing dependencies.