Deferred Pipeline w/ Physically Based Shading


wow, really an amazing project!

Unfortunately, i need some help with compilation on windows.
running your setup script gives me following error:

Process error:
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:5 (project):
  No CMAKE_C_COMPILER could be found.

CMake Error at CMakeLists.txt:5 (project):
  No CMAKE_CXX_COMPILER could be found.

-- Configuring incomplete, errors occurred!
See also "D:/piton/renderpipeline/RenderPipeline/Code/Native/win_amd64_py27/CMakeFiles/CMakeError.log".

In cmakelog, the linker seems to be complaining that “kernel32.lib” could not be opened.
Im using VS Build Tools 2015.

So, what did I do wrong here?
As far as i got it, cmake did not recognise the compiler, but in cmakelog, it actually mentiones a linker, so it actually found a compiler???
please help

EDIT: just read previous post, i now understand that the linker is somehow not correctly configured.
But how do i tell cmake to use msbuild tools 2015,
or do i have to install the hole visual studio? (I succesfully compiled panda3d using msbuild, so it is really strange)


Hm, well I don’t think building using VS 2015 (or the tools for it?) is officially supported right now. However you can try it, by telling cmake which generator to use. You can do so by editing Code/Native/config.ini and changing the value of vc_version. (Its the equivalent to the -G option of cmake). I believe you want Visual Studio 14 2015 64bit then.


finally managed to compile the library! (I kinda messed up with windows comilers, And still have no Idea what i did wrong :blush: )
Samples look really great; i will base my game on this :slight_smile:

Could you give me some example code for terrain rendering?
I’m especially curios about the LOD system; does it use tesselation?


For the terrain I have a seperate repository here:
There is also some example code in there, however, notice that the shader code is a bit outdated,
and might not run with the latest pipeline version. I will try to fix it tomorrow.

Updated the terrain, you will have to provide your own heightmap and flow-map to be able to use it, though.


running the “” sample, I got the following error:

in self.graphicsEngine.renderFrame():
AssertionError: image_ptr >= orig_image_ptr && image_ptr + view_size <= orig_image_ptr + tex->get_ra
m_mipmap_image_size(n) at line 11789 of d:\piton\panda_compile\panda3d-master\panda3d-master\panda\s

What did I do wrong here?
Are there any special requirements for the source images (heightmap etc.)?
btw, what program did you use for creating the flow map?


Well your heightmap should be 8192 (otherwise change the resolution in the main file), and in 16 Bit format. For the flowmap, you can choose the program of your choice.
You can have a look at WorldMachine, but it only supports heightmaps up to a resolution of 512. You can upscale it later on, though.


thats strange, as my heightmap is 16 bit png, sized 8192*8192. Does the flowmap need to be in the same format?

just found out that the problem were the material textures, some of them seemingly dont have a alpha channel.
if i comment out line 140 in,
now, no crash occurs

So, i assume the textures require an alpha channel
What is the purpose of the alpha channel?


Ah well, this is still required from an older version which had packed data in the alpha channel. Its fine to remove it tho, I think.
About the material textures, you will need a diffuse texture for every material, and a normal texture, whereas the normal texture is a regular
normal texture (see the render pipeline wiki).
Most likely you want to stick to the materials I used, otherwise you will have to modify the terrain effect (Effects/Terrain.yaml) to match your material distribution.

As you might have seen the terrain is a bit undocumented, because I didn’t get to it yet. I will see if I find some time writing some documentation about it, but I’m not sure when that will be.


I try to use your library without compile modules, but I have error: AttributeError: ‘TagStateManager’ object has no attribute ‘register_voxelize_camera’
Using python 3.5 and devel version of panda (Panda3D-SDK-1.10.0pre-41fad59-py3.5-x64)
Need I use another python/panda version or I need to compile modules?

And thanks for great work )


Ah well thats my fault, I will fix it soon

EDIT: Should be fixed now



Started to implement VXGI, those are experimental screenshots:

Full res:


This is a smaller update. I have been working a lot on the pipeline internals, which is why I didn’t post much screenshots.
I rewrote the plugin system, and did some further internal changes to make using the pipeline even easier than before.

I recently started to implement (experimental) support for environment maps, too:

Full res:

Besides of that, I also added support for FXAA (although I don’t recommend to use it, since SMAA is superior).


Sounds like it is starting to stabilize for use in more serious projects? Is there some help document somewhere to guide someone in porting a normal Panda3D game to your render pipeline?

Keep up the great work!


Well yeah, I put a lot of effort into making the pipeline more stable.

Porting a normal Panda3D game to the render pipeline is actually quite straightforward - remove all of your old postprocessing (if present), and then load the render pipeline like that: Sample - Loading the pipeline

The biggest effort is probably changing your models to use physically based shading. There is a section in the wiki for it: Exporting from Blender

I do recommend using the bam exporter for everything except animations. It provides a seperate panel in Blender to adjust the PBS properties.


The pipeline can now handle up to 341 environment probes (given your GPU has enough VRAM).

Here is some car, testing environment probes (Full Res)


Hi everyone, i have a noob question i have the pipeline in a RenderPipeline folder inside my “main” files, now for me to use your pipeline where does my game sources should be? i have tried running the Roaming Ralph example but i have compile errors tanks very much, ive run the and installed ok the pipeline with all its samples


Your sources can be wherever you want, most likely you want to use your own file which loads the pipeline.

Since you already compiled the pipeline (successfully?), most likely you are getting runtime errors.
Could you maybe pastebin the errors you get?


Ok thanks now i understand right now im at work so i cant show you my errors and sadly i dont work as a programmer i plan to comtribute with your proyect in the future and if it is possible also with a donation, thanks for that quick reply and sorry if my English is not good im from Mexico


Yes thanks ill do that later at home :smiley:


One last thing in order to create terrains or landscapes which is the RenderPipeline approach? it uses heightmaps? i have been searching for the answer but had no luck…