#Help needed with custom rendering on Godot 4. Is it possible to implement my own rendering pipeline?

14 messages · Page 1 of 1 (latest)

gritty glade
#

I started with godot about a year ago, but got back to Unity due to some things bothering me, specially with C# support on Godot.
Most, if not all of those problems seem to have been fixed on Godot 4 so i'm really considering coming back to it.

However, in the mean time i've found this: https://youtu.be/ZsMHY4LDyRE about rendering 3d objects as pixel art and following catlikecoding tutorials for Unity i've made a good progress on making my own rendering pipeline to achieve such effects. The only thing stopping me now from switching to godot(again '-') is being able to keep working on my own renderer on the engine.
I've seen a RenderingServer and RenderingDevice on the Godot API and they seem to do what i need but there's no usage examples on them so i'm not really sure what they're capable of and how would i do anything with them and also, the API on the RenderingServer states that it is "completely opaque" so i wouldn't even be able to customize it.

Also, I've seen some people on reddit say that with the Godot 4 API, a custom rendering pipeline should be possible, but there's no documentation for it. Can anyone help me understand the current state of this part of the engine?

Date of Recording: 2021-01-22

It's been a while since the last update from before the holidays. Several things have been in the works, including a fairly involved procedural terrain generator that deserves its own explanation video some day. Here we are showing off the improvement to the main pixel art shader including light-aware edge colorati...

▶ Play video
shadow junco
gritty glade
#

This is a great start and i've tweaked it a bit already for more satisfying results

But i still need more info on Godot shaders.
Some that come to my mind right now are:

  • Get directional, point and spot light information on shaders so i can implement my own lighting

  • Customize Shadow Sampling and/or custom render passes (i might need to defer sampling shadows to a later stage or add a new rendering pass for some objects. Still figuring some thing out)

  • Custom light sources and particle lighting

  • Custom post processings(the repo you linked is already a starting point for that, but better documentation would be great)

  • Edit scene view rendering. I will need custom tools and be able to preview some things

shadow junco
#

I've made my own implementation, looks like this :D

shadow junco
#

If you can fit all information within these 24 bits you can add all kinds of custom effects, including custom shadow and light processing

gritty glade
#

do you have resources to get started with it?

shadow junco
#

Im quite new myself, I've only began using the engine. The best resource by far is docs.godotengine.org, and if you want to take a closer look at the rendering function I recommend looking at the render server in the source code. Almost all C++ methods are accessible via gdscript, allowing you to interface with the lower layers directly.

#

Any form of multistage pipeline will use either of the following to apply effects: the material nextPass feature (allows you to run a second shader pass), full screen quads with low rendering priority that read screen space data, or subviewports

#

If there is any specific effect you would like to archive, feel free to tell me and Ill see how it could be implemented

gaunt dawn
#

@shadow junco - I've been following this shader (and other outline shaders in general) and I would love to see how this one could be modified to work the same, but without the pixel style processing. Something more crisp. My project is going for a very illustrative/cartoony style and we're hoping to find a shader/post-processing solution that gives us crisp, modifiable outlines at the outer edges and especially where meshes intersect one another.

#

Being able to also tune the minimum normal angle threshold that should produce an intersection/outer outline would also be awesome.

#

(Since we don't want outlines at really shallow/obtuse angles)