Commit graph

371 commits

Author SHA1 Message Date
Christoph Oelckers
57d703236b - changed Doom source license to GPL in all subdirectories and fixed missing licenses in a few other files. 2017-04-17 12:27:19 +02:00
Christoph Oelckers
1ee9256842 - did a complete workover of the weapon sprite translucency code that got inherited from QZDoom.
This was very poorly done without ever addressing the issues a composite render style can bring, it merely dealt with the known legacy render styles.
The same, identical code was also present in two different places.
The oversight that AlterWeaponSprite overrode even forced styles was also fixed.

OpenGL is not implemented yet but with the problems eliminated should be doable now.
2017-04-15 16:41:00 +02:00
Christoph Oelckers
dc5a5419fc - took DCanvas and all its subtypes out of the DObject tree.
I have no idea why they were even in there, as they intentionally circumvented all GC related features - they declared themselves fixed if prone to getting collected, they all used OF_YesReallyDelete when destroying themselves and they never used any of the object creation or RTTI features, aside from a single assert in V_Init2.

Essentially they were a drag on the system and OF_YesReallyDelete was effectively added just to deal with the canvases which were DObjects but not supposed to behave like them in the first place.
2017-04-14 10:48:18 +02:00
Magnus Norddahl
d407aa3157 - Fix linear filtering bug for sprites 2017-04-13 22:16:26 +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
Christoph Oelckers
4afe2d4218 - moved OwnedStates and NumOwnedStates out of PClassActor. 2017-04-11 22:44:35 +02:00
Magnus Norddahl
f049e6145b - remove all usage of std::make_unique to keep things C++11 compliant 2017-04-11 01:25:44 +02:00
Magnus Norddahl
5c5e3bdcba - change fuzzing to not do any offsetting but keep the shading pattern produced by it 2017-04-03 19:11:38 +02:00
Magnus Norddahl
6db89a2ce1 - clean up the triangle setup functions 2017-04-01 03:44:45 +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
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
alexey.lysiuk
4716b712b1 Fixed compilation issues with isnan()
Need to do it in pure C++ way to avoid C99 macro at all costs
Tested with CI targets, on Debian Jessie using GCC 4.9 and on Ubuntu 16.04 using GCC 5.4
2017-03-28 17:10:06 +03:00
alexey.lysiuk
020c34abfa Added workaround for undefined isnan()
All our continuous integration targets have no problems with C99 isnan() macro but on Ubuntu 16.04 compilation fails
It appeared that some implementation of C++ Standard Library may undefine bunch of C macros to avoid conflicts with own declarations
2017-03-27 17:06:21 +03:00
Magnus Norddahl
ad992d2ffd - add support for choosing the particle style in the software renderer 2017-03-27 10:12:57 +02:00
alexey.lysiuk
e5d4d9a36a Fixed compilation with GCC/Clang
src/swrenderer/line/r_walldraw.cpp:102:13: error: expected unqualified-id before ‘(’ token
2017-03-26 22:10:05 +03:00
Rachael Alexanderson
f1ce0f1136 - Removed redundant #ifdef __arm__ #define NO_SSE from 2.5D drawers 2017-03-25 01:39:09 -04:00
Christoph Oelckers
a3ee3c287e - major progress on the status bar code: SBARINFO's DrawGraphic has been ported into a generic function of the base statusbar class and put to use for a few items on the Strife status bar.
- decided to ditch the widget system I had started to lay out. As it turns out that would make things far more complicated and slower than they need to be.
2017-03-24 00:47:08 +01:00
Rachael Alexanderson
09c3060728 - fixed: skybug on ARM was caused by undefined conversion from float to unsigned int. adding intermediary signed int cast fixes this problem. 2017-03-22 05:51:12 -04:00
Rachael Alexanderson
4110f34139 - fixed: non-SSE2 drawers still had SSE2 intrinsics for light calculations, preventing successful compilation on ARM. 2017-03-21 17:51:09 -04:00
Magnus Norddahl
11e5759913 - detached the poly renderer from the software renderer 2017-03-20 08:28:16 +01:00
Rachael Alexanderson
4784aae098 - backport cl_oldfreelooklimit from Skulltag - due to the advent of capped skies, there really was no reason to keep the upper limit so low. 2017-03-19 00:36:52 -04: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
39b329e3f7 - this was accidentally left in. 2017-03-17 10:12:47 +01:00
Magnus Norddahl
fc0f2292ab - add non-sse version of the sprite drawers
- fix some typos
2017-03-17 08:44:33 +01:00
Magnus Norddahl
1435832b09 - added non-sse span drawers 2017-03-17 07:36:02 +01:00
Magnus Norddahl
5644b2c0fd Create non-sse version of the wall drawers 2017-03-17 06:58:36 +01:00
Magnus Norddahl
a6e47b571f - change _mm_load_ss to _mm_set_ss just in case compilers are really dumb 2017-03-17 06:19:26 +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
Magnus Norddahl
1f109a5deb - fix wrong particle Y offset 2017-03-16 19:15:42 +01:00
Magnus Norddahl
dbea29e02c - added missing memory barrier 2017-03-16 17:58:41 +01:00
Magnus Norddahl
f1b03b48e9 - add thread safety to GetSpecialLights 2017-03-16 17:53:12 +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
alexey.lysiuk
889a2ae6aa Fixed compilation with GCC/Clang 2017-03-16 11:13:02 +02: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
91da8aecdb - fixed fog init for SW Truecolor. 2017-03-15 23:38:12 +01:00
Christoph Oelckers
76d3ae5ba2 made the sector's color_* properties work in the software renderer.
With no 3D floors this appears to be ok, but there are so many places where colormaps are being set in the software renderer that I cannot guarantee that I got all of them correct. This will need some testing.
2017-03-15 23:24:53 +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
Rachael Alexanderson
a2fc2fb707 - Add new drawer: AddClampShadedSprite
- fixed: AddShaded did not have a drawer associated with it in the software renderer - used new drawer for this purpose.
2017-03-15 14:40:22 -04:00
Magnus Norddahl
225ce82a5a - turned r_scene_multithreaded back off as zdcmp2 revealed some problems 2017-03-15 04:01:28 +01:00
Magnus Norddahl
366d1637ce - enable r_scene_multithreaded 2017-03-15 03:01:43 +01:00
Magnus Norddahl
80f9c81e36 - move PrepareTexture out of the inner drawer loops 2017-03-15 02:59:33 +01:00
Magnus Norddahl
93908bc2ef - fix crash if a worker thread is the first thread to queue drawer commands 2017-03-14 23:47:41 +01:00
Magnus Norddahl
3838ec3edc - allow drawer queues to run immediately to improve r_scene_multithreaded performance
- removed unused pass ranges in DrawerThread
2017-03-14 23:03:14 +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
5141fee8c0 - reverted the change of position where polyobjects get linked to the subsectors. 2017-03-13 21:17:25 +01:00
Magnus Norddahl
a08f35fe3b Fix missing player sprites in some situations when r_scene_multithreaded is on 2017-03-13 19:19:46 +01:00
Magnus Norddahl
a408ea312f Remove if statement that was always false 2017-03-13 17:54:05 +01:00