- Home /
ParticleSystemRenderer - Using one material with a myriad of particle textures as a sheet.
Hi there,
I've been asked to do a task on my new job :D I do not know very much about Unity and I'm struggling quite a bit with some concepts.
The game that we're doing has a LOT of particles systems (over 500), and because this, a lot of materials. When a lot of particles are spawned together the draw calls increases a lot and it hurts the performance.
So I think, why not create just one material with all this textures bundled in a atlas and use a sub rect of this atlas to set the "actual" texture in run time.
For example, today we have something like this:
[FireTexture] -> [FireMaterial] -> FireParticleSystem [With TextureSheetAnimation of 2x2] [IceTexture] -> [IceMaterial] -> IceParticleSystem [Without any TextureSheetAnimation] ... and so on...
What I want is:
[TextureAtlas] -> [AllParticlesMaterial] -> FireParticleSystem [With TextureSheetAnimation 2x2] [TextureAtlas] -> [AllParticlesMaterial] -> IceParticleSystem [Without any TextureSheetAnimation] .
... and so on...
This could be easier if all of our textures were of same size, but they don't. There are no pattern that we could identity (If a pattern could be found, we "only" need to adjust the curves settings)
So, there is a way to assign to a particle in runtime a region of it's materials texture? Something like: (It is just a pseudo code)
particle.texture = material.Texture.SubRegion(0, 0, 23, 42)
This will resolve all my problems ;D
Thanks in advance (and sorry for any english / unity mistake) Cheers!
Your answer
Follow this Question
Related Questions
How can I make particle textures rotate with parent? 0 Answers
How can I activate a particle on key press in C# 0 Answers
Get sprite id or grid x and y from particle on trigger. 0 Answers
3D Texture Atlas, need a rock solid tool 0 Answers
UpdateParticle system should not happen on disabled GO 4 Answers