Manual on RenderPipeline

I am new to panda3d and this computer world, want to use the tobspr’s render pipeline ( GitHub - tobspr/RenderPipeline: Physically Based Shading and Deferred Rendering for the Panda3D game engine ) but there is no beginner-friendly explaination neither on the manual nor on the wiki of the repo. I request you to add some nice explaination to this RP
Thanks

2 Likes

Unfortunately tobspr’s render pipeline was never very well documented and it isn’t maintained anymore. I’d recommend using Complexpbr instead.

1 Like

Complexpbr isn’t as great as the tobspr’s pipeline but it will work for now, do you know any good source to learn glsl shader for p3d so I can fulfil my requirements as I like

The manual has a basic starting-point, including how one goes about applying shaders and inputs to shaders in one’s code:
https://docs.panda3d.org/1.10/python/programming/shaders/shader-basics#overview-of-shaders

If you then go on from there in the manual, you should find listings of available shader-inputs–and let me note that, despite the name, the “Cg Shader Inputs” are also available to GLSL, I believe.

After that, you might search the forums for various shader-snippets to examine and experiment with.

Beyond that point, I imagine that general GLSL tutorials should largely apply, and leave it to you to look those up! (As I don’t know any offhand.)

The complexpbr’s sample code (written in the readme) is throwing this error can anyone tell me:
Traceback (most recent call last):
File “c:\Users\Lenovo\Mombie challenge edtion\ursina editor\Editor\ok.py”, line 94, in
main().run()
^^^^^^
File “c:\Users\Lenovo\Mombie challenge edtion\ursina editor\Editor\ok.py”, line 18, in init
complexpbr.apply_shader(self.render)
File “c:\Users\Lenovo\Mombie challenge edtion\ursina editor\Editor\complexpbr_init_.py”, line 181, in apply_shader
complexpbr_rig_init(node, intensity=intensity, lut_fill=lut_fill)
File “c:\Users\Lenovo\Mombie challenge edtion\ursina editor\Editor\complexpbr_init_.py”, line 146, in complexpbr_rig_init
node.set_shader(base.complexpbr_shader)
TypeError: NodePath.set_shader() argument 1 must be Shader, not NoneType

also thanking Thaumaturge for the roadmap to learn glsl

1 Like

I haven’t seen that one before, but complexpbr does expect you to have started a ShowBase instance beforehand. Moreover, I recommend taking a look at my practical complexpbr demo program to get a feeling for what a more production-ready game might do with complexpbr.

It also produces the same error told earlier

@Simulan: Could it be related to the fact that IndividualCoder seems to be using Ursina? Might that be messing with the file-paths, or the working directory–thus causing the shader-file to not be found and “None” to be returned when loading the shader?

I am running the as it is and not even importing ursina. so how can it be messing with it?

Ah, I perhaps mis-inferred, then–I saw that your paths include “ursina editor/Editor”, and so gathered that you were working through Ursina.

Fair enough if not so!

All right, in that case let me ask:

Do you have the files “ibl_v.vert” and “ibl_f.frag”, and if so, where are they located relative to your main script?

Ah, the files were not in the dir of the arena.py I moved them and the program started but it was mostly black. I was just able to see the gun in the hand and it constantly printed (in the terminal of vs-code) this:
:display:gsg:glgsg(error): GL error 0x506 : invalid framebuffer operation
:display:gsg:glgsg(error): An OpenGL error has occurred. Set gl-debug #t in your PRC file to display more information.

BTW the panda3d community is very fast and very supportive

Sure, complexpbr at least is fairly new software, but I do test it on both Ubuntu and Windows with AMD and NVIDIA, integrated and dedicated graphics both. So when I see this kind of black screen stuff it is frankly pretty surprising to me, but I guess one can never cover every base when it comes to computer configs…

the screen is not ‘dark’ but the scene is pretty dark (can’t see anything except the texts, cursor and the gun) I guess this is becuse the lights can’t be rendered properly cause of my 4gb ram
I guess i need to upgrade

This is a very good source for writing shaders in panda. However, it uses C++, but I think this should not prevent you from using python.

1 Like

Yeah it’s pretty hard to replicate the shear amount of features the tobspr’s render pipeline has especially given how there aren’t a lot of resources out there on how some of the said features work. But Complexpbr is getting there at a good pace.

Along with 3d-game-shaders-for-beginners I’d recommend taking a look at:

https://paroj.github.io/gltut/

https://www.lighthouse3d.com/tutorials/glsl-12-tutorial/
They’re all very good resources and teach in different ways so it’s not a bad idea to take a peak at all of them and see if any of them have a teaching style that works for you. :grin:

2 Likes

Thanks guys for your support. I’ll start learning OpenGl today
Also one last question:
can panda3d’s networking be used to make WAN games?
These are the four classes told in the manual:
QueuedConnectionManager
QueuedConnectionListener
QueuedConnectionReader
ConnectionWriter
and if yes, is it safe and sure that my client will connect to the server I made, not to any other server

1 Like

I appreciate that. Feel free to file an Issue for a feature request – Issue 1 was a request for bloom which I was happy to implement within 24 hours. Not everything will be that fast of course. I am also kind of curious what other rendering features you’re looking for.

1 Like

As long as you use the correct IP Address and port forward it should work. :grinning:

@Simulan Once I wrap up some other more stylized projects I’m working on I’m planning on creating a more realistic project with a bunch of photogrammetry I have and I’ll see what features I feel are missing and let you know. :smile:

1 Like

can you please give an example code for both server and client.
Thank you in advance

The “networking” section of the manual seems to have example-code. See below:

https://docs.panda3d.org/1.10/python/programming/networking/