Commit graph

123 commits

Author SHA1 Message Date
Christoph Oelckers
ba41bb4c61 - fixed the viewport setup.
There were two problems here - the math for calculating the rect was wrong and the initial aspect ratio was also not correct.
2021-04-05 10:34:03 +02:00
Christoph Oelckers
c303884274 - better handling for Duke's scrolling cloudy skies.
* Using the Doom-style dome here because it looks better.
* this necessitated changes to the backend to allow both types of sky domes at the same time
* do not clamp panning fields for cloudy sky with the new renderer because this makes the texture jump.
2021-04-04 20:35:38 +02:00
Christoph Oelckers
39c457bbf2 - removed a few unused CVARs carried over from GZDoom. 2021-04-04 19:35:12 +02:00
Christoph Oelckers
ea91b5ba5d - added a map patch for SW:WT's 'skyline' map.
This contains a badly tagged sky sector that makes the new renderer glitch out.
2021-04-04 18:57:03 +02:00
Christoph Oelckers
1201cc71ef - fixed voxel rendering.
No, that 'while' was even pointless in Polymost, much more here where it runs within another loop.
2021-04-04 13:45:43 +02:00
Christoph Oelckers
d76c2ccc34 - voxel rotation. 2021-04-04 13:24:33 +02:00
Christoph Oelckers
d71ebace97 - fixed fog density of the new renderer.
The actual value needs to be a lot lower than for Polymost due to the different projection.
2021-04-03 22:51:31 +02:00
Christoph Oelckers
d7a13fc9f2 - same for the new renderer. 2021-04-03 21:40:32 +02:00
Christoph Oelckers
ab36b86a59 - sky tweaking
* Build skies need a different mesh for the dome - the one from GZDoom distorts them too much.
* made adjustment to the positioning math after redoing the mesh
* Exhumed abuses some strange effect of the original sky placement math which means the y-offsetting must be disabled for this game.
* RRRA sky initialization fixed. It must be done after setting up the tiles.
2021-04-03 21:06:02 +02:00
Christoph Oelckers
dc234ea72d - implemented RR's geometry effect.
The grossest of all gross render hack that were ever done with Build...
2021-04-02 22:52:46 +02:00
Christoph Oelckers
54eee347a6 - do y-flipping of wall textures correctly.
1.f - h is not correct for NPOT texures due to hpw they tile.
2021-04-02 22:50:53 +02:00
Christoph Oelckers
7446d0441b - use LGPLv2 for all Raze specific render code. 2021-04-02 18:22:54 +02:00
Christoph Oelckers
638f19172a - voxel rendering.
The stock voxels of Blood and SW seem to work so far, but not all edge cases have been tested.
2021-04-02 18:20:07 +02:00
Christoph Oelckers
c8a75a8664 - give each DrawInfo its own list of tsprites.
Since these do not fully get processed sequentially the contents need to be preserved until needed.
This required getting rid of the global tsprite array. Polymost still uses a static vatiable, though, but this is only accessed in polymost-exclusive code.
2021-04-02 10:28:40 +02:00
Christoph Oelckers
6afbb82e66 - fixed one-sided wall sprite checks. 2021-04-02 09:04:13 +02:00
Christoph Oelckers
80e5cd0dc5 - fixed some automap issues:
* Blood's automap was not drawn at all.
* SW's automap always showed all sectors
* SW's player sprite was not rendered.
* Non-automap: Forward gotsector to the game code because there's still a few places in Blood that need it.
2021-04-01 20:47:05 +02:00
Christoph Oelckers
85020b374a - use texture clamping on non-tiled walls. 2021-04-01 19:21:24 +02:00
Christoph Oelckers
e1df17964e - fixed handling of SW's shadows.
An out of range shade will only work without fog.
2021-04-01 19:10:43 +02:00
Christoph Oelckers
7bea8ad6ba - fixed texture overlays for SW's sector portals. 2021-03-30 23:27:11 +02:00
Christoph Oelckers
9cccd6f89b - store plane meshes without height information.
This avoids retriangulation when just the plane's z changes.
2021-03-30 20:30:35 +02:00
Christoph Oelckers
6239734bdc - always create geometry for flat sprites in the collection pass.
This still depends on Build's tsprite array which is global so its contents are too volatile for delayed geometry generation.
This needs to be refactored later but it can only be done when Polymost is gone.
2021-03-30 19:58:42 +02:00
Christoph Oelckers
4647a0b2bc - fixed cases of small textures being used for the sky.
Case in Point: DukeDC uses a 64x64 texture with palette remap for the sky.
2021-03-29 23:25:43 +02:00
Christoph Oelckers
6fcb6fa1d5 - sky positioning tweaks.
It does not use the panning info of the wall and needs a texture height relative adjustment.
2021-03-29 22:34:46 +02:00
Christoph Oelckers
92bb9c5319 - fixed display of player in mirrors. 2021-03-29 21:48:23 +02:00
Christoph Oelckers
ab9c7de147 - use texture clamping for all sprites. 2021-03-29 20:18:49 +02:00
Christoph Oelckers
2d0360fa55 - apply depth bias to translucent geometry.
This is necessary to handle wall and floor sprites placed on actual walls and floors work as intended.
2021-03-29 19:45:04 +02:00
Christoph Oelckers
389d61d086 - fixed texture selection for one-sided walls with the one-way flag set. 2021-03-29 09:11:38 +02:00
Christoph Oelckers
18cf208b7d - fixed SW shadows in new renderer.
shade clamping and full sprite sort was missing,
2021-03-28 22:29:13 +02:00
Christoph Oelckers
0ae93318e3 - flip camera textures to have the correct orientation. 2021-03-28 21:00:24 +02:00
Christoph Oelckers
e8edb32e0d - fixed camera texture setup.
They still are upside-down but aside from that work as expected.
2021-03-28 19:22:51 +02:00
Christoph Oelckers
d9ff2fd1e2 - used display size for all texture positioning. 2021-03-28 18:22:30 +02:00
Christoph Oelckers
83760d4974 - fixed a few wall sprite rendering issues.
* masked walls were inserted into the sprite render list, causing sorting issues and depth fighting (see Duke's cameras and the 'closed' sign in Route66/Carnival.map)
* vertical and horizontal wall sprites needed their sorting functions swapped.
* plane clipping for wall sprites used bad coordinates.
2021-03-28 13:09:26 +02:00
Christoph Oelckers
b7bad558da - added y-off-by-one-fix for y-centered sprites. 2021-03-28 12:05:29 +02:00
Mitchell Richters
ffb956749d - HWSprite::Process(): Fix yoff adjustment when spr->cstat & CSTAT_SPRITE_YCENTER. 2021-03-28 20:46:50 +11:00
Christoph Oelckers
9f48b36627 - redid sprite projection math. 2021-03-28 10:49:34 +02:00
Christoph Oelckers
fa44d75e98 - draw regular sprites.
Mostly functional, but the projected size is off.
2021-03-27 23:12:41 +01:00
Christoph Oelckers
7c991d59ac - fixed bad return in sprite processing code. 2021-03-27 15:52:20 +01:00
Christoph Oelckers
0da33096c6 - fixed some wall sprite flickering issues. 2021-03-27 15:24:09 +01:00
Christoph Oelckers
d1c23d1ad0 - fixed wall sprite rendering. 2021-03-27 14:18:33 +01:00
Christoph Oelckers
efe0d57fca - removed all the decal stubs.
Build has wall sprite for decals so this is redundant and ultimately not usable.
2021-03-27 13:26:11 +01:00
Christoph Oelckers
d0f38d7362 - wall sprite WIP. 2021-03-27 13:22:34 +01:00
Christoph Oelckers
1dfb2672a8 - flat sprite rendering! 2021-03-26 20:28:44 +01:00
Christoph Oelckers
fd0e9824b6 - call the game specific analyzesprites functions. 2021-03-26 15:06:14 +01:00
Christoph Oelckers
be7bca8e9e - expose animatesprite set of functions to new renderer as a callback. 2021-03-26 10:05:01 +01:00
Christoph Oelckers
0b1e81023f - added sprite collection loop to ProcessSector and did a bit of cleanup on the TSprite code. 2021-03-25 23:16:32 +01:00
Christoph Oelckers
f6568fee0c - rewrote SW portal setup to use static data instead of ad-hoc setup.
This was by far the messiest game, there's two reasons for this.
First, the portal links do not need to be in an actual portal sector, so they cannot be used to detect portal sectors.
Second, the game moves portals in place, so all offsets are (0,0,0) so that not even these can be used for detection.

The only working method is the super-complicated original way to look up portals at run time, just being done at map start.
Having static portal links should reduce the render glitches quite significantly because the renderer knows now which sectors belong to a portal and can use this information to ensure proper processing.
2021-03-25 21:21:48 +01:00
Christoph Oelckers
af54cf3a3c - made SW's sector portals operational.
Unlike the other games these are so poorly defined that the engine has to rely on the original fudging to pick the proper portal to link to. As a result they are just as limited as they always were.
In addition all the portal search code had to be reinstated.
2021-03-25 16:45:40 +01:00
Christoph Oelckers
168b0385cf - moved shadeToLight out of build.h. 2021-03-25 09:13:59 +01:00
Mitchell Richters
957f7e9487 - Accept binangle, fixedhoriz and lookangle classes in SetupViewpoint() vs. Q16.16 variables.
* Allows for more precision than Q16.16.
* Used as opportunity for `rollang` to be set using the `asdeg()` method, not `asbuildf()`.
2021-03-25 19:06:01 +11:00
Christoph Oelckers
dbbdfaa4ba - sector portals in Blood are working. 2021-03-24 23:11:06 +01:00