Commit graph

314 commits

Author SHA1 Message Date
Christoph Oelckers
291726cc55 - removed the Polymost renderer. 2022-08-03 15:50:27 +02:00
Christoph Oelckers
7debab7ff4 - refined wall sprite check so that orthogonally aligned sprites are only aligned to orthogonal walls.
Here even the slightest deviation can create problems.
2022-08-03 14:13:42 +02:00
Christoph Oelckers
6591b3b090 - Backend update from GZDoom.
Mainly new features for 2D drawer and model renderer.
2022-07-23 12:05:27 +02:00
Christoph Oelckers
390cd2ca98 - fixed rendering of non-orthogonal wall sprites.
These cannot be done in a simple two-pass approach, for wall sprites attached to walls it requires doing the two passes per wall to ensure proper depth buffer coverage.
2022-07-04 09:11:24 +02:00
Christoph Oelckers
9e6fe2cbaa - added workaround to render the crane in WT's 'Docks' map correctly.
This one violates engine specifications by creating overlapping walls when the crane is rotated.
2022-06-26 09:36:01 +02:00
Christoph Oelckers
e86899ed31 - fixed sky panning.
This picked the wrong overload - to make things robust one of the functions was renamed.
2022-06-06 10:12:26 +02:00
Christoph Oelckers
f245a70883 - removed redundant setting of black shadow color with incorrect data check.
SetLightAndFog already does this, but with correct checks.
2022-05-30 23:05:37 +02:00
Christoph Oelckers
bd023b0b1c - fixed wall sprite clipping 2022-05-30 00:19:32 +02:00
Christoph Oelckers
4278f0113b - function for checking wall sprites’ need for recalculation
Preparation for overhauling their rendering
2022-05-24 00:10:36 +02:00
Christoph Oelckers
380864d6fb - pass shade values to sky renderer 2022-04-19 14:44:10 +02:00
Christoph Oelckers
cc6629a95f - do not call tileUpdatePicnum for voxelized tsprites. 2022-02-20 23:36:04 +01:00
Christoph Oelckers
a1339f014c - store indices in sectionsPerSector. 2022-02-20 23:11:04 +01:00
Christoph Oelckers
f1859c69f0 - fixed bad assumption about g_visibility == 0 meaning fullbright.
This merely means that there should be no fog, but the shade must still be applied.
2022-02-19 11:30:35 +01:00
Christoph Oelckers
71943abed0 - changed math utilities to floating point coordinate system. 2022-02-15 22:18:26 +01:00
Christoph Oelckers
4e2a9f6e59 - use float wall positions in portal code. 2022-02-15 22:18:26 +01:00
Christoph Oelckers
a781517780 - renamed PlanesAtPointf to PlanesAtPoint
The old PlanesAtPoint is not needed anymore.
2022-02-15 22:18:24 +01:00
Christoph Oelckers
bd95da423a - use PlanesAtPointf in most places where PlanesAtPoint was used. 2022-02-15 22:18:24 +01:00
Christoph Oelckers
02d508baef - renamed floatified wall coordinate to 'pos'. 2022-02-15 22:18:24 +01:00
Christoph Oelckers
cd55658786 - use floats for vertices. 2022-02-15 22:18:23 +01:00
Christoph Oelckers
f44736a5b6 -use an access function for reading wall positions so that we have a non-modifiable value wherever this is possible. 2022-02-15 22:18:23 +01:00
Christoph Oelckers
89ef81da55 - renamed walltype::pos as preparation for refactoring.
no functional changes here
2022-02-15 22:18:22 +01:00
Christoph Oelckers
dab1f7fcec - handle walls where a sloped floor intersects with the visible part. 2022-01-30 08:54:11 +01:00
Christoph Oelckers
11b21cce2c - handle wall sprites on orthogonal walls better.
This covers the case that a wall sprite may overlap two walls with a slight deviation in their position - always pick the closest one.
2022-01-30 08:28:52 +01:00
Christoph Oelckers
686a648aa1 - fixed inverted logic when checking for dragged sectors. 2022-01-29 09:59:29 +01:00
Christoph Oelckers
04a380ce14 - added script exports for DCoreActor's member variables. 2022-01-24 00:24:46 +01:00
Christoph Oelckers
0398ba4ff0 - added all parts needed to implement the actor property parser.
Not hooked up yet with the rest of the code, this just adds the needed files in compilable form.
2022-01-23 13:03:39 +01:00
Christoph Oelckers
3aff12cf4c - sky management rework. 2022-01-16 12:12:43 +01:00
Christoph Oelckers
e2061dbcc6 - fixed bad wall array access when handling a sector that got split up. 2022-01-14 22:56:00 +01:00
Christoph Oelckers
7b1d99373b - fixed last commit and optimized wall lookup code a bit.
No need to continue if a matching wall has been found.
2022-01-14 20:20:47 +01:00
Christoph Oelckers
ef711f0b2d - allow a bit of tolerance for attached orthogonal wall sprites.
We have to account for mappers adding some 'safe' distance (which isn't really safe!)
2022-01-14 16:27:24 +01:00
Christoph Oelckers
8281374551 - do not use floor sprites for splitting geometry.
This is way too expensive on maps with lots of sprites. Instead, run them through the case for slope sprites which should be sufficient here
Also let rendered_* count the actual draw calls, not processed objects, because that is the most relevant metric for checking performance issues.
2022-01-14 00:49:57 +01:00
Christoph Oelckers
899ced50aa - moved alpha threshold determination for sprites to the setup pass.
Overall this is not much, but it can be easily offloaded to a worker thread later.
2022-01-14 00:19:26 +01:00
Christoph Oelckers
37e7f92182 - made a few changes to the timer calls for renderer profiling.
A few items were counted double, other were in the wrong slot.
2022-01-14 00:15:33 +01:00
Christoph Oelckers
9375750a17 - added sorting for wall sprites attached to non-orthogonal walls. 2022-01-13 20:55:55 +01:00
Christoph Oelckers
8d84bc2599 - disable window clipping entirely in outside areas.
This is a first grade performance killer on large maps and doesn't offer much in clipping robustness.
On maps like Clear the Coast or Wpudrichem omitting this check reduces map traversal time by 40%.
2022-01-13 19:46:04 +01:00
Christoph Oelckers
8976813fe1 - removed some overlooked debug code. 2022-01-13 13:14:00 +01:00
Christoph Oelckers
fcf04a7df1 - delete unused variable. 2022-01-13 12:27:40 +01:00
Christoph Oelckers
85cce1128a - do proper handling of the 'no shadow' case for Duke's bad guys.
Using a flag like RedNukem instead of hacking dispicnum, which occasionally does reach the renderer and causes problems.
2022-01-13 00:42:34 +01:00
Christoph Oelckers
1b162ececc - do not add two-sided walls outside of the visible range to the clipper
This caused a render glitch in Duke E4L2.
2022-01-13 00:04:32 +01:00
Christoph Oelckers
22afc25046 - fixed floor sprite normals. 2022-01-13 00:04:14 +01:00
Christoph Oelckers
f09bbb8b5e - fixed the normals for sloped planes. 2022-01-12 16:02:45 +01:00
Christoph Oelckers
e5dad53f6d - menu entries for light modes, plus handling of overbright shades. 2022-01-11 00:19:15 +01:00
Christoph Oelckers
aa0e558af2 - use different fade ramps for 64 and 32 shades.
Also some optimization to eliminate redundant calculations of the fade strength.
2022-01-11 00:18:20 +01:00
Christoph Oelckers
07eeb147ab - tweaked light mode for weapon lighting and avoiding getting too dark. 2022-01-11 00:16:43 +01:00
Christoph Oelckers
aa7af0711a - fine tuning of the new light modes. 2022-01-11 00:13:31 +01:00
Christoph Oelckers
26223ffca2 - experimental new light mode, based on GZDoom's original light modes. 2022-01-11 00:12:50 +01:00
Christoph Oelckers
98c919fbe4 - g_visibility stuff 2022-01-11 00:12:32 +01:00
Christoph Oelckers
ddcee4ecbf - split up g_visibility into two variables.
This is preparation for experimenting with the weapon flashes that can be quite annoying with how they brighten distant parts of the level far more than nearby parts.
2022-01-11 00:12:32 +01:00
Christoph Oelckers
91d51d518b - this hack is needed because dragging vertices around can randomly create wall intersection.
In clear English: Geometry in Build maps is always broken by design. :(
2022-01-09 20:38:07 +01:00
Christoph Oelckers
a0e6ee0e2e - added a bit more logic to handle overlapping walls.
All this is needed to make the back door to the cinema in Duke E1L1 render properly without making the clipper break on complex overlapping sector setups, like some of the ducts in Duke E2L7.
2022-01-09 12:05:36 +01:00