pbrv

January 2026

Physically Based Rendering Viewer (pbrv) is a small PBR 3D Viewer in CLI powered by ModernGL. Github

I wanted to go through learnopengl.com and a little beyond with by coding this Python PBR viewer.

Features/Specs

  • Interactive window

    • Trackball camera (with path indepedance)
    • Lclick: rotate
    • Rclick: pan
    • Dblclick: focus
    • Ctrl+Lclick: rotate object
    • Shift+Lclick: rotate environment
    • Alt+Lclick: rotate directional light
  • Deferred Shading

  • Metal/roughness workflow

  • Normal mapping (tangent space)

  • SSAO (if no AO map)

  • Image based lighting

    • Cubemaps
    • Equirectangular panoramas (converted to cubemap)
    • Cubemap prefiltering
      • Irradiance (Cosine)
      • Specular (GGX)
  • 1 Directional light

  • 1 Point light

  • Procedural Environment

    • Sun (sunrise/dusk)
    • Based on directional light direction
    • Stars at night

Examples

image image image image