Author Topic: Fog Of War Transparency With Software  (Read 787 times)

Offline AGP

  • quad
  • ******
  • Posts: 1524
    • View Profile
Fog Of War Transparency With Software
« on: October 12, 2017, 03:02:14 am »
I''m writing a strategy game and can't seem to properly paint a transparent PNG on my fog (so that its edges are rounded). The logic for the texture placement is sound and has been tested. But all I get is solid black.

Code: [Select]
if (!TextureManager.getInstance().containsTexture("fog-top")) {
     TextureManager.getInstance().addTexture("fog-top", new Texture("Assets"+File.separator+"fog-top.png", true));
     TextureManager.getInstance().addTexture("fog-left", new Texture("Assets"+File.separator+"fog-left.png", true));
     TextureManager.getInstance().addTexture("fog-right", new Texture("Assets"+File.separator+"fog-right.png", true));
     TextureManager.getInstance().addTexture("fog-bottom", new Texture("Assets"+File.separator+"fog-bottom.png", true));
}

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 11769
    • View Profile
    • http://www.jpct.net
Re: Fog Of War Transparency With Software
« Reply #1 on: October 12, 2017, 07:46:52 am »
Then most likely your objects aren't rendered with transparency enabled or your textures' alpha channel is off.

Offline AGP

  • quad
  • ******
  • Posts: 1524
    • View Profile
Re: Fog Of War Transparency With Software
« Reply #2 on: October 12, 2017, 07:41:14 pm »
The textures are right. I set transparency to 0.

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 11769
    • View Profile
    • http://www.jpct.net
Re: Fog Of War Transparency With Software
« Reply #3 on: October 13, 2017, 10:16:57 am »
Can you upload such a texture for me to see?

Offline AGP

  • quad
  • ******
  • Posts: 1524
    • View Profile

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 11769
    • View Profile
    • http://www.jpct.net
Re: Fog Of War Transparency With Software
« Reply #5 on: October 13, 2017, 12:00:12 pm »
That texture has an alpha channel assigned to it that makes the white part transparent. I would guess that you actually want it the other way around?

Offline AGP

  • quad
  • ******
  • Posts: 1524
    • View Profile
Re: Fog Of War Transparency With Software
« Reply #6 on: October 13, 2017, 10:19:38 pm »
No, those are the edges of the fog of war. The fog is black, naturally.

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 11769
    • View Profile
    • http://www.jpct.net
Re: Fog Of War Transparency With Software
« Reply #7 on: October 14, 2017, 07:34:40 pm »
I can't see anything wrong with it nor with the rendering itself in my simple test case. Do you have a screen shot that shows the problem? Just to be sure that we are talking about the same thing here.

Offline AGP

  • quad
  • ******
  • Posts: 1524
    • View Profile

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 11769
    • View Profile
    • http://www.jpct.net
Re: Fog Of War Transparency With Software
« Reply #9 on: October 16, 2017, 11:59:08 am »
There quads don't seem to have any transparency applied to it. Alpha channel aside, they should be transparent anyway with a value of 0.

Offline AGP

  • quad
  • ******
  • Posts: 1524
    • View Profile
Re: Fog Of War Transparency With Software
« Reply #10 on: October 16, 2017, 10:21:38 pm »
They are set to 0.

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 11769
    • View Profile
    • http://www.jpct.net
Re: Fog Of War Transparency With Software
« Reply #11 on: October 17, 2017, 10:01:53 am »
Doesn't look like it. Do you have a test case?

Offline AGP

  • quad
  • ******
  • Posts: 1524
    • View Profile
Re: Fog Of War Transparency With Software
« Reply #12 on: October 19, 2017, 08:30:59 pm »
I wrote a simple test and transparency worked. So then I wrote the following method, and all I get are "End of printOddTransparencies()" prints. So now I'm stumped.

Code: [Select]
     public void printOddTransparencies(World theWorld) {
for (int y = 0; y < planes[0].length; y++)
     for (int x = 0; x < planes.length; x++)
if (theWorld.containsObject(planes[x][y]) && planes[x][y].getTransparency() != 0)
     System.out.println("Odd transparency at ("+x+", "+y+"): "+planes[x][y].getTransparency());
System.out.println("End of printOddTransparencies()");
     }

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 11769
    • View Profile
    • http://www.jpct.net
Re: Fog Of War Transparency With Software
« Reply #13 on: October 20, 2017, 09:54:39 am »
Maybe the texture itself hasn't been loaded properly? Albeit that doesn't explain why it's pitch black, but just to be sure...

Offline AGP

  • quad
  • ******
  • Posts: 1524
    • View Profile
Re: Fog Of War Transparency With Software
« Reply #14 on: October 20, 2017, 07:07:41 pm »
I tested both the application logic (by replacing them with solid-color textures) and the same loading line (TextureManager.getInstance().addTexture("fog-left.png", new Texture("Assets"+File.separator+"fog-left.png", true))). Could it be relative to the number of polygons, or the sheer scale of the world? Maybe force-sorting the transparency list would fix it. Because number of polygons and size of the world are the only two different things between my test and the actual game.