Commit Graph

203 Commits (171bba1bcd87ef4630b3daa1bcee46cc8705c255)

Author SHA1 Message Date
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