Skip to main content

A simple, lightweight PBR render pipeline for Panda3D

Project description

Build Status Panda3D Versions


This is a simple, basic, lightweight, no-frills PBR render pipeline for Panda3D. It is currently intended to be used with panda3d-gltf, which will output textures in the right order. The PBR shader is heavily inspired by the Khronos glTF Sample Viewer. Note: this project does not make an attempt to match a reference renderer.


  • Supports running on potatoes with an easy OpenGL 2.1+ requirement
  • Forward rendered metal-rough PBR
  • All Panda3D light types except ambient (point, directional, and spot)
  • Filmic tonemapping

Notable Todos

There are a few big things still missing and are planned to be implemented:

  • Normals
  • Shadow mapping
  • Environment maps

Other missing features

The goal is to keep this simple and lightweight. As such, the following missing features are not currently on the roadmap:

  • Something to deal with many lights (e.g., deferred, forward+, tiling, clustering, etc.)
  • Fancy post-process effects (temporal anti-aliasing, ambient occlusion, screen-space reflections)
  • Environment probes


Use pip to install the panda3d-simplepbr package:

pip install panda3d-simplepbr

To grab the latest development build, use:

pip install git+


Just add simplepbr.init() to your ShowBase instance:

from direct.showbase.ShowBase import ShowBase

import simplepbr

class App(ShowBase):
    def __init__(self):


The init() function will choose typical defaults, but the following can be modified via keyword arguments:

render_node : The node to attach the shader too, defaults to base.render if None window : The window to attach the framebuffer too, defaults to if None camera_node : The NodePath of the camera to use when rendering the scene, defaults to if None


The shader currently assumes that the following textures are in these slots:

  1. BaseColor
  2. MetalRoughness
  3. Normals (not currently supported)


For an example application using panda3d-simplepbr check out the viewer in the panda3d-gltf repo.

Running tests

python test


B3D 3-Clause

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for panda3d-simplepbr, version 0.2.3
Filename, size File type Python version Upload date Hashes
Filename, size panda3d_simplepbr-0.2.3-py3-none-any.whl (7.5 kB) File type Wheel Python version py3 Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page