A straight-forward, easy-to-use PBR render pipeline for Panda3D. This project aims to be a drop-in replacement for Panda3D's auto-shader. 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 a wide range of hardware with an easy OpenGL 2.1+ requirement
- Forward rendered metal-rough PBR
- All Panda3D light types (point, directional, spot, and ambient)
- Filmic tonemapping
- Normal maps
- Emission maps
- Occlusion maps
- Basic shadow mapping for DirectionalLight and Spotlight
- Post-tonemapping color transform via a lookup table (LUT) texture
- IBL diffuse and specular
Use pip to install the panda3d-simplepbr
package:
pip install panda3d-simplepbr
To grab the latest development build, use:
pip install git+https://github.com/Moguri/panda3d-simplepbr.git
More detailed documentation can be found here.
Just add simplepbr.init()
to your ShowBase
instance:
from direct.showbase.ShowBase import ShowBase
import simplepbr
class App(ShowBase):
def __init__(self):
super().__init__()
simplepbr.init()
The init()
function will choose typical defaults.
Details on available options can be found here
For an example application using panda3d-simplepbr
check out the viewer in the panda3d-gltf repo.
This project uses uv for project management.
After installing uv
, run uv sync
to install dependencies and create a virtual environment.
This project uses ruff for linting. Running lint checks can be done with:
uv run ruff check
uv run pytest
uv run build