Commit graph

176 commits

Author SHA1 Message Date
Christoph Oelckers
95afc97d48 - ok, that color_absolute option was pretty much redundant, considering that it is already possible to explicitly set a fog density per sector - it was only necessary to give that priority over standard depth fade calculations for fog-less sectors. 2017-01-28 21:42:58 +01:00
Christoph Oelckers
e96f231420 - added Doom64 colors for sprites. 2017-01-28 21:02:03 +01:00
ZZYZX
23c9386add Removed RenderCamera, RenderBeforeThing, RenderAfterThing. Serialization preparations. 2017-01-23 23:05:51 +02:00
ZZYZX
35ec14f465 Made the EventHandler class tree a bit more branchy. Now disallowing creation of Static* via EventHandler.Create. 2017-01-23 20:48:57 +02:00
ZZYZX
302af61686 Added per-thing render hooks 2017-01-23 20:48:57 +02:00
ZZYZX
659c11514b OpenGL: Added picnum override handling for actors 2017-01-21 23:04:45 +01:00
Christoph Oelckers
c880b26d98 - scriptified MorphProjectile and CustomSprite.
This should for now conclude actor class scriptification. The remaining ten classes with the exception of MorphedMonster are all too essential or too closely tied to engine feature so they should remain native.
2017-01-20 01:11:36 +01:00
Christoph Oelckers
cd7986b1b1 - refactored global sides array to be more VM friendly.
- moved FLevelLocals to its own header to resolve some circular include conflicts.
2017-01-08 18:46:17 +01:00
Christoph Oelckers
c02281a439 - refactored the global sectors array into a more VM friendly type and moved it into FLevelLocals. 2017-01-07 19:32:24 +01:00
Christoph Oelckers
581cd27818 - floatified the translucency values in particle_t to elimintate the gross inaccuracies with fadeout time.
- widened ttl variable in particle_t to short to allow longer living particles than 6 seconds.
- reordered fields in particle_t to reduce struct size a bit.
2017-01-07 15:44:39 +01:00
Christoph Oelckers
acf66d9f8f - fixed some edge cases with visible player sprites through non-static line portals. This required reinstating some code which I thought was no longer needed. 2017-01-07 15:44:38 +01:00
Christoph Oelckers
b11c8fef57 - renamed a few variables for clarity. 2017-01-06 11:56:17 +01:00
Christoph Oelckers
e4c63563e3 - fixed: The 3D floor light splitting code for sprites did not copy the sector's fog density.
- fixed: fog calculations for fuzz effects were wrong.
2017-01-01 00:16:53 +01:00
Christoph Oelckers
a000b57204 - fixed player visibility determination by tracking and translating the actual actor position in addition to the camera position through portals. I hope this fixes the randomly appearing player sprites for good. 2016-12-29 22:19:09 +01:00
Christoph Oelckers
a3070e8846 - fixed: FGLTexture::CreateTexBuffer needs to be more careful with setting the texture's translucency information.
First, if it has already been determined the value should be left alone and second, for translated textures the generated buffer is inconclusive so in that case it cannot be used at all.
2016-12-29 14:33:53 +01:00
Christoph Oelckers
a3ae05299b - fixed: glPolygonOffset was not called for flat sprites. 2016-12-06 19:17:02 +01:00
Major Cooke
0e9f808c8a Fixed: FLATSPRITES were drawn backwards. 2016-10-04 10:05:57 -05:00
Christoph Oelckers
4eb5f10b02 - use normals to have proper light attenuation. So far only implemented for walls and flats. Models are planned but need some thinking about how to efficiently collect all required lights for an object. 2016-10-03 16:09:32 +02:00
Christoph Oelckers
8907a8bfe8 - fixed incorrect function name in sprites drawer.
- fixed duplicate property key in ADynamicLight serializer. Radius was already claimed by AActor so this needs a different name.
2016-09-24 12:09:53 +02:00
Major Cooke
561edd31ec Added check for angle visibility for GZDoom. 2016-09-24 09:29:00 +02:00
Christoph Oelckers
52d4c3970e - use glPOlygonOffset on non-translucent flat and wall sprites to avoid z-fighting. 2016-09-22 10:00:40 +02:00
Christoph Oelckers
ceaa040750 - added a workaround to avoid sprite splitting when it may cause glitches for sprites that get rotated in the draw pass. 2016-09-18 17:45:02 +02:00
Major Cooke
80c1baa596 Fixed: Pitch was rotating around the wrong axis. 2016-09-17 12:10:22 -05:00
Christoph Oelckers
bec17bd222 - FLATSPRITE fixes. 2016-09-17 08:26:30 +02:00
Major Cooke
d01b0e061e Moved flatsprite code into CalculateVertices. 2016-09-16 12:07:28 -05:00
Major Cooke
66d20726c2 Reintroduced flat sprites once more.
- Take note, current flat sprites will change. With no pitch involved, sprites are now flat across the ground.
2016-09-16 11:47:20 -05:00
Christoph Oelckers
8b6e09ca09 - changed the license of the OpenGL renderer to LGPL v3.
This was done to clean up the license and to ensure that any commercial fork of the engine has to obey the far stricter requirements concerning source distribution. The old license was compatible with GPLv2 whereas combining GPLv2 and LGPLv3 force a license upgrade to GPLv3. The license of code that originates from ZDoomGL has not been changed.
2016-09-14 20:01:13 +02:00
Christoph Oelckers
a98f364cc3 - added another missing nullptr check. 2016-09-13 23:37:19 +02:00
Christoph Oelckers
c593dda8f3 - added missing nullptr check. 2016-09-12 23:03:27 +02:00
Christoph Oelckers
71f4bacbd7 - missed something for last commit. 2016-09-10 12:36:44 +02:00
Christoph Oelckers
d3246be488 - draw wall sprites without translucent pixels as opaque. This looses the border smoothing with texture filtering but avoids sorting problems. 2016-09-10 12:24:13 +02:00
Christoph Oelckers
30cb651d92 - completely removed the flat sprite code.
This was conceptionally so wrong that there is no chance to salvage any of it.
2016-09-10 10:58:53 +02:00
Christoph Oelckers
181e5dc4db - fixed floor clipping of sprites. 2016-09-06 22:18:47 +02:00
Christoph Oelckers
bfe34f4dc7 - cleanup. 2016-09-06 21:39:13 +02:00
Christoph Oelckers
a36d89405a - separated the coordinate calculation from GLSprite::Draw. 2016-09-06 12:22:00 +02:00
Christoph Oelckers
3389a5a74e - removed most of the specific options for legacy hardware and consolidated them in one variable (does not work yet.) 2016-09-01 11:52:52 +02:00
Christoph Oelckers
b946114145 - removed unused variable. 2016-08-22 22:00:45 +02:00
Christoph Oelckers
7ba5acfb35 - added quad drawer interface so that this part can be done without altering a vertex buffer.
So far it's only the framework, the new code is not active yet.
2016-08-22 14:00:25 +02:00
Christoph Oelckers
9c9edbffdb - on older ATI drivers where the clip planes are broken, only disable the clip planes themselves, but not OpenGL 3.x so that dynamic lights still work as intended.
- only disable clip planes on Windows, but not on Linux or macOS.
- If a driver reports full OpenGL 4.5 support, assume that all features are working properly.
2016-08-08 12:55:09 +02:00
Major Cooke
36705b0f04 Added GZDoom version of SpriteAngle and SpriteRotation. 2016-07-30 00:33:33 +02:00
MajorCooke
35666f1e09 Fixed a nullptr crash with flatsprite actors. 2016-07-21 13:12:59 -05:00
MajorCooke
e56196eb1a Disable facing camera rotations if the actor is a flat/wall sprite.
- It not only looks bad, it also throws off users when trying to make perfectly aligned images since the plane is distorted wildly.
2016-07-13 09:31:22 +02:00
MajorCooke
cc8d84cd5d Fixed sprites defaulting to rotate around the center instead of the offsets. Seeing how it's still useful however, ROLLCENTER can still be used to center upon actors that are offsetted like monsters. 2016-07-13 09:31:22 +02:00
Christoph Oelckers
6b0b7ea049 - fixed sprite z coordinate calculation for flatsprites. 2016-07-04 01:00:01 +02:00
Christoph Oelckers
cc784fff14 Merge branch 'rollGZ2' of https://github.com/MajorCooke/zdoom 2016-07-04 00:45:37 +02:00
Christoph Oelckers
7b99c883e1 - use the exact same semantics and methods to handle player visibility as in the software renderer.
This fixes invisible player sprites in recursive line portals.
2016-06-18 12:14:20 +02:00
Christoph Oelckers
87d27b8db3 - fixed some crash issues with recent changes. 2016-06-18 10:01:24 +02:00
Christoph Oelckers
8ca07443f1 - fixed: Sprite splitting at 3D floors must set the fog parameters for the new light level. 2016-06-17 16:16:31 +02:00
MajorCooke
b2d2389343 Fixed: Slanted flat + roll sprites didn't take DONTFLIP into account. 2016-06-05 15:51:23 -05:00
MajorCooke
e58c6de7d6 DONTFLIP flag prevents the backside from flipping over. 2016-06-05 15:14:40 -05:00
Christoph Oelckers
8817f89192 - do not clip the first frame of very slow projectiles. 2016-05-04 20:31:21 +02:00
Christoph Oelckers
0f8f08edfd - fixed: camera facing sprites need to orient themselves toward the actual camera position, not the view actor (which may be invalid or in a completely different part of the map if a portal is being rendered.) 2016-05-03 19:24:28 +02:00
MajorCooke
16bea6cf1f - Fixed: Roll must orient the rotation based on pitch, not the other way around. 2016-05-02 10:46:44 -05:00
MajorCooke
9ec3093a34 Fixed some missed cases. 2016-05-02 08:52:44 -05:00
MajorCooke
673dab7f23 Removed PITCHFLATSPRITE. FLATSPRITE now encompasses the behavior. 2016-05-02 06:29:19 -05:00
MajorCooke
a163220e8c Removed FlatAngle. 2016-05-01 17:30:30 -05:00
MajorCooke
980a310755 GZDoom Roll Submission 2016-05-01 14:08:09 -05:00
Christoph Oelckers
4fb17561bc - optimize VSMatrix::Translate.
- use FVector3 for sprite rotations.
2016-05-01 12:39:08 +02:00
Christopher Bruns
6d95c9d544 Fix floating point update for camera facing billboard mode. 2016-04-30 18:15:29 -04:00
Christopher Bruns
5a33005303 Reorder two billboard rotations, so they work together correctly.
Fixes #126

# Conflicts:
#	src/gl/scene/gl_sprite.cpp
2016-04-30 18:15:27 -04:00
Christopher Bruns
b320787102 Implement new CVAR gl_billboard_faces_camera, which orients sprites toward camera, rather than along view direction.
# Conflicts:
#	gz3doom/GZ3DoomRiftMonitor1.bat
#	src/gl/scene/gl_sprite.cpp
#	src/gl/scene/gl_stereo3d.cpp
2016-04-30 18:15:27 -04:00
Christoph Oelckers
d84e079282 - render partial sprites oon the back side of a portal for actors in front of it. This is needed because the stencil will clip away those parts. 2016-04-30 16:57:53 +02:00
Christoph Oelckers
21283b18f4 - preparations for using clip planes on line portals. 2016-04-29 01:48:06 +02:00
Christoph Oelckers
066d5c63e2 - better be safe and not call GL_CLIP_DISTANCE functions on old hardware. 2016-04-26 21:55:17 +02:00
Christoph Oelckers
6e1b21d513 - added back sprite splitting for low end, plus some dynamic light code. 2016-04-26 21:31:24 +02:00
Christoph Oelckers
6450752399 - made it compile again.
The software renderer float conversion removed viewx and viewy which are still needed for efficient position checks against nodes without constant float->fixed conversions.
2016-04-23 10:50:19 +02:00
Christoph Oelckers
1f32f5a258 - some minor fixing and cleanup on gL portal code. 2016-04-20 11:39:41 +02:00
Christoph Oelckers
573d80f144 - render sproites through sector portals. 2016-04-18 23:52:15 +02:00
Christoph Oelckers
741f054601 - clip sprites to linked sector portal planes.
This is the first part of properly handling those transitions.
2016-04-18 16:27:04 +02:00
Christoph Oelckers
4af859094c - fixed: sprite clipping did not work anymore because the 'invalid' value was inconsistent.
- cleaned up the 'if' condition in PerformSpriteClipAdjustment,
- enabled weapon bobbing interpolation.
2016-04-07 14:09:07 +02:00
Christoph Oelckers
37ddd20b56 - removed leftover debug code from yesterday's particle fix. 2016-04-07 10:28:43 +02:00
Christoph Oelckers
dbad946fe3 - revert default planes to static in gl_sprite.cpp 2016-04-06 22:09:21 +02:00
Christoph Oelckers
a0d0d9339e - fixed some uninitialized stuff in particle rendering.
- added gl_ClampLight to all places where the light level is set.
2016-04-06 14:03:21 +02:00
Christoph Oelckers
603af1bb92 - compile bug in gl_sprite and some optimization in gl_walls.cpp 2016-04-03 22:13:38 +02:00
Christoph Oelckers
252a6e9038 - removed back and forth fixed<->float conversions in sprite code. 2016-04-03 13:00:09 +02:00
Christoph Oelckers
af78937a15 - updated GL renderer. 2016-04-02 23:17:16 +02:00
Christoph Oelckers
a27181cb0b - partial adjustments.
No point changing all the viewx/y/z stuff when that is about to get floatified next.
2016-03-31 21:42:27 +02:00
Christoph Oelckers
cf44d2e37a - adjustments. 2016-03-30 20:01:44 +02:00
Christoph Oelckers
59bb003285 - GL adjustments for plane changes. 2016-03-29 13:45:50 +02:00
Christoph Oelckers
a87c292f10 - adjustments to GL code for texture scale and vertex coordinate access. 2016-03-29 11:26:33 +02:00
Christoph Oelckers
bd7df76059 - fixed compilation of AActor::alpha 2016-03-22 12:56:20 +01:00
Christoph Oelckers
b54b34a512 - adjustments for floating point changes. 2016-03-21 02:57:02 +01:00
Christoph Oelckers
ae1571158c - fixed: The portal link table was not created when there were no sector portals.
- fixed: P_TryMove could loop endlessly over a list of static portals when there was an error during portal creation.
2016-03-12 17:43:36 +01:00
Christoph Oelckers
e3ddc74eb1 - check r_showviewer when deciding whether to render the player sprite. This is necessary when camera and player end up on different sides of a portal. 2016-02-24 01:14:24 +01:00
Christoph Oelckers
bd9907f20f - missing #includes in GL code. 2016-02-16 22:06:26 +01:00
Christoph Oelckers
0931134a9c - fixed: part of the special handling of projectiles being spawned near the camera also affected other actors, this caused the fly cheat to break. 2016-02-12 11:20:33 +01:00
Christoph Oelckers
dda73b531c Merge branch 'master' of https://github.com/rheit/zdoom
# Conflicts:
#	src/CMakeLists.txt
#	src/p_setup.cpp
#	src/r_defs.h
#	src/version.h

This only updates to a compileable state. The new portals are not yet functional in the hardware renderer because they require some refactoring in the data management first.
2016-02-05 12:31:41 +01:00
Christoph Oelckers
faa08410de - handle nocoloredspritelighting with 3D light splitter 2016-02-01 19:10:15 +01:00
Christoph Oelckers
2c55dcca27 - use hardware clipping to apply 3D lights to sprites. This solves all the problems with properly lighting models and billboarded sprites.
- add some restrictions for the checks that exclude sprites which are too close to the camera. Most importantly, for clipping the first frame of a projectile, do not solely clip against the projectile's speed but use the player's radius as a limiting factor to avoid too large distances.
2016-02-01 18:14:00 +01:00
Christoph Oelckers
d037493ffe - fixed handling of FF_FADEWALLS on 3D floors. The problems with the old method became quite obvious in the demo map after the light list bug got fixed. 2016-01-29 17:13:14 +01:00
Christoph Oelckers
5816049510 - made necessary adjustments for the coordinate refactoring in ZDoom. 2016-01-21 12:36:37 +01:00
Christoph Oelckers
ffa069205f - fixed: For fullbright sprites, a weapon's extra light must be ignored because it can be negative. 2014-12-25 18:30:34 +01:00
Christoph Oelckers
3c7664a460 - we don't really need a bBrightmap in a texture. All it did was duplicate some functionality of bMasked.
- renamed bBrightmapDisablesFullbright flag.
2014-10-26 08:41:52 +01:00
Christoph Oelckers
066e53ae4c - fixed: sprites rendered as 'bright' should not be affected by dynamic lights. 2014-10-23 10:54:26 +02:00
Christoph Oelckers
a25ed3c807 - fixed: inverted rendering for fuzzy things with light powerup was switched off due to change of render style. 2014-09-15 12:15:19 +02:00
Christoph Oelckers
4bb320a27c - route texture binding through the renderstate class for better control. Currently it's just a direct passthrough but this will change. 2014-09-09 12:00:42 +02:00
Christoph Oelckers
1050013017 major cleanup of the texture manager:
- use sampler objects to avoid creating up to 4 different system textures for one game texture just because of different clamping settings.
- avoids flushing all textures for change of texture filter mode.
- separate sprite and regular dimensions on the material level to have better control over which one gets used. It's now an explicit parameter of ValidateTexture. The main reason for this change is better handling of wall sprites which may not be subjected to such handling.
- create mipmaps based on use case, not texture type.
- allows removal of FCloneTexture hack for proper sharing of the same sprite for decals and other purposes.
- better precaching of skyboxes.
2014-08-22 23:50:38 +02:00
Christoph Oelckers
00d7707aef - allow reallocation of light buffer if more lights are needed.
- added a light preprocessing pass to the renderer so that a non-persistent buffer can be used with minimal mapping/unmapping. This only gets used if necessary because it adds some overhead to the renderer.
2014-08-19 14:18:21 +02:00
Christoph Oelckers
c98e3ca99d Merge branch 'master' into v2.x 2014-08-03 10:58:41 +02:00
Christoph Oelckers
b3e0d93385 - implemented rendering of wall sprites. 2014-08-03 10:57:58 +02:00