doomhack / GBADoom

A port of prBoom to the Nintendo GBA.
182 stars 25 forks source link

Sky Rendering Glitch #14

Closed nihirunoherr closed 3 years ago

nihirunoherr commented 3 years ago

It's more of a glitch with the map but in certain maps, You can see beyond the sky, I linked an image of it. image

doomhack commented 3 years ago

I believe this happens because the aspect ratio is slightly different. 120x128 pixel doubled in the X direction.

nihirunoherr commented 3 years ago

I believe this happens because the aspect ratio is slightly different. 120x128 pixel doubled in the X direction. This exact effect also happens in GZDoom, Even with classic 4:3 and 320x200. So it's definitely because of the map although the resolution may have something to do with it, It's also handled differently, The sky is just repeated in GZDoom. If we can't find a solution than here's my solution: Skies are stretched so in any map where this hasn't been discovered yet (Especially E1M1) This is impossible to see. Using SLADE 3, I extracted the sky for E1 and extended it from 256x128 to 512x256, Effectively doubling the resolution. It might sound bad but I'd like to be added to the contributor list for this, I'm working pretty hard to get a job in this field that's mostly a hobby of mine. The only con to simply stretching the sky texture is that this will slightly filter the texture, Although some think of it as a pro, Even Texture Filtering Fans would probably prefer no texture filtering over it being on one texture, It feels a little weird. SKY1

doomhack commented 3 years ago

Adding assets is not the easiest way to fix this.

There is already a scaling factor for the sky texture.

Changing:

static const fixed_t skyiscale = (FRACUNIT*200)/(SCREENHEIGHT-ST_HEIGHT);

to:

static const fixed_t skyiscale = (FRACUNIT*200)/((SCREENHEIGHT-ST_HEIGHT)+16);

Means that the texture will stretch down another 16px and so the wrap is no longer visible.

I think this is also an issue in vanilla Doom. I'm pretty sure I remember seeing this when I was kid!