Christoph Oelckers
f5e6503b26
- merge NearestPointLine into NearestPointOnWall
2022-10-22 12:16:57 +02:00
Christoph Oelckers
c44fd07f37
- floatified the portal displacement
2022-10-22 12:16:57 +02:00
Christoph Oelckers
c87b4a581b
- got rid of the WallStart/End macros
...
They never got much use and the places where they were used work just as well without them
2022-10-22 12:16:56 +02:00
Christoph Oelckers
cbfc9a8252
- added spriteGetZOfSlopeF for the backend
2022-10-22 12:16:56 +02:00
Christoph Oelckers
ab23f6b114
- floatify clipangle math in HWLineToLinePortal::Setup
2022-10-22 12:16:56 +02:00
Christoph Oelckers
375d346ae8
- pass a vector to the processSprites interface.
2022-10-22 12:16:56 +02:00
Christoph Oelckers
bbf77c908b
- pass a floating point view position to the bunch drawer
2022-10-22 12:16:56 +02:00
Christoph Oelckers
1111251887
type safe CVAR declaration.
2022-10-22 09:25:27 +02:00
Christoph Oelckers
5eb9af1e00
- Backend update from GZDoom
...
IQM model support and a few bugfixes.
2022-10-20 22:24:25 +02:00
Christoph Oelckers
5efc032a4c
- increase angular threshold for aligning wall sprites.
...
With full precision angles the old threshold is simply too low.
2022-10-16 10:59:04 +02:00
Christoph Oelckers
9d1edf9cc5
- clean up angle math in wall drawer.
2022-10-16 10:59:04 +02:00
Mitchell Richters
3019f9effc
- Floatify smoothratio
for GameInterface::processSprites()
.
...
* Exhumed is now completely free of any Q16.16 interpolation scaling.
2022-10-15 13:32:03 +02:00
Christoph Oelckers
6ce01e24d2
- renamed walltype::delta and walltype::center
2022-10-13 22:54:42 +02:00
Christoph Oelckers
ad648676b1
- floatified SPREXT_AWAY handler
2022-10-13 19:59:16 +02:00
Christoph Oelckers
7a45738d7e
- avoid integer math for wall sprites.
2022-10-10 17:37:18 +02:00
Christoph Oelckers
c59e4f8a10
- floatified sprext.position_offset
2022-10-10 17:37:17 +02:00
Christoph Oelckers
2954603573
- got rid of integer vector math in hw_bunchdrawer.cpp
2022-10-10 17:37:17 +02:00
Christoph Oelckers
209867e036
- cleaned out some unnecessary inlines.
2022-10-09 22:00:43 +02:00
Christoph Oelckers
7873fd7c3c
- int_floorz/int_ceilingz in the renderer.
2022-10-09 08:21:52 +02:00
Christoph Oelckers
b9d0c9d6ba
- simplified slope sprite code a bit and got rid of clipinsidebox overload.
2022-10-05 18:29:30 +02:00
Christoph Oelckers
91f305125e
- floatified GetWallSpritePosition and redirected get_wallspr_points to use it.
2022-10-05 18:29:04 +02:00
Christoph Oelckers
c712d594e0
- fully floatified GetFlatSpritePosition
2022-10-05 18:29:03 +02:00
Mitchell Richters
3de1d2156d
- Rename binaryangle.h
to fixedhorizon.h
and sanitise places where previous header was included.
2022-10-05 00:36:31 +02:00
Mitchell Richters
951734beae
- Eliminate last remaining uses of binangle
and the class itself.
...
* https://www.youtube.com/watch?v=RgKAFK5djSk
2022-10-05 00:36:29 +02:00
Mitchell Richters
c25493762b
- Eliminate bvectangbam()
.
2022-10-05 00:36:28 +02:00
Mitchell Richters
4f56138027
- Change all remaining BunchDrawer
properties from binangle
to angle_t
types.
2022-10-05 00:36:25 +02:00
Mitchell Richters
e6fe9b7031
- Change all binangle
members in Clipper
struct to angle_t
.
2022-10-05 00:36:25 +02:00
Mitchell Richters
914930ff9a
- Change BunchDrawer::ang1
, BunchDrawer::ang2
and BunchDrawer::angrange
from binangle
to angle_t
.
2022-10-05 00:36:25 +02:00
Mitchell Richters
e17d24ce0b
- Change FBunch::startangle
and FBunch::endangle
from binangle
to angle_t
.
2022-10-05 00:36:25 +02:00
Mitchell Richters
36d76a71ea
- Change walltype::clipangle
from binangle
to angle_t
.
2022-10-05 00:36:25 +02:00
Mitchell Richters
d3022947eb
- Replace use of binangle
in gi->processSprites()
with DAngle
object.
2022-10-05 00:36:24 +02:00
Christoph Oelckers
c2f4fa8bb5
- more angles
2022-10-04 23:56:44 +02:00
Christoph Oelckers
f54e4b8a9a
- more int_ang()
2022-10-04 23:56:43 +02:00
Christoph Oelckers
33d5b54ce0
- use int_ang().
2022-10-04 23:56:43 +02:00
Christoph Oelckers
735b9a8fed
- renamed ang to __int_angle
2022-10-04 23:56:42 +02:00
Christoph Oelckers
06b8a9139e
- handle most int_pos calls in common code.
2022-10-04 18:44:17 +02:00
Christoph Oelckers
a59a771209
- use floats for ceilingz/floorz storage.
2022-08-27 10:49:59 +02:00
Christoph Oelckers
c84d75b8bf
- use inline access functions to read floorz/ceilingz.
2022-08-27 09:58:16 +02:00
Christoph Oelckers
0672572e63
- renamed sectortype::floorz and ceilingz as preparation for floatification
2022-08-27 09:47:48 +02:00
Christoph Oelckers
c15aeec9f7
- late __int_pos additions
2022-08-26 19:53:11 +02:00
Christoph Oelckers
1231f6025d
- handle the last remaining uses of __int_pos that can be done with the function interface.
2022-08-26 19:53:10 +02:00
Christoph Oelckers
8ccaa0ab8c
- more tsprite position stuff
2022-08-26 19:53:10 +02:00
Christoph Oelckers
170387ab26
- tspritetype::pos access wrappers, part 1.
2022-08-26 19:53:10 +02:00
Christoph Oelckers
dc94dedc6b
- renaming spritetype::pos
2022-08-26 19:53:10 +02:00
Christoph Oelckers
ad9931081e
-fix some bugs, handle occurences in recently changed code
2022-08-26 19:53:10 +02:00
Christoph Oelckers
111dbd7a7d
- backend update from GZDoom.
...
mainly TAngle overhaul and needed code adjustments.
2022-08-26 18:28:22 +02:00
Christoph Oelckers
4d423004e9
- unlimited the displayable sprites.
...
Now with Polymost gone this can finally be done properly.
2022-08-07 10:25:15 +02:00
Christoph Oelckers
4f2170655c
- animateoffs cleanup and consolidation
...
This was rewritten based on specs alone - it still doesn’t look that different due to its simplicity.
2022-08-05 23:32:16 +02:00
Christoph Oelckers
ec66f39535
- replaced a few naked chars with better types.
2022-08-05 17:04:46 +02:00
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
Christoph Oelckers
fcba341546
- use proper aspect ratio to calculate the frustum's angle.
2022-01-08 23:43:08 +01:00