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:
-
Is it possible to use a custom shader (or modify the existing splat shader) to darken the
.sogmap and dynamically illuminate only the area in the center of the player’s screen? -
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?
-
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!