Christoph Oelckers
e396798198
- made DCoreActor's properties functional.
...
They cannot be parsed directly into the actor's sprite because that gets used in ways that require a different setup.
This alsp adds a property parser and a setter function for the SpriteSet array. The idea here is to write code that does not need to use actual tile indices so it can later be refactored to real textures.
2022-02-15 22:34:03 +01:00
Christoph Oelckers
e3f1893e02
- avoid conversions for vertex comparisons in CollectLoops and for sectorgeometry.cpp's poscompare values.
2022-02-15 22:34:03 +01:00
Christoph Oelckers
37fda9cf89
- added position getters/setters to DCoreActor.
...
Scripting should not be subjected to that awful mixed fixed point format, but we cannot easily swap out the internals without risking breakage all over the place.
2022-02-15 22:33:49 +01:00
Christoph Oelckers
71943abed0
- changed math utilities to floating point coordinate system.
2022-02-15 22:18:26 +01:00
Christoph Oelckers
8cc8ebf30c
- preparations for more floatification.
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
b641456152
- use floats directly for WallStart/End/X/Y.
2022-02-15 22:18:26 +01:00
Christoph Oelckers
73aa84e9f3
- floatified the user map display.
2022-02-15 22:18:26 +01:00
Christoph Oelckers
651c25a7be
- do the 'inside' check with integers.
...
Using floats and multiplications is not robust enough. This is a bit slower, but doesn't run the risk of underflows and other nasties.
Q: How many bits of fractional precision should we use? 16 seems fine
2022-02-15 22:18:26 +01:00
Christoph Oelckers
b8ea49ee0e
- SW: bumped two hard limits because there's maps out there that exceed them.
2022-02-15 22:18:25 +01:00
Christoph Oelckers
7374364527
- doFurniture floatified and inside rewritten as a floating point algorithm that works without bit masking.
2022-02-15 22:18:25 +01:00
Christoph Oelckers
6fbecf2348
- RR: cleaned up and floatified the mine cart code
2022-02-15 22:18:25 +01:00
Christoph Oelckers
6e96b1ee81
- floatify SW's sector object rotation.
2022-02-15 22:18:25 +01:00
Christoph Oelckers
a12093af04
- use full precision math for rotating sectors in Blood.
2022-02-15 22:18:24 +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
08500ca757
- eliminated coordinate factors from UV generator.
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
7d461fa768
- PlanesAtPointf
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
cf17cffb26
- missed one place where wall coordinates are set from map loading.
2022-02-15 22:18:23 +01:00
Christoph Oelckers
bc0e8b4a8d
- use a method for setting wall coordinates when loading a map.
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
Rachael Alexanderson
0d54237eec
- pull cvar uniform fixes from gzdoom
2022-02-09 07:26:59 -05:00
Rachael Alexanderson
c2b35fee41
- allow floats for uniform cvar defaults
2022-02-06 10:32:55 -05:00
Rachael Alexanderson
9fc6d40dcf
- fix compile on clang - it's a whack-a-mole, we'll get em eventually
2022-02-01 12:49:58 -05:00
Rachael Alexanderson
b7cb878ad8
- fix compiling on Linux/et-al
2022-02-01 12:36:26 -05:00
Rachael Alexanderson
942acc04c1
- pull fix from GZDoom - handle situations where the uniform cvar may already exist
2022-02-01 11:45:29 -05:00
Rachael Alexanderson
cc57914bbf
- fully implement uniform cvars
2022-02-01 11:03:39 -05: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
f98765ce95
- fixed handling of badly placed sprites in map validation code.
2022-01-29 12:33:11 +01:00
Christoph Oelckers
686a648aa1
- fixed inverted logic when checking for dragged sectors.
2022-01-29 09:59:29 +01:00
Christoph Oelckers
cbd8de36a9
- added spawn number parser to .DEF.
...
This is for mapping actor classes to whatever the games use to decide what kind of actor a sprite is.
2022-01-26 23:53:05 +01:00
Christoph Oelckers
5fe5dbd5aa
- added spriteSet property to DukeActor
...
The idea here is to abstract picnum manipulation. Since all this is strongly index based it translates poorly to a system with named textures.
This allows a class to define a set of sprite images it intends to operate on as if it was still a simple indexed resource, even if the underlying storage changes.
2022-01-26 00:36:34 +01:00
Christoph Oelckers
e3103fff02
- fixed sky tiling.
2022-01-25 19:00:52 +01:00
Christoph Oelckers
d19e2e3e40
- version bump.
2022-01-24 10:29:16 +01:00
Christoph Oelckers
2022de845a
- did some reshuffling on Exhumed's menu.
...
To allow adding a "User map" item and prevent accidental reset of ongoing games, both the items for starting the campaign and the training map are now in a submenu.
This allows the game to go through the regular startup procedure common to all games, which in turn allows adding the "User map" item to the episode selection.
2022-01-24 01:00:05 +01:00
Christoph Oelckers
f194fb6c90
- added a name to tilenum function so that we can define picnums by name in scripted actors.
2022-01-24 00:24:47 +01:00
Christoph Oelckers
e206a71448
- added the native property handlers for CoreActor.
2022-01-24 00:24:47 +01:00
Christoph Oelckers
0a6a5fe871
- set a default bitmask for the cstat flags.
...
These need to be combined with the flags from the map, so we need to know which ones are being used by the actor defaults.
2022-01-24 00:24:46 +01:00
Christoph Oelckers
04a380ce14
- added script exports for DCoreActor's member variables.
2022-01-24 00:24:46 +01:00
Christoph Oelckers
531a42e801
- added the flag parsing utilities.
2022-01-23 13:03:39 +01:00
Christoph Oelckers
e035ce00b6
- hooked up the compiler extension and the static actor data setup.
2022-01-23 13:03:39 +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
747648ce78
- added guards against badly defined skies.
2022-01-22 22:52:45 +01:00
Christoph Oelckers
276597fc36
- normalize line endings.
2022-01-22 14:37:17 +01:00
Rachael Alexanderson
f4c9c5df72
- hook up GLDEFS parser and do some final fixes
2022-01-21 01:16:22 +01:00
Rachael Alexanderson
0e4eeddb93
- add a stripped-down GLDEFS parser
2022-01-21 01:15:59 +01:00
Rachael Alexanderson
43a2437071
- fix compile error
2022-01-21 01:15:22 +01:00
Rachael Alexanderson
13ca744ef8
- replicate GZDoom commit 12ed24d066
2022-01-21 01:15:22 +01:00
Rachael Alexanderson
c6f991a798
- in progress
2022-01-21 01:13:35 +01:00
Christoph Oelckers
19d8d65fd0
- split names into common and Raze-specific
2022-01-20 01:11:23 +01:00
Christoph Oelckers
f888b1da9c
- sky parser improvements.
2022-01-16 12:12:44 +01:00
Christoph Oelckers
3aff12cf4c
- sky management rework.
2022-01-16 12:12:43 +01:00
Christoph Oelckers
4b9ea92969
- gracefully handle when a map tries to exit twice.
...
This case left a broken ScreenJobRunner behind which later crashed on garbage collection.
2022-01-15 19:20:58 +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
ecb2732629
- little bit of cleanup on Duke's bullet hole code.
2022-01-13 20:53:36 +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
a13612ab9b
- Blood: allow bad start spots to pass for modern maps.
...
These can have alternative start spot definitions.
The error will still be printed, though.
2022-01-13 00:21:15 +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
44e64a6a12
- backend update from GZDoom.
...
* GC fix
* better sound range check
* UE model loader license change.
2022-01-11 22:54:37 +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
f20bd94269
- the gl_fogmode hack is no longer needed
2022-01-11 00:18:56 +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
e892de21ec
- preparations for unlimited tsprites.
...
Right now it is a no-op because Polymost cannot deal with this properly.
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
a50430bf68
- Duke: fixed SE02's handling of sloping sectors.
2022-01-09 13:38:10 +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
36bb3e621f
- fix typo.
2022-01-09 11:53:32 +01:00
Christoph Oelckers
fcba341546
- use proper aspect ratio to calculate the frustum's angle.
2022-01-08 23:43:08 +01:00
Christoph Oelckers
415dc5246d
- fixed sprting of non-translucent sprites.
2022-01-08 21:18:18 +01:00
Christoph Oelckers
fe0581ed97
- disable palette emulation when rendering weapons.
...
The 2D code cannot handle transparency well with it.
2022-01-08 14:16:18 +01:00
Christoph Oelckers
70087ebc12
- fixed: The new renderer still called the Polymost screen finish function.
...
This led to a second, redundant postprocessing step with incorrect matrix values.
It now calls screen->Update() directly without the unneeded stuff, but this required a bit of reordering in the game code to ensure that the renderer receives the weapon data to display.
2022-01-08 13:50:47 +01:00
Christoph Oelckers
a3162f6ccf
- renamed testnewrenderer CVAR.
2022-01-07 12:49:41 +01:00
Christoph Oelckers
0cfe6bbed3
- do the unlink properly when replacing a clip node.
2022-01-07 00:22:02 +01:00
Christoph Oelckers
98258e0bb2
- fix handling in the clipper for a new range that completely covers an existing one.
...
The handling for this was from the first draft of the clipper that made very different assumptions than the final version.
This cannot simply delete the old range - it has to explicitly alter it and recursively insert the outer sub-ranges separately.
2022-01-06 16:34:04 +01:00
Christoph Oelckers
159409d5d2
- allow a bit of tolerance when sorting walls, so that microscopic intersections can be ignored.
2022-01-06 00:43:47 +01:00
Christoph Oelckers
fab5a02ba3
- deleted unused variable.
2022-01-06 00:43:46 +01:00
Christoph Oelckers
9f6d6a0e6d
- block y-flipping of slope sprites only if they are actually sloped.
...
This mirrors Polymost's (buggy) handling.
2022-01-05 09:20:54 +01:00
Christoph Oelckers
d5daa8ee84
- fixed: The bunch drawer's gotwall array was cleared before resizing.
...
This means that on the first frame of a new map it'd operate on partially uninitialized data.
2022-01-04 17:18:26 +01:00
Christoph Oelckers
227ac0fca6
- RR: address a missing texture in E1L2.
...
The current texture on this wall is suboptimal but it's still better than glitchy HOM.
2022-01-04 17:18:25 +01:00
Christoph Oelckers
03cad0fe3b
- consider slope sprites unavailable in map formats 5 and 6.
...
Exhumed has several sprites flagged with this combo - they all need to be treated as face sprites.
2022-01-04 17:18:25 +01:00