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
Tomasz Kapuściński
704e3f2f0d
Improved code for loading and linking shaders
2021-09-05 16:32:15 +02:00
Tomasz Kapuściński
ec21faf15c
Removed gl14 and gl21 devices
2021-09-05 16:25:38 +02:00
Tomasz Kapuściński
4c14050b27
Fixed mipmaps being outdates after texture update.
2020-07-31 22:04:47 +02:00
Tomasz Kapuściński
33b7c893cb
Allow length of the light direction vector to influence strength of the light source.
...
This fixes the issue with objects and terrain being darker than they should be. As it turns out, most levels have not normalized light direction which happens to make light brighter and this is the expected result. To keep in line with GL14 engine, newer engines should use the length of the vector to make light brighter.
2020-07-31 22:01:33 +02:00
MrSimbax
5112bf86df
Fix linter issues
2020-07-21 21:11:08 +02:00
Mateusz Przybył
2d32e3a798
Merge pull request #1255 from timgott/smooth_shadows_gl21
...
Smooth shadows in gl21
2020-07-21 20:55:47 +02:00
Mateusz Przybył
fd2b72b296
Merge pull request #1263 from nextghost/dev
...
Fix OpenGL specular lighting
2020-07-21 20:55:21 +02:00
tomangelo
37e4ed8029
Updated license headers ( #1317 )
...
* Updated headers
* Updated more headers
2020-07-07 10:19:36 +02:00
Martin Doucha
69aba7c352
Fix OpenGL 3.3 specular lighting
2019-12-29 14:46:39 +01:00
Martin Doucha
0d30624119
Fix OpenGL 2.1 specular lighting
2019-12-29 14:46:39 +01:00
Tim Göttlicher
e9a153df14
Smoother shadows on OpenGL 2.1
2019-04-28 01:27:12 +02:00
tomangelo
d90592f7b6
Merge pull request #1162 from AbigailBuccaneer/gl-cleanup
...
Clean up and improve CGLxxDevice code
2018-07-23 12:15:08 +02:00
AbigailBuccaneer
e481905a25
Do less state setting in gl14 and gl21
2018-05-09 21:03:08 +01:00
AbigailBuccaneer
c9a8a242a0
Remove CGL14Device's support for display lists
...
Closes #1153 .
2018-05-09 21:03:08 +01:00
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
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
1c2bdc9cab
Update license headers
2018-04-20 02:08:50 +02: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
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
krzys-h
646e5104f6
Some CCamera cleanup and docs
2016-05-28 18:44:38 +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
Didier Raboud
a06035ecb8
Fix occured/occurred spelling error
2016-03-30 13:40:26 +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
17bcbddef1
Destroy white texture in GL14 device on exit
2016-03-25 17:10:21 +01: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
Piotr Dziwinski
720705bd6b
Some colobot-lint fixes
2016-03-19 12:33:54 +13:00
Piotr Dziwinski
4b770adf46
API for updating texture data
2016-03-19 12:00:50 +13: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
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
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
739f90e38e
Reverted changes to OpenGL version detection
2016-02-18 20:51:02 +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
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
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
66ce745be0
Introduce forward declarations as suggested by colobot-lint
2015-09-27 16:28:14 +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
Tomasz Kapuściński
658e2ff1be
Possible fix for issue #520
2015-09-02 21:35:43 +02:00
Piotr Dziwinski
b93f610930
Fix license header in all files
2015-08-22 16:40:02 +02:00
Piotr Dziwinski
ba3284b8b8
Apply clang-modernize -add-override
2015-08-17 22:12:09 +02:00
Piotr Dziwinski
2289d69735
Replace NULL -> nullptr
2015-08-16 12:43:42 +02:00
Piotr Dziwinski
d703eb7165
Compile fixes for MSVC2013
2015-08-16 00:39:08 +02:00
Piotr Dziwinski
0258b63d39
Fix memory leak in creating textures
2015-08-13 23:42:27 +02:00
Piotr Dziwinski
93a06c0c23
Remove manual memory management from graphics classes
2015-08-12 21:07:16 +02:00
Piotr Dziwinski
f29a826ad2
Fix Clang warnings about use of abs()
2015-08-06 14:31:40 +02:00
Piotr Dziwinski
111d279de5
Add proper initializations in OpenGL classes
2015-08-06 08:22:11 +02:00
Piotr Dziwinski
c38ecd67ea
Fix crash in glDeleteTexture
2015-08-05 23:06:54 +02:00
Piotr Dziwinski
11b0398c03
Include refactoring
...
* reordered includes according to correct style
* removed some unnecessary includes
2015-08-02 17:49:07 +02:00
Piotr Dziwinski
7d8b56d9ab
More style fixes
2015-08-02 12:06:14 +02:00
Piotr Dziwinski
3b585d9f51
Some style and whitespace fixes
2015-08-02 11:36:36 +02:00
krzys-h
72b9738eb9
Fixed possible problems when trying to use shadow maps in unsupported configuraions ( #522 )
2015-07-20 22:34:39 +02:00
krzys-h
e2ebcb769e
Added MSAA to settings screen
2015-07-20 16:29:09 +02:00
krzys-h
90756f8b34
Added FilterMode, MipmapLevel and Anisotropy to settings screen
2015-07-20 13:56:45 +02:00
krzys-h
02c24fbf27
CProfile -> CConfigFile
2015-07-19 16:05:09 +02:00
Tomasz Kapuściński
1d69021e94
Potential fix to #511
2015-07-18 02:02:38 +02:00
Piotr Dziwinski
a872ea128b
Add MakeUnique template to avoid use of naked new
2015-07-17 20:06:59 +02:00
Tomasz Kapuściński
195667ab2c
Potential fix for rendering problems in OpenGL 2.1 engine under Linux
2015-06-26 19:55:46 +02:00
Piotr Dziwinski
88ec9aaae3
Drop GCC 4.6 support
2015-06-26 00:24:32 +02:00
Piotr Dziwinski
7e21d3bd79
Get rid of some more manual memory management
2015-06-26 00:24:05 +02:00
Tomasz Kapuściński
f2318803e5
Added Multisample anti-aliasing (MSAA)
2015-06-22 00:56:47 +02:00
Piotr Dziwinski
5f1d3c21d4
Fix some more warnings reported by Clang
2015-06-21 19:46:01 +02:00