Commit graph

457 commits

Author SHA1 Message Date
Christoph Oelckers
d586d774cf - adjusted GL renderer to the new rules for alpha textures. This means that the translation fallback is only needed for the legacy renderer now. Modern GL can use the regular texture and will apply a grayscale mapping instead of merely using the red channel. 2018-03-22 20:42:17 +01:00
Christoph Oelckers
b327aa737a Merge remote-tracking branch 'remotes/origin/materials' 2018-03-03 08:54:04 +01:00
Christoph Oelckers
685e5c1e95 - fixed: Camera textures must always be drawn with texture mode opaque, because the contents of their alpha channels are undefined. 2018-03-01 13:52:23 +01:00
Magnus Norddahl
4e7ca68bd6 Merge remote-tracking branch 'gzdoom/master' into materials 2018-02-20 00:22:06 +01:00
Christoph Oelckers
6a02eaa595 - second part of texture fix. 2018-02-15 18:40:23 +01:00
Christoph Oelckers
ef55386d9f - let the texture manager handle the special OpenGL textures so that they get deleted and recreated when needed. 2018-02-15 17:56:04 +01:00
Magnus Norddahl
30af6d38b3 - fix automap render bug 2018-01-25 20:22:51 +01:00
Magnus Norddahl
7a59bcde4c - move glossiness and specular level to GLDEFS 2018-01-25 19:53:55 +01:00
Magnus Norddahl
a46bbc81a0 Merge branch 'bloom_psprite_fix' into gzdoom 2018-01-25 19:01:46 +01:00
Magnus Norddahl
a23e5f49f6 - Add "fuzz software" to GL that renders fuzz like the scaled fuzz mode in the software renderer 2018-01-07 02:29:55 +01:00
Magnus Norddahl
f88d9a02df Remove bloom effect on psprites 2018-01-06 05:11:12 +01:00
Rachael Alexanderson
1559d74c2c - repaired the video scaling code 2017-12-10 04:22:28 -05:00
Rachael Alexanderson
505c99b0a8 - fixed: doublize more internal structures, even if they still get converted to float later 2017-12-04 17:39:57 -05:00
Christoph Oelckers
836970f012 - moved the matrix code out of 'gl' because the model code also needs it. 2017-11-25 13:51:09 +01:00
Rachael Alexanderson
505da5bf4f Merge branch 'master' of https://github.com/coelckers/gzdoom into newtimercode4 2017-11-21 05:23:00 -05:00
Rachael Alexanderson
47e9975e90 - fixed a couple of fixes from the previous commit 2017-11-21 05:20:02 -05:00
Rachael Alexanderson
2bc86b52c8 - fixed a few of the more obvious logic errors 2017-11-21 04:06:24 -05:00
Rachael Alexanderson
351de94311 - fixed: Accidentally committed in-progress work... again
Partial Revert "- fixed: Made shader targets not case sensitive"

This reverts commit 2c24d2e047.
2017-11-19 04:46:52 -05:00
Rachael Alexanderson
2c24d2e047 - fixed: Made shader targets not case sensitive 2017-11-19 04:41:07 -05:00
Christoph Oelckers
16fa0cba21 - fixed comparison.
The timer reset must also occur when the values are equal, meaning they got set during the same millisecond.
2017-11-15 18:02:41 +01:00
Rachael Alexanderson
ab32cb4c88 - track level start time for the shader system, reset the shaders. 2017-11-15 11:06:21 -05:00
Rachael Alexanderson
d2bc24737b - put in timer resets for the shader system, so that they can continue being passed as floats 2017-11-14 22:46:28 -05:00
Rachael Alexanderson
763222b571 - fixed: high uptime was causing overloads in uint32_t and float structures (float losing loss of precision) - this caused any computer online for more than a few days to experience jankiness with internal animations such as rotations and shader timers. Unfortunately, this sounds the death knell for 32-bit platforms, since uint64_t is now required in time-critical structures, which will hurt performance tremendeously, but 64-bit systems will be unaffected. 2017-11-14 16:15:25 -05:00
Christoph Oelckers
2c65f08011 - more timer cleanup
* store the frame time in the current screen buffer from where all render code can access it.
* replace some uses of I_MSTime with I_FPSTime, because they should not use a per-frame timer. The only one left is the wipe code but even this doesn't look like it needs either a per-frame timer or a timer counting from the start of the playsim.
2017-11-13 00:28:43 +01:00
Christoph Oelckers
93e9c383fa - get the timer used for animation only once at the very beginning of the frame and pass it on to the renderer to avoid any dependencies on the timer's implementation. 2017-11-12 18:51:11 +01:00
Rachael Alexanderson
030450b6a9 - fixed: include missing header 2017-07-27 03:08:42 -04:00
Rachael Alexanderson
16e38816ba - oops, forgot one thing in the last commit... 2017-07-27 03:07:19 -04:00
Rachael Alexanderson
30087f7cd7 - cleaned up the video scale mode code a bit, in order to increase future flexibility. 2017-07-27 03:05:01 -04:00
Magnus Norddahl
4e14ed4e9e - Hook up model normals 2017-07-25 20:20:12 +02:00
Magnus Norddahl
e06f87cf10 - Added 0.75x scale mode 2017-07-24 08:35:27 +02:00
Rachael Alexanderson
2f37c4b272 - added vid_scalemode == 4 to super-sample the screen 2017-07-23 11:24:04 -04:00
Magnus Norddahl
449c4cb711 - Pixel stretch 320x200 and 640x400 scale modes in the GL renderer 2017-07-23 17:18:25 +02:00
Magnus Norddahl
c3702ae9e7 Add vid_scalemode support to GL framebuffer 2017-07-23 00:33:56 +02:00
Rachael Alexanderson
d020ec68d2 Merge branch 'master' into qzdoom-merge 2017-07-20 06:43:03 -04:00
Rachael Alexanderson
bc38f7f776 - changed gl_ssao_portals default to 1 2017-07-20 06:41:34 -04:00
Rachael Alexanderson
77617a2757 Merge branch 'master' into qzdoom-merge 2017-07-19 17:32:41 -04:00
alexey.lysiuk
bbb8374b06 Fixed applying of color to untranslated fonts in hardware renderer
https://forum.zdoom.org/viewtopic.php?t=57268
2017-07-19 15:00:55 +03:00
Rachael Alexanderson
e1b4bb11ba Merge https://github.com/coelckers/gzdoom 2017-07-09 20:09:12 -04:00
Magnus Norddahl
ddd1b629c3 - Calculate globvis/r_visibility in r_utility and use it in GL and poly renderers 2017-07-09 19:01:34 +02:00
Magnus Norddahl
a4b96f7673 - Fix linker error 2017-07-06 18:02:27 +02:00
Magnus Norddahl
69a3d10cb6 Merge branch 'custom_postprocess' into qzdoom
# Conflicts:
#	src/gl/renderer/gl_postprocess.cpp
2017-07-06 05:41:16 +02:00
Magnus Norddahl
8a0e801cb5 - Move custom postprocess shader to its own file 2017-07-06 05:36:01 +02:00
Rachael Alexanderson
1cfaae78d9 - Add new "scene" target for custom postprocess shaders
- Add "gl_custompost" cvar to turn off custom postprocess shaders completely
- Made "scene" affect the screen before 2D drawing, made "screen" affect the entire screen after 2D drawing
2017-07-06 04:45:51 +02:00
Rachael Alexanderson
2bfd7859e4 Merge remote-tracking branch 'origin/custom_postprocess' 2017-07-03 17:17:17 -04:00
Magnus Norddahl
e161bba146 - Specify shader uniforms from ZScript 2017-07-03 22:30:49 +02:00
Rachael Alexanderson
5c87cdd786 - Add new "scene" target for custom postprocess shaders
- Add "gl_custompost" cvar to turn off custom postprocess shaders completely
- Made "scene" affect the screen before 2D drawing, made "screen" affect the entire screen after 2D drawing
2017-07-02 21:04:22 -04:00
Rachael Alexanderson
edb45cd70d Merge remote-tracking branch 'origin/custom_postprocess' 2017-07-02 19:56:57 -04:00
Magnus Norddahl
1b5f3da9c5 - Fix lump lookup 2017-07-03 01:50:51 +02:00
Magnus Norddahl
befe081683 - Upload custom texture 2017-07-03 01:29:03 +02:00
Magnus Norddahl
ee6d7cf17e - Add initial postprocess shader support to GLDEFS file 2017-07-03 01:26:02 +02:00
Rachael Alexanderson
0d8b7c55ef - added a grayscale formula selector 2017-07-02 16:45:06 -04:00
Rachael Alexanderson
bd02893ce7 - expanded hard limits for saturation to -15.0/15.0
- added menu option for saturation
- tried to get the new saturation shader to consume less GPU power by turning it off when it is 1.0
2017-07-02 16:45:06 -04:00
Rachael Alexanderson
63da6e70c0 - added a vid_saturation control - works in postprocessing, only. 2017-07-02 16:45:06 -04:00
Rachael Alexanderson
cf400ba2db Merge https://github.com/coelckers/gzdoom 2017-06-25 23:44:33 -04:00
Magnus Norddahl
b6e035e796 - Implemented radial fog support in software light mode 2017-06-25 15:02:34 +02:00
Rachael Alexanderson
9001009fcf Merge https://github.com/coelckers/gzdoom 2017-06-22 01:42:33 -04:00
Rachael Alexanderson
f49794d6c6 - fixed: Due to recent changes, textures now use 'bgra' format in OpenGL. The palette tonemap shader had not yet been updated to reflect this. 2017-06-21 19:00:51 -04:00
Rachael Alexanderson
64b22f6cb3 Merge https://github.com/coelckers/gzdoom 2017-06-03 22:34:13 -04:00
Magnus Norddahl
7acb492852 - Add gl_shadowmap_quality cvar that controls the resolution of the 1D shadow map texture 2017-06-04 00:44:49 +02:00
Magnus Norddahl
265df4b797 - Change shadowmap resolution from 1024 to 128 2017-06-03 21:19:34 +02:00
Rachael Alexanderson
e1a2de4989 Merge https://github.com/coelckers/gzdoom 2017-05-30 12:43:14 -04:00
alexey.lysiuk
0c90253a5d Fixed potentially broken portal rendering after OpenGL context change
https://forum.zdoom.org/viewtopic.php?t=56393
2017-05-30 13:01:51 +03:00
Rachael Alexanderson
619281de64 Revert "Merge commit 'refs/pull/336/head' of https://github.com/coelckers/gzdoom"
This reverts commit a05c38fefd, reversing
changes made to 0fb1a0604c.
2017-05-28 07:12:41 -04:00
Rachael Alexanderson
a05c38fefd Merge commit 'refs/pull/336/head' of https://github.com/coelckers/gzdoom 2017-05-28 01:33:59 -04:00
Christopher Bruns
c1bacdbf92 Create initial rotation-tracking-only implementation of OpenVR mode for VR headsets. 2017-05-27 19:42:49 -04:00
Rachael Alexanderson
39826753f9 Merge https://github.com/coelckers/gzdoom 2017-03-30 02:11:03 -04:00
Christoph Oelckers
01b095c911 - added colorization for untranslated fonts. This uses the light color of the vertices. The software rendered 2D code will ignore this infomation.
- added a virtual OnRetrun method to menus.
2017-03-29 21:22:05 +02:00
Rachael Alexanderson
71ad6c9651 Merge https://github.com/coelckers/gzdoom 2017-03-25 11:19:27 -04:00
alexey.lysiuk
093a05b588 Reset OpenGL 2D drawer state fully on each frame
https://mantis.zdoom.org/view.php?id=469
2017-03-25 11:32:39 +02:00
Rachael Alexanderson
b747b0c3c6 - made gl_menu_blur into a menu option
- made bluramount also into a gameinfo option
- negative gl_menu_blur cvar now uses gameinfo option, 0 disables it
- removed gl_menu_blur_enabled since gl_menu_blur==0 does that anyway
- made gl_menu_blur default to -1 to use gameinfo option
- add default gameinfo bluramount options
2017-03-24 14:59:25 -04:00
Rachael Alexanderson
954f21f71d - changed defaults
- moved CVARs to head of file as forward declaration
- FGLRenderer::BlurScene now checks if postprocessing is enabled before executing
2017-03-24 14:59:25 -04:00
Rachael Alexanderson
e49b549364 - added CVARs to control menu blur
- made blur effect menu only
2017-03-24 14:59:25 -04:00
Magnus Norddahl
93a6e4bc94 Add an aggressive blur pass for the scene 2017-03-24 14:59:25 -04:00
Christoph Oelckers
7d8d69d01b - fixed: The clipper for the main scene may not be initialized before the camera textures have been drawn.
It looks like the memory management at use here is not capable of maintaining multiple instances simultaneously and the camera textures create another scene drawer so the initialization of the main scene drawer has to be delayed until after the camera textures are done.
2017-03-17 19:28:47 +01:00
Christoph Oelckers
9a24771a7d - refactored FDynamicColormap out of sector_t.
This has increasingly become an obstacle with the hardware renderer, so now the values are being stored as plain data in the sector, with the software renderer getting the actual color tables when needed. While this is a bit slower than storing the pregenerated colormap, in realistic situations the added time is mostly negligible in the microseconds range.
2017-03-15 22:04:59 +01:00
Christoph Oelckers
d86bd470e5 - moved two MAPINFO settings that are not exclusively used by the OpenGL renderer to the common code. 2017-03-14 18:31:11 +01:00
Christoph Oelckers
44a087554f - moved the OpenGL fog properties to FLevelLocals to simplify their handling.
- added access to the glow properties for ZSCript and ACS.
2017-03-14 13:54:24 +01:00
Christoph Oelckers
d72623b9b5 - eliminated global in_area variable.
Removing this made me realize that calling the renderers' FakeFlat functions from the automap is inherently unsafe with the recent refactorings because there is absolutely no guarantee that the data may actually still be defined when the automap is being drawn.
So the best approach here is to give the automap its own FakeFlat function that runs independently of render data and assumptions of data preservation. This one can also be a lot simpler because it only needs the floor, not the ceiling info.
2017-03-12 23:13:07 +01:00
Christoph Oelckers
4c61048278 - moved gl_fixedcolormap into GLSceneDrawer.
This means that one of the most extensively used global variables is gone.
2017-03-12 21:57:39 +01:00
Christoph Oelckers
ef3421eee5 - moved dynamic lights out of the GL code into the common game code.
Since the true color software renderer also handles them there is no point keeping them on the GL side.
This also optimized how they are stored, because we no longer need to be aware of a base engine which doesn't have them.
2017-03-12 19:57:06 +01:00
Christoph Oelckers
e7330cfa03 - all main functions in gl_scene.cpp now belong to the new GLSceneDrawer class. 2017-03-12 12:51:26 +01:00
Christoph Oelckers
e4d7d9de8b - moved several more functions from FGLRenderer to GLSceneDrawer. 2017-03-12 12:03:54 +01:00
Magnus Norddahl
c79051126e Fix ssao being applied to skybox portals 2017-03-12 00:22:58 +01:00
Christoph Oelckers
0aa0db637c - started adding a SceneDrawer class to the OpenGL renderer.
This will eventually hold all the global variables for the rendering.
2017-03-12 00:19:20 +01:00
Christoph Oelckers
9eae422dab Merge branch 'shadowmaps' of https://github.com/raa-eruanna/qzdoom into 3.0_work
# Conflicts:
#	src/CMakeLists.txt
#	wadsrc/static/language.enu
2017-03-11 19:55:43 +01:00
Christoph Oelckers
921abc404d - fixed GCC warnings and errors
(Is there anyway to tone down GCC's warning level? It outputs too many false positives for potentially uninitialized variables in which the genuine errors get drowned.)
2017-03-11 19:02:35 +01:00
Christoph Oelckers
a4710bcdb0 - did a bit of header cleanup to reduce the dependency on dobject.h. 2017-03-09 23:30:42 +01:00
Christoph Oelckers
d2beacfc5f - except for DWORD, all homegrown integer types are gone - a handful were left where they represent genuine Windows types. 2017-03-09 19:54:41 +01:00
Christoph Oelckers
c008ddaf66 - replaced homegrown SWORD, SBYTE and uint32_t types. 2017-03-09 19:31:45 +01:00
Magnus Norddahl
6df3b3fbca Changed the light collision structure uploaded to the GPU to be a binary tree using AABBs for the nodes instead of a BSP plane 2017-03-07 15:58:22 +01:00
Magnus Norddahl
62c285f7b3 Create a shadowmap texture and upload light list 2017-03-02 16:19:06 +01:00
Magnus Norddahl
7a4b01471d Add class updating and managing the shadow map texture 2017-03-02 16:19:06 +01:00
Magnus Norddahl
6363c6cf58 Add a shadowmap shader 2017-03-02 16:19:06 +01:00
Magnus Norddahl
58c7c3c902 Upload BSP tree to the GPU 2017-03-02 16:19:06 +01:00
Rachael Alexanderson
2a71ec89de Merge https://github.com/coelckers/gzdoom 2017-02-13 17:02:56 -05:00
Christoph Oelckers
cb758f6dab - added a 'nolightfade' MAPINFO option which disables light diminishing in OpenGL. Note that this only works for light modes 0-3. Modes 4 and 8 use special light math that would not work if such a setting was forced. 2017-02-13 22:17:15 +01:00
Rachael Alexanderson
a52f79055d Merge https://github.com/coelckers/gzdoom
# Conflicts:
#	src/menu/playerdisplay.cpp
2017-02-11 05:05:24 -05:00
Christoph Oelckers
8c780ab7ff - exported the drawer function of the colorpicker menu. 2017-02-10 13:21:35 +01:00
Rachael Alexanderson
226e5238fc Merge https://github.com/coelckers/gzdoom 2017-02-01 21:57:37 -05:00
Christoph Oelckers
6d28aa3541 - do not use strtol for parsing critical values that can get large.
This function will truncate everything that is larger than LONG_MAX or smaller than LONG_MIN to fit into a long variable, but longs are 32 bit on Windows and 64 bit elsewhere, so to ensure consistency and the ability to parse larger values better use strtoll which does not truncate 32 bit values.
2017-02-01 11:19:55 +01:00