Will we ever get particles that behave consistently in all lighting conditions?

Something like a standard particle shader if you will. With the release of Unity 5 there was so much talk about the standard shader and PBR and how everything would look consistent in all lighting conditions, but why were particles completely forgotten? They are used almost everywhere in every single game these days and a lot of the time they need to take scene lighting into account to look correct. Lately there has been a ton of great improvements to the particle system, but there’s still no way to have particles that look good in both dark and bright scenes?

I know there are assets like this one:

But if I buy an asset I can never share any work I make with it so that’s not really an option for me.

I’ve looked at the official roadmap and there doesn’t seem to be any mentions of anything like this in the foreseeable future, why is that? Is it really hard to do? I don’t need parallax sub surface normal mapped tessellated particles that cast and receive shadows and support an infinite amount of lights, I just need particles that don’t stick out like a sore thumb if I change the lighting in my scene. :confused:

Bright, emissive particles are fine because they ignore scene lighting by nature, but anything smoke or dust related you currently have to tailor to every single lighting condition in Unity, unless I’m missing something obvious. If you have a bullet impact effect you need to make a separate effect for shade and sunlight and you need to figure out how to tell if the effect is currently in shade or sunlight. And if you have any dynamic lighting or a day night transition in your game then you basically can’t use smoke or dust particles.

I’m asking because the issue just came up in a project I’m working on. I’m able to get something that looks passable using the vertex lit particle shader, but it doesn’t look good and it has many limitations. I know you can use the normal standard shader or any shader for particles, but then you lose the ability to set color, opacity etc. through the particle system which makes a lot of effects impossible to do. And I don’t have the skill necessary to make a shader like the ones in the above asset myself.

Edit: Side question: Is there a way to detect how well lit an object or vertex or whatnot in the game world is? I wrote a particle manager script that would darken the color of all my particle systems based on the time of day in my game, but then the particle effects would look completely wrong when there was a light source nearby and it was the middle of the night. But if I was able to detect how well lit the particle system was dynamically I could adjust the color accordingly. Seems like a pretty major hack to work around the lack of a suitable particle shader, but I only care about the result, the road that lead there doesn’t matter. :stuck_out_tongue:

1 Like

Well, would you look at that: https://forum.unity3d.com/threads/release-standard-particle-shader.461938/

Seems almost too convenient that this popped up just a few weeks before I asked when this is something I’ve been asking about for years. I’m sure someone put it there just now and changed the date. :stuck_out_tongue:

3 Likes