Deferred Pipeline w/ Physically Based Shading


The errors complain about not being able to find Eigen. It looks like you’re using a Debian-based distro, so try looking for an eigen-dev package.


I feel like that’s something I should have spotted. Thank you for helping and just taking time out your day.


After some time, I finally found some time to work on the Render Pipeline again:

  • The toolkit now has a new skin, and the plugin settings were improved.
  • Multiple (smaller) performance improvements
  • Better setup, including troubleshooting options


Is is possible to install RenderPipeline into pyvenv?
Panda3D was installed into pyvenv with “pip install Panda3D” and RenderPipeline still can’t find the headers and libraries.


Could you give me the full console output so I can see which error messages occur?

[ 04 ]  Building the native code .. (This might take a while!)
	Running script: rpcore/native/
CMake Error:
Failed to execute ''
Output: Command '['/home/yonnji/pyvenv/bin/python', '-B', '']' returned non-zero exit status 255 
 WARNING: Removing obsolete parameter 'vc_version', is now auto-detected.
WARNING: Removing obsolete parameter 'use_lib_eigen', is now auto-detected.
Creating directory /home/yonnji/render_pipeline/rpcore/native/scripts/../linux_amd64_panda1.10.0_py35
Executing command:  cmake /home/yonnji/render_pipeline/rpcore/native -DCMAKE_BUILD_TYPE=RelWithDebInfo -DPYTHON_EXECUTABLE:STRING=/home/yonnji/pyvenv/bin/python -DPROJECT_NAME:STRING=native_ -DINTERROGATE_LIB:STRING=p3interrogatedb -DPYTHONVERDOT:STRING=3.5 -DHAVE_LIB_EIGEN=TRUE -DIGATE_VERBOSE=0 -DOPTIMIZE=3 

-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Bitness: 32 bit ('')
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/ (found version "3.5.2") 
-- Could NOT find Panda (missing:  PANDA_LIBRARIES PANDA_INCLUDE_DIR) 
CMake Error at CMakeLists.txt:226 (message):
  Could not find system wide panda3d headers, and no local installation was

-- Configuring incomplete, errors occurred!
See also "/home/yonnji/render_pipeline/rpcore/native/linux_amd64_panda1.10.0_py35/CMakeFiles/CMakeOutput.log".

It seems the setup failed, do you want to open the troubleshooting page for this step? (y/n): n


The version of Panda that is installed via “pip” does not contain the header files. You will need a full SDK build of Panda.


Is there a sample of how to setup the RenderPipeline with C++ only?


Is RenderPipe intended to stay a separate project, or is it slated to become a part of Panda3D at some point in time?


Hi, I’m experimenting with the use of RenderPipeline and in particular with the shadow update of the lights (Point and Spot) in case of dynamic objects.
In the wiki in github, it is shown that one of two methods should be used:

self.render_pipeline.invalidate_region (<bounding volume>)


self.render_pipeline.add_dynamic_region (<bounding voulme>)

but none of them is implemented.
How can shadows be updated??
Thanks for any hint.


After analyzing the code a bit, I found out that a way to update lights’ shadows, is to call the method


for each single light.
Unfortunately this method is only available for c++ and not published to Python, but is indirectly called by other python methods.
So I solved by installing a task that repeatedly calls, for example:

light.near_plane = light.near_plane

This is not so elegant, and it would be better to make invalidate_shadows() available to python (obviously if there is no better method for updating the shadows but I have not found it).


Hello everyone,
It’s possible to add in render-sample your water demo and grass/forest demo ? … ew=190.png … ew=107.png


For the toolkit programs, for example the day_time_editor, I need PyQt5. So I installed PyQt5 with:
python -m pip install PyQt5
and made sure that PyQt5 was in the environment path list.

I also installed Qt

However, when I want to run any of the tools I get the following error:
ImportError: DLL load failed.

So, whay can’t the DLL be found while it is installed and in the correct folder (as far as I can tell)?


Does RP supports multitexture? How do I setup TextureStage with RP? I have multiple texture stages of modulate, decal, normal and glow types.


Just in case you didn’t see it, I marked the method published, so you should be able to call the method from python.
In the experimental branch this handling is improved. The Wiki is related to this branch. With that changes, you only have to call invalidate_region with a bounding volume and all shadows in that bounding volume are queued for update.

The water was more or less experimental, and I don’t think I included it in the pipeline at that point. Same goes for the grass/forest stuff. Again, at some point I want to integrate that, too.

The dll is found, but fails to load. Make sure you installed it for the correct platform (32bit if using 32bit python for example).

The RP supports multiple textures. For example, have a look at the MaterialBlending example.


Thank you very much tobspr


Hey folks, found this thanks to this gamesfromscratch youtube video. He goes through the installation process of both the necessary Panda3D method & this pipeline! Got me up and running with little to no hiccups so I thought it might be of some help to others!

Thanks & keep up the amazing/good work!


I have a problem with PointLight shadows for dynamic objects. Each PointLight has 6 shadow sources. When I do invalidate shadows, some shadow sources are never updated. SpotLights are working fine.


Ok. I found out what the problem was. I was “invalidating shadows” every frame. But it updates only max_updates number of shadow sources. So I did increased max_updates and it’s works fine for now.


This art | at its best i would say…They are very attractive pieces done with the utmost precision…The car in particular caught my eye…wow need i mention the sunset on the snow filled mountains…Thumbs up man!