Commit graph

79 commits

Author SHA1 Message Date
Christoph Oelckers
8dfbbc8220 - migrated floorpicnum and ceilingpicnum to FTextures.
The sky code still needs some work.
2022-12-18 14:32:52 +01:00
Christoph Oelckers
20edd800f9 - big texture system refactor.
Finally that quickly slapped together BuildTiles class is gone and replaced with something that better integrates with the underlying texture manager
2022-12-18 13:05:58 +01:00
Christoph Oelckers
71ca2c4677 - eliminate the last remaining references to the tile manager in the core renderer files.
The only thing left is the sky which needs more refactoring first and the tileUpdatePicnum call for sprites which cannot be resolved by the texture manager because Blood has a randomization factor included here.
2022-12-11 19:44:01 +01:00
Christoph Oelckers
028cf2daf5 - added access wrappers for getting texture IDs from the map and used that to rid a large chunk of the renderer of direct tilenum access. 2022-12-11 19:43:59 +01:00
Christoph Oelckers
49f87e6227 - got rid of gotpic.
Now everything uses the 'seen' flag in the texture which indicates that the texture was actually used for hardware rendering since the last check.
It's also only the 3 places checking this flag which are responsible for clearing it.
2022-12-11 19:43:58 +01:00
Christoph Oelckers
b7a7584059 - renamed wallnum and sectnum functions.
These were creating a lot of search noise because local variables had the same name.
2022-11-15 12:03:44 +01: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
cbfc9a8252 - added spriteGetZOfSlopeF for the backend 2022-10-22 12:16:56 +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
c712d594e0 - fully floatified GetFlatSpritePosition 2022-10-05 18:29:03 +02:00
Christoph Oelckers
06b8a9139e - handle most int_pos calls in common code. 2022-10-04 18:44:17 +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
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
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
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
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
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
98c919fbe4 - g_visibility stuff 2022-01-11 00:12:32 +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
e2e3b4482d - do some better sorting of slope sprites.
Splitting by translucent floor plane is essential, splitting by wall not that much - sorting by center point should be sufficient here.
2022-01-03 12:31:54 +01:00
Christoph Oelckers
daa07b9e55 - an attempt to render "reflection" floor sprites by lifting them up to the floor and drawing them with 33% alpha. 2022-01-01 20:01:36 +01:00
Christoph Oelckers
fcb3e43799 - fixed side check for sloped sprites. 2022-01-01 17:27:09 +01:00
Christoph Oelckers
9680ff1863 - ignore y-flipping when rendering slope sprites in the new renderer.
This is what Polymost, and apparently NBlood, do here.
2022-01-01 12:55:28 +01:00
Christoph Oelckers
a9b162b8e9 - moved the tsprite flags from cstat2 to clipdist which was already holding other ones.
cstat2 should only hold flags for game-side sprites.
2021-12-30 19:00:35 +01:00
Christoph Oelckers
e670cf2786 - re-tabified several files that got mangled by repeated merging 2021-12-30 09:58:47 +01:00
Mitchell Richters
baf78848eb - Replace spritetypebase z with pos.Z calls and eliminate spritetypebase pos union. 2021-12-30 09:57:06 +01:00
Mitchell Richters
118ceb18ca - Capitalise vec2_t y variable. 2021-12-30 09:57:02 +01:00
Mitchell Richters
3c9cd926ba - Capitalise vec2_t x variable. 2021-12-30 09:57:02 +01:00
Christoph Oelckers
beddf1e1ca - add slope sprite support to the new renderer.
Some fudging was needed to avoid positioning problems as the renderer is more sensitive to this than Polymost.
2021-12-30 09:56:55 +01:00
Christoph Oelckers
11f41a97d5 - made gotpic a FixedBitArray.
gets rid of some inline garbage.
2021-12-30 09:53:56 +01:00
Christoph Oelckers
dddf48fd3e - cleaned up and renamed buildtypes.h.
Content was reordered so that the file can contain the inlines belonging to the map data types that previously had to be stored elsewhere.
Also moved out of the Build folder because virtually everything in here can be traced to content available in Duke Nukem 3D's and Shadow Warrior's source releases.
2021-12-30 09:53:46 +01:00
Christoph Oelckers
fc41a2bd85 - renamed sections2 and sections2PerSector.
No more need for a '2'.
2021-12-30 09:53:10 +01:00
Christoph Oelckers
f6d852b5a0 - removed the old section builder 2021-12-30 09:53:09 +01:00
Christoph Oelckers
7a9596ae81 - use SectionGeometry for 3D rendering. 2021-12-30 09:53:09 +01:00
Christoph Oelckers
37e49ed775 After this any old mesh has become invalid and needs to be rebuilt.
- use only one Section type.
2021-12-30 09:53:09 +01:00
Christoph Oelckers
411e3e6f9c - make SectionGeometry create some data. 2021-12-30 09:53:07 +01:00
Christoph Oelckers
ca19c265f8 - interface from Section2 to the flat processing. 2021-12-30 09:53:07 +01:00
Christoph Oelckers
eaff9e359f - refactored the owner index in tspritetype.
This is now a separate type from spritetype which contains an actor pointer instead so that sprite display can be handled without requiring a static sprite array.
2021-12-26 23:09:53 +01:00
Christoph Oelckers
adf3133fdc - use sectnum and wallnum to get an index from pointers instead of subtracting the array base. 2021-11-29 00:56:26 +01:00
Christoph Oelckers
83944a7191 - fixed uninitialized light index variable for floor sprites. 2021-10-11 22:28:26 +02:00
Christoph Oelckers
f96521a7f4 - fixed: Floor sprites must set their view orientation.
The translucent element sorter needs this to operate properly.
2021-06-02 20:32:35 +02:00
Christoph Oelckers
3c5ef9c8e6 - properly render geometry that's fully shrouded in fog. 2021-06-01 21:48:39 +02:00
Christoph Oelckers
5cfd810311 - new renderer: take fog properties for walls and ceilings from the proper elements. 2021-05-20 19:17:21 +02:00