When our particles are blending towards 0 (fully transparent) they tend to cause discoloring of whatever is below them.
I.e. a brown dirt ground becomes kinda red-ish.
I looks a bit as if there is suddenly a lot of contrast on the dirt ground while the particles are fading. Once the particles have completely dissapeared the ground becomes normal color again.
On PC it doesn’t do this. It blends nicely without causing any discoloring of whatever is below them.
Is this something that is pretty ‘normal’ on the xbox (I.e. some sort of optimisation they did which has this as artifact)?
Or does this sound like we have some directX flag set incorrectly somewhere?
I haven’t seen anything of the sorts happen to my particles.
It would help to know more about your particles. Are you using billboards or meshes? How you are rendering them? Maybe additive/subtrative problems?
We have written our particles rendering through our own shaders and never experienced anything of the sorts. Even though I haven’t really seen much of the particle rendering code, I never had any problems with transparency.
We have our own particle system too, that renders via shaders.
(Though the particle system itself runs entirely on the CPU).
The particles are quad-meshes.
We then simply render a texture on them, i.e. dust particle.
Once the dust particle starts to fade towards 0.0, they start to color whatever is below them a bit.
I can’t imagine this is right, but what is wierd is that on PC the particles behave perfect. But on the 360, they do the color problem.
So it makes me think either the 360 does a cheap way of blending that has some visual side effects, or we are doing something not right on the 360 when it comes to either some directX flag or some texture compression or something.
There are differences with the Xbox GPU, making it unique eg. FP10 render target.
The first thing I would check is if a normal quad rendered in your engine does the same thing, then you can rule out problems with how your particle system works.
If they are different then I would compare them in Pix and you can see if the pixel has different states, if all the states are the same for blending etc. then it might be the shader or the constants it gets from the particle system
If they are the same (both quads)and there is nothing wrong with the blend states maybe its to do with gamma or the render target type and how your HDR is done.
Edit: As Ikruel says it could be worth checking texture compression, run them through uncompressed if possible.
You will always get weird colours out of DXT
Are you setting your material blend modes to multiply?
The other thing that I’ve seen happen with Unreal is that the artists can actually pipe in a float3 into the transparency, which on the PS3 will make the thing it’s transparenting against be the opposite color, I’d double check the shaders just for sanity sake.
Also check your textures to ensure they’re not getting compressed on the 360 export process so that when you think you’re fully transparent there’s actually still some darkness in them.
Lastly, are your fx on a separate render target or on the same? usually they’re put on a separate render target, make sure that target can’t have negative values, consoles like to throw up on negative values.