Hi guys, glad to see you are all still here and keeping busy.
I have taken about a year off working on my project. I was hoping that in that time progress has been made on the shadow maps to make them natural and easy to use. But I don’t see anything about them since my last query in 2025.
I am going to dive back in to getting roads and traffic to work efficiently. I always get hung up on the best way to store the network of road data (intersections with their connecting segments that can be straight or curved).
I’ve spent a fair amount of time trying to get physical shadowing working - including transmission, since glass should cast some form of shadow as well. Conceptually the pipeline is straightforward, and CGE already exposes few useful components: a custom camera could capture the required buffers, and the per‑light object lists provide a natural entry point for a semi‑clustered shading approach.
In practice, though, I often felt like I was working against the engine rather than extending it. CGE has many strong areas, but when you’re on a tight schedule, navigating the internals becomes difficult enough that the implementation effort outweighs the benefit. At some point I had to pause the attempt.
For my warehouse management app I’m still using shadow volumes. For example, animated shutters have an invisible shadow proxy whose size changes with the shutter height. It works, but it’s a hack, taking advantage of the fact that shadow volumes ignore alpha, but it doesn’t solve the bigger issue of lamp lights leaking through geometry.
I know I may sound blunt, but that’s simply my personal experience with CGE. Shadows and non‑leaking lights are no longer optional - they define whether a game looks modern or not. CGE is very flexible and runs on everything from desktops to web targets, but I hope that at some point the engine will also support modern game graphics more directly.
I agree with everything here. Lack of proper shadow maps is a big problem for modern engine. Let me finish my current stuff in-progress (1. KHR_node_visibility, 2. mouse look on web (on branch new-pointer-lock ), 3. something cool for Delphi ) and as a next thing → look to finally deal with shadow maps.