Jump to content

[1.12.2] Rendering with Transparency Turns White


DavidM

Recommended Posts

I am using TESR to render liquid inside a tank as well as animated arrows (blue/orange) that indicate the input/output configuration of the tank.

Normally, the tank should look like this:

2019-04-06_16_48_29.png.fc100d9e3c4b64253040f5c876a1cf60.png

 

However, when I move to a certain angle, the liquid inside the tank losses transparency and becomes opaque, while the arrows turn to a lighter color:

2019-04-06_16_48_31.png.3cdc7f8b465d3f0c0c623aff5a839d3e.png

 

This is not desired.

How would I make it so that the arrows and the liquid in the tank stay the way they are as shown in the first picture regardless of the angle I am viewing them?

 

TESR: https://github.com/davidmaamoaix/CommunityMod/blob/master/src/main/java/com/mcmoddev/communitymod/davidm/extrarandomness/client/render/RenderCapacitor.java

AnimationHelper: https://github.com/davidmaamoaix/CommunityMod/blob/master/src/main/java/com/mcmoddev/communitymod/davidm/extrarandomness/core/helper/AnimationHelper.java

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

I believe this has to do with default lighting. Try putting

GlStateManager.disableLighting();

before rendering and

GlStateManager.enableLighting();

after rendering.

 

Might also have to do with blending (See GlStateManager)

Edited by deerangle
Link to comment
Share on other sites

You probably want blending not alpha testing. (Haven’t looked at your code, going off the title)

 

Also, DONT use GL directly (GL11.glColor) use GLStateManager

Edited by Cadiboo
  • Like 1
  • Thanks 1

About Me

Spoiler

My Discord - Cadiboo#8887

My WebsiteCadiboo.github.io

My ModsCadiboo.github.io/projects

My TutorialsCadiboo.github.io/tutorials

Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support.

When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible.

Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org

Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)

Link to comment
Share on other sites

1 hour ago, deerangle said:

I believe this has to do with default lighting. Try putting


GlStateManager.disableLighting();

before rendering and


GlStateManager.enableLighting();

after rendering.

 

Might also have to do with blending (See GlStateManager)

 

24 minutes ago, Cadiboo said:

You probably want blending not alpha testing. (Haven’t looked at your code, going off the title)

Thanks.

I did indeed disable lighting while enabled blending, and the result is shown in pic 2 (just realized that my wording of “alpha” in the title was inaccurate; I was referring to transparency in general).

I am suspecting that I missed setting an attribute at some point.

 

I just updated the repo and replaced GL11 with GlStateManager (I have no idea why I left it GL11).

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

When enabling blend you need to specify the blending function otherwise it will default to the last one used which may not be desireable(which is what is happening in you case).

 

Additionally it is better to set the GL states once before rendering everything and not everytime you need to render every quad.

 

		GlStateManager.pushMatrix();
		GlStateManager.translate(0, 0, 0);

Why? Why are you translating by 0,0,0? It does absolutely nothing. You do not need matrix interactions here at all.

 

 

  • Thanks 2
Link to comment
Share on other sites

The problem seems to no longer occurs after I changed GL11 to GlStateManager.

However, I am not sure whether that indeed was the fix to the problem; since the "turning white" only happens randomly, I cannot reproduce it intentionally and test it. The problem might just temporarily not appear for a period of time.

 

As far as I know, GlStateManager handles GLXX operations more smoothly and provides some *insert some advanced and cool nouns here that accurately describe what GlStateManager provides* that optimizes GL operations. I am not aware if GlStateManager can fix problems such as transparency problems though.

 

Currently fixing the blend function as V0idWa1k3r pointed out. Fixed.

 

21 minutes ago, V0idWa1k3r said:

Why are you translating by 0,0,0?

Oops. The translation was meant for something else earlier; it seems like I set the values to 0 instead of removing it. Thanks for pointing it out.

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

5 minutes ago, DavidM said:

As far as I know, GlStateManager handles GLXX operations more smoothly and provides some *insert some advanced and cool nouns here that accurately describe what GlStateManager provides* that optimizes GL operations. I am not aware if GlStateManager can fix problems such as transparency problems though.

 

The problem here is that the rest of the game uses GLStateManager to change GL states and GLStateManager has it's own copy of each state value. Thus if you change a value through OpenGL's direct API the state manager and thus the rest of the game won't know about it and still think the old one is used.

  • Like 1
Link to comment
Share on other sites

The issue is fixed (as far as I tested) after setting a blend function.

I just updated the repo.

Thanks for all your help.

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.