Introducing nonengine

nonengine is a minimal PBR IBL engine descended from Panda3D. Usage is intended to be compatible with most existing Panda3D programs. nonengine is intended to work with complexpbr for PBR IBL real-time scene rendering.

Installing with PyPI:

Currently, nonengine is a Linux-only wheel distribution.

pip install nonengine

I recommend starting in a fresh Python venv or alternatively uninstalling any existing Panda3D installations before installing nonengine.

Permissive but NON-AI Policy

nonengine, starting Sep 29, 2023, does not allow usage for AI-training purposes or inclusion in an AI-dataset. nonengine is believed to be entirely free of generative AI contributions and does not accept PRs made with generative AI technology.

Other than that, you are free to do with nonengine as you like, including building commercial projects with it. See new_license.txt in the organization repo below for details.

Sample Screenshots

sponza_screen_1-Tue-Aug-04-05-18-16-2026-176

Time Dilation Lab nonengine screen 1a

Arcostudy screen 1a

Additional Engine Details

nonengine is roughly ~500,000 lines smaller than Panda3D. Many systems, including “tests”, “distributed”, and “PandAI” among many others have been carefully removed. The engine has been significantly refactored to support a leaner profile.

nonengine does not include any upstream Panda3D commits made since September 29th, 2023 .

Supporting nonengine Development

The most straightforward way to support my work on nonengine is buying one of my games, like Time Dilation Lab

nonengine Official Organization Page

https://github.com/nonengine/nonengine

5 Likes

Interesting, and rather neat! :slight_smile:

If I may ask, how does it work with non-PBR/custom-shader rendering? Would that be any different to developing in baseline Panda, or does this version expect PBR to a degree that would make non-PBR more difficult to work with…?

Thanks very much! It was quite a lot of work, but I got to get “hands-on” with the internals of the engine, which was interesting indeed.

Without any nontrivial non-PBR sample programs to validate functionality, I can’t be certain. You’re more than welcome to try it out and see. I’m using modern Python versions for the wheel build, and I don’t have plans to support legacy Python systems. But you can still use CommonFilters, FilterManager, setShaderInput(), and all that good stuff.

2 Likes