Commit graph

1382 commits

Author SHA1 Message Date
alexey.lysiuk
32412c7f75 Disabled printing of junk values for unsupported extensions in OpenGL startup log on OS X 2016-04-30 16:28:50 +03:00
alexey.lysiuk
6757447f1b Enabled printing of OpenGL startup log on all platforms 2016-04-30 16:28:35 +03:00
alexey.lysiuk
461c97d25b Fixed remaining issue with shader patching for old OpenGL 2016-04-30 16:28:19 +03:00
alexey.lysiuk
893d0c8915 Added old method to collect extensions
This required manual changes in generated file gl_load.c
2016-04-30 13:33:54 +03:00
alexey.lysiuk
3816b46938 Fixed compilation of OS X with native backend
TODO: check Linux build
2016-04-30 11:53:31 +03:00
alexey.lysiuk
de6f13f0b4 Updated gl_load.* files generated with glLoadGen 2.0.5
Added OpenGL extensions list file for glLoadGen
Added extensions for OS X version
2016-04-30 11:43:08 +03:00
Christoph Oelckers
70bf649364 - added clip planes for line portals and mirrors. This should eliminate the remaining problems with some visible geometry in front of the portal, it is also necessary to handle sprite splitting across line portals properly. 2016-04-29 12:26:57 +02:00
Christoph Oelckers
21283b18f4 - preparations for using clip planes on line portals. 2016-04-29 01:48:06 +02:00
Christoph Oelckers
e3fad118d2 - use the templated warp functions instead of the limited GZDoom 1.x version. gl_WarpBuffer has been removed. 2016-04-28 19:04:01 +02:00
Christoph Oelckers
434e39e62f - made adjustments to ZDoom's last changes. 2016-04-28 17:55:58 +02:00
Christoph Oelckers
d4806f82ca - reinstated some texturing-based dynamic light code. Not active yet and not tested yet. 2016-04-28 00:58:44 +02:00
Christoph Oelckers
ee7a4daa8c - preparations for textured dynamic lights. 2016-04-27 23:19:54 +02:00
MajorCooke
3be33b5725 The GL part of Quake Rolls. 2016-04-27 13:49:51 +02:00
Christoph Oelckers
73823e6a09 - fixed the texture size checks for determining if a camera texture requires offscreen rendering were wrong and checked the scaled size, not the physical size. 2016-04-27 02:56:55 +02:00
Christoph Oelckers
09f54b0940 - cleaned up the clip plane management for portals.
Unfortunately the math behind the old clip planes is utterly impenetrable and so poorly documented that I have no idea how to set that up, so it is deactivated for now. It wasn't working anyway.
2016-04-27 00:41:00 +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
3faf5afa3a - re-added software translucency splitting for old hardware. 2016-04-26 21:49:30 +02:00
Christoph Oelckers
b06c86db38 - added old wall splitting code as a fallback for old hardware. 2016-04-26 21:42:15 +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
89f36fb963 - enabled texture and model matrices for shader-less rendering and fixed the sky cap color application. 2016-04-26 20:45:56 +02:00
Christoph Oelckers
9d71c91f01 - reenabled software warping for shader-less rendering. 2016-04-26 20:20:00 +02:00
Christoph Oelckers
924b72b633 - added workarounds for the invulnerability colormap for non-shader rendering. Unlike the shader based versions these do not decolorize the screen. The advantage to the old texture duplication is that this is far less stressful on performance. 2016-04-26 20:02:57 +02:00
Christoph Oelckers
913e3df7e3 - fixed display of alpha textures without shaders.
As it turned out, the translation's alpha channel was clobbered by the whole setup.
2016-04-26 19:11:32 +02:00
Christoph Oelckers
7e6e2bc0a8 - stated adding GL 2.0 compatibility handling 2016-04-26 18:24:02 +02:00
Christoph Oelckers
eb27057853 - enable shader-less rendering. Still very incomplete, but at least the basics are working. 2016-04-26 16:44:03 +02:00
Christoph Oelckers
3b1500438d - got rid of VAO's. they have no impact on performance and are a general nuisance if some render paths cannot use them.
- cleaned up gl_interface and removed gl.compatibility.
2016-04-26 16:26:34 +02:00
Christoph Oelckers
f066457a48 - add shader patching to allow running the engine with GLSL 1.2.
- made some initial preparations for the shader-less fallback path.
2016-04-26 15:26:52 +02:00
Christoph Oelckers
ee9a40f5e9 - replace FLOATTYPE with float in stereo3d code. 2016-04-26 15:20:27 +02:00
Christoph Oelckers
090d13b915 - updated gl_interface to deal with older GL versions.
- added the framework for allowing multipass textured dynamic lights again.
2016-04-26 15:20:26 +02:00
Christoph Oelckers
97bed58d7d - use a compatibility mode version of gl_load, so that the fallback GL 2 code can get its definitions. 2016-04-26 11:32:40 +02:00
Christoph Oelckers
22b7a38539 - fixed incorrect sky texture check with Transfer_Heights. The actual sector was checked, not the one created by gl_FakeFlat. 2016-04-24 14:17:06 +02:00
Christoph Oelckers
f77c4642cb - made the adjustments. 2016-04-24 13:35:43 +02:00
Christoph Oelckers
0d17459c36 - do not disable sampler objects with -gl3. 2016-04-23 15:47:51 +02:00
Christoph Oelckers
9d9219795a - adjusted function names. 2016-04-23 13:48:25 +02:00
Christoph Oelckers
38f1213387 - made some adjustments. 2016-04-23 13:35:51 +02:00
Christoph Oelckers
a17e0b70d2 - adjustment for function name changes. 2016-04-23 11:38:33 +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
c786b65727 - allow the engine to run without sampler objects. This will create some overhead in the texture code, but that's still better than having to error out on those few systems where it may be an issue. 2016-04-22 19:54:51 +02:00
Christoph Oelckers
f299248c8a - be a bit more careful with using unvalidated portals for checking render hacks. 2016-04-22 09:15:22 +02:00
Christoph Oelckers
1c7b512cc0 - GL handling of new portal data organization.
This also fixes some oversights with plane and horizon portals which were included in several checks.
2016-04-20 20:08:53 +02:00
Christoph Oelckers
aa12772e07 - crash fix and minor optimization. 2016-04-20 13:18:53 +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
0d7bd368fa - added some fudging to draw the outer linedefs of a portal area.
This is needed so that polyportals get rendered correctly. For non-polyportals these will normally be outside the portal window and just be discarded.
2016-04-17 15:46:04 +02:00
Christoph Oelckers
faeb0303fe - renamed ADynamicLight's intensity properties to radius, to have their name match their meaning. 2016-04-17 13:53:29 +02:00
Christoph Oelckers
8a010ab871 - allow 90° rotations in skybox sectors. 2016-04-17 11:58:26 +02:00
Christoph Oelckers
0a35027f67 - fixed use of validcount for the GL renderer.
This needs to be incremented more locally to the place where it is used, so that it is guaranteed that each viewpoint that needs to be rendered increases it.
As a result the uses in the portal code could be removed.
2016-04-17 10:39:29 +02:00
Christoph Oelckers
95de1faa80 - fixed: The portal coverage builder initialized node_t::len differently than the polyobject splitter.
This was creating quite a mess when loading savegames with both portals and polyobjects.
2016-04-17 01:16:46 +02:00
Christoph Oelckers
a0a530945d - added new sector type 90 which designates a sector that is being used as a cubemapped skybox, in case someone wants to make one of those without using an actual sky for this. 2016-04-14 13:22:15 +02:00
Christoph Oelckers
328047ea28 - fixed issues with recent Stereo3D submission:
* there was a CVAR that was only defined in Windows
 * code did not compile with GCC.
 * due to bad setup it disabled multisampling.
2016-04-14 10:16:04 +02:00
Christoph Oelckers
caf80e74c4 - fixed multiplication/division mixup in TextureAdjustWidth.
- fixed: For top textures an incorrect ceiling height was passed to DoTexture.
2016-04-13 23:09:45 +02:00
Christoph Oelckers
bffb7444a0 - removed portal check for distance check in GL code. 2016-04-13 19:33:45 +02:00
Christoph Oelckers
d66a28fcde - fixed offsetting of player weapon sprites. 2016-04-13 16:24:25 +02:00
Christoph Oelckers
d0b30f31e1 - fixed: Checking for slopes at untextured bottom parts of the wall checked the ceiling's slope not the floor's. 2016-04-13 11:41:51 +02:00
Christoph Oelckers
37f43617d9 - make distance check 3D and use proper viewpoint. 2016-04-13 11:35:05 +02:00
Christoph Oelckers
bec3208efd - added support for distancecheck property. 2016-04-12 19:50:29 +02:00
Christoph Oelckers
a411b93e1d - fixed: The dynamic pulse light should always use its maximum size for linking into the sector lists, just like the other types with changing size do.
These limking operations are not cheap so it's preferable to have them affect a bit more geometry than running the linking code each tic.
2016-04-12 16:01:08 +02:00
Christopher Bruns
09d0cb5fd5 Merge branch 'master' of https://github.com/coelckers/gzdoom into two_more_stereo_modes
# Conflicts:
#	src/gl/system/gl_framebuffer.cpp
2016-04-11 18:25:54 -04:00
Christoph Oelckers
56f8974b66 - removed debug code. 2016-04-11 19:59:57 +02:00
Christoph Oelckers
273c1ea510 - fixed PointOnSide caclulation for dynamic lights. 2016-04-11 19:59:39 +02:00
Christoph Oelckers
bf2b61f61c - removed remaining STACK_ARGS from GL code. 2016-04-11 10:55:09 +02:00
alexey.lysiuk
bd8b8911d5 - fixed Windows 32-bit build 2016-04-11 10:08:18 +03:00
Christopher Bruns
f6d296e103 Add comment by line I modified to avoid compile problem with Visual Studio 2015 2016-04-09 22:08:40 -04:00
Christopher Bruns
355bc75001 Merge branch 'master' of https://github.com/coelckers/gzdoom into two_more_stereo_modes 2016-04-09 21:46:33 -04:00
Christopher Bruns
bde94879ad Restore stereoscopic geometry correctness, by inserting a minus sign where it always should have been, after finding that a compensating minus sign, where it probably should not have been anyway, was removed during the recent floating point refactoring. 2016-04-09 21:46:14 -04:00
Christoph Oelckers
84c8f38038 - fixed: The divisions in FTexCoordInfo::TextureOffset and RowOffset were turned into multiplications when converting to floating point. 2016-04-10 00:45:48 +02:00
Christopher Bruns
072a5e60ae Naive change to get latest version to compile. 2016-04-09 17:03:55 -04:00
Christopher Bruns
c6fa01dfbf Reimplement blue/yellow and quadbuffered stereo, this time with an additional CVAR gate on quadbuffered, for better hardware compatibility.obj
Something is terribly wrong with the separation in all stereo modes now though.
2016-04-09 15:40:55 -04:00
Christoph Oelckers
7a7e1652fc - fixed: lower textures used the wrong reference height for alignment 2016-04-09 21:06:32 +02:00
Christoph Oelckers
2e16f3d77e - made some adjustment for the DrawTexture changes. 2016-04-09 20:49:27 +02:00
Christoph Oelckers
1f0fd85d0e - adjustments for the DrawTexture interface changes. 2016-04-09 13:05:43 +02:00
Christoph Oelckers
25d7eaed0a - fixed parentheses in ADynamicLight::DistToSeg.
- floatifed OpenGL sector grouping.
- optimized light node collection. It should not create light nodes for out of range segs.
2016-04-08 12:38:09 +02:00
Christoph Oelckers
3e94832bfd - use the correct reference heights for positioning textures. 2016-04-08 01:58:13 +02:00
Christoph Oelckers
4d5671d654 - floatified the texture coordinate code. 2016-04-08 01:42:43 +02:00
Christoph Oelckers
eaf055dff4 - floatified the remaining parts of gl_walls.cpp. 2016-04-08 00:19:51 +02:00
Christoph Oelckers
4ac3734375 - floatified more of gl_wall.cpp. 2016-04-07 23:19:37 +02:00
Christoph Oelckers
ddbb8d79c1 - handle the player sprite when crossing a portal. 2016-04-07 21:13:37 +02:00
Christoph Oelckers
7df1a8ae81 - adjusted FGLLinePortal to recent changes in line_t. 2016-04-07 17:41:06 +02:00
Christoph Oelckers
ee3e3e35e6 - partial floatification of wall texturing code. 2016-04-07 17:00:13 +02:00
Christoph Oelckers
485a1bd0a5 - fixed: The 3D-floor plane renderer mixed float and fixed point. 2016-04-07 16:25:30 +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
123d503492 Merge branch 'master' into floatcvt 2016-04-04 12:25:36 +02:00
Christoph Oelckers
f6b33acbb1 - fixed plane access in GL code. 2016-04-04 12:22:47 +02:00
alexey.lysiuk
cbcde3a950 Fixed check for alpha channel in texture to select hqNx upscaling mode
Now it's the initial check with the adjustment in mode indices only, as old hqNx MMX indices (4..6) are now occupied by generic hqNx implementation
See http://forum.drdteam.org/viewtopic.php?t=6872
2016-04-04 12:13:50 +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
58eb64a7e0 - fixed a few fixed/float parameter mixups. 2016-04-03 12:54:47 +02:00
Christoph Oelckers
5a2eac8f15 - floatified vertices and removed the now redundant fx and fy members. This needs an added check for polyobject origins, though, so that such subsectors don't get rendered. 2016-04-03 11:40:14 +02:00
Christoph Oelckers
8a20f901a3 - removed the non.slope special handling in the wall processing code.
This may have made some sense when I added this 11 years ago but on a current computer it actually hurts performance a bit due to the branching that is involved - the code runs a bit faster with those special cases removed.
2016-04-03 02:07:37 +02:00
Christoph Oelckers
af78937a15 - updated GL renderer. 2016-04-02 23:17:16 +02:00
Christoph Oelckers
348c384bb6 - fixed scaling of skies with unusual dimensions. 2016-04-02 22:18:42 +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
c6ada2397c - adjustments. 2016-03-31 09:50:59 +02:00
Christoph Oelckers
cf44d2e37a - adjustments. 2016-03-30 20:01:44 +02:00
Christoph Oelckers
cadd8f2d4a - made adjustments for changes to linedef delta. 2016-03-29 16:31:58 +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
b958a5d748 - adjustments in GL code. 2016-03-25 15:14:09 +01:00
Christoph Oelckers
59406c1273 - adjust. 2016-03-24 16:40:15 +01:00
Christoph Oelckers
37bb816850 - some adjustments for voxels. 2016-03-24 16:10:17 +01:00
Christoph Oelckers
379d5bc0c5 - fixed some issues with dynamic lights caused by the floatification changes 2016-03-24 13:38:37 +01:00
Christoph Oelckers
f62c988a0e - adjustments for next update. 2016-03-24 12:47:08 +01:00
Christoph Oelckers
eadecaf407 - adjustments to GL renderer for decal and alpha changes.
- handle portals in sprite lighting, but do not use the playsim's utility functions for efficiency.
2016-03-22 23:19:21 +01: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
alexey.lysiuk
1f64d7ee22 Fixed wrong starting frame for wipe animation
Menu graphics appeared in starting frame with hardware renderer only
Software renderer was not affected as it reads pixels from front buffer instead of back buffer like OpenGL counterpart did
See http://forum.drdteam.org/viewtopic.php?t=6857
2016-03-15 11:49:56 +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
95d36670cf - that portal check was not correct. 2016-03-10 15:15:37 +01:00
alexey.lysiuk
7134f53638 - fixed: partial transparency wasn't taken into account
Smoothing of edges could mark textures as non-transparent when hqNx upscale filter is used
See http://forum.drdteam.org/viewtopic.php?t=6812
2016-03-09 13:17:42 +02:00
Christoph Oelckers
365c192a1d - added portal support for dynamic lights.
This requires fixed offsets so it only works with linked portals.
2016-03-08 21:22:12 +01:00
Christoph Oelckers
87d6e03cc2 - should have saved before committing... 2016-03-05 13:09:49 +01:00
Christoph Oelckers
26a05857d0 - fixed: Camera textures should not intercept and clear the NoInterpolateView flag.
Thanks to some really bad use of a global variable this was causing problems with the inverted order in which GZDoom needs to draw this stuff.
2016-03-05 12:46:47 +01:00
Christoph Oelckers
ef9f3da31d - do not use the precalculated coordinates for non-linked portals because they are not static. 2016-03-04 14:41:24 +01:00
Christoph Oelckers
dbd89c2702 - refactoring of portal grouping for the renderer, to allow more efficient clipping. 2016-03-04 14:10:13 +01:00
Christoph Oelckers
af1b70376b - added 21:9 handling to GL code. 2016-03-04 11:47:15 +01:00
Christoph Oelckers
7ceb6d86dd - fixed compilation. 2016-03-04 10:39:10 +01:00
Christoph Oelckers
ee18fdeb83 - fixed: Visplane merging should not be done for linedef based portals. 2016-02-28 10:10:01 +01:00
Christoph Oelckers
213d7a75c2 - fixed: r_showviewer must always be true when rendering a mirror portal. 2016-02-26 12:09:59 +01:00
Christoph Oelckers
387f3dd03a - fixed compile errors due to changes in ZDoom. 2016-02-25 13:06:13 +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
a901875925 - fixed: The horizon portal drawer must set the camera position for the shader.
This gets lost when several portals are drawn sequentially and this is the only portal type which needs this information but doesn't go through the normal setup.
If this is not done, fog on the horizon plane can break.
2016-02-21 01:38:41 +01:00
Christoph Oelckers
9af5dd357f - removed the camera adjustment in FGLRenderer::SetViewArea because this had already been done by R_SetupFrame. 2016-02-20 02:20:55 +01:00
Christoph Oelckers
bd67f3b3e5 - added skybox cast for GL code. 2016-02-20 02:20:43 +01:00
Christoph Oelckers
0a539ed2d5 - fixed: fake contrast was not applied. 2016-02-19 17:40:08 +01:00
Christoph Oelckers
bd9907f20f - missing #includes in GL code. 2016-02-16 22:06:26 +01:00
Christoph Oelckers
c69fd3ac80 - removed redundant SKYBOX enum. 2016-02-16 10:14:37 +01:00
Christoph Oelckers
9608252873 - copied over some stuff from the abandoned portals branch. 2016-02-15 13:11:31 +01:00
Christoph Oelckers
141065c3d5 - fixed: positioning of camera textures on 2-sided walls was not correct. 2016-02-14 14:33:52 +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
6a408b1a99 - added missing include to gl_walls.cpp 2016-02-10 20:49:06 +01:00
Christoph Oelckers
bd98182095 - fixed: The check for missing textures in Vavoom skyboxes was inverted. 2016-02-09 15:23:45 +01:00
Christoph Oelckers
eb7a908a92 - account for removed bam2rad function. 2016-02-08 22:06:26 +01:00
Christoph Oelckers
7105a87a1e - fixed retrieval of mapsection for polyportals.
- render wall portals on one sided lines.
2016-02-06 19:19:18 +01:00
Christoph Oelckers
3683a8ac58 - implemented line-to-line portal rendering. So far working for two-sided portal lines - one-sided yet to come. 2016-02-06 12:32:47 +01:00
Christoph Oelckers
297cf52ac9 - copied line portal code from portal branch and made some adjustments to make it compile. Portal rendering is not yet working. 2016-02-06 05:17:47 +01:00
Christoph Oelckers
25f1dc86d5 - removed duplicate function definition. 2016-02-06 00:50:43 +01:00
Christoph Oelckers
e6337537ed - this was missing the double slashes... 2016-02-05 14:04:28 +01:00
Christoph Oelckers
c4b1b96484 - handle one particular edge case when checking if a line is completely behind a mirror.
This is not really sufficient to detect all cases where something gets incorrectly flagged as ok, but it's the easiest one to detect.
2016-02-05 13:47:07 +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
b2158c5b96 - removed unneeded parameter. 2016-02-05 01:48:53 +01:00
Christoph Oelckers
c129cb3ca4 - reinstated software clipping by light volumes for walls.
It turned out that using hardware clipping planes exclusively to handle this cost more than it gained.
Now only the expensive or formerly impossible cases of intersecting light volumes or light volumes intersecting with the top and bottom of the wall polygon will use hardware clipping. The trivial cases will go back to software splitting.
2016-02-04 15:34:12 +01:00
Christoph Oelckers
0c8a817df4 - fixed wall clipping with 3D lights. 2016-02-04 01:12:18 +01:00
Christoph Oelckers
db766f9fe5 - fixed some warnings. 2016-02-03 13:03:38 +01:00
Christoph Oelckers
df9c59bcff - moved gl_builddraw.cpp to a new 'unused' directory and also added gl_sections, which is needed by the Build algorithm to preprocess the level. 2016-02-02 12:07:07 +01:00
Christoph Oelckers
d797415745 - fixed: dynamic lights did not relink themselves when their position changed. 2016-02-02 11:58:00 +01:00
Christoph Oelckers
22e9fc9b76 - re-fixed FTexture::CheckTrans
The original broken code had it always reset the translucency info to 'not present'.
The first fix completely removed that line, although it was merely misplaced, but still necessary to avoid constant re-checking of the same texture.
2016-02-02 11:37:39 +01:00
Christoph Oelckers
9453a8a7e6 - reuse the same vertex buffer data for all slices of a decal. 2016-02-01 21:50:55 +01:00
Christoph Oelckers
f11f86f05d - added light plane clipping for decals as well. 2016-02-01 21:45:26 +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
1ad310e69b - only draw visible 3D-lights. 2016-02-01 16:13:07 +01:00
Christoph Oelckers
67fc35e738 - some cleanup of wall processing code.
* removed SplitWall function
 * split PutWall into PutWall and PutPortal because none of the portal cases needs the overhead for normal walls.
2016-02-01 01:49:49 +01:00
Christoph Oelckers
9305cd86a0 - remove the GLWallLightEntry type. Everything it contains can be retrieved from the existing lightlist just as easily, and this approach avoids a lot of memory allocations.
- removed the SplitWall profiling timer because all it measures now is an almost empty function.
2016-02-01 01:03:34 +01:00
Christoph Oelckers
71da7406bd - since we no longer split walls at 3D floor boundaries, those planes no longer need to be added to the vertex height lists. 2016-02-01 00:42:37 +01:00
Christoph Oelckers
53a389aafc - fixed: for untextured walls, the texture must be disabled before rendering.
- fixed: untextured walls should never be passed to SplitWall.
- fixed: untextured walls should not be affected by dynamic lights (it's either fog boundaries or outsides of 3D fog volumes.)
2016-01-31 22:24:48 +01:00
Christoph Oelckers
9ce6a7932c - implemented rendering of 3D lights with clip planes. 2016-01-31 22:04:20 +01:00
Christoph Oelckers
5448b335c6 - rewrote render loop for walls. Not working yet. 2016-01-31 21:10:59 +01:00
Christoph Oelckers
f86535407d - forgot this. 2016-01-31 00:52:50 +01:00
Christoph Oelckers
1d9ab5c632 - clean out GLWall::SplitWall and instead of actually splitting the wall just attach a list of lights to it.
Actual handling will be in the rendering function because this doesn't need multiple vertex transfers to the GPU. All slices can be drawn from the same buffer with different uniform info being set.
2016-01-31 00:45:29 +01:00
Christoph Oelckers
fc57180d7e - added necessary state to implement 3D light splitting using hardware clipping planes. 2016-01-30 23:01:11 +01:00
Christoph Oelckers
37ac6ef9a0 - fixed: Translucency detection for GL textures was broken.
- fixed: Textures which are already scaled should not be upsampled.
- fixed: The transparency check in the upscaling code checked the wrong modes for exclusion when handling translucent textures.
2016-01-30 02:13:47 +01:00
Christoph Oelckers
4a9b2bf76d - fixed: The stencil cap drawer did not properly advance the vertex pointer. 2016-01-30 01:08:11 +01:00
Christoph Oelckers
342f1abcc7 - fixed: flickering dynamic lights with their first intensity value larger than the second one weren't properly linked into all touching sectors. 2016-01-30 00:45:47 +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
238990c871 don't leave any gaps in the used clip planes. 2016-01-27 12:32:39 +01:00
Christoph Oelckers
47db3252f4 - it's really not necessary to waste two clip planes for reflective surfaces because only one can be active at any time. 2016-01-27 12:30:55 +01:00
Christoph Oelckers
3c16a23865 - when rendering mirrors, discard subsectors lying behind them. 2016-01-27 12:02:43 +01:00
Christoph Oelckers
685385635f - made adjustments to FGLBitmap for the changes in its base class. 2016-01-26 12:05:40 +01:00
Christoph Oelckers
5816049510 - made necessary adjustments for the coordinate refactoring in ZDoom. 2016-01-21 12:36:37 +01:00
Christoph Oelckers
2657c08831 - fixed: stacked sector portals were not added to the render list 2016-01-13 21:33:27 +01:00
Christoph Oelckers
cd778b6bdc - fixed CollectPortalSectors 2016-01-13 00:15:04 +01:00
Christoph Oelckers
65022b780a - implemented 'copy portal to wall' linedef type. 2016-01-11 22:44:53 +01:00
Christoph Oelckers
196c9bc34d - cleaned up the skybox type detection logic. 2016-01-11 20:29:24 +01:00
Christoph Oelckers
ef7bcb3a66 - implement Eternity-Style flat and horizon portals. Not tested yet due to lack of material to work with. 2016-01-11 15:07:58 +01:00
Christoph Oelckers
926e9fdac4 - fixed: For 2D-drawing of camera textures the render style was not set. 2016-01-07 22:20:57 +01:00
Christoph Oelckers
7d2bbbd351 - fixed rendering of two-sided polyobjects that have their upper or lower textures exposed. 2016-01-05 18:59:32 +01:00
Christoph Oelckers
cc10fe9bc3 - fixed: The stereo3D code accessed the global 'viewsector' variable at a place where it no longer contained a correct value.
- fixed: The same code did not exclude camera texture views from drawing the 2D overlay.
2016-01-04 00:45:44 +01:00
Christoph Oelckers
f2c890272f - FRenderState::Apply does not need to call ApplyColorMask. 2016-01-01 10:59:34 +01:00
Christopher Bruns
ac6e2f4979 Use gl_RenderState to manipulate OpenGL color mask for anaglyph modes, to avoid glGet... 2015-12-31 11:57:21 -05:00
Christopher Bruns
95f4134630 Refactor stereo3d classes to use TArray instead of std::vector. 2015-12-31 09:36:37 -05:00
Christopher Bruns
5b7f9b04cd Add license headers to stereo3d source files. 2015-12-31 09:06:44 -05:00
Christopher Bruns
655defed28 Avoid compile errors on Linux. Fixes #107. 2015-12-30 17:54:54 -05:00
Christopher Bruns
8e237e6146 Merge branch 'master' of https://github.com/coelckers/gzdoom into stereo3d 2015-12-30 17:41:49 -05:00
alexey.lysiuk
f8c38a0bbe - fixed GCC's 'unknown pragma' warnings in hqNx MMX implementation 2015-12-25 15:42:13 +02:00
alexey.lysiuk
1c5d0ccd65 - enabled hqNx MMX on all platforms with Intel intrinsics support 2015-12-25 15:41:06 +02:00
alexey.lysiuk
69813993b0 - added missing hqNx modes to options menu 2015-12-25 10:00:31 +02:00
alexey.lysiuk
19ae244f66 - fixed: allow to use all hqNx texture upscale modes 2015-12-25 09:52:27 +02:00
Christoph Oelckers
c8810db5fe - fixed: clipping swimmable against non-swimmable translucent 3D-floors was broken due to an incorrect flag check. 2015-12-24 16:34:00 +01:00
Christoph Oelckers
17569139b6 Merge branch 'master' of https://github.com/coelckers/gzdoom 2015-12-11 22:26:45 +01:00
Christoph Oelckers
37ea94abf3 - fixed: translucent walls did not set up their dynamic lights in the GL4 render path. 2015-12-11 22:26:10 +01:00
Kyle Evans
841ddb0d63 <stdlib.h> has replaced <malloc.h> on FreeBSD as well 2015-12-10 23:01:59 -06:00
Christopher Bruns
10088544c3 Merge branch 'master' of https://github.com/coelckers/gzdoom into stereo3d
Conflicts:
	src/win32/i_system.cpp
2015-12-09 18:34:20 -05:00
Christoph Oelckers
f9cbaef1df - fixed: Boom's Transfer_Heights did not work for upper parts in sectors with a sky ceiling.
This incorrect check has been in the code for 12 years, unfortunately I have no idea anymore why it was added.
2015-11-30 00:11:30 +01:00
Christoph Oelckers
b00b49c111 - fixed skybox picking in GL renderer. 2015-11-25 11:57:53 +01:00
Christopher Bruns
bcac352265 Merge branch 'master' of https://github.com/coelckers/gzdoom into stereo3d 2015-11-09 19:40:53 -05:00
Christoph Oelckers
ad6ce5a726 - added a NULL check to gl_enhanced_nightvision's handler so that it won't crash without an uninitialized GL renderer. 2015-11-09 13:49:17 +01:00
Christopher Bruns
151b47c3ae Merge branch 'master' of https://github.com/coelckers/gzdoom into merge_down
Conflicts:
	src/win32/i_system.cpp
2015-11-03 20:21:27 -05:00
Christoph Oelckers
16cb4407a4 - disabled 'isVisibleToPlayerClass' check for dynamic lights affecting sprites.
Calling this function in the inner loop of a time critical rendering function apparently wreaks havoc with the CPU instruction cache - even though the function doesn't do anything substantial.
This needs some more in-depth investigation why just having that call can increase sprite rendering time by a factor of 10 and more if there's many lights in view.
2015-11-03 23:55:16 +01:00
Christopher Bruns
382d2cf74f Simplify ShiftedEyePose::GetProjection() maths. 2015-10-31 08:02:41 -04:00
Christopher Bruns
789dca2ab3 Refactor stereo 3d projection matrix calculations to use VSMatrix. 2015-10-31 07:46:36 -04:00
Christopher Bruns
89328e685c Use eye->TearDown method to restore glColorMask.
Restore assert in i_system.cpp that was interfering with my debugging.
Restore scoped colorMask-ing in gl_portal.cpp and gl_drawinfo.cpp.
2015-10-30 21:48:42 -04:00
Christopher Bruns
b82d611936 Call EndDrawScene for each eye.
Actually use stereoscopic projection matrix.
2015-10-30 21:29:36 -04:00
Christopher Bruns
0874455faf Initial implementation of five 3D modes -- some bugs remain. 2015-10-30 20:51:35 -04:00
Christopher Bruns
694dff67e4 Copy stereo3d source files from my GLOOME fork. 2015-10-26 09:08:18 -04:00
Christoph Oelckers
abf11f1a12 - print an error message if GL_ARB_sampler_objects cannot be found.
GZDoom requires this extension and all supported hardware has drivers implementing it but there still seem to be people out there who stuck to some older, obsolete drivers that don't.
2015-07-13 09:49:02 +02:00
Christoph Oelckers
065b7f9ad2 - fixed: The CollectSectorStack functions had a local sector_t variable used by gl_FakeFlat which caused a stack overflow. Using the global one defined at the top of the file is ok here. 2015-05-29 12:03:50 +02:00
Christoph Oelckers
a59824cd88 - fixed: MD2 vertex indices were signed shorts but should be unsigned.
- fixed a few warnings from Visual C++ 2015.
2015-05-07 11:36:31 +02:00
Christoph Oelckers
f273b6c46d - fix uninitialized variable. 2015-04-27 21:25:16 +02:00
Christoph Oelckers
baa775b31c - fixed: Light level must be clamped before accessing the distfogtable. 2015-04-24 16:55:31 +02:00
Christoph Oelckers
df6ffe6418 - adjustments for recent ZDoom changes. 2015-04-16 22:50:26 +02:00
Christoph Oelckers
052dda0fdd - made MD3 models reloadable. 2015-04-12 19:42:03 +02:00
Christoph Oelckers
feeebf5265 - rework MD2 code for reloading/precaching of geometry data. 2015-04-12 18:26:52 +02:00
Christoph Oelckers
cf7cb4f00f - use hardware clip planes to split translucent walls and sprites by 3D floor planes.
This method has the advantage that it also works for models, xy-billboarded sprites and walls that require complex splitting of the polygon. The old method using actual polygon splitting only works for strictly vertical data that could be trivially split in two.
2015-04-05 19:00:35 +02:00
Christoph Oelckers
45526c2769 - basics for using hardware clip planes to split translucent stuff by 3D floor planes. 2015-04-05 18:55:21 +02:00
Christoph Oelckers
bead3e046b - fixed weapon positioning again, after finding out that the first fix just worked around the actual problem: The entire coordinate calculation must be done in floating point with no integer math at all. Due to roundoff errors the stored int values needed for wall and flat placement significantly lack precision and with the high scaling factor that needs to be used for weapon HUD sprites these can easily become several pixels. After fixing this the border around sprite textures could be reverted to one pixel again.
- fixed: The 'may not be expanded' state should be stored in the texture and reused later. This also needs to revalidate the material if it decides that expansion should be disallowed.
2015-04-04 17:50:22 +02:00
Christoph Oelckers
91eafed5d3 - fixed coordinate calculations for trimmed sprites which were quite a bit broken. 2015-04-04 13:37:55 +02:00
Christoph Oelckers
67334bfa2b - calculate weapon positions fully in floating point to avoid roundoff errors.
- In order to get reliable results the empty border around scaled sprites must be the same scale as the sprite (i.e. 2 pixels for 2x scale and 4 pixels for 4x scale.)
2015-04-04 12:35:10 +02:00
Christoph Oelckers
48e21f6759 - consider MBF sky transfers when checking for skybox precaching. 2015-04-01 12:08:42 +02:00
Christoph Oelckers
1e9a6e667e - GL code adjustments for reworked precaching. 2015-04-01 11:59:41 +02:00
Christoph Oelckers
7701d54b1f - fixed: associated dynamic lights took the sprite/frame info from the actor's current state instead of from the actor's current sprite and frame, which may differ in case some placeholder sprite is used in the state. 2015-03-15 12:24:28 +01:00
Christoph Oelckers
fad3a54100 - fixed positioning for sky textures that are less than 128 pixels tall. 2015-03-15 12:10:22 +01:00
Christoph Oelckers
a5a53c51e6 - fixed: The flat drawing code assumed that the first element of the light list originated from the sector itself. This had been true formerly but in some situations it no longer is. 2015-02-10 21:52:19 +01:00
Christoph Oelckers
00639121c0 - added the missed parts of camera roll in gl_scene.cpp. 2015-02-10 20:34:10 +01:00
Christoph Oelckers
8a9692c29f - fixed: The code which decided whether to clamp two sided middle textures used the texture size instead of the render size for the specific linedef, meaning that any per-sidedef scaling was ignored. 2015-02-10 20:16:25 +01:00
Christoph Oelckers
a578ff5d06 - fixed a problem with some older AMD drivers: Normally calling glBindBufferBase should imply a call to glBindBuffer, but on these drivers it was never done, which resulted in the light uniform buffer never being created... 2015-01-24 13:13:54 +01:00
Christoph Oelckers
d4d041d5fc - fixed: FMaterial::ValidateTexture must determine whether to expand sprites before actually constructing the FMaterial object. 2015-01-08 18:44:55 +01:00
Christoph Oelckers
a8398e70b0 - fixed: The brightfog flag in the GL related map settings was never initialized.
- fixed: brightfog should not disable colored lighting for the weapon sprite.
2014-12-31 23:01:06 +01:00
Christoph Oelckers
4f08b20df5 - consider pixel stretching when rendering models. For non-voxels an aspect ratio of 1:1 must always be assumed while voxels need to be stretched so that 1 voxel unit == 1 map unit. 2014-12-31 12:53:29 +01:00
Christoph Oelckers
e6d59ec429 - fixed: with aspect ratio compensation in the view matrix it is necessary to adjust the view pitch for this because the playsim does not know anything about pixel ratio. 2014-12-31 12:04:55 +01:00
Christoph Oelckers
315827015c - made aspect ratio correction factor configurable through MAPINFO. 2014-12-29 23:52:20 +01:00
Christoph Oelckers
45cf65afbd - moved the aspect ratio correction factor from the projection to the view matrix where it should have been from the start.
- removed the mCameraPos variable in FGLRenderer because it was only used in one place where it is just as easy to use the global viewx/y/z variables directly.
2014-12-29 22:42:19 +01:00
Christoph Oelckers
045725de15 - use strncpy instead of sprintf tp init static char array to ensure that all elements get initialized. 2014-12-29 16:35:30 +01:00
Christoph Oelckers
fbfe0f1e7a - fixed: y-clamped textures with negative scale need to shift their texture coordinates into the proper [0..1] range. 2014-12-26 11:53:38 +01:00
Christoph Oelckers
c66a211200 - fixed: The sky renderer must not only alter the light mode but also reset the software light level to a 'disabled' value. 2014-12-25 22:45:40 +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
0bc2c0094a - fixed: For cubemapped skies with one texture for all 4 sides the texture was never set before rendering. 2014-12-19 16:35:34 +01:00
Christoph Oelckers
717c82ee4a - On Intel, we have to disable shader storage buffers because their complier contains a bug disallowing unsized arrays. 2014-12-01 09:58:23 +01:00
Christoph Oelckers
ec627d94dd - fixed: The depth clamp setting needs to be tracked per portal so that it can be properly restored afterward.
Regular skies need it off but SkyViewpoints need it on - and all others need to use the parent's setting.
So without engine side tracking we can end up rendering the sky with this setting off, resulting in omission of the fog layer.
2014-11-27 12:26:52 +01:00
Christoph Oelckers
eb753a0b7c - fixed: We also should use the proper 'copied' info for the non-inverted planes. 2014-11-27 10:49:03 +01:00
Christoph Oelckers
99d81621f9 - fixed: The 'copied' information of a 3D floor plane should only apply to that particular plane, but never the opposite one of the same 3D floor. 2014-11-27 10:46:28 +01:00
alexey.lysiuk
60d78bcdf6 - implemented hqNx image scaling algorithms using MMX and SSE2 intrinsics 2014-11-27 10:58:34 +02:00
Christoph Oelckers
a7f4185981 - now that we don't have to care anymore about SVN-related merging problems, let's save the 3 global variables of the GL renderer unconditionally, even if the software renderer is running. 2014-11-16 09:08:47 +01:00
Christoph Oelckers
b0a6c94fa4 - fixed: the translucency flag for the flags renderer was inconsistent between the light pass and the render pass on GL 3.x hardware, resulting in bad buffer indices being sent to the shader. 2014-11-09 12:10:33 +01:00
Christoph Oelckers
3e50db9bf0 - fixed: When setting the object color for a shaded decal, the alpha channel must be forced to be 255. The decal's AlphaColor contains the palette index in those bits. 2014-10-26 15:11:04 +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
5a91fd0ad4 - fixed: DMD models didn't load their triangle data.
- fixed: MD2 models didn't handle the triangles' byte order.
2014-10-24 13:03:26 +02:00
Christoph Oelckers
f8016bef86 - fixed: voxels didn't set their index count. 2014-10-24 11:52:45 +02:00
Christoph Oelckers
e5cd90f323 - use separate vertex buffers per model to avoid large memory usage peaks. Also delete the geometry data for the models once it has been copied into the vertex buffer. 2014-10-24 11:43:25 +02:00
Christoph Oelckers
bca47bb9bc - removed debug code.
- fixed: planes that are created by splitting translucent 3D-floors may never be rendered.
2014-10-23 17:35:58 +02:00
Christoph Oelckers
36b35e85f3 - fixed: overflow checks for dynamic light buffer were not correct. 2014-10-23 12:06:00 +02: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
618c23303f - fixed: The interpolation factor for models was never passed to the shader. 2014-10-23 09:57:27 +02:00
Christoph Oelckers
5302a10a7d - diable software lighting for textured automap.
* since it is designed for software-style light diminishing it doesn't work for 2D.
* additionally it left the lighting state in an unsuitable setting for further 2D rendering.
2014-10-23 09:19:30 +02:00
Christoph Oelckers
89ce0b8cb7 - test if GLSL version 1.4 can handle uniform buffers on old Intel hardware without making problems... 2014-10-22 16:54:26 +02:00
Christoph Oelckers
9f1f17c306 - fixed: The PolyBSPs weren't fully initialized. Some GZDoom-only fields in the segs were skipped. 2014-10-14 08:54:08 +02:00
Christoph Oelckers
5d032f3fcf - fixed: Since the engine can no longer change renderers on the fly, thanks to ZDoom's messed up video startup code, we have to abort with a fatal error if we can't create a GL context. Otherwise the user will never see a meaningful message. 2014-10-06 10:00:02 +02:00
Christoph Oelckers
3e2a17538b - fixed: HUD weapons were affected by dynamic lights even when the CVARs said that they shouldn't. 2014-10-06 09:05:42 +02:00
Christoph Oelckers
ead8a2874d - fixed: The texture mode implied by render style did not work for models. 2014-10-05 12:03:55 +02:00
Christoph Oelckers
fd3128a164 - fixed: When changing enhanced nightvision mode the shaders need to have their fixed colormap state reset to ensure that the new settings get used.
- fixed: The shader code for handling special fixed colormaps did not use the color vertex attribute which was most evident with the 'shadow' render style on the spectre.
2014-10-05 09:40:36 +02:00
Christoph Oelckers
48da2f87bb - fixed: The light buffer index must not be reset between rendering a camera texture and the main scene.
Since rendering is asynchronous, the camera texture scene may not be finished once the main scene's lights get filled in. Unfortunately forcing a synchronization with glFinisg has bad side effects on performance the only remaining option is to use separate parts of the buffer for both scenes, which in extreme cases may increase the light buffer's size - but on modern hardware that shouldn't be a problem.
2014-09-21 21:01:11 +02:00
Christoph Oelckers
b2cf7d6512 - fixed memory leak: The sector links for dynamic lights were never freed. 2014-09-21 12:40:08 +02:00
Christoph Oelckers
7359631a43 - fixed weapon drawing rules to account for the death camera. 2014-09-21 11:08:38 +02:00
Christoph Oelckers
4682736585 - fixed: non-tiled mid textures on a fog boundary require some special clamping to be performed in the shader. 2014-09-21 11:08:17 +02:00
Christoph Oelckers
da87a34a6f - fixed: MODELDEF's FrameIndex command was case sensitive. 2014-09-21 09:40:41 +02:00
Christoph Oelckers
43e2d704a3 - always use glPolygonOffset to render translucent geometry. 2014-09-20 09:04:36 +02:00
Christoph Oelckers
92dcf2e5ef - fixed some of those supremely annoying and supremely pointless GCC/Clang compiler warnings. 2014-09-17 11:03:05 +02:00
Christoph Oelckers
c5e00dbc53 fixed: The sampler object for camera textures was never initialized. 2014-09-17 10:52:34 +02:00
Christoph Oelckers
c773a500f2 - only activate shader storage buffers on modern drivers also supporting GL_ARB_buffer storage. Early adopters of this extension (i.e. older AMD drivers mainly) tend to implement this badly. 2014-09-17 09:01:16 +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
8e7e16f73a - fixed: The light uniform buffer may not be mapped with GL_MAP_INVALIDATE_BUFFER_BIT, because it needs to be mapped for each portal in a scene but it must preserve the existing data for the remaining translucent objects. 2014-09-15 10:27:09 +02:00
Christoph Oelckers
32f08adaf3 - moved some code to better places.
- allow GL version 3.0 in Windows, too.
2014-09-14 23:01:57 +02:00
Ralgor
5cc43137a1 Only require OpenGL 3.0 compatibility profile. 2014-09-14 14:43:42 -05:00
Ralgor
cfc8f3dbbf Global GL render context shouldn't be initialized inside of gl_PrintStartupLog, since it's not compiled in non MSC builds. 2014-09-14 14:42:14 -05:00
Ralgor
1a70a6aabc The light buffer should check for shader_storage_buffer_object rather than buffer_storage. 2014-09-14 14:29:13 -05:00
Ralgor
ddf58b43c9 Fix compile errors on linux. 2014-09-14 14:28:05 -05:00
Christoph Oelckers
3c2f1952fd Merge branch 'master' into v2.x 2014-09-12 21:01:55 +02:00
Christoph Oelckers
25951362fc - fixed: When applying Boom's Transfer_Heights effect to a sector, gl_FakeFlat needs to remove all portals from the original sector planes that are being replaced in the sector copy. 2014-09-11 13:02:39 +02:00
Christoph Oelckers
acf6c259d8 - changed the handling of alpha textures. The only special case they need is with palette-less textures and this can be handled far more easily and robustly with a predefined translation instead of passing another parameter through all the layers of the texture management code. This also fixes problems with paletted PNGs that get used as an alpha texture because the old method clobbered the image's palette. 2014-09-09 13:21:36 +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
d5633701b4 - swapped order of textures in burn shader to avoid some problems with the texture samplers.
- fixed: texture sampler state for the burn texture was never set.
2014-09-09 10:17:44 +02:00
Christoph Oelckers
c6f4c0b6f0 - fixed: FMaterial's tex pointer could be accessed before it was set.
- allow more than two texture units in shaders.
2014-09-09 10:03:34 +02:00
Christoph Oelckers
62880f113b - fix a render glitch with Back to Saturn X MAP06: Do not flood missing upper and lower textures with the backsector's flat if that backsector is malformed (i.e. has no area.) 2014-09-09 08:47:39 +02:00
Christoph Oelckers
9b8869e78d Merge branch 'master' into v2.x
Conflicts:
	src/gl/textures/gl_material.cpp
2014-09-09 01:30:11 +02:00
Christoph Oelckers
86d9c7ec8e - add some compatibility settings to fix rendering glitches in BTSX_E1 MAP12. 2014-09-09 01:27:41 +02:00
alexey.lysiuk
e29fce6951 Fixed missing transparency on upscaled textures
Textures with diagonal patterns were treated as opaque after resizing
Images upscaled by hqNx were affected mostly by this issue

http://forum.drdteam.org/viewtopic.php?f=24&t=5370
http://zandronum.com/tracker/view.php?id=269
http://zandronum.com/tracker/view.php?id=315
2014-09-07 11:52:51 +03:00
Christoph Oelckers
b96dd6c421 - fixed: The missing fourth component of the texture coordinate must be filled with 1.0, not 0.0 before applying the texture matrix. Not doing so will cancel out the translation part of the matrix. 2014-09-02 10:31:48 +02:00
Christoph Oelckers
fa3a62e954 - fix a render glitch with Back to Saturn X MAP06: Do not flood missing upper and lower textures with the backsector's flat if that backsector is malformed (i.e. has no area.) 2014-08-31 23:01:53 +02:00
Christoph Oelckers
a280c20b4e - fixed: If we want to cache texture binding state we have to reset it in all places where a texture becomes unbound. 2014-08-31 19:00:17 +02:00
Christoph Oelckers
12160bd29c - remove some obsolete code from decal rendering.
- avoid rebinding the same texture multiple times, as there's considerable overhead in the texture manager.
- check gl_sort_textures only once per scene, not per draw list.
2014-08-30 15:34:14 +02:00
Christoph Oelckers
6a3cd6378a - found out that reading the CPU's real time clock costs a not insignificant amount of time so this is now only done when either the benchmark command is running or the rendertimes are shown. 2014-08-30 14:33:06 +02:00
Christoph Oelckers
49ec7beb8f - separate draw lists for walls and flats. This makes the sorting much more efficient because draw types no longer need to be checked in the compare function. This is a lot more important than having perfect texture order. 2014-08-30 13:04:41 +02:00
Christoph Oelckers
a903cbe12e - sorting draw items by light level no longer makes sense so remove all corresponding code from dicmp. 2014-08-24 13:10:45 +02:00
Christoph Oelckers
bf03d02228 - print OpenGL profile type in startup log. 2014-08-24 01:09:44 +02:00
Christoph Oelckers
904cc2e158 - some code cleanup. 2014-08-23 18:54:24 +02:00
Christoph Oelckers
bf6079af46 - fixed incorrect check for overrideshader. 2014-08-23 00:47:05 +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
274a4216ea - disabling inlining in the GL loader produces an executable that's 8kb smaller. 2014-08-21 11:47:53 +02:00
Christoph Oelckers
e132fc5eed - replaced GLEW with GLLoadGen for GL access. This allows to have a header that only contains what's actually required, namely OpenGL 3.3 plus glBegin and glEnd which are the only compatibility functions needed for the fallback render path.
GLEW has two major problems:

- it always includes everything, there is no way to restrict the header to a specific GL version
- it is mostly broken with a core profile and only works if all sanity checks get switched off.
2014-08-21 11:02:46 +02:00
Christoph Oelckers
6f65bccf1c - reinstated the far superior assembly HQnX version for Visual C++. 2014-08-20 12:45:33 +02:00
Christoph Oelckers
86d37e06f9 - lowered requirements of GL 2.x to OpenGL 3.3.
There was one issue preventing the previous 2.0 betas from running under GL 3.x: The lack of persistently mapped buffers.
For the dynamic light buffer today's changes take care of that problem.
For the vertex buffer there is no good workaround but we can use immediate mode render calls instead which have been reinstated.

To handle the current setup, the engine first tries to get a core profile context and checks for presence of GL 4.4 or the GL_ARB_buffer_storage extension.
If this fails the context is deleted again and a compatibility context retrieved which is then used for 'old style' rendering which does work on older GL versions.

This new version does not support GL 3.2 or lower, meaning that Intel GMA 3000 or lower is not supported. The reason for this is that the engine uses a few GL 3.3 features which are not present in the latest Intel driver.
In general the Intel GMA 3000 is far too weak, though, to run the demanding shader of GZDoom 2.x, so this is no real loss. Performance would be far from satisfying.

A command line option '-gl3' exists to force the fallback render path. On my Geforce 550Ti there's approx. 10% performance loss on this path.
2014-08-19 15:56:33 +02:00
Christoph Oelckers
a2dc4afe3f - screwed by the editor's autocompletion... (wrong GL flag was used...) 2014-08-19 14:25:47 +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
38796e7714 - removed some obsolete and useless GL calls. 2014-08-17 11:41:03 +02:00
Christoph Oelckers
b9ffb51d0c - small but important optimization: Two-sided lines with both sides in the same sector don't really require vertex splitting for precise rendering. 2014-08-04 23:00:40 +02:00
Christoph Oelckers
09a68e8c93 - fixed incorrect function call in shader compiler. 2014-08-03 18:14:19 +02:00
Christoph Oelckers
19cfffebb3 - fixed: the WallTypes enum contained a value that no longer was valid. This was fixed orignally last week but it seems to have gotten lost. 2014-08-03 12:21:05 +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
Christoph Oelckers
398d902e7e - split off sprite clipping adjustment code into its own function. 2014-08-03 10:22:12 +02:00
Christoph Oelckers
a63871d170 - at least for Intel GMA we need shaders without 'discard' to render non-transparent stuff. The performance penalty is rather hefty here. 2014-08-02 21:06:34 +02:00
Christoph Oelckers
a97b58fa27 - added check for light uniform buffer overflows, because uniform buffers on Intel are rather small. 2014-08-02 20:41:13 +02:00
Christoph Oelckers
e35fefdc06 - better rebind the active shader after updating the matrices. 2014-08-02 11:59:04 +02:00
Christoph Oelckers
b2860a1d63 - it looks like glProgramUniform is not working correctly with Intel drivers, so better forget about it for setting the view and projection matrices. Even on NVidia the time difference can only be measured in microseconds per frame so it's not a big loss. 2014-08-02 11:57:42 +02:00
Christoph Oelckers
a8e9c1832f - decided to restrict the 2.0 beta to OpenGL 4.x with GL_ARB_buffer_storage extension and removed all code for supporting older versions.
Sadly, anything else makes no sense.
All the recently made changes live or die, depending on this extension's presence.
Without it, there are major performance issues with the buffer uploads. All of the traditional buffer upload methods are without exception horrendously slow, especially in the context of a Doom engine where frequent small updates are required.
It could be solved with a complete restructuring of the engine, of course, but that's hardly worth the effort, considering it's only for legacy hardware whose market share will inevitably shrink considerably over the next years.
And even then, under the best circumstances I'd still get the same performance as the old immediate mode renderer in GZDoom 1.x and still couldn't implement the additions I'd like to make.

So, since I need to keep GZDoom 1.x around anyway for older GL 2.x hardware, it may as well serve for 3.x hardware, too. It's certainly less work than constantly trying to find workarounds for the older hardware's limitations that cost more time than working on future-proofing the engine.

This new, trimmed down 4.x renderer runs on a core profile configuration and uses persistently mapped buffers for nearly everything that is getting transferred to the GPU. (The global uniforms are still being used as such but they'll be phased out after the first beta release.
2014-08-01 22:42:39 +02:00
Christoph Oelckers
7967082e60 - use the light buffer to handle dynamic lighting. 2014-08-01 20:59:39 +02:00
Christoph Oelckers
1ec58011d2 - start of light buffer implementation so that we don't have to use uniform arrays which appear to be broken on AMD. 2014-07-31 00:44:22 +02:00
Christoph Oelckers
ef8f66c9a1 - removed the code for hardware alpha testing again because it didn't work anymore with how things are set up now.
- we need to check all GL versions when trying to get a context because some drivers only give us the version we request, leaving out newer features that are not exposed via extension.
- added some status info about uniform blocks.
2014-07-30 23:13:16 +02:00
Christoph Oelckers
beabfad293 Merge branch 'master' into Glew_Version_For_Real 2014-07-28 22:23:56 +02:00
Christoph Oelckers
318aebc4ad - fixed: the vertex collection code used incorrect indices for checking the checkmap array. 2014-07-28 22:23:17 +02:00
Christoph Oelckers
192daf1d5a Merge branch 'master' into Glew_Version_For_Real 2014-07-27 21:57:38 +02:00
Christoph Oelckers
ece10bb57f - fixed several incorrect uses of abs instead of fabs. 2014-07-27 21:57:05 +02:00
Christoph Oelckers
c9c93a58a2 - fixed bad constant and potential use of uninitialized variable. 2014-07-27 21:55:25 +02:00
Christoph Oelckers
3d24f58bf0 - fixed conditions for disabling the flat vertex buffer. 2014-07-27 20:18:32 +02:00
Christoph Oelckers
29a56fe01c Merge branch 'master' into Glew_Version_For_Real 2014-07-27 17:59:50 +02:00
Christoph Oelckers
925305aa05 - fixed: The code for updating vertex dirty state had been completely missing. I have no idea when it disappeared... 2014-07-27 17:58:51 +02:00
Christoph Oelckers
4904abfc1c - forgot test stuff. 2014-07-27 13:47:37 +02:00
Christoph Oelckers
97341fcb31 - reenabled the flat vertex buffer for GL 3.x NVidia hardware. On AMD and Intel it'll stay off because past tests have shown that it won't improve performance at all. 2014-07-27 13:46:35 +02:00
Christoph Oelckers
c1d8f235c2 - renamed some stuff that clashed with gl function names. 2014-07-27 12:33:54 +02:00
Christoph Oelckers
77d9d9b2a5 - fixed: For updating the model VAO's attribute pointers it is necessary to first bind the vertex buffer we need to refer to, because this is not part of the VAO's state. 2014-07-27 11:53:18 +02:00
Christoph Oelckers
e07d06fa2a Merge branch 'master' into Glew_Version_For_Real 2014-07-26 22:26:58 +02:00
Christoph Oelckers
7ae25906fd - fixed: fog must be disabled before drawing the HUD model, not after it. 2014-07-26 22:26:17 +02:00
Christoph Oelckers
bdf5bbd34e - make the shader timer part of the render state. 2014-07-26 20:56:10 +02:00
Christoph Oelckers
637aa9d77e - some adjustments to allow testing the different rendering methods. 2014-07-26 18:43:54 +02:00
Christoph Oelckers
6c9a818220 - allow different render modes if persistent buffers are not available (untested!) 2014-07-26 10:23:07 +02:00
Christoph Oelckers
e0b756e511 - fixed: The cubemapped skybox renderer did not set up the model matrix properly. 2014-07-17 10:04:20 +02:00
Christoph Oelckers
eb9d2d9917 - reactivate compatibility profile so that immediate mode drawing can be used on older hardware not supporting persistently mapped buffers.
- reactivate alpha testing per fixed function pipeline
- use the 'modern' way to define clip planes (GL_CLIP_DISTANCE). This is far more portable than the old glClipPlane method and a lot more robust than checking this in the fragment shader.
2014-07-17 02:37:18 +02:00
Christoph Oelckers
6b9d6787d9 - move models into their own draw list to avoid frequent buffer changes.
- same for SKYHACK walls. Although rare, they would get in the way of optimizing the draw calls if not being separated out.
2014-07-15 21:16:59 +02:00
Christoph Oelckers
b8bcbe819b - removed texture based dynamic lighting. For GL 3.x the shader approach is always better.
- fixed: sky fog was not unset.
2014-07-15 20:49:21 +02:00
Christoph Oelckers
fb6b4238ed - fixed: glProgramUniform is only present from GL 4.1 or a specific extension so it may not be used on systems not supporting it. 2014-07-15 02:48:59 +02:00
Christoph Oelckers
fc0cf4f998 - GZDoom now runs on an OpenGL core profile. :)
It's probably still necessary to replace GLEW with another loader library. GLEW is pretty much broken on core OpenGL without some hacky workarounds...
2014-07-15 02:26:23 +02:00
Christoph Oelckers
6046b11b4f - all shaders now compile in core profile. 2014-07-15 01:05:53 +02:00
Christoph Oelckers
eedc5a69be - replaced builtin position vertex attribute. 2014-07-15 01:02:48 +02:00
Christoph Oelckers
1b7f5a2e6a - replaced builtin texture coordinate vertex attribute. 2014-07-15 00:59:01 +02:00
Christoph Oelckers
5a322742c3 - remove use of builtin and deprecated color vertex attribute. 2014-07-15 00:37:13 +02:00
Christoph Oelckers
ed8a21fd86 - replaced deprecated alpha testing with shader code. 2014-07-14 21:14:43 +02:00
Christoph Oelckers
84a49e37ee - handle normals for spheremapped mirror surfaces using non-deprecated features.
- move all WGL references out of global header files so that global wgl header include is no longer necessary
2014-07-14 19:54:07 +02:00
Christoph Oelckers
ed5ee4e8d1 - removed some obsolete init stuff and some deprecated constants. 2014-07-14 18:48:46 +02:00
Christoph Oelckers
1f2f7616e1 - remove timing of matrix application method 2014-07-14 00:31:10 +02:00
Christoph Oelckers
150135a07d - reinstate drawcall timing. 2014-07-13 23:14:28 +02:00
Christoph Oelckers
ce3653f6e1 - remove all uses of builtin matrices. 2014-07-13 23:13:40 +02:00
Christoph Oelckers
2214c0ac06 - remove all uses of builtin matrix manipulation. Only glLoadMatrix for view and projection matrix are left. 2014-07-13 22:37:34 +02:00
Christoph Oelckers
dbb05c5f33 - remove use of builtin texture matrices.
- make matrix class single precision.
2014-07-13 20:41:20 +02:00
Christoph Oelckers
9230a20f18 - added some checks to the wall rendering code that will allow to disable the clip planes in many cases, even when a plane mirror portal is active. This also solves the precision issue with using world coordinates for clip checks. 2014-07-13 17:15:17 +02:00
Christoph Oelckers
00fcf4bc06 - for some reason using world coordinates for clipping in the shader is somewhat imprecise so the clip plane heights have to be adjusted a bit for it. 2014-07-13 13:25:42 +02:00
Christoph Oelckers
d868f60f6c - since the clip planes for plane mirrors did not work anymore I reimplemented them using shader based logic. It still needs to be seen if this affects performance on older hardware. 2014-07-13 12:14:12 +02:00
Christoph Oelckers
7cbffc7c14 - test code removal. 2014-07-10 10:35:02 +02:00
Christoph Oelckers
a936629cec - use default fragment shader for burn and stencil shader, with the time consuming parts disabled by a #define, to avoid code duplication. 2014-07-10 10:33:07 +02:00
Christoph Oelckers
92185f96eb - fixed overflow with storing a sprite's dynamic light color in a PalEntry. 2014-07-01 09:52:41 +02:00
Christoph Oelckers
9a6bc64381 - use vertex array objects to manage vertex buffers. 2014-07-01 00:51:02 +02:00
Christoph Oelckers
5ee626459d - use model vertex buffer to render voxels. 2014-06-30 18:57:24 +02:00
Christoph Oelckers
f710518903 - use a uniform array to store vertex data to render dynamic stuff on GL 3.x hardware without the ARB_buffer_storage extension.
Due to the way the engine works it needs to render a lot of small primitives with frequent state changes.
But due to the performance of buffer uploads it is impossible to upload each primitive's vertices to a buffer separately because buffer uploads nearly always stall the GPU.
On the other hand, in order to reduce the amount of buffer uploads all the necessary state changes would have to be saved in an array until they can finally be used. This method also imposed an unacceptable overhead.
Fortunately, uploading uniform arrays is very fast and doesn't cause GPU stalls, so now the engine puts the vertex data per primitive into a uniform array and uses a static vertex buffer to index the array in the vertex shader.
This method offers the same performance as immediate mode but only uses core profile features.
2014-06-30 18:10:55 +02:00
Christoph Oelckers
6efefd9b7f - use vertex buffer to render MD3 models. 2014-06-30 18:02:52 +02:00
Christoph Oelckers
54297acde4 - removed obsolete gl_lightbuffer code.
This never worked properly and by now far better options are available to solve the problem of dynamic light data uploads.
2014-06-30 13:30:10 +02:00
Christoph Oelckers
9c5cec0056 - draw wipes with buffers
Only two things left that still use immediate mode directly: MD3 models and voxels.
2014-06-30 10:05:15 +02:00
Christoph Oelckers
1efc2938b7 - implement model vertex buffer and draw MD2 models using it instead of using the GLCommands from the model. 2014-06-29 23:24:16 +02:00
Christoph Oelckers
9d1dbf4eab - fixed: FBufferedUniform1f didn'T work because it used an int as its buffered value. 2014-06-29 14:08:44 +02:00
Christoph Oelckers
ffcb6cb70a - added second vertex coordinate attribute for model interpolation. 2014-06-29 11:00:21 +02:00
Christoph Oelckers
e2e71e072e removed error suppression code from shader compilation.
With GL 2.x support the engine still had something to fall back on, with that removed it needs to abort.
2014-06-23 09:26:29 +02:00
Christoph Oelckers
1f0c69a0e9 - some cleanup after GL 2.x code removal
- reinstated burn warp with shader based code.
2014-06-21 16:41:45 +02:00
Christoph Oelckers
2925c96b59 removed all GL 2.x code.
After thinking about it for a day or so I believe it's the best option to remove all compatibility code because it's a major obstacle for a transition to a core profile.
2014-06-21 15:50:32 +02:00
Christoph Oelckers
d5dceb6874 - changed alpha texture handling to avoid using the deprecated GL_ALPHA8 texture format unless we have a compatibility context of an older GL version. 2014-06-21 12:52:19 +02:00
Christoph Oelckers
ca76c2525e - more vertex buffer stuff for models, still not tested. 2014-06-19 22:24:33 +02:00
Christoph Oelckers
5944894138 - create vertex buffer data for MD2/DMD models. 2014-06-19 17:06:26 +02:00
Christoph Oelckers
3e9b9c280b - initialize model data at engine start, not at level start. 2014-06-19 15:22:00 +02:00
Christoph Oelckers
412d6499d9 - removed the voxel vertex buffer because it needs to be gone before implementing a model vertex buffer. 2014-06-19 14:46:55 +02:00
Christoph Oelckers
03916d75de - cleaned up MD3 rendering and merged RenderFrame and RenderFrameInterpolated into one function. 2014-06-19 13:58:49 +02:00
Christoph Oelckers
59522f7065 - simplified MD2 drawing code as preparation for a buffer based implementation. 2014-06-19 13:37:30 +02:00
Christoph Oelckers
965a2a2d79 definition for model vertex buffer. 2014-06-15 21:56:37 +02:00
Christoph Oelckers
e6f14b055a - use buffer based rendering for dynamic light pass and horizon portals. 2014-06-15 20:28:23 +02:00
Christoph Oelckers
1aaa1b7bad - removed gl_usevbo CVAR because with recent code changes it has become useless. If GL_ARB_buffer_storage is present, buffers will always be used. 2014-06-15 12:12:24 +02:00
Christoph Oelckers
ea332383a8 - convert skybox rendering to use the buffer interface. 2014-06-15 11:50:54 +02:00
Christoph Oelckers
6b038a5dae - fixed: GLPortal::DrawPortalStencil must apply the render state before drawing anything. 2014-06-15 10:30:03 +02:00
Christoph Oelckers
2abf1644a4 - fixed: Plane height changes only updated the first buffered vertex for the respective plane. 2014-06-15 10:18:46 +02:00
Christoph Oelckers
1b91a8f88c - removed old immediate mode path for generating stencils. 2014-06-15 10:15:44 +02:00
Christoph Oelckers
3644073bbd - use a software buffer for immediate mode rendering. This allows using the regular buffer code to collect data for both render modes and allows removal of a lot of duplicated code. 2014-06-15 01:14:41 +02:00
Christoph Oelckers
5b302ed3a6 - added benchmarking calls for glDrawArrays to see how well issunig draw calls performs on different hardware. 2014-06-14 15:16:33 +02:00
Christoph Oelckers
0ce6b40672 - fixed compile error in gl_skydome.cpp
- disable GL_ARB_buffer_storage when a -glversion parameter less than 4.0 is given. According to the spec this extension requires 4.0 so if emulating something lower it should not be used.
2014-06-14 14:58:17 +02:00
Christoph Oelckers
5e22c82e79 - use buffer for rendering the sky on all GL versions since the differences for making GL2.0 work are rather small. 2014-06-14 10:38:30 +02:00
Christoph Oelckers
8d9a90cd22 - rewrote sky dome rendering to use a static vertex buffer if not on OpenGL 2.x. 2014-06-14 01:24:28 +02:00
Christoph Oelckers
2ad47935ef Merge branch 'master' into Glew_Version_For_Real 2014-06-01 12:43:17 +02:00
alexey.lysiuk
a26fbc74f0 Fix compilation errors in latest texture-related changes
GCC and Clang complain about non-POD type passed to variadic function.
2014-06-01 10:27:16 +03:00
Christoph Oelckers
d925279bef - fixed texture name handling in GL related texture classes for recent changes in ZDoom to eliminate the 8 character name limit. 2014-06-01 00:04:28 +02:00
Christoph Oelckers
c39318f406 - use vertex buffer and reuse of data for stencil drawing. A stencil needs to be drawn multiple times with the same polygons so this is a good place to optimize. 2014-05-31 09:32:17 +02:00
Christoph Oelckers
a1ec6ab1ba - fixed some Linux warnings. 2014-05-24 16:53:57 +02:00
Christoph Oelckers
e813ddf251 - fixed bad comparison. 2014-05-24 16:47:34 +02:00
Christoph Oelckers
54425ee2ef - fixed: Desaturation factor was applied incorrectly.
- Also fixed some very strange thing in the shader's desaturate function. For unknown reasons using the 'mix' function there did not work.
- fixed: The fog boundary special shader could not be used.
2014-05-21 13:40:46 +02:00
Christoph Oelckers
0cf37f2e51 - fixed problem with selecting special shaders. 2014-05-21 12:36:29 +02:00
Christoph Oelckers
f5ea31b518 - use vertex buffer for all the common 2D rendering functions. 2014-05-21 00:36:04 +02:00
Christoph Oelckers
09ba62fbef - put all the common part of buffer based drawing into a separate method of the vertex buffer. 2014-05-20 22:37:38 +02:00
Christoph Oelckers
23fbd69963 - 4 more places where immediate mode drawing has been substituted with a buffer-based alternative. 2014-05-20 22:20:15 +02:00
Christoph Oelckers
6e6be8ed5b Merge branch 'master' into Glew_Version_For_Real 2014-05-18 12:47:48 +02:00
Christoph Oelckers
03d4f23a6e - made adjustments to the texture loading code to account for the recent changes to handle long texture names. 2014-05-15 19:27:22 +02:00
Christoph Oelckers
60f0ab5f1b - fixed Linux warning with type cast. 2014-05-13 12:00:11 +02:00
Christoph Oelckers
579eff5b96 - add vertex buffer based rendering for decals. 2014-05-12 22:46:30 +02:00
Christoph Oelckers
cf45f2d718 - added missing shader files. 2014-05-12 22:24:26 +02:00
Christoph Oelckers
b514a815f4 - enable use of vertex buffer for sprite rendering. 2014-05-12 20:23:54 +02:00
Christoph Oelckers
9c659b948c - reactivated texture warping. 2014-05-12 15:13:07 +02:00
Christoph Oelckers
55d4c89753 - fixed: fog density calculation for fixed function was not correct. 2014-05-12 14:58:37 +02:00
Christoph Oelckers
4d005bdfa0 shader rework
All those special shaders have been merged together.
Mostly working but the non-shader lighting seems a bit broken.
2014-05-12 14:45:41 +02:00
Christoph Oelckers
98cc7eeb99 pass softlightlevel through render state. 2014-05-12 00:13:19 +02:00
Christoph Oelckers
b9a6fe80a4 Do not use the shader to handle STYLEF_RedIsAlpha.
Turns out that the name doesn't accurately describe what it does.
It is correct for images that come with their own palette or are true color.
But for images using the game palette it doesn't use the red channel to determine translucency but the palette index! Ugh...

This means it cannot be done with a simple operation in the shader because it won't get a proper source image. The only solution is to create a separate texture.
2014-05-11 23:56:53 +02:00
Christoph Oelckers
506798f134 allow brightmaps and fullbright objects in fog. The reasons why they were disabled no longer exist. 2014-05-11 23:12:28 +02:00
Christoph Oelckers
c47c7421a3 - route all glColor calls through render state.
- add sector links to dynamic lights.
2014-05-11 22:57:42 +02:00
Christoph Oelckers
978ace241c - removed all code that mixes together the different lighting methods. Now everything goes through the 3 different light parameters in the render state.
- removed cm parameter from many functions.
2014-05-11 21:47:54 +02:00
Christoph Oelckers
887d35d559 - remove colormap from texture generation parameters. The one remaining special case, alpha texture on old hardware is now handled by the currently set texture mode at the time of use.
- use the cleaned up decal lighting code from the first GLEW branch.
2014-05-11 19:44:19 +02:00
Christoph Oelckers
7793bbbcc9 Further cleanup of lighting code.
- remove thing color from lighting calculations.
- implement alpha textures and inverse sprites for infrared as texture modes. This still requires some handling for the alpha texture mode for non-shader rendering because there is no way in the fixed pipeline to do it. The inverted texture effect can be done with a texture combiner.
- fixed: ThingColor for sprites was set in the wrong place. It must be in the Process function, not in the lighting calculation.
- added functions for isolated calculation of sprites' dynlight color.
2014-05-11 17:56:38 +02:00
Christoph Oelckers
607be91c48 - bad copy. 2014-05-11 16:54:11 +02:00
Christoph Oelckers
8ae97bc3e1 -looks like we still need this... 2014-05-11 16:51:33 +02:00
Christoph Oelckers
52056a05bd - changed handling of DynLight in shader to serve as a global dynamic light color for all lighting modes. 2014-05-11 16:49:17 +02:00
Christoph Oelckers
53f4cd0108 - added objectcolor uniform. This will be used to hold the thingcolor for shader based rendering. 2014-05-11 16:06:25 +02:00
Christoph Oelckers
f3a9cb0cfa remove special texture creation for fullscreen colormaps.
On GL 3.x+ this isn't needed at all and on older hardware it causes performance issues, in particular with hires textures due to impossibility of precaching.
In addition it forces some really awkward handling of lighting for things that have their own color, like stenciled sprites or particles.

With this special case gone it will be possible to handle this case in a saner manner than it is right now.

As compensation for older hardware a fullscreen blend will be drawn over the entire screen. This won't be 100% accurate but it's preferable to keeping the current method.
2014-05-11 14:46:37 +02:00
Christoph Oelckers
5947584bff Merge branch 'master' into Glew_Version_For_Real 2014-05-11 13:29:37 +02:00
Christoph Oelckers
cd6d653b59 - fixed: the delayed state changer for the alpha function called glBlendFunc instead of glAlphaFunc. 2014-05-11 13:29:06 +02:00
Christoph Oelckers
09f4071436 Ok, it had to be done: Removed shader support for pre GLSL 1.3/GL 3.0 hardware. The compromises needed to accomodate these are just too bad and would block any attempt at streamlining the code. 2014-05-11 13:27:51 +02:00
Christoph Oelckers
92b9814460 Merge branch 'master' into Glew_Version_For_Real 2014-05-11 09:17:46 +02:00
Christoph Oelckers
a42cde0837 - removed #include of glxew.h because it's not used.
- removed some unused functions from gl_interface.cpp which were causing problems when compiling on Linux.
2014-05-11 09:17:18 +02:00
Christoph Oelckers
f7404d20fb - add vertex buffer based drawing for all walls and flats. 2014-05-11 01:23:27 +02:00
Christoph Oelckers
7d3beb665b - rewrote vertex buffer code to require GL_ARB_BUFFER_STORAGE extension.
This means it won't work anymore on anything that doesn't support OpenGL 4.0, but I don't think this is a problem. On older NVidia cards performance gains could not be seen and on older AMDs using the vertex buffer was even worse as long as it got mixed with immediate mode rendering.
2014-05-10 21:47:07 +02:00
Christoph Oelckers
b09405a8bd - changed rendering of glowing walls so that it doesn't require an additional vertex attribute, just pass the floor and ceiling planes as uniforms. 2014-05-10 17:09:43 +02:00
Christoph Oelckers
64d991b9b3 Merge branch 'master' into Glew_Version_For_Real 2014-05-10 15:29:06 +02:00
Christoph Oelckers
1d4ea9f162 - removed the __asm nop breakpoints for debugging. They not only do not work on non-MSVC but also not on 64 bit. 2014-05-08 09:48:39 +02:00
Christoph Oelckers
314225f1b0 - don't depend on stdint.h because older MSVC versions do not have it. 2014-05-01 12:30:56 +02:00
Christoph Oelckers
94b06900cb - got rid of a lot of stuff that's no longer required with GLEW.
- replaced GLUs texture scaling with our own function. This is only used to scale down textures larger than what the hardware can handle so we do not need a dependency to an essentially deprecated library for it.
2014-04-15 11:59:41 +02:00
Christoph Oelckers
69af73d9b9 - alternative configuration using GLEW to get extension functions. This requires GL 2.0, though so it won't be promoted to the mainline for the time being.
- removed all pre GL 2.0 support.
2014-04-06 14:35:44 +02:00
Christoph Oelckers
47406a3406 - I don't think it's a good idea to put a 64 MB lookup table into the static data segment, if it's for a piece of code most people will never use... 2014-04-03 23:02:43 +02:00
Gaerzi
0aba6e09f3 Disambiguate which abs type we want. 2014-04-03 20:14:38 +02:00
Gaerzi
7261af1d9f Don't define HQX_API to anything on Windows 2014-04-02 20:23:17 +02:00
galtgendo
8f97e96af1 silence a noisy warning 2014-03-28 01:54:42 +01:00
galtgendo
4909aa750f Use more portable hqx code from googlecode hqx
Conflicts:
	src/CMakeLists.txt
2014-03-28 01:49:53 +01:00
Christoph Oelckers
917a869a54 - fixed: gl_SetFog set the vertex attribute for software lighting mode without checking if the mode is actually on. 2013-12-23 09:56:16 +01:00
Christoph Oelckers
3b5d379fa4 - Linux compile fix. 2013-12-09 11:34:26 +01:00
alexey.lysiuk
4b24489393 * fix compilation on non-Windows systems 2013-12-07 12:25:38 +02:00
Christoph Oelckers
d46315c44b - some finetuning of subtractive effect. 2013-12-05 15:39:46 +01:00
Christoph Oelckers
95163e378e - added a fog layer when drawing sprites with render style reverse subtract. 2013-12-05 15:06:10 +01:00
Christoph Oelckers
f40dc9deb2 Merge branch 'master' of https://github.com/chungy/gzdoom 2013-12-05 14:02:35 +01:00
Mike Swanson
d48d337883 convert file from UTF-16LE to UTF-8
This one file gave issues with parsing in certain programs, including
the GitHub UI. No need for English text to waste so much space.
2013-12-05 04:43:29 -08:00
Christoph Oelckers
058f065446 - fixed: FFlatVertex contained two unused members.
- fixed: Clearing the args in the VavoomLightColor constructor only cleared 5 bytes, still assuming byte args.
2013-12-05 10:23:01 +01:00
Christoph Oelckers
9ac3b6aa1b - fixed: IsVisibleToPlayer needs to be checked for the owner of owned dynamic lights. 2013-11-30 13:15:22 +01:00
Christoph Oelckers
992994239b - changed rules for drawing HUD sprites to match the software renderer. 2013-11-30 13:01:48 +01:00
Christoph Oelckers
228c6f976f - fixed: the size limit for dynamic light uniforms was not checked properly, causing artifacts when there were too many dynamic lights. 2013-11-30 12:53:34 +01:00
Christoph Oelckers
12985cf635 - fixed: Particle drawing needs to apply the current fixed colormap to the particle's color. 2013-11-30 12:35:38 +01:00
Christoph Oelckers
e4282d3554 - added error check to GL getProcAddress calls to spot driver errors. 2013-11-30 12:34:55 +01:00
Christoph Oelckers
ac0c07a51b - fixed: Since model skins are managed by the texture manager, the model code may not delete them itself. 2013-10-11 12:57:46 +02:00
Christoph Oelckers
0f8ed0123f - fixed: Models must not delete their skin textures because they are stored in the texture manager which will be responsible for doing this. 2013-10-11 01:04:54 +02:00
Christoph Oelckers
b6dab83d2b - removed constructor and destructor from FDMDModel::ModelFrame because they were redundant and only caused double deletion of its contents. 2013-10-10 23:13:56 +02:00
Christoph Oelckers
f239a40caa - fixed CMakeLists to generate working VC++ projects. 2013-10-09 12:16:08 +02:00
Christoph Oelckers
a72b94e80c - fixed: Warped textures were recreated each time they were bound.
- fixed: Models were never freed.
2013-10-03 12:12:19 +02:00
Christoph Oelckers
5f08111a34 - fixed: The GL voxel palette loader needs to handle the case when the voxel has no own palette and used the game's base palette instead. Also added an implementation for GetPixels because this is used when a voxel needs a translated palette. 2013-09-28 23:33:55 +02:00
Christoph Oelckers
0ff21c3af7 - fixed: Sprites may never be used as a base of a texture redirect
Due to autoexpansion to remove filtering artifacts their dimensions are not the same as for patches. But if the sprite hadn't been used yet this information won't have been set yet.
2013-09-20 10:28:12 +02:00
Christoph Oelckers
fef0782a43 - added glext headers to the project because they seem to be broken in newer versions, causing compile errors on Linux. 2013-09-12 10:27:32 +02:00
Christoph Oelckers
2885056f46 - moved GLEXT API out of RenderContext struct. 2013-09-03 18:29:39 +02:00
Christoph Oelckers
26943fe3fd - removed gl interface function pointers for all OpenGL32.dll entry points. 2013-09-03 14:05:41 +02:00
Christoph Oelckers
4dc06cca70 - changed minimum required GL version to 1.3. The only 1.4 feature that's required is mipmap generation which on many older cards is available as an extension. The worst thing that can happen with relaxing the version requirement is that on a few ancient graphics cards the mipmapped texture filtering modes produce garbage. 2013-09-02 08:43:56 +02:00
Christoph Oelckers
737708b635 - fix c++11's compile problems. 2013-08-28 08:33:11 +02:00
Christoph Oelckers
61af682be9 - made some alterations to last commit after reviewing how the broken code managed to get into GZDoom. 2013-08-27 23:53:14 +02:00
Christoph Oelckers
e6f571729f - fixed: When calculating an y-texture offset the scale was multiplied with instead of divided by. 2013-08-27 23:31:23 +02:00
Christoph Oelckers
b61ef3a107 - bumped minimum supported OpenGL version to 1.4. The engine was already using several 1.3 and 1.4 features which would have caused problems on 1.2.
- removed gl_vid_compatibility. With the bump to 1.4 no hardware requiring this flag is supported anymore.
- disabled 16 bit framebuffers for the same reason. As a conseqence all code for rendering without stencil could also be removed.
2013-08-18 15:41:52 +02:00
Christoph Oelckers
761ab4ab78 - moved all system specific code out of gl_interface.cpp into the respective Video classes (Win32GLVideo andSDLGLVideo.) (SDL side not tested yet!) 2013-08-18 14:16:33 +02:00
Christoph Oelckers
c47c3169b3 - fixed: Dynamic lights may not execute their tick() function when the software renderer is active. 2013-08-09 23:38:30 +02:00
Christoph Oelckers
62fd6c8e74 - fixed: light values read from 3D floor light lists for lighting sprites were not clamped to [0..255]. 2013-08-09 23:12:21 +02:00
Christoph Oelckers
3f3cbbe7f5 Merge branch 'maint_1.8' 2013-07-22 17:30:51 +02:00
Christoph Oelckers
4e4eb7189a - fixed: negative extra light levels should not be treated like inverse flashes, that's only the case for INT_MIN. 2013-07-22 17:30:08 +02:00
alexey.lysiuk
28fd035b22 * fix build on OS X via CMake 2013-06-28 11:02:55 +03:00
Braden Obrzut
57324f6fd8 Merge branch 'maint_1.8' 2013-06-26 19:05:03 -04:00
Braden Obrzut
276ca5b75b - Fixed compilation on non-Windows systems by removing dependency on src/Linux/platform.h 2013-06-26 19:01:00 -04:00
Christoph Oelckers
46d203a929 - removed unused variable wgl_extensions. 2013-06-24 00:59:57 +02:00
Christoph Oelckers
a73d1b792c - fixed: Assignment of GetLightLevel to GLWall::lightlevel must be clamped. This was done incorrectly in the last SVN version which clamped the result of GetLightLevel, causing problems elsewhere. 2013-06-23 10:17:58 +02:00
Christoph Oelckers
399d0974ab - added GL render as of SVN revision 1600. 2013-06-23 09:49:34 +02:00