Commit Graph

301 Commits (e839f0dec7d7e13fd8abdddf0c28e955cc32b698)

Author SHA1 Message Date
Tomasz Kapuściński 465fe59dfb Added Renderers
Added UI Renderer
Added OpenGL 3.3 UI Renderer
Reimplemented most of UI drawing functionality to use UI Renderer
TODO: fix OpenGL errors
2021-09-05 16:32:15 +02:00
MrSimbax 7e6782a1be Try to improve font reloading 2020-07-19 16:07:27 +02:00
tomangelo 37e4ed8029
Updated license headers (#1317)
* Updated headers

* Updated more headers
2020-07-07 10:19:36 +02:00
Fiftytwo 0b9673029d Merge dev into dev-builders and resolve conflicts 2020-05-15 15:06:37 +02:00
tomangelo2 0f6e1d7d4a Style fix 2019-02-18 14:43:56 +01:00
Bartosz Cieśla 7c88a6e667 Fix for #1194 2018-10-13 10:12:41 +02:00
tomangelo a76bbe49ed
Merge pull request #1189 from colobot/dev-msvc
Add some Visual Studio specific fixes
2018-09-08 22:00:47 +02:00
tomangelo 7d46ee762a
Merge pull request #1181 from colobot/dev-vsync
Add VSync switch to Device tab
2018-08-21 12:16:03 +02:00
MrSimbax 7e19622b85 Allow both F11 and F12 for stats 2018-07-25 23:45:15 +02:00
MrSimbax 32d3d1eb92 Change key for debug menu to F10 and for stats to F11
F12 is used by Visual Studio debugger to trigger a breakpoint and apparently it cannot be changed:

"The F12 key is reserved for use by the debugger at all times, so it should not be registered as a hot key. Even when you are not debugging an application, F12 is reserved in case a kernel-mode debugger or a just-in-time debugger is resident."
Source: https://msdn.microsoft.com/en-us/library/windows/desktop/ms646309.aspx?f=255&MSPPError=-2147217396
2018-07-25 21:38:47 +02:00
tomangelo 5080cb46b1
Merge pull request #1031 from tomangelo2/dev
Added fonts configurability by a separate file
2018-07-25 19:51:55 +02:00
tomangelo2 359abf9a82 Add VSync switch to Device tab 2018-07-05 19:43:56 +02:00
AbigailBuccaneer c027b54add Don't create a color renderbuffer for shadow map
When rendering the shadow map offscreen using framebuffer objects, it's
not necessary to create a color renderbuffer. Currently
FramebufferParams only lets you choose between a renderbuffer and a
texture for both color and depth attachments. This changes that, and now
you can ask for a texture, a renderbuffer, or nothing.

This improves performance. On my computer, with an 8192x8192 shadow map,
this improves overall frame time by 8.0%.
2018-05-09 17:25:52 +01:00
krzys_h 182c4c5cbf
Merge pull request #1154 from AbigailBuccaneer/shadow-shimmering
Fix shadow shimmering
2018-05-07 20:53:28 +02:00
krzys_h 50ed675acd
Merge pull request #1150 from AbigailBuccaneer/debug-rendering
Add generic debug rendering functions
2018-05-07 20:53:12 +02:00
AbigailBuccaneer abeb7fceb2 Fix shadow shimmering
Shadow shimmering is a visual artefact where the outlines of shadow
mapped objects don't stay stable when the camera is moved or rotated.
The reason is that as the shadow map's origin moves, the objects
rendered to the shadow map have temporal aliasing around their edges.

The solution is to only move the shadow map in texel-sized increments.
Because the shadow map's projection is orthographic, moving the shadow
map origin in texel increments ensures that objects that aren't moving
don't show any temporal aliasing, as the position of the samples of the
object in worldspace stay the same.
2018-05-04 10:56:37 +01:00
krzys-h 38a34829af Fix code style in #1150 2018-05-01 21:27:49 +02:00
AbigailBuccaneer c445d7d9a9 Add generic debug rendering functions
Currently the engine can draw debug spheres to show crash sphere
positions. This extends this to draw arbitrary spheres and cuboids,
transformed arbitrarily. With these in place it's now very quick and
easy to create a debug visualisation - for example, it's a one-line code
change to render the bounding box or sphere of every EngineObject.
2018-04-29 23:41:53 +01:00
AbigailBuccaneer 282a793a13 Improve object vis with tighter bounding spheres
This commit improves rendering performance by doing a better job of
checking whether an object is visible via its bounding sphere or not.

The engine maintains a bounding box for each EngineBaseObject that's
exactly large enough to fit every vertex. From this, it computes a
bounding sphere, and only draws objects if the sphere is within the view
frustum. Previously, the bounding sphere was always centered on the
EngineBaseObject's origin, even for models where the bounding box center
is significantly offset from the origin. Now, the bounding sphere is
always the tightest sphere which fits the bounding box.
2018-04-29 19:35:02 +01:00
AbigailBuccaneer ea64edaa0b Compile with -Wmissing-declarations
-Wmissing-declarations enforces that every function (except for static
functions) must be declared separately before it's defined. This
essentially enforces that every function must be either static, or
declared in a header elsewhere.

This helps the optimizer, as it can do a better job of inlining if it
knows that a function won't be used outside of a given file. It also
helps -Wunused-function (which is enabled by -Wall) find more unused
functions.

Note that Clang spells this option -Wmissing-prototypes, which
confusingly is the name of a related but different warning option under
GCC.
2018-04-21 16:49:27 +01:00
AbigailBuccaneer 4119e669d1 Remove central tracking of SystemTimeStamp
SystemTimeStamp used to be an opaque class, as it was provided by
`system_{linux/other/windows}.h`. Because of this, code dealt in
SystemTimeStamp pointers, and getting the current timestamp required a
memory allocation. Now SystemTimeStamp is just a
`std::chrono::time_point`, we can make the code cleaner and faster by
just directly keeping SystemTimeStamp instead of pointers around.
2018-04-20 09:57:10 +01:00
AbigailBuccaneer 2a003a27b1 Use C++11 threads, mutexes and condition variables 2018-04-20 09:56:57 +01:00
krzys-h e964d3e48c Fix colobot-lint warnings 2018-04-20 02:21:12 +02:00
krzys-h 1c2bdc9cab Update license headers 2018-04-20 02:08:50 +02:00
Mateusz Przybył 46bef8fd92
Add button4.png drawing (builder icons) 2017-11-17 18:59:14 +01:00
tomangelo2 054d1c3e54 Changed in-engine fonts names 2017-10-11 17:10:04 +02:00
immibis 8b0ccf6667 Fix horizontal scrolling of background images. 2017-08-05 20:08:00 +12:00
immibis 2751db3245 Add horizontal FoV to CEngine 2017-08-05 19:45:08 +12:00
krzys-h 4faabf2185 Apply shadow mapping performance counter patch from #923 2017-06-03 21:11:18 +02:00
Abigail f4614658cf Fix -Wundefined-var-template warning (#963)
This avoids specializing CSingleton<T>::m_instance for each type, and
instead just defines it once in the header. This is allowed by the
standard, multiple definitions are merged in the same way that inline
functions are.
2017-05-29 20:46:11 +02:00
krzys-h 6bebbb3f70 Fix sky rendering artifact 2017-05-18 19:03:19 +02:00
piotrwalkusz1 6ec13017eb Fix apperance camera position, closes #802 (#880) 2017-01-02 18:43:19 +01:00
krzys-h 3bac0aabd9 Fix buffer overrun when rendering goto() debug texture, closes #841 2016-11-11 17:26:37 +01:00
krzys-h 6e4764b97c Fix GroundSpot blending, closes #846 2016-11-11 17:06:53 +01:00
Tomasz Kapuściński e7c41ae9e6 Correction in changing wrap mode in SetState 2016-11-10 13:00:42 +01:00
MrSimbax 92b1e544ec Remove default lambda parameters
They cause compilation error on MSVC and should give errors, as it's explicitly stated in the C++11 standard: http://stackoverflow.com/questions/6281472/why-does-a-default-argument-for-a-lambda-argument-trigger-a-pedantic-gcc-warni
2016-08-18 10:02:54 +02:00
krzys-h dbe7fd6ef0 Added performance counter for UI particles 2016-07-24 18:19:37 +02:00
krzys-h ffd688e2d7 Do not render the shadow map when pause blur is active 2016-07-24 16:56:47 +02:00
krzys-h 2c3e90b126 Added CBot performance counter 2016-07-24 16:36:13 +02:00
krzys-h 5fea22ff03 Moved performance counters to a separate class 2016-07-24 16:18:25 +02:00
krzys-h 81b7bcc5bc Moved system modules from app/ to common/system/ 2016-07-24 14:38:49 +02:00
krzys-h 9e545d0d39 Fixed colobot-lint warnings 2016-07-09 20:39:18 +02:00
krzys-h 8a17bc901c Added pause blur config setting, enabled by default 2016-07-09 12:13:51 +02:00
krzys-h 3b9b9b322a Changed mouse scaling (again) 2016-06-21 13:07:40 +02:00
krzys-h bd4362e26c Fixed dynamic textures not being reloaded properly 2016-06-19 19:57:55 +02:00
Tomasz Kapuściński a0b3f7a769 Fixed problem with pause blur after changing some graphic settings 2016-06-19 16:52:01 +02:00
krzys-h 125d1a32c7 Fixed pause blur blinking for one frame
issue #656
2016-06-19 12:23:57 +02:00
krzys-h 9d9131c3fb Fixed pause blur with MSAA
issue #656
2016-06-19 11:45:59 +02:00
krzys-h bef27c3b36 Removed unused parameter from CEngine::SetViewParams 2016-05-28 16:48:36 +02:00
krzys-h aa159bc9b0 Don't scale mouse cursor with resolution 2016-05-28 00:43:14 +02:00
krzys-h 59c106f7a7 Fixed pause blur image not updating correctly on resolution change 2016-05-21 19:03:53 +02:00
Tomasz Kapuściński 213fd6b203 Added blur effect when the game is paused (issue #656)
Might be unstable, needs more testing. To enable, add PauseBlur=1 to [Experimental] section in colobot.ini
2016-05-21 14:27:35 +02:00
tomangelo2 9870cfe8a8 Clamp FogStart value to 0 if negative
Should fix issue #766
2016-05-02 01:27:07 +02:00
Piotr Dziwinski 71a77c77f6 Hack to finally fix #738
Text rendering is now done in window coordinates corresponding to window
pixels to avoid floating-point rounding errors that show up as rendering
artifacts
2016-04-06 23:08:50 +12:00
krzys-h e24d77bde8 goto() bitmap debugger 2016-03-28 21:42:25 +02:00
krzys-h d38ddcbc41 goto() path debugger 2016-03-28 20:25:07 +02:00
krzys-h e4f9360e63 Resources debug mode 2016-03-28 17:58:31 +02:00
krzys-h 4af02c86f8 Debug menu 2016-03-28 17:58:31 +02:00
krzys-h 6585ee9ae8 Refactor some references to CRobotMain from CEngine 2016-03-26 18:55:39 +01:00
krzys-h 16c1f34a07 Removed unnecessary LoadAllTextures call 2016-03-25 17:14:20 +01:00
krzys-h d812db19f8 Fixed ground spots not working after changing texture params; use UpdateTexture instead of destroy and recreate 2016-03-25 17:06:01 +01:00
Tomasz Kapuściński b31353cf75 Optimized crash sphere rendering 2016-03-20 19:17:15 +01:00
Piotr Dziwinski 720705bd6b Some colobot-lint fixes 2016-03-19 12:33:54 +13:00
Piotr Dziwinski 15c9cbd228 Debug mode for displaying crash spheres, closes #400 2016-03-19 11:54:58 +13:00
Tomasz Kapuściński 8deeddffe0 Corrected OpenGL 2.1 engine's error spam and added experimental terrain shadowing 2016-03-10 10:50:54 +01:00
Tomasz Kapuściński e6a2fc9671 Rewritten shadow mapping implementation 2016-03-07 18:33:19 +01:00
Tomasz Kapuściński 9effa308ce Small change in enabling/disabling shadow mapping 2016-03-06 20:25:50 +01:00
Tomasz Kapuściński 78e877d9a8 Changes in framebuffer creation, framebuffer error detection and small other graphical things 2016-02-29 16:42:01 +01:00
Tomasz Kapuściński 0bb5f96d7a Changed depth of shadow map texture to 32 2016-02-28 23:17:25 +01:00
krzys-h b97070bbad stupid whitespace 2016-02-28 20:57:39 +01:00
krzys-h 282cd65a2d Fix reloading changed ground spot textures (closes #404) 2016-02-28 20:22:05 +01:00
krzys-h 643c40e778 Revert "Get rid of "blacklisting shadowXX.png" logs"
This disabled loading of those textures completly

This reverts commit 60f0a7b45c.

 #BlamePiotrdzAgain
2016-02-28 20:17:35 +01:00
krzys-h 977607a934 Updated license headers 2016-02-13 14:11:30 +01:00
Tomasz Kapuściński 6b7e6cbc75 Added rendering modes and implemented additional OpenGL 2.1 shaders 2016-02-13 03:54:49 +01:00
Tomasz Kapuściński a924cf6a75 Fix for fog distance 2016-01-31 00:38:24 +01:00
Tomasz Kapuściński 15c5e69199 Fix for visibility distance setting 2016-01-30 23:58:26 +01:00
Piotr Dziwinski d11ebc891c Bring to zero some types of issues reported by colobot-lint 2015-10-04 00:09:10 +02:00
krzys-h 3815ef0bd6 Refactored CPauseManager (again) 2015-10-01 18:55:41 +02:00
krzys-h 58035f3cd1 Fixed rendering camera overlay color, closes #157 2015-09-30 21:41:00 +02:00
Piotr Dziwinski 66ce745be0 Introduce forward declarations as suggested by colobot-lint 2015-09-27 16:28:14 +02:00
krzys-h dfa06dafcf Refactored window resize 2015-09-25 11:11:35 +02:00
krzys-h 53e4470dbf Started SDL2 migration 2015-09-24 21:09:46 +02:00
krzys-h 389aaaf132 Fixed 'invui' disabling too much 2015-09-12 11:51:03 +02:00
krzys-h 2792fa2c6c Fixed mouse cursor scaling (again)
How could I even miss the fact that my previous fix is not working at all? :P
2015-09-11 17:54:55 +02:00
krzys-h fb03a497d7 Added command to hide the UI 2015-09-04 19:16:21 +02:00
krzys-h c3d7876a5c Made CPauseManager not a singleton 2015-08-31 22:05:21 +02:00
krzys-h ff17961584 Refactored CPauseManager 2015-08-31 21:47:55 +02:00
krzys-h 2ec5e07080 Possible fix to #608 2015-08-31 12:06:14 +02:00
krzys-h d4b431adaa Recalculate camera projection matrix after aspect ratio change 2015-08-25 16:18:01 +02:00
krzys-h b5bd1b2d74 Destroy static buffers after resolution change
Under windows, changing the video mode causes SDL to destroy and recreate the OpenGL context, which invalidates all current static buffers.
It works on Linux because the actual SDL implementation here differs.

See http://sdl.beuc.net/sdl.wiki/SDL_SetVideoMode for details:
> Also note that, in Windows, setting the video mode resets the current OpenGL context. You must execute again the OpenGL initialization code (set the clear color or the shade model, or reload textures, for example) after calling SDL_SetVideoMode. In Linux, however, it works fine, and the initialization code only needs to be executed after the first call to SDL_SetVideoMode (although there is no harm in executing the initialization code after each call to SDL_SetVideoMode, for example for a multiplatform application).
2015-08-24 19:43:06 +02:00
Piotr Dziwinski 60f0a7b45c Get rid of "blacklisting shadowXX.png" logs 2015-08-22 18:17:57 +02:00
Piotr Dziwinski b93f610930 Fix license header in all files 2015-08-22 16:40:02 +02:00
Piotr Dziwinski d703eb7165 Compile fixes for MSVC2013 2015-08-16 00:39:08 +02:00
krzys-h 9a15db1bea Split global.h 2015-08-15 14:02:07 +02:00
krzys-h 9d8bef877d Renamed old-style shadows to shadow spots in the code 2015-08-14 13:37:40 +02:00
krzys-h 78a279b479 Better shadow type selection UI 2015-08-14 13:37:27 +02:00
krzys-h eda7435eb6 Removed a lot of useless settings (#556) 2015-08-14 13:04:05 +02:00
krzys-h 1d6c3cc748 Fixed CEngine trying to use unsupported values as defaults, closes #552
Also fixed the settings buttons not being disabled properly
2015-08-14 12:03:53 +02:00
krzys-h 92591c23b6 When flushing texture cache, also remove device textures 2015-08-13 23:49:01 +02:00
krzys-h 1c461ce1c8 Prevent reloading background if not needed 2015-08-13 23:44:08 +02:00