Commit Graph

758 Commits (8c40b7c7534cb7587d29bb4a44ac6a9a2269d22f)

Author SHA1 Message Date
AbigailBuccaneer f8ebc6ec21 Remove code for drawing dynamic vertex formats
It's unused, and it's a bad idea - it's important for authoring tools
and for performance that vertex formats are well-defined instead of
dynamically created.
2018-05-09 21:03:08 +01:00
AbigailBuccaneer 94b30c00a0 Remove code duplication in CGLxxDevice 2018-05-09 21:03:08 +01: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 a54f65f71b
Merge pull request #1152 from AbigailBuccaneer/consistent-shadow-antialiasing
Improve shadow quality and performance in gl33
2018-05-07 20:53:21 +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
krzys_h f146d2885b
Merge pull request #1149 from AbigailBuccaneer/tighter-visibility-checking
Improve object visibility culling with tighter bounding spheres
2018-05-07 20:53:00 +02:00
krzys-h 6ccf32ec68 fixup! Fix code style in #1150 2018-05-07 20:28:31 +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
AbigailBuccaneer 0d6fffd91f Improve shadow quality and performance in gl33
If CONFIG_QUALITY_SHADOWS is defined (which it always is) then the
fragment shader code that samples the shadow map will take five samples
in a cross shape around the point to be sampled, to apply antialiasing.

Currently, the offset of these samples is hardcoded to 0.00025× the
shadow map resolution. This is very inconsistent: if the shadow map
resolution is 128×128, then these samples are 0.032 texels apart, which
is a waste of four texture samples, and essentially means that no
antialiasing is applied. If the shadow map resolution is 8192×8192, then
these samples are 2.048 texels apart, which causes visual artefacts
around shadow edges, instead of giving smoother shadows.

The correct thing to do is to always sample exactly one texel away from
the original position. This is easy in GLSL 3.30, as it includes a
textureOffset function which offsets a texture fetch by an exact number
of texels. This is faster than manually calculating an offset ourselves,
it fixes visual artefacts at high resolutions, and it properly applies
antialiasing at low resolutions.
2018-05-02 16:30:45 +01:00
krzys-h 38a34829af Fix code style in #1150 2018-05-01 21:27:49 +02:00
AbigailBuccaneer 6f6cfb136a Batch draw calls from CText to improve performance
This significantly speeds up text rendering. On my computer, looking at
the program editor with a full screen of text, this commit takes the
framerate from under 30 to 60 (hitting vsync).

Performance could be further improved in the gl33 renderer by using
instancing or glPrimitiveRestartIndex instead of glMultiDrawArrays, but
that would be a more invasive change.

All of the interface rendering could use a unified quad batching system,
instead of it being limited to CText, but that would require some
refactoring in CText as it currently draws using a different coordinate
space to the rest of the interface.

Fixes #1104.
2018-04-30 10:18:51 +01: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 c49c815ea5 Set uniforms less often during text rendering
We now call SetWindowCoordinates and SetInterfaceCoordinates once per
string, rather than once or twice per character.
2018-04-27 10:43:26 +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
Fiftytwo a024866fd3 Builder bots base implementation 2017-11-16 18:43:45 +01:00
tomangelo2 ff97df74c6 Added support for italic and bold variants of studio and satcom fonts
They aren't currently used anywhere
2017-10-28 22:22:22 +02:00
tomangelo2 94cacdae96 Removed singletone from FontConfig
Also renamed class so it now matches better with class file name
2017-10-15 23:46:15 +02:00
tomangelo2 52d9330114 Replaced multiple methods with one 2017-10-15 23:31:06 +02:00
tomangelo2 dd9439aed2 Renamed font_file to font_config 2017-10-15 22:47:32 +02:00
tomangelo2 054d1c3e54 Changed in-engine fonts names 2017-10-11 17:10:04 +02:00
tomangelo2 cf46c2457a Moved file font.ini to /fonts/ directory
Separated SatCom font from Colobot font
2017-10-11 17:02:09 +02:00
tomangelo2 250c934b9e Added fonts configurability by a separate file 2017-10-09 00:36:31 +02:00
immibis 8b0ccf6667 Fix horizontal scrolling of background images. 2017-08-05 20:08:00 +12:00
immibis 2e8798b33d Make planets stay in one place in the sky - at least in the X direction. 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 d860a08d21 Merge long first frame rendering fix from #898
Also did some changes to make sure the "F1 to open SatCom" appears immediately (not after 0.1s),
and that mission timer won't start ticking in the first simulation frame (mainly for code battle initial pause)
2017-06-04 13:10:50 +02: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 02aa281d30 Remove unnecessary m_instance declarations
They don't do anything at all in gcc and clang, but cause compile errors in MSVC
see #955
2017-05-24 14:00:34 +02:00
krzys-h 648dfd75c4 Fix handling of particle 'father' objects when they are destroyed 2017-05-23 20:31:55 +02:00
krzys-h 2d7911f155 Fix delete() in CBot not destroying PowerCells properly 2017-05-23 20:19:47 +02:00
Abigail 11d950221b Fix all compiler warnings and enable -Werror (#955)
This removes all compilation warnings on:
* g++ 4.7.4, 4.8.5, 4.9.4, 5.4.1, 6.3.0, 7.0.1-svn246759
* clang++ 3.9.1, 4.0.0, 5.0.0-svn303007
2017-05-22 11:10:35 +02:00
krzys-h 6bebbb3f70 Fix sky rendering artifact 2017-05-18 19:03:19 +02:00
krzys-h f6cc629054 Log correct terrain relief resolution 2017-05-18 18:32:22 +02:00
krzys-h 880f31a7c6 Add basics of scoreboard implementation; better support for multiple teams 2017-05-17 18:22:58 +02:00
krzys-h 6cd72543c4 Fix amount of damage from OrgaShooters
I messed it up in previous commit, 0.002/2 is 0.001 not 0.0005 :P
2017-04-29 13:18:01 +02:00
krzys-h fda58a6008 Change bullet collision logic to allow for collisions with non-damageable objects
For now, you have to add bulletWall=true to objects you want bullets to collide with.
It's ugly but will work for now. This is needed mostly for compatibility
with exercises which use barriers to block movement but not bullets.

I also made the collision checks run more often because otherwise the bullets
would sometimes miss the objects (but only visually)
2017-04-29 13:14:10 +02:00
piotrwalkusz1 6ec13017eb Fix apperance camera position, closes #802 (#880) 2017-01-02 18:43:19 +01:00
Tomasz Kapuściński 9bdd83771e Optimizations and changes in OpenGL 2.1 device.
* Limited number of lights to 4
* Only directional lights
* Per-pixel lighting
* Improved dynamic shadows a bit
2017-01-02 16:35:40 +01:00
Tomasz Kapuściński 7bb3245092 Optimizations and changes in OpenGL 3.3 device.
* Limited number of lights to 4
* Only directional lights
* Per-pixel lighting
* Improved dynamic shadows a bit
* Optimized texture changes
2017-01-01 17:16:54 +01:00
krzys-h 88c6818cfd Fix code style issues 2016-11-26 13:48:12 +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
Tomasz Kapuściński 9fe85e280a Code simplification in CGL14Device 2016-11-10 12:34:30 +01:00
Tomasz Kapuściński 993d9e9ed6 Added rendering with generic vertex formats 2016-11-04 14:13:16 +01:00
Tomasz Kapuściński ae3b2b8572 Added types and vertex format specification 2016-11-04 11:59:57 +01:00
krzys-h 3472ec6613 Revert CParticle::CheckChannel changes
I misinterpreted this as being a bug, while actually it seems to be an explicit CParticle design choice (maybe not the best one, but whatever). We DO need better docs for some old code like this :/

Fixes #806

This reverts commit 99a831a03b.
2016-09-27 18:34:54 +02: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 c03d8beb8b Import documentation from old dev wiki
I also updated all outdated information I could find, please tell me if I missed something

Model format documentation needs an update
2016-08-05 17:04:16 +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 9017e5a25b Fixed links in CBot listings in SatCom 2016-06-17 21:13:16 +02:00
krzys-h 0e101debe0 Removed CAM_TYPE_INFO 2016-05-28 18:52:30 +02:00
krzys-h 646e5104f6 Some CCamera cleanup and docs 2016-05-28 18:44:38 +02:00
krzys-h bef27c3b36 Removed unused parameter from CEngine::SetViewParams 2016-05-28 16:48:36 +02:00
krzys-h d80fa387b9 Fixed some particle crashes after 99a831a03b 2016-05-28 16:16:48 +02:00
krzys-h 2dd7ba7e9b Added camera keybindings (#653) 2016-05-28 15:41:01 +02:00
krzys-h ebc2e6e26c Added camera joystick bindings (#653) 2016-05-28 13:50:41 +02:00
krzys-h 942f746a21 Removed CAM_TYPE_DIALOG 2016-05-28 12:50:32 +02:00
krzys-h aa159bc9b0 Don't scale mouse cursor with resolution 2016-05-28 00:43:14 +02:00
krzys-h 99a831a03b Fixed CParticle::CheckChannel "errors"
Not really errors, but I fixed them anyway
2016-05-28 00:26:56 +02:00
krzys-h 5ab99429d4 Fixed FIX camera up/down movement 2016-05-28 00:00:08 +02:00
krzys-h bd72086704 Unified all camera inputs
Until now each camera type had separate code for handling camera input, and some new features were missing in some of them.

The camera controls are as follows:
* RMB+mouse and numpad keys - horizontal/vertical rotation
* mouse wheel and +/- keys - zoom (in free camera - move eye up/down)
* CTRL or MMB + horizontal controls - pan left/right
* CTRL or MMB + zoom controls - move lookat up/down (free camera only)
2016-05-27 22:38:44 +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
Tomasz Kapuściński 8922bb5e84 Renamed CGLDevice to CGL14Device 2016-05-11 14:50:18 +02:00
Tomasz Kapuściński ebca89d920 Removed texture coordinate generation
This feature was only needed by GL14 device to implement shadow mapping and is not supported by shader-based devices. Shadow mapping has been rewritten, so this feature is no longer needed.
2016-05-11 13:47:08 +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 c6c01c332f Fix displaying of text highlights (#738) 2016-04-08 21:24:14 +12: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
Piotr Dziwinski 72f966b118 Fix for #738
Add one-pixel boundary and fix texture coordinates for font characters
This should finally fix the issue of pixelated text
2016-04-03 21:40:33 +12:00
Didier Raboud a06035ecb8 Fix occured/occurred spelling error 2016-03-30 13:40:26 +02:00
krzys-h 64fef98bd7 Merge branch 'dev-0.1.8' into dev 2016-03-29 16:16:20 +02:00
Tomasz Kapuściński df4e5fa309 Fix for error spam in console when running on GL14 device 2016-03-29 15:05:32 +02:00
krzys-h 427bbfa630 Changed CParticle::CheckChannel log message 2016-03-28 23:04:24 +02: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 adf20f58d4 Removed unused members of CNullDevice 2016-03-26 19:50:53 +01: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 17bcbddef1 Destroy white texture in GL14 device on exit 2016-03-25 17:10:21 +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
Piotr Dziwinski 4e331f1f54 Possible workaround for #738
Align text rendering to character, not tile size
2016-03-25 15:50:13 +13:00
krzys-h b84e24d662 Fixed VBOs never being used even if available 2016-03-24 18:45:51 +01:00
Tomasz Kapuściński a84b5c28b7 Optimizations of primitive rendering in OpenGL 3.3 device 2016-03-22 15:16:08 +01:00
Tomasz Kapuściński d3ef04428b Added DeviceCapabilities 2016-03-22 14:27:00 +01:00
Piotr Dziwinski 926f7cf115 Possible fix for #738
Explicitly set byte alignment in pixel transfer operations
2016-03-22 23:31:08 +13: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 8baccb08a7 Optimize use of textures in text rendering, closes #215 2016-03-19 12:00:56 +13:00
Piotr Dziwinski 4b770adf46 API for updating texture data 2016-03-19 12:00:50 +13:00
Piotr Dziwinski 15c9cbd228 Debug mode for displaying crash spheres, closes #400 2016-03-19 11:54:58 +13:00
krzys-h effd349449 Fixed cutscene camera animation, closes #731 2016-03-15 21:09:21 +01:00
krzys-h 4479a196f9 Fix colobot-lint warnings 2016-03-15 17:39:00 +01:00
Tomasz Kapuściński 4c6f8239fa Renamed and moved GL33 shader files to separate directory 2016-03-14 21:44:25 +01:00
Tomasz Kapuściński cec942b4fd Renamed and moved GL21 shader files to separate directory 2016-03-14 21:24:27 +01:00
Tomasz Kapuściński 2774fcd8a2 Small changes in the GL21 shader 2016-03-14 20:02:31 +01:00
Tomasz Kapuściński 169aa63822 Potential fix for #726 2016-03-14 19:23:21 +01:00
krzys-h cbdda57288 Merge branch 'dev-right-click-camera' into dev 2016-03-13 14:52:17 +01: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 d3ccdebd9f Added names to graphics devices 2016-03-06 19:32:37 +01:00
krzys-h f67d76fed4 Merge branch 'dev' into dev-right-click-camera 2016-03-05 21:09:00 +01:00
krzys-h 4e50f36214 Merge branch 'dev' into dev-right-click-camera 2016-03-02 20:00:57 +01:00
Tomasz Kapuściński 5fa3ed63b1 Compilation fix 2016-02-29 16:51:18 +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
Tomasz Kapuściński 14d6ee74a3 Removed dirt from water surface 2016-02-27 15:29:41 +01:00
krzys-h 9c32f705b6 FIXED ALL GOLD EDITION LIGHTING PROBLEMS!! Yay! 2016-02-21 15:35:52 +01:00
krzys-h 3de6794835 Allow both right and middle mouse button for camera movement 2016-02-19 17:27:55 +01:00
krzys-h 700f3ad448 Edge camera speed fix 2016-02-19 17:22:20 +01:00
krzys-h b15666f48e Restored old camera scroll as a config option 2016-02-19 17:14:08 +01:00
krzys-h 1efa4b132c Fixed mouse invert settings; removed camera scroll setting 2016-02-19 17:14:08 +01:00
krzys-h 47d39e5b22 Right click camera; minor CCamera cleanups 2016-02-19 17:14:08 +01:00
krzys-h d9ccd6edf3 Camera smoothness adjustment 2016-02-19 17:14:08 +01:00
Tomasz Kapuściński 739f90e38e Reverted changes to OpenGL version detection 2016-02-18 20:51:02 +01:00
krzys-h 0256b1aa39 Add logging in font loading 2016-02-18 18:07:29 +01:00
krzys-h 1b21c387bb Fixed colobot-lint warnings 2016-02-18 12:20:40 +01:00
Tomasz Kapuściński 0ad53cc0d8 Fix compilation error 2016-02-18 01:36:37 +01:00
Tomasz Kapuściński 0eaf3a9ac4 Added rendering modes and shaders to OpenGL 3.3 engine and fixed problem with detecting extensions in core profile 2016-02-18 00:57:37 +01:00
Tomasz Kapuściński 0154af39aa Corrected compilation problem (GL_MAX_FRAMEBUFFER_SAMPLES) 2016-02-15 20:59:09 +01:00
Tomasz Kapuściński 517d6f069a Reimplemented drawing primitives in OpenGL 3.3 engine 2016-02-15 20:31:32 +01:00
Tomasz Kapuściński 79c21f6676 Moved LightLocations to outside of UniformLocations 2016-02-15 20:05:25 +01:00
krzys-h 977607a934 Updated license headers 2016-02-13 14:11:30 +01:00
krzys-h 55412842df Fixed some code style warnings 2016-02-13 13:46:56 +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 bf8916b9eb Changes in detection of graphics hardware capabilities 2016-02-12 16:14:29 +01:00
Krzysztof Dermont c780148b77 Fix crash related to TTF and PHYSFS
TTF fonts will be loaded to memory instead of file pointers

Added new class CSDLMemoryWrapper that loads data from PHYSFS into memory block
and closes file after. This closes issues #519, #708 and #619
2016-02-11 16:12:16 +01:00
Tomasz Kapuściński b6faadca03 Rewritten OpenGL 2.1 engine's two-sided lighting 2016-02-11 15:04:07 +01:00
Tomasz Kapuściński 32b480b226 Rewritten lighting in OpenGL 2.1 engine 2016-02-10 23:38:49 +01:00
Tomasz Kapuściński 898001e065 Changed CGL33Device requirement to OpenGL 3.2 2016-02-10 22:50:40 +01:00
Tomasz Kapuściński 447b466d6e Optimizations in graphics engines 2016-02-10 21:40:41 +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
Tomasz Kapuściński 12067c1b9f Optimized light updating in CGLDevice 2016-01-30 18:51:13 +01:00
Tomasz Kapuściński 9db943b820 Optimized matrix operations in CGLDevice 2016-01-30 17:41:11 +01:00
Tomasz Kapuściński 05e19f47c3 Corrected MSAA support detection 2016-01-29 12:02:36 +01:00
Tomasz Kapuściński 00221c9a3f Optimized DrawPrimitives() in CGL33Device 2015-12-24 00:21:57 +01:00
Tomasz Kapuściński d944a55905 Optimized DrawPrimitives() in CGL21Device 2015-12-24 00:06:58 +01:00
Tomasz Kapuściński f2a295348c Optimized DrawPrimitives() in CGLDevice 2015-12-23 23:49:00 +01:00
Tomasz Kapuściński d82b5ef746 Added DrawPrimitives() for drawing multiple primitives (not optimized for now) 2015-12-23 23:23:10 +01:00
Tomasz Kapuściński 22e963e2c4 Added information about graphics card to error message 2015-12-20 17:34:55 +01:00
Tomasz Kapuściński aa2e14219e Added warnings and error messages to graphics devices regarding unsupported OpenGL version 2015-12-18 21:04:16 +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
krzys-h 95f1e3f19a Fixed water/lava moving and waves (#659) 2015-09-30 20:31:09 +02:00
krzys-h 2f0ec3fe75 Fixed lava particle effects (#659) 2015-09-30 20:21:25 +02:00
Piotr Dziwinski 61a3ba2800 Fix undefined function colobot-lint issues 2015-09-29 21:44:24 +02:00
krzys-h 2cb2782c9d Restored old Ceebot-Teen objects
In preparations for new programming course
2015-09-28 22:08:59 +02:00
Piotr Dziwinski 66ce745be0 Introduce forward declarations as suggested by colobot-lint 2015-09-27 16:28:14 +02:00
krzys-h 6a6025f557 Implemented force feedback 2015-09-27 00:34:03 +02:00
krzys-h 07df35ca01 Refactored mouse wheel 2015-09-25 22:54:48 +02:00
krzys-h a0034f8000 Finalized SDL2 migration 2015-09-25 21:26:49 +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 b058a6986b Minor improvments to plane camera 2015-09-06 20:33:04 +02:00
krzys-h 582e3c865f Allow controlling plane camera with number keys 2015-09-06 20:15:56 +02:00
krzys-h f6fdec1479 Allow controlling free camera with arrows when no object is selected 2015-09-06 20:09:47 +02:00
krzys-h 5fd1735678 Added option to move camera lookat point in free cam 2015-09-05 20:59:11 +02:00
krzys-h fb03a497d7 Added command to hide the UI 2015-09-04 19:16:21 +02:00
krzys-h e956311626 Moved free camera controls to numpad; added 'camtype %d', 'camspeed %f', 'freecam' 2015-09-04 19:04:42 +02:00
Tomasz Kapuściński 658e2ff1be Possible fix for issue #520 2015-09-02 21:35:43 +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
Piotr Dziwinski 3335be42de Fix MSVC compilation
Forgot to push this the last time
2015-08-30 22:11:30 +02:00
krzys-h d4b431adaa Recalculate camera projection matrix after aspect ratio change 2015-08-25 16:18:01 +02:00
krzys-h 844e7343e0 Possible fix to #601 2015-08-24 23:19:02 +02:00
krzys-h 6ed83bb63f Fixed Shielder not being destructible by OrgaMatter even when the shield is not active, closes #597 2015-08-24 21:12:06 +02:00
krzys-h f78f4854b4 Fixed failing assertion when turning objects into ruins, closes #598 2015-08-24 20:22:08 +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