I’m trying to set up a lit dust particle in a 2D game. I haven’t really worked with 3D before, so my understanding of lighting and the built-in shaders is limited.
So, this is my material setup. Pretty straightforward. For simplicity’s sake, I thought I’d use a Legacy particle shader, but note that I observed the same problem with the Particles/Standard Surface shader.
For testing purposes, I set the Particle System’s Start Color to (1,1,1,1), and I disabled Color Over Time.
This is how it looks in the game (cropped, because it’s a small particle system).
And this is my dust texture. This is the raw png, so it looks invisible on this page, but you can open it in a new tab.
As you can see, the particle appears more gray than white, even though the source texture is mostly white.
From what I understand, this happens because I’m using a lit shader - that’s what google tells me. But that still doesn’t make sense to me, because:
- For testing, the scene’s Ambient Color is currently set to (1,1,1,1), so the lighting shouldn’t really affect the sprites right now
- I use the Sprites/Diffuse shader on all my sprites. When the scene’s Ambient Color is set to white, these sprites appear exactly as they would with an unlit shader - they only change color if I change the Ambient Color
I know that there are a couple of workarounds, but they don’t work for me, because:
- I don’t want to use Additive blending, because it’s a dust particle. It looks too glowy with Additive. Alpha Blend makes more sense here.
- I still want the shader to be lit so that it will work in other situations in the game. In this particular case, I’m turning the scene’s Ambient Color way down as part of a puzzle; the scene turns mostly black, and you have to navigate by using some torches. I try to stick with lit shaders for the whole game so that effects like this can work out of the box.
- I can’t use the Emission property, because this will ignore the scene’s Ambient Color (and thus break the puzzle described above)
The only workaround I found was to use the standard shader and compensate for the grayness by turning up HDR intensity in the albedo, but that’s obviously not the correct or intended solution.
I mean, at the end of the day, I think the Sprites/Diffuse shader might do what I want, although I haven’t properly tested it yet.
Still, I must be fundamentally misunderstanding something about these built-in particle shaders, because I’ve had this issue many times in the past. The additive and unlit particle shaders work as expected, but I have never figured out how the lit + alpha blend ones are supposed to work. Whether Legacy or Standard or even custom, they always come out gray instead of white.