Commit graph

535 commits

Author SHA1 Message Date
Christoph Oelckers
a4dd5bb4ce - rewrote the model storage code.
Using proper C++ containers now.
2022-10-27 16:55:54 +02:00
Mitchell Richters
c00c8d196e - Simple VecToAngle() > .Angle() replacements. 2022-10-27 16:55:52 +02:00
Christoph Oelckers
8e9ddf370c - rewrote getzrange
Not using any old Build code anymore. Aside from the trivial stuff this uses code from Doom and SW instead.
2022-10-27 16:55:28 +02:00
Mitchell Richters
8d3f3c6025 - Cut over to DAngle from fixedhoriz and remove the latter. 2022-10-25 07:06:55 +02:00
Mitchell Richters
5851c0f2c6 - Clean up some q16horiz usage and how the view pitch is clamped. 2022-10-25 07:06:53 +02:00
Mitchell Richters
e4ae726015 - Rename fixedhoriz::aspitch() to Degrees() to match DAngle objects. 2022-10-25 07:06:53 +02:00
Christoph Oelckers
38998f36b5 - minor int_* replacements in the backend. 2022-10-23 18:47:17 +02:00
Christoph Oelckers
e00eda6cb8 - Blood: floatified VectorScan.
The texture checks in here definitely need some more verification, though.
Doing a quick test looked ok, but I do not think this was enough.
2022-10-22 20:41:25 +02:00
Christoph Oelckers
243c071834 - got rid of bsinf and bcosf. 2022-10-22 12:17:04 +02:00
Christoph Oelckers
6dd7fac902 - eliminated the sine table and moved tilehasmodelorvoxel to a different file to delete engine.cpp. 2022-10-22 12:17:04 +02:00
Mitchell Richters
95cd74bdc0 - renamed slope functions so that the int versions get a special name. 2022-10-22 12:17:02 +02:00
Christoph Oelckers
ac2a3c443f - got rid of all deprecated updatesector variants.
This required a few changes in the map loader and render interface.
2022-10-22 12:17:02 +02:00
Christoph Oelckers
b2d1988e50 - use engine utilities for the section builder’s inside check 2022-10-22 12:16:57 +02:00
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
Mitchell Richters
9eec69d810 - Blood: Floatify position drawing code and clean up now-unused wrappers.
* Still work to be done on bob/sway/zView variables.
2022-10-18 18:29:09 +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
Christoph Oelckers
b53e4b824e - handle the portals in Duke and Blood. 2022-10-16 09:40:29 +02:00
Christoph Oelckers
0e628ed222 - floatified CollectPortals and its helpers 2022-10-16 09:40:28 +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
Mitchell Richters
8f2d6f0779 - Floatify smoothratio for render_drawrooms() and `render_camtex(). 2022-10-15 13:32:03 +02:00
Mitchell Richters
f72d42bb8e - Uplift renderer entry point to DVector3 and provide wrappers for old setups. 2022-10-15 12:16:53 +02:00
Mitchell Richters
5407de6924 - Use MaxSmoothRatio everywhere so refactoring is easier later on. 2022-10-14 18:19:03 +02:00
Christoph Oelckers
81c7e7671f - fixed Clang warnings 2022-10-13 22:54:43 +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
97223af592 - silenced a few conversion truncation warnings. 2022-10-12 15:49:07 +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
32e1f07b60 - eliminate all use of integer coordinates in the sector geometry creation code.
This eliminates the last small remnants of texture twitching in SW as well.
2022-10-05 18:31:46 +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
Mitchell Richters
ebac932efe - Update render_drawrooms() and render_camtex() to work off DAngle objects. 2022-10-05 00:36:23 +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
c2fc7577db - cleanup of 3D viewport code.
Removes all the hackery that Polymost needed and now uses a sane struct to store the info.
2022-08-05 17:04:45 +02:00
Christoph Oelckers
e6ca0f4817 - made fov change for RRRA's drug mode work. 2022-08-03 19:41:30 +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
c4bfee070e - don’t crash on sector-less walls. 2022-04-19 13:39:26 +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
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
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
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
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