Commit Graph

35 Commits (0908e10ff6735989b1f850ec70baa9920da899b4)

Author SHA1 Message Date
Tomasz Kapuściński 0908e10ff6 Removed material, lighting, fog and shadowing code from CDevice 2022-02-02 19:09:38 +01:00
Tomasz Kapuściński 7d9badb542 Added UV transform and rewritten animated texture mapping code to use it 2022-02-02 18:13:21 +01:00
Tomasz Kapuściński 048393f448 Added CParticleRenderer and reimplemented particle rendering code to use it 2022-01-20 21:38:58 +01:00
Tomasz Kapuściński 0207669d61 Added optional triplanar mapping mode for the secondary texture 2021-12-14 21:54:19 +01:00
Tomasz Kapuściński 57502d2f54 Added object renderer (WIP)
Rewritten shadow rendering logic
Split some shaders into smaller parts
Shadow renderer now has its own framebuffer object
2021-12-01 17:05:20 +01:00
Tomasz Kapuściński ce71f25901 Removed unused shader files 2021-10-25 21:42:19 +02:00
Tomasz Kapuściński fea6b87139 Added fog to terrain renderer and renamed variables 2021-10-17 16:27:29 +02:00
Tomasz Kapuściński 4157604458 Added shadow renderer and removed rendering modes 2021-10-17 16:05:20 +02:00
Tomasz Kapuściński 79d4cd9060 Updated TerrainRenderer
* Engine will now use it to render terrain
* Added directional light source
* Added dynamic shadows
* Moved visibility computation to CEngine
* Removed uniform buffers
2021-09-19 20:08:31 +02:00
Tomasz Kapuściński 30d688c1ec Added and implemented terrain renderer 2021-09-05 16:32:19 +02:00
Tomasz Kapuściński 12e696bf1c Added color and moved uniform data to uniform buffer block 2021-09-05 16:32:17 +02:00
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 ec21faf15c Removed gl14 and gl21 devices 2021-09-05 16:25:38 +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
Mateusz Przybył 2d32e3a798
Merge pull request #1255 from timgott/smooth_shadows_gl21
Smooth shadows in gl21
2020-07-21 20:55:47 +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
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
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
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 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 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 6b7e6cbc75 Added rendering modes and implemented additional OpenGL 2.1 shaders 2016-02-13 03:54:49 +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
Piotr Dziwinski 3b585d9f51 Some style and whitespace fixes 2015-08-02 11:36:36 +02:00
Tomasz Kapuściński 66d865942c Added OpenGL 2.1 shaders for per-pixel lighting 2015-06-02 16:55:03 +02:00
Tomasz Kapuściński e1a0f5b1c7 Added OpenGL 2.1 engine 2015-05-27 22:12:02 +02:00
Tomasz Kapuściński 08bf066f78 Added shadow color setting 2015-05-27 21:58:32 +02:00
Tomasz Kapuściński fa67e815b8 Implemented per-vertex lighting and set it as default in OpenGL 3.3 engine 2015-05-22 18:53:51 +02:00
Piotr Dziwinski b1e8341475 Move OpenGL 3.3 shaders to main repository 2015-05-20 23:30:46 +02:00