Apologies for not replying sooner!
Regarding the graphics, we have two parts:
- first, each 3D model has two textures (dark / light), which were drawn by Tayteus. Dark textures have less details, and light textures got all the details. I then wrote a shader to lerp between the two textures depending on the light (ambiant light or the player’s flashlight). This is a standard URP unlit shader.
- second, I wrote a fullscreen shader that determines the color of each pixel based on its luminance value vs a threshold. Under this threshold, I output the *dark *color value, and over this threshold, I output the *light *color value. I created 4 different materials with this shader, one for each dimension. I then added a renderer pass to our URP settings, created a class that inherits from FullScreenPassRendererFeature to identify it easily in the rendererData, and when a change is triggered, I just assign the new material to the passMaterial property.