How can I make my particle effects look less.... Blocky?

The Sky bucket causes objects to be infinitely far away - Combined with the fog filter, this causes the sky to be overwritten.

Which is probably why I should use vertex fog, but I’d prefer to avoid that at the moment.

What I don’t understand, is why the sky is being rendered last in the translucent bucket. If I rendered the sky first, I would guess that the particle effects would be able to render on top of it.

The sky dome is in the center - thus closest to the camera that it can possibly be. That means that when sorting it is rendered last (I think - at least for transparent bucket).

Well … things are getting complicated, especially since you are doing things a little bit different than the standard. I don’t think that I can help much … others might be more helpful now. Sorry for that.

1 Like

Alright, thanks for the advice. Should’ve listened to @pspeed and implemented vertex fog. Perhaps I will at some point.

Simplest solution is for me to simply keep the effect within the engine, so that it always has a black background. Thank you everybody for the advice, and I will be implementing vertex fog soon, so that I can stop using the FogFilter, and hence stop having to use the translucent bucket for the sky.

Not technically solved, but for now I’ll just work around it. It’s a shame I can’t make the particles render last in the translucent bucket, but it looks like that just isn’t possible.

You may use AlphaDiscardThreshold set to more than 0 in material editor. it will remove the black parts without making other parts transparent. It is available in Unshaded.j3md not Particle.j3md.

1 Like

Od you could just, you know…use a .png image with an alpha channel? I never had any problems with the z buffer or the fogfilter that way (using the default fog filter). And you can use the black color in particles too.

	ParticleEmitter emitter = new ParticleEmitter("Emitter", ParticleMesh.Type.Triangle, 60);
	Material mat = new Material(CPU.game.getAssetManager(),"Common/MatDefs/Misc/Particle.j3md");
	mat.setTexture("Texture",yourtransparenttexture);
	mat.getAdditionalRenderState().setDepthTest(true);
	emitter.setMaterial(mat);
	emitter.setQueueBucket(Bucket.Translucent);
1 Like

I’m confused as to why people keep presuming the texture I’m using is not transparent. The texture I’m using does have transparency, and I am able to discard the pixels with a low alpha value.

I’ve enabled depth writing and depth testing for the Skybox, and depth testing for the particles, but the Skybox still renders after the particles, causing the particles to become invisible. I don’t believe there’s any solution for that.

Ah, so the shaders do a discard; if the alpha value is below the threshold. I was wondering where that was and was hoping I wouldn’t have to code any custom shaders for it. Thanks.

Edit: Looks like I can solve the “white” issue by using particles without transparency. Thanks again.

Alpha or Additive,
Blendmode.Alpha usually together with Bucket.Transparent or Bucket.Translucent,
Blendmode.Additive usually together with Bucket.Translucent (but I try to avoid Additve).

1 Like

Since I did not reply to that specific question yet:

Don’t know exactly but - maybe use a custom HDR rendering - or use the standard glow + BloomFilter.

I believe there is one. Render the skybox first? :stuck_out_tongue:

How? Both are in the translucent bucket, and there is no easy way for me to change that. How do I select one object to be rendered first?

See there is a thing called a Z buffer… also why would you put the skybox in the translucent bucket again?

I’m interested: What’s the official name for it? The “depth buffer”, or the “Z buffer”? Or are they just interchange-able?

Yes, you’re correct, enabling DepthWrite actually does solve the issue. The only problem is that then all the particles come out looking like “a lot of particles”, rather than “a stream out of a jet engine”.

There is a way to write a custom comparison, that changes the order of rendering*.
Problem with white background and yellow particles remains when using Additive.
When using Blendmode.Alpha it should be possible.

'* => GeometryComparator is what I mean:
https://javadoc.jmonkeyengine.org/com/jme3/renderer/queue/RenderQueue.html#setGeometryComparator(com.jme3.renderer.queue.RenderQueue.Bucket,%20com.jme3.renderer.queue.GeometryComparator)

It seems to be interchangable.

Hmm, then make the exaust texture have a gradient like so maybe:

I assume you’ve already tried BlendMode AlphaAdditive right?

1 Like

If I use any blending modes, the trail disappears on any light backgrounds, causing the trail to disappear when going over white mountains, or when in front of fog. For this reason, I’m currently using no blending at all.

I’ve tried AlphaAdditive, and it has the same problem: It disappears in front of white stuff.

Alright, then leave it at Blendmode.Alpha and try that gradient.

As a side note, jet engine exaust can be made in a different fashion with a cone mesh that has an animated texture. Then you scale the cone’s length to show different thrust levels.
For example:
http://www.halfgaar.net/media/jetengine-final
or

Funny enough, real jets seem to have pink exaust:

2 Likes

Yes, and they sometimes look like “cheap particle systems” in real life too. :chimpanzee_wink:
Maybe I find a picture for what I mean…

Here’s how others fake it:
http://forum.unity3d.com/attachments/jet-exhaust-jpg.111267/

Hah, using circles for shock diamonds, that’s a neat idea. I tried that for laser bolts once though, it turned out like shit haha

…and the exhaust is nearly invisible over things like white mountains.

I think OP is going for a ‘video game’ effect rather than real life.

…sort of like all of those medieval first-person RPGs with lens flare.

1 Like