Hunternif Posted January 30, 2013 Posted January 30, 2013 The pixels of my custom particle (and probably every other particle in the game) are either opaque or completely transparent. Setting the value of particleAlpha on my custom EffectFX particle only seems to set a threshold, and pixels in the texture file with alpha below that threshold are not drawn, while all other pixels in the file are drawn with 100% alpha. How can I have semi-transparent pixels on a particle? Quote I made Moses Mod, Dota 2 Items Mod, Rings of Power and Antique Atlas.
Groxkiller Posted January 30, 2013 Posted January 30, 2013 use GL11.glColor4f(1.0F, 1.0F, 1.0F, alphaHere) just before rendering the particle, where 'alphaHere' is a float value between 0 and 1. (0 is fully transparent, 1 is opaque) Quote
Hunternif Posted January 30, 2013 Author Posted January 30, 2013 Thanks for the reply, Groxkiller! However, I tried that and it didn't work: that alpha value seems to work as a threshold as I have described in the initial post. Also, even if that did work, that would make all the pixels in the particle semi-transparent. I want to use the pixel alpha values directly from the texture PNG file, like it works with blocks. This seems to be a particle-only issue. Quote I made Moses Mod, Dota 2 Items Mod, Rings of Power and Antique Atlas.
Groxkiller Posted January 30, 2013 Posted January 30, 2013 Ok, I haven't checked with this, but one thing you can try is see how Slimes render the outer block of thier model (ie how it's transparent) and try to transplant it over to your particles. It's probably a series of openGL calls to turn transparency on. Quote
Hunternif Posted January 30, 2013 Author Posted January 30, 2013 Solved it! The GL_BLEND was simply turned off during the call to EntityFX.renderParticle(...); and before I was immediately disabling it after only having added vertices to the tessellator, before draw() was called on it. But now there must be some reason for the color blending to be disabled... I probably shouldn't be using the tessellator for this particle, since it enables blending for all particles that follow, which was disabled by default. But when I render it by direct calls to LWJGL, it works fine only on the first particle spawn, but on every next spawn the actual color (not the alpha) on my particle gets darker until it appears completely black, but with proper alpha. I wonder how to fix that. Quote I made Moses Mod, Dota 2 Items Mod, Rings of Power and Antique Atlas.
Hunternif Posted January 30, 2013 Author Posted January 30, 2013 Ok, I now understand that it's safe to enable blending. The Tessellator is reset for every Effect in the EffectRender.effectList, and I added my effect just there. This means that I interfere with no other object's rendering... probably... Quote I made Moses Mod, Dota 2 Items Mod, Rings of Power and Antique Atlas.
Groxkiller Posted January 30, 2013 Posted January 30, 2013 If your worried about it simply reverse what you did to get transparency working after you've called draw() ie if it's like GL11.glEnable(GL11.GL_BLEND); then after draw() just call the opposite: GL11.glDisable(GL11.GL_BLEND); Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.