Realistic Office with PBR Lighting

Edit: This post was created as a response to users having issues getting multiple textures to work in a simplepbr workflow. This post was not intended to be a showcase of simplepbr itself. The models involved only have a base color texture applied, which is not fully PBR modeling.

Here are a few screen caps from an office environment in my current project. I thought the community might like to see an example of physically based lighting with multiple textures running at high frame rate in Panda. The computer screen is actually a live texture buffer with it’s own models and lighting to emulate a real computer screen.

Here you can see the shadow casting flashlight, and the collision modeling of the office itself:


Is there any code?

For what specifically?

I did make a tutorial on interactive door programming which is in the Snippets section.

Cool! :smiley:


Where’s source code ?

The size of the project is large, and I cannot just upload my whole project to github. All of these techniques though are available, in the Panda3D manual (goes into detail about texture buffers), and here in the Snippets section where you’ll find basically everything except the models to model your own code from.

This is quite good, but SimplePBR is lacking a few graphical enhancements in comparison to Render Pipeline, and I believe RP can do much better. Not to say SimplePBR is bad, but it does need more features like better reflections, etc. Otherwise it’s quite impressive.

Looking back on this post, I don’t believe this is a great showcase of what simplepbr can do – indeed, I made this post mostly as a response to issues with getting multiple textures to work that other users at the time seemed to be having.

Specifically, the models in this scene are rendered with only a base texture – not really “PBR” modeling.

It’s also worth noting that this scene likely runs ~500% faster than the same scene with a few options on in RP.

With regard to better reflection handling, specular and diffuse IBL is being developed for simplepbr.

Edit: And I have updated the original post to reflect that this was not intended to be a showcase of simplepbr.