Christoph Oelckers
f30a568858
- moved wallfront function into polymost.cpp.
...
This was one of the few functions left in engine.cpp that accesses the global scene state.
2021-03-20 19:10:46 +01:00
Christoph Oelckers
91957e40f1
- moved some original Raze code out if the Build folder.
2021-03-20 17:08:55 +01:00
Christoph Oelckers
fedfc2cfa4
- removed global variables that were only being used by the automap drawer plus a few other obsolete things.
2021-03-20 16:46:06 +01:00
Christoph Oelckers
30f4e2b29d
- replaced the engine automap drawer with one leveraging the newly added sector geometry data.
...
This eliminates a lot of code depending on Build's projection math.
2021-03-20 16:20:48 +01:00
Christoph Oelckers
3df5c440f9
- added some helpers to make it easier to determine if a sector's geometry has been altered.
...
Walls had no sector reference so this was added for marking the sector as altered when a vertex gets dragged around.
2021-03-19 23:18:09 +01:00
Christoph Oelckers
a5b3a1dd3e
- removed some unused things from engine.cpp.
2021-03-19 15:12:54 +01:00
Christoph Oelckers
76682c72e3
- removed krecipasm.
...
Analyzing the results, this is not needed as its precision is virtually the same as floating point math, so its one use got replaced.
2021-03-19 14:23:41 +01:00
Christoph Oelckers
547ed4e415
- route everything through the full backend, now completely bypassing the intermediate GLInstance layer.
2021-03-18 17:18:03 +01:00
Christoph Oelckers
4cf2493cfd
set up the entry point for the renderer.
2021-03-18 14:49:36 +01:00
Christoph Oelckers
e9dd1c104b
- started adding the draw list code from GZDoom.
2021-03-18 10:19:13 +01:00
Christoph Oelckers
2d958745b4
- fixed: Polymost must set the viewpoint if renderers are switched.
...
- fixed coordinate order in renderSetViewpoint
- fixed backwall checks accidentally testing wall 0 instead of the current wall.
2021-03-18 00:28:38 +01:00
Christoph Oelckers
65097c4098
- set proper visibility factor and viewport.
2021-03-17 19:07:00 +01:00
Christoph Oelckers
b492cbcebb
- ported my old Build-style renderer for Doom from 2008 and the wall renderer from GZDoom to work with Build data.
...
It renders walls, but y-panning is still broken.
2021-03-17 16:54:36 +01:00
Christoph Oelckers
9ebd8fd4a5
- put all of Polymost in a namespace.
...
So that its static variables are properly separated from the rest.
2021-03-17 15:55:25 +01:00
Christoph Oelckers
a484e39e05
- removed integer square root code.
...
On modern systems using the sqrt function with a cast to int has no relevant performance disadvantage anymore so there's no need for all of this.
2021-03-15 19:02:08 +01:00
Christoph Oelckers
ac82838859
- removed unused 'wallvisible' function.
2021-03-15 18:58:14 +01:00
Christoph Oelckers
8aa59f2385
- use clamp instead of bit masking to handle out of range interpolation factors for models.
2021-03-15 11:35:39 +01:00
Christoph Oelckers
bbd5c0ac8b
- transitioned voxel rendering to use the backend's implementation.
2021-03-02 17:10:34 +01:00
Christoph Oelckers
2094b6420f
- use local screen size variables in automap code.
2021-02-27 12:30:20 +01:00
Christoph Oelckers
99f1f0952a
- little bit of engine cleanup.
2021-02-25 12:16:21 +01:00
Christoph Oelckers
cf672b508f
- removed unused 'updatesectorexclude' function.
2021-02-02 23:13:40 +01:00
Mitchell Richters
5124c0daec
- Amalgamate ksgn and sgn into Sgn in cmdlib.h, and remove pragmas.h.
2021-01-05 07:31:37 +11:00
Mitchell Richters
b36bea7c69
- Replace scale()
calls with Scale()
from common.
2021-01-05 07:31:34 +11:00
Mitchell Richters
3c5d553456
- Move krecipasm()
from pragmas.h into polymost.cpp.
2021-01-05 07:31:30 +11:00
Mitchell Richters
d460f048fa
- Remove klabs()
define and replace with abs()
.
2021-01-05 07:31:28 +11:00
Mitchell Richters
868aa7f07a
- Replace mulscale()
calls with MulScale()
from common.
2021-01-05 07:31:24 +11:00
Mitchell Richters
aae175f287
- Replace divscale##()
calls with MulScale()
from common.
...
* Regex for reference: divscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:20 +11:00
Mitchell Richters
f20daa2595
- Replace divscale64()
calls with DivScaleU()
from common.
2021-01-05 07:31:17 +11:00
Mitchell Richters
2396179dfc
- Replace mulscale##()
calls with MulScale()
from common.
...
* Regex for reference: mulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:15 +11:00
Mitchell Richters
7d9f868e4c
- Replace dmulscale##()
calls with DMulScale()
from common.
...
* Regex for reference: dmulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:10 +11:00
Mitchell Richters
b191a482d6
- Remove hw_detailmapping
and hw_glowmapping
since they're no longer relevant with GZDoom's backend (they're always in an on state).
2021-01-03 21:39:21 +11:00
Christoph Oelckers
0f8e73ce77
- inlined calc_globalshifts to get rid of two global variables.
2020-12-30 09:55:57 +01:00
Christoph Oelckers
1a2b93f402
- fixed sky panning in Duke.
...
This needs to take the composite texture into account because panning in Build is based on tile size, not map dimension.
It was also redone to use floating point to get rid of the horrible precision of the scrolling effect.
2020-12-06 20:49:32 +01:00
Christoph Oelckers
d04013066c
- build a composite texture of all the segments for sky rendering to reduce the seams between the single segments.
2020-12-04 22:29:25 +01:00
Christoph Oelckers
396e3cd524
- actually call the model animation timer somewhere.
...
Now models also animate properly. :)
2020-12-02 00:19:22 +01:00
Christoph Oelckers
25ef58f897
- re-enabled all model specific code in Duke's animatesprites function and removed some remaining software renderer-only code in the engine.
2020-12-01 23:57:39 +01:00
Christoph Oelckers
9a507e5d0a
- fixed model rendering.
...
(What a stupid mistake... :?)
Model animations still do not work as intended, though.
2020-12-01 22:03:20 +01:00
Christoph Oelckers
2cd3927613
- use floats for wall panning offsets.
2020-11-26 18:32:35 +01:00
Christoph Oelckers
d545eb7aa9
- make sector panning variables floats and added some convenience wrappers.
2020-11-26 18:32:35 +01:00
Christoph Oelckers
9a4073508d
- Blood: Savegame fully transitioned to JSON
...
not tested yet.
2020-11-23 09:53:58 +01:00
Christoph Oelckers
169d708547
- removed all remaining uses of tilesiz.
2020-11-23 08:55:02 +01:00
Christoph Oelckers
d60bc8be9f
- replaced all remaining uses of tilesiz[].y
2020-11-23 08:39:49 +01:00
Christoph Oelckers
bbf1352db1
- replaced approx 1/3 of all accesses to the tilesiz wrapper class.
2020-11-23 00:18:30 +01:00
Mitchell Richters
0190a98a10
- Remove calcSinTableValue()
inline function and clean up use of PI
/fPI
and BANG2RAD
#defines.
2020-11-22 21:18:10 +01:00
Mitchell Richters
32a1796728
- buildutils: Replace sintable[]
use within Build with bsin()
/bcos()
, using bsinf()
/bcosf()
where appropriate.
...
* Includes a few header include shuffles to make it all come together.
2020-11-22 21:18:02 +01:00
Christoph Oelckers
5f54eac297
- made palette loader part of the game interface.
...
This gets rid of the Blood 'replace' hook for thus.
2020-11-21 12:54:09 +01:00
Christoph Oelckers
b97f12a2eb
- did some global search & replace to reduce the number of accesses to the tilesiz wrapper.
2020-11-20 08:18:26 +01:00
Christoph Oelckers
873f4d7c0c
- link hires replacements to textures instead of tile numbers.
...
This is needed to connect them to fonts as well because its glyphs have no tile index.
2020-11-10 20:12:46 +01:00
Christoph Oelckers
ed599d0f05
- moved the hires texture replacement logic into a backend callback.
...
This way it can be handled transparently to the calling code.
Fonts do not work yet, though.
2020-11-10 16:22:02 +01:00
Christoph Oelckers
601680d08e
- moved widthBits and heightBits into engine.
...
These functions will go away with the rest of the renderer when the time comes, so this is the right place.
2020-11-09 20:56:28 +01:00
Christoph Oelckers
7621d3e105
- removed redundant dosetaspect function.
...
This was software rendering only.
2020-11-04 22:30:11 +01:00
Christoph Oelckers
78afb67c7f
- setup for Duke actor data transition to something more scripting friendly.
...
The main problem here is that there's two data arrays representing an actor - sprite and hittype and the engine only uses indices for reference.
By setting up hittype to contain a sprite reference, the function and iterator interface can be rewritten to use a single pointer instead to represent an actor.
The main objective is to reduce the number of accesses to the global arrays which constitute the biggest refactoring blocker.
2020-10-21 16:31:17 +02:00
Christoph Oelckers
4f7c0b696c
- and finally the iterators in the backend.
2020-10-15 20:22:40 +02:00
Christoph Oelckers
817fa8aba3
- save the entire engine state as JSON.
...
The sprite lists may still need optimization. Due to different handling between Blood and the core engine they need to be written out completely which is quite wasteful.
2020-10-13 20:18:08 +02:00
Christoph Oelckers
f12c6b0319
- removed wallext because its only member 'blend' is not used by anything.
...
This is a feature not worth preserving, render style + alpha should be done directly, not via indirect lookup tables.
2020-10-11 18:44:16 +02:00
Christoph Oelckers
fe2e96d3a6
Merge branch 'master' into InputContinuation
...
# Conflicts:
# source/games/duke/src/duke3d.h
2020-10-10 21:39:27 +02:00
Christoph Oelckers
e95fea1056
- fixed: Toggling palette emulation should reset the texture filter in the samplers.
2020-10-10 18:57:16 +02:00
Mitchell Richters
09a05f354c
- Re-standardise horizon around 0 and not 100.
...
* Blood had this right. It makes sense that the horizon be based around as it's easier to work with.
* Removed all associated game math to deduct default horizon of 100 when doing weapon zvel etc, meaning actual horizon can just be used.
* Re-did return to center function to work on the already converted pitch. Return speed should be 1:1 with previous code.
2020-10-07 13:28:45 +11:00
Christoph Oelckers
82612a1330
- it compiles again (with lots of code commented out.)
2020-10-04 20:11:02 +02:00
Christoph Oelckers
1e63341c4d
- fixed inverted checks for texture clamping.
2020-09-25 23:42:53 +02:00
Christoph Oelckers
5a76dce5f8
- reinstated setuptile.
...
Apparently this is needed by some hires packs to fudge the sprite offsets.
Fortunately, setting sprite offsets is the only thing this was ever used for so it's relatively uninvasive.
2020-09-23 18:18:22 +02:00
Christoph Oelckers
5e6317b8b9
Merge remote-tracking branch 'remotes/Github_private/Blood_InputReworking'
2020-09-22 23:32:28 +02:00
Christoph Oelckers
2a2209b085
- cleanup and minor fixes.
2020-09-22 23:07:11 +02:00
Christoph Oelckers
d6bf4306eb
- simplified the parser for blend modes
2020-09-22 23:05:43 +02:00
Christoph Oelckers
ec0e2be607
- better error message
2020-09-22 23:05:00 +02:00
Christoph Oelckers
880b811e0d
- rewrote map loader to work independently of data structure sizes.
...
This is needed to extend a few fields that are too narrow - e.g. the texture offset fields have no room for interpolating scrolling textures.
Blood not done yet, will also need to be changed to get rid of the limits.
2020-09-22 22:40:53 +02:00
Christoph Oelckers
43a9be0ad0
- removed Blood's loadboard replacement hook.
...
It never calls engineLoadBoard but always its own map loading function directly.
2020-09-22 22:38:08 +02:00
Mitchell Richters
fdbc4d0e67
- Build: Fix precision loss when calculating an angle in renderPrepareMirror()
.
2020-09-22 23:12:31 +10:00
Mitchell Richters
d40a2d3e95
Merge branch 'back_to_basics2' into Blood_InputReworking
...
# Conflicts:
# source/blood/src/hudsprites.cpp
# source/exhumed/src/status.cpp
# source/games/duke/src/game_misc.cpp
# source/sw/src/draw.cpp
2020-09-22 07:34:39 +10:00
Mitchell Richters
bdc53ed7b0
- Exhumed: Standardise horizon on 100 and remove backend extern'd polymostcenterhoriz
variable.
2020-09-21 18:41:56 +10:00
Christoph Oelckers
78be8f866b
- always use the containing sector's fog when rendering sprites.
...
This is for consistency, otherwise sprites with a palette translation would stand out. Also use shade dependent fog density instead of a single global value.
Currently this only has an effect in true color rendering mode.
2020-09-20 20:39:11 +02:00
Christoph Oelckers
6776508239
- widescreen asset setup and consolidation of .def file loading.
2020-09-16 19:13:06 +02:00
Christoph Oelckers
5c777eeb38
- moved implementation of 'animtilerange' into buildtiles.cpp.
2020-09-16 19:13:05 +02:00
Christoph Oelckers
616838dd0a
- little bit of cleanup on tileImport.
2020-09-16 19:13:05 +02:00
Christoph Oelckers
bc5d3eea88
- split the worker part for tileImportTexture out of the parser.
2020-09-15 01:21:17 +02:00
Christoph Oelckers
09a6534270
- redid scriptfile as a wrapper around FScanner
...
Another piece of Build licensed code gone, yay!
This will also allow gradual conversion of the DEF parser to our own code, unencumbered by the Build license. :)
2020-09-15 00:11:08 +02:00
Christoph Oelckers
e382690f9c
- migrated defs error reporting to FScriptPosition
...
This not only prints better formatted texts, it also takes a lot of script maintenance out of the code.
2020-09-14 22:55:21 +02:00
Christoph Oelckers
8a7502c00d
- I wish, MSVC flagged struct params to variadic functions properly…
...
XCode reported these as errors.
2020-09-14 22:44:21 +02:00
Christoph Oelckers
7395110ae9
- replaced brace loop condition in def parser with an inline
2020-09-14 00:19:20 +02:00
Christoph Oelckers
fe329b0870
- fixed voxel rendering in palette emulation mode.
2020-09-13 21:08:10 +02:00
Christoph Oelckers
0e58203d92
- fixed rintersect and removed some unused bits from engine.cpp.
2020-09-13 20:15:46 +02:00
Christoph Oelckers
a4754d7f34
- rewrote the map hack parser using sc_man.
...
This unexpectedly turned out a complete rewrite so now it is under my own license.
Also moved the remaining parts of map hack loading into the engine.
Overall I have to say that the feature is not what I expected, it's merely used to fudge the positioning of model sprites and for adding Polymer lights.
2020-09-13 13:01:44 +02:00
Christoph Oelckers
8ca0e9b97a
- avoid using naked pointer for script positioning.
2020-09-13 11:28:32 +02:00
Christoph Oelckers
57a9419f8e
- use FString for returning strings from the script parser.
...
This is mainly a preparation for merging the parser into sc_man, because sc_man does not keep token texts in a static variable.
This commit also fixes a handful of places that were flagged by the stricter conversion rules of FString.
2020-09-13 10:29:57 +02:00
Christoph Oelckers
aac87fc2cf
- another unused function.
2020-09-13 09:45:37 +02:00
Christoph Oelckers
19a26f7959
- removed some unused code from engine.cpp.
...
Looks like editor utilities.
2020-09-13 08:30:03 +02:00
Christoph Oelckers
adf4a25b38
...
2020-09-12 12:42:08 +02:00
Christoph Oelckers
16deb64e32
- fixed bad file checks in defs parser.
2020-09-12 12:39:18 +02:00
Christoph Oelckers
89316aea33
- demoted the SWCustom parser to the primitive Hexen interface after finding out that this is all the Build parser can do.
...
This also meant I had to add symbol support to the old style number parsers.
2020-09-12 10:23:47 +02:00
Christoph Oelckers
b2105f28e1
- replaced swapptr with std::swap.
2020-09-11 19:28:19 +02:00
Christoph Oelckers
9ce8202eb1
- Duke: Added a file check for the map to be entered when ending a level.
...
World Tour contains a map definition for E5L9 but no map for it.
2020-09-10 21:39:52 +02:00
Christoph Oelckers
41a2a63efd
- moved the VP8 decoding loop into the movie player class and got rid of animvpx.
...
This allowed significant simplification of code data and many of the error checks could also be simplified because this player doesn't really need it all.
Also use nanoseconds to count frame delays, not milliseconds, as milliseconds can cause timing anomalies with common frame rates very easily.
2020-09-10 17:54:27 +02:00
Christoph Oelckers
83eba019b8
- added support for Megaton's widescreen assets.
...
Fixes #386
2020-09-10 00:05:10 +02:00
Christoph Oelckers
298949ceb8
- more compat.h cleanup
...
Its elimination is getting closer. :)
2020-09-08 18:48:18 +02:00
Christoph Oelckers
ec1c42b04a
- got rid of common.h
...
All still relevant content was moved to places closer to its use.
2020-09-08 18:39:47 +02:00
Christoph Oelckers
18b39fd952
- first stage of generic automap code.
...
Lines and textures get rendered, not all colors are correct - sprites yet to do...
2020-09-06 20:49:43 +02:00
Christoph Oelckers
2395749192
- restored the automap texture drawer in the backend.
...
While ultimately this needs to be tossed into the deepest bowels of hell for being one gargantuan piece of bad code, it is still needed and does not really work when placed in a separate source file, due to its endless list of global dependencies.
2020-09-06 17:35:08 +02:00
Christoph Oelckers
809f8b5d4b
- hooked up the new automap framework.
2020-09-06 12:44:58 +02:00
Christoph Oelckers
a6c92aec64
- removed all automap code from SW and the flat drawer from the backend.
...
This should have been the last parts of automap code.
Now on to rebuild this thing in a cleaner fashion...
2020-09-06 12:14:08 +02:00
Christoph Oelckers
d6b80bda52
- force the renderer to use radial fog.
...
Plane-distance based fog does not work with Polymost's projection settings - the distance value appears to be completely off and useless.
Fixes #243
2020-09-06 00:19:38 +02:00