Commit graph

692 commits

Author SHA1 Message Date
Magnus Norddahl
56db2b02cc - Fix psprite not appearing when invulnerability effect is active with bloom turned on 2018-01-06 17:21:02 +01:00
Magnus Norddahl
f88d9a02df Remove bloom effect on psprites 2018-01-06 05:11:12 +01:00
Magnus Norddahl
79440d7014 - Fix sprite spot light calculation 2018-01-04 19:42:52 +01:00
Magnus Norddahl
bae3620540 - Added spot light support to gl_SetDynSpriteLight 2018-01-04 19:27:03 +01:00
alexey.lysiuk
2c4eae7487 Applied vertical offset to transferred sky in OpenGL renderer
https://forum.zdoom.org/viewtopic.php?t=58934
2017-12-31 21:29:27 +02:00
alexey.lysiuk
33213f5d5d Fixed rendering of wrapped midtex with sky ceiling
https://forum.zdoom.org/viewtopic.php?t=58311
2017-12-29 14:37:09 +02:00
Rachael Alexanderson
a441cea350 - interpolate particles 2017-12-28 11:36:36 -05:00
alexey.lysiuk
8ca3427850 Fixed applying of Doom 64 lighting to horizon portals
https://forum.zdoom.org/viewtopic.php?t=58878
2017-12-28 18:32:26 +02:00
alexey.lysiuk
0afc09678f Fixed bright sprites in sectors with Doom 64 lighting
https://forum.zdoom.org/viewtopic.php?t=58703
2017-12-16 17:37:03 +02:00
alexey.lysiuk
5162e7162e Fixed overbright screenshots with hardware gamma off
When render buffers are used to apply gamma/brightness/contrast screenshots should not use PNG gamma correction
2017-12-06 11:24:10 +02:00
Rachael Alexanderson
0fa74220c9 - fixed: doublize sky float, in order to make it more smooth 2017-12-03 12:39:24 -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
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
0323f54384 - rename I_FPSTime function.
- now that the frame buffer stores its render time, the 'ms' return from I_GetTimeFrac is not needed anymore, we may just as well use the globally stored value instead.

The only feature this value was ever used for was texture warping.
2017-11-13 00:54:32 +01: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
e94109f1c3 - Inside the renderer, use only the time value being passed to RenderView.
The voxel rotation code of the software renderer and R_SetupFrame still called I_FPSTime directly.
2017-11-12 23:53:46 +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
Christoph Oelckers
6bd76d6b5a - fixed compilation in debug mode.
- moved timer definitions into their own header/source files. d_main is not the right place for this.
- removed some leftover cruft from the old timer code.
2017-11-12 09:06:40 +01:00
Magnus Norddahl
307d8931d8 - Switch to C++11 steady clock
- Move the C++11 implementation to d_main
- Remove the platform specific timer implementations
2017-11-12 03:12:22 +01:00
Magnus Norddahl
d4ebe51e83 - Place the HUD model correctly in the world so that shader light calculations work 2017-11-05 15:35:03 +01:00
Magnus Norddahl
bd08568b90 - Fix wrong math for model/light distance check 2017-11-05 13:28:56 +01:00
nashmuhandes
f96f71044f Change camera texture FOV to doubles. 2017-09-02 07:44:38 +02:00
Christoph Oelckers
e424ef63f2 - fixed: Sprites drawn in the opaque pass still need to set their texture mode so that they can be drawn with STYLE_Stencil. 2017-08-27 09:58:25 +02:00
Magnus Norddahl
b9dc06a4c8 - Fix crash in legacy and deferred light paths 2017-08-21 18:42:07 +02:00
Magnus Norddahl
c3562fead2 Merge branch 'dynlightmodels' 2017-08-15 00:27:26 +02:00
alexey.lysiuk
eb52088487 Fixed compilation warnings reported by Clang
src/gl/scene/gl_sprite.cpp:685:34: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/polyrenderer/scene/poly_sprite.cpp:297:34: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/swrenderer/scene/r_opaque_pass.cpp:975:35: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/sound/mididevices/music_timiditypp_mididevice.cpp:548:30: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
2017-08-13 16:42:08 +03:00
raa-eruanna
507122b778 - put in actorinlines include as suggested by dpjudas here, to fix compile: https://forum.zdoom.org/viewtopic.php?f=2&t=57484 2017-08-04 09:13:20 -04:00
Magnus Norddahl
801fbddd47 - Fix gcc compile error
- Fix weapon null pointer crash
2017-08-02 01:41:48 +02:00
Magnus Norddahl
aaa00cbcb9 - Include all lights touching a model actor's render radius 2017-08-01 00:43:58 +02:00
Rachael Alexanderson
c07a4461a0 - fixed: GetCaps() did not account for r_drawvoxels cvar 2017-07-30 10:45:05 -04:00
Rachael Alexanderson
b6c15b997a - added 'r_debug_disable_vis_filter' cvar for debug purposes, to show all objects regardless of their actor filter fields. 2017-07-29 17:03:43 -04:00
Rachael Alexanderson
91ff447a90 - fixed compile from last commit
- refactored the zscript hookup a bit, made it actually work
2017-07-29 17:03:43 -04:00
Rachael Alexanderson
712d21e26a - implement per-renderer sprite hiding based on the actor's render feature flags
- hook the thing up to zscript (does not currently compile)
2017-07-29 17:03:43 -04:00
Rachael Alexanderson
8bb5687159 - Implemented GetCaps() for the software renderer
- fixed: Forgot to describe Brightmap capability in the GL Renderer
2017-07-29 17:03:43 -04:00
Rachael Alexanderson
9a9fe7c133 - implemented GetCaps() for OpenGL
- renamed RFF_FRAGMENTSHADER to RFF_MATSHADER
- D_Display now calls Renderer->GetCaps() and stores it in a global variable for later use.
2017-07-29 17:03:43 -04:00
Magnus Norddahl
cbda6e9427 - Improve dynamic lights for the HUD model 2017-07-26 09:18:05 +02:00
Magnus Norddahl
0c0f0789c2 - Improved dynamic lights on models 2017-07-25 23:00:09 +02: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
Rachael Alexanderson
c15880a2fc Merge https://github.com/coelckers/gzdoom 2017-06-27 17:38:26 -04:00
Christopher Bruns
e9f03102f4 Update fixed color map for each eye, so light goggles would work in both eyes in stereo 3d modes. 2017-06-27 17:55:11 +02:00
Rachael Alexanderson
ff257fcfd7 Merge https://github.com/coelckers/gzdoom 2017-06-20 09:39:12 -04:00
Christoph Oelckers
f909b82074 - fixed: Blood translations did not properly treat color 0 as transparent. 2017-06-20 09:10:19 +02:00
Rachael Alexanderson
d454fafc9e Merge https://github.com/coelckers/gzdoom 2017-06-19 03:22:23 -04:00
Christoph Oelckers
3b024c347b - use a dedicated flag word for the dynamic light flags instead of piggybacking on some flags4 bits. 2017-06-18 10:15:31 +02:00
Christoph Oelckers
a1694a79c6 - removed the FGLBitmap class and replaced all uses with the regular FBitmap.
The only reason this ever existed is that the GL renderer used RGBA instead of BGRA but there's no reason why this is even necessary.
2017-06-18 09:14:33 +02:00
Rachael Alexanderson
c340a6f794 Merge branch 'master' of https://github.com/coelckers/gzdoom
# Conflicts:
#	src/gl/scene/gl_sprite.cpp
#	src/polyrenderer/scene/poly_sprite.cpp
#	src/r_data/r_vanillatrans.cpp
#	src/r_data/r_vanillatrans.h
#	src/swrenderer/things/r_sprite.cpp
2017-06-04 07:24:35 -04:00
Rachael Alexanderson
c18134dbd3 - r_vanillatrans: Cache the cache! Transform the function into a global variable and recheck at the start of D_Display 2017-06-04 12:30:35 +02:00
Rachael Alexanderson
68b6f922f7 - Added auto-detection scheme for r_vanillatrans
It now works the following way:
(0) - Force off (ZDoom defaults)
(1) - Force on (Doom defaults)
(2) - Auto off (Prefer ZDoom defaults - if DEHACKED is detected with no ZSCRIPT it will turn on) (default)
(3) - Auto on (Prefer Doom defaults - if DECORATE is detected with no ZSCRIPT it will turn off)
2017-06-04 12:30:35 +02:00
Rachael Alexanderson
2997f31f9f - removed ZDOOMADD and updated actors in question with ZDOOMTRANS 2017-06-04 12:30:35 +02:00
Rachael Alexanderson
89b372cb01 - Changed MF7_SPRITEFLIP, MF8_ZDOOMTRANS to RenderFlags
- Added RF_ZDOOMADD
- renamed r_canontrans to r_vanillatrans
- this developer's insanity level has increased by 231%.
2017-06-04 12:30:35 +02:00
Rachael Alexanderson
01f88cfb16 - Added 'canonical transparency' cvar r_canontrans - this simply turns off transparency for Doom objects that were marked as transparent sometime in ZDoom's development cycle 2017-06-04 12:30:35 +02:00
Rachael Alexanderson
deb62ee156 Merge commit 'refs/pull/340/head' of https://github.com/coelckers/gzdoom
# Conflicts:
#	src/gl/scene/gl_sprite.cpp
#	src/polyrenderer/scene/poly_sprite.cpp
#	src/swrenderer/things/r_sprite.cpp
#	wadsrc/static/language.enu
#	wadsrc/static/menudef.txt
2017-06-03 20:06:28 -04:00
Rachael Alexanderson
9af370f51e - Added auto-detection scheme for r_vanillatrans
It now works the following way:
(0) - Force off (ZDoom defaults)
(1) - Force on (Doom defaults)
(2) - Auto off (Prefer ZDoom defaults - if DEHACKED is detected with no ZSCRIPT it will turn on) (default)
(3) - Auto on (Prefer Doom defaults - if DECORATE is detected with no ZSCRIPT it will turn off)
2017-06-03 20:00:53 -04:00
Rachael Alexanderson
b240ad0814 - removed ZDOOMADD and updated actors in question with ZDOOMTRANS 2017-06-02 12:24:03 -04:00
Rachael Alexanderson
00bfee8b1e - Changed MF7_SPRITEFLIP, MF8_ZDOOMTRANS to RenderFlags
- Added RF_ZDOOMADD
- renamed r_canontrans to r_vanillatrans
- this developer's insanity level has increased by 231%.
2017-06-02 12:24:03 -04:00
Rachael Alexanderson
daad76547d - Added 'canonical transparency' cvar r_canontrans - this simply turns off transparency for Doom objects that were marked as transparent sometime in ZDoom's development cycle 2017-06-02 12:24:03 -04:00
Rachael Alexanderson
bf12d38afd - removed ZDOOMADD and updated actors in question with ZDOOMTRANS 2017-06-02 01:10:46 -04:00
Rachael Alexanderson
aa93990d3b - Changed MF7_SPRITEFLIP, MF8_ZDOOMTRANS to RenderFlags
- Added RF_ZDOOMADD
- renamed r_canontrans to r_vanillatrans
- this developer's insanity level has increased by 231%.
2017-06-02 01:10:46 -04:00
Rachael Alexanderson
813b321c45 - Added 'canonical transparency' cvar r_canontrans - this simply turns off transparency for Doom objects that were marked as transparent sometime in ZDoom's development cycle 2017-06-02 01:10:45 -04:00
Rachael Alexanderson
e72ae3f266 Merge ../gzdoom
# Conflicts:
#	src/version.h
#	wadsrc/static/compatibility.txt
2017-05-31 09:08:13 -04:00
Christoph Oelckers
977d5988c5 - fixed weapon sprite light calculation for low light levels. 2017-05-31 09:27:50 +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
Major Cooke
35583621cf PSPF_MIRROR now corrects the bobx direction. 2017-05-26 18:28:09 -05:00
Major Cooke
636e36b90d Clean-up. 2017-05-26 11:34:26 -05:00
Major Cooke
a25a536c9f Removed the auto PSPF_FLIP implimentation. 2017-05-25 20:40:54 -05:00
Major Cooke
a111c59286 Added PSPF_MIRROR.
- Flips the sprite's drawing and position over entirely. Automatically implies PSPF_FLIP.
2017-05-25 19:46:36 -05:00
Christoph Oelckers
7bc5573baa - call P_FindParticleSubsectors before rendering a save picture in OpenGL.
This entry point was the only one missing that call.
2017-05-21 12:45:49 +02:00
Christoph Oelckers
fc0855fac7 - fixed size of particles in the hardware renderer.
From the look of it the scale was changed in the software renderer several years back but the hardware renderer never got adjusted for it.
This also adds a bit of compensation to round particles so that they get rendered a bit larger than square ones.
2017-05-21 12:36:34 +02:00
Christoph Oelckers
c8e631bf26 - fixed: The colormap was not fully initialized for 3D floors in sectors where neither the original floor nor ceiling were visible. 2017-05-19 11:42:44 +02:00
Christoph Oelckers
437dd68d79 - the Render state must be applied before performing a portal clear screen, because it would still be set to stencil drawing at this point. 2017-05-14 12:42:25 +02:00
Christoph Oelckers
ef7e4fe678 - draw empty portals in black, not the last set color. 2017-05-14 12:31:51 +02:00
Christoph Oelckers
2bf8e8f1c0 - fixed: InitClipper was missing a call to Clipper.Clear. 2017-05-09 12:20:49 +02:00
Christoph Oelckers
4a5fe65ce8 - added missing check for RenderStyle None to GL weapon drawer. 2017-05-08 19:13:18 +02:00
Rachael Alexanderson
5a450b5eaa - fixed: +FLIPSPRITE works in mirrors in OpenGL now. 2017-05-03 15:56:33 -04:00
Rachael Alexanderson
00a4993654 - forgot to implement +SPRITEFLIP for OpenGL 2017-05-03 21:13:31 +02:00
Christoph Oelckers
b5dc5ceb3c - removed some unused static variables 2017-04-26 14:48:33 +02:00
Christoph Oelckers
47bcd8aaa2 - added per-layer translucency support to the OpenGL PSprite drawer. 2017-04-15 17:25:46 +02:00
Christoph Oelckers
e4d2380775 - moved all remaining fields from PClassActor to FActorInfo.
- added a few access functions for FActorInfo variables.

With PClassActor now empty the class descriptors can finally be converted back to static data outside the class hierarchy, like they were before the scripting merge, and untangle the game data from VM internals.
2017-04-12 00:07:41 +02:00
Major Cooke
d3ef3b585b - fixed: Flat sprites did not rotate their sprite angles when given the FLATSPRITE flag. 2017-04-03 17:06:33 +02:00
Christoph Oelckers
1d4ab0cc2a - implemented proper scaling for the status bar itself.
This allows using the UI scale or its own value, like all other scaling values.
In addition there is a choice between preserving equal pixel size or aspect ratio because the squashed non-corrected versions tend to look odd, but since proper scaling requires ununiform pixel sizes it is an option.

- changed how status bar sizes are being handled.

This has to recalculate all scaling and positioning factors, which can cause problems if the drawer leaves with some temporary values that do not reflect the status bar as a whole.
Changed it so that the status bar stores the base values and restores them after drawing is complete.
2017-03-29 19:23:40 +02:00
Christoph Oelckers
5e3e4a3bd1 - fixed: The wall spliter for 3D lights did not initialize the resulting colormap's fog density value. 2017-03-28 23:36:26 +02:00
nashmuhandes
99d1581c27 Added "DontLightActors" flag for dynamic lights. Actors will not be illuminated by lights that are given this flag. 2017-03-28 21:33:16 +02:00
Christoph Oelckers
71fe4a83c9 - fixed: the translucent flat drawer used a bad condition for dynamic light processing which caused a problem with the GL 3.x lighting method. 2017-03-28 21:18:03 +02:00
Christoph Oelckers
f45371e231 - reverted the counter for the vertex angle cache to a simple incrementing global variable.
Using I_MSTime is not precise enough, because some camera textures can be done quicker. It was pointless anyway trying to make this multithreading-safe, the entire caching idea here makes no sense if two clippers can simultaneously work on the same level data without changing the memory organization and rendering it ineffective.
2017-03-20 01:21:33 +01:00
alexey.lysiuk
cb5ddeff25 Fixed compilation warnings reported by Clang
src/gl/scene/gl_clipper.h:150:23: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
src/gl/dynlights/gl_aabbtree.cpp:137:24: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:137:34: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:137:44: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:139:6: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:139:30: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:139:54: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:142:6: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:143:3: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:144:3: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:167:6: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_shadowmap.cpp:163:31: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/p_saveg.cpp:367:16: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
src/p_saveg.cpp:402:60: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
src/p_setup.cpp:1553:39: warning: format specifies type 'ptrdiff_t' (aka 'long') but the argument has type 'int' [-Wformat]
src/scripting/zscript/zcc_compile.cpp:293:74: warning: field 'AST' will be initialized after field 'mVersion' [-Wreorder]
src/swrenderer/drawers/r_thread.cpp:113:21: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
2017-03-18 15:13:02 +02:00
Christoph Oelckers
c9296ead57 - moved the skybox texture files to the main textures directory. 2017-03-17 21:12:09 +01: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
ea1d6634f7 - moved the Zones array into FLevelLocals.
- replaced TStaticArray with regular TArrays.

They had incomplete implementations preventing proper cleanup of the level loading code. It makes more sense to add the missing methods to the regular TArray and use that.
This also makes some changes to how the game nodes are used to avoid creating a copy: If the head node's pointer is stored in a separate variable, no code needs to check which of the two arrays gets used.
2017-03-17 12:11:37 +01:00
Christoph Oelckers
fea4079b7c - moved nodes into FLevelLocals. 2017-03-17 01:42:37 +01:00
Christoph Oelckers
f201dab534 - moved the subsectors into FLevelLocals. 2017-03-17 00:22:52 +01:00
Christoph Oelckers
2b2c986bd0 - cleanup of GL renderer interface and improper header use in software renderer. 2017-03-16 21:34:03 +01:00
Christoph Oelckers
b529b1e3a7 - removed several unneeded GL headers from the software renderer's sources.
- consolidated the code to calculate a sprite's display angle for all 3 renderers.

As it turned out, they all differed in their feature support because they had always been updated independently by different people.
2017-03-16 13:49:34 +01:00
Christoph Oelckers
3aa7687d91 - made 'nocoloredspritelighting' a global option and also implemented it in the software renderer. 2017-03-16 00:56:03 +01:00
Christoph Oelckers
921bc763fb - separated the software-renderer-specific parts of colormap processing from the common parts.
- moved testcolor and test fades into SWRenderer files.

These CCMDs work by hacking the default colormap and were never implemented for hardware rendering because they require many checks throughout the code.
2017-03-15 22:04:59 +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
3c6e9f361c - fixed typo in fog boundary check. 2017-03-14 16:13:00 +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