GZDoom 4.6.0 rendering of slope differs from UDB's rebdering

Wed Jun 23, 2021 3:34 pm

Hi!

I am not sure if it is bug or intended behavior. If it is bug I would like to see it fixed. When creating 3D floor slope by 3 points such that 2 point are below floor and one point is above floor then zdoom 4.6.0 (and 4.5.0 too) hides floor entirely but still renders walls.

Problem can be seen on following screenshot:

And here is the wad file:
bug_1.wad


When I lower entire surrounding floor by 8 such that more of 3d sloped floor is visible then zdoom renders it correctly

And wad file:
bug_2.wad

As can be seen from screenshot, doom renders wall longer than floor.

It looks like there is certain threshold from where rendering goes buggy. This also means that if I first create 3D floor slopes that are entirely above the floor and then raise the floor so that those 3D slopes partially shrink then some of those 3D slopes will "disappear". As a map maker I expect that when I raise floor below 3D slopes then the tip of iceberg stays visible as long as there is something that is above surrounding floor height.

This Also causes unexpected visual glitches in larger projects:


Where I am not able to make upward spiral that comes out of floor.
Wad:
bug.zip
You do not have the required permissions to view the files attached to this post.

Re: GZDoom 4.6.0 rendering of slope differs from UDB's rebde

Wed Jun 23, 2021 3:44 pm

The engine cannot handle any kind of intersecting planes. You will always get undefined behavior with that.

Re: GZDoom 4.6.0 rendering of slope differs from UDB's rebde

Wed Jun 23, 2021 4:34 pm

But seems like UDB can handle these. Isn't it possible to copy that behavior from UDB?

Also this is not entirely true. If intersecting plane raises a little bit steeper then it renders well already (as bug_2.wad demonstrates). Since it correctly handles steep raising planes I dont see why it cant be coded to handle not so steep raising slopes as well.

Re: GZDoom 4.6.0 rendering of slope differs from UDB's rebde

Wed Jun 23, 2021 5:43 pm

It's not. UDB is a level editor, GZDoom has a ton of moving parts at once.

Re: GZDoom 4.6.0 rendering of slope differs from UDB's rebde

Thu Jun 24, 2021 12:09 am

There's two reasons for this limitation:

1. To keep 3D floor checks in the playsim performant it is necessary to keep 3D floors strictly sorted by height. The sorting must be identical across the entire sector.
2. To render walls with 3D floors the same strict sorting is needed. Otherwise some costly plane splits had to be calculated.

Allowing 3D floors to intersect would seriously complicate their handling in the engine.
An editor does not need to concern itself with real time processing limitations.