How to create a shader-based flashlight effect on 3D Gaussian Splatting (.sog)?

Hi everyone!

I’m working on a first-person game in PlayCanvas and I’m trying to implement a flashlight effect. The idea is to have the light follow the player’s view, appearing as a lit circle in the center of the screen while the rest of the environment remains dark.

However, I’ve run into a technical roadblock:

  • My game map is a 3D Gaussian Splatting file (.sog).

  • Since Gaussian Splats are rendered using custom unlit shaders, they do not react to standard PlayCanvas lights (like SpotLights or PointLights).

Because of this, I believe a custom shader or a post-processing effect might be the way to go.

My questions for the community:

  1. Is it possible to use a custom shader (or modify the existing splat shader) to darken the .sog map and dynamically illuminate only the area in the center of the player’s screen?

  2. Would a screen-space post-processing effect (like a dynamic vignette/mask centered on the screen) be a better approach for this? If so, how can I implement it?

  3. If anyone has worked with lighting/shadows on Gaussian Splats in PlayCanvas before, could you point me in the right direction or share a code snippet?

Any advice, API suggestions, or examples would be highly appreciated!

Thanks in advance!

Please check out multiple examples here on some options that are possible:
https://playcanvas.com/examples/#/gaussian-splatting/relighting

Thank you so much