17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-10-17 05:09:20 +02:00
Commit Graph

83 Commits

Author SHA1 Message Date
maj00r
806dde70bf feat(render): ambient occlusion with bent normals darkens only the light of the surroundings instead of the whole image, so the sun and headlights keep their full strength; the occlusion and the bent normal of the previous frame are reprojected into the lighting of the scene, with the motion of the camera and of every vehicle and cab taken into account and with depth checks against disocclusion, the ambient light follows how much of the sky the bent normal sees, and reflections of the environment are occluded where the cone of visible directions around the bent normal cuts off the reflected lobe, only where the occlusion is clear enough that open flat panels and windows keep their grazing reflections 2026-10-14 22:10:55 +02:00
maj00r
a24f9fae3f feat(render): ground truth ambient occlusion darkens creases, recesses and the space under desks and frames, computed at half resolution from the reversed depth buffer with a depth-aware blur and multiplied into the image before motion blur, so it works with the default settings; thin parts in front of a surface, such as a steering wheel, shade it only from close by, and gfx.postfx.gtao.enabled, radius, intensity, directions and steps set it from the ini 2026-10-14 22:10:55 +02:00
jerrrrycho
6263fe539b Fix/sonar maintainability rebased (#209)
* refactor(sonar): use override instead of redundant virtual (cpp:S3471)

* refactor(sonar): remove empty statements, one declaration per statement (cpp:S1116, cpp:S1659)

* refactor(sonar): drop redundant lambda return types (cpp:S3574)

* refactor(sonar): prefer using over typedef (cpp:S5416)

* refactor(sonar): use =default for trivial special members (cpp:S3490)

* refactor(sonar): use nullptr literal (cpp:S4962)

* refactor(sonar): remove redundant access specifiers (cpp:S3539)

* refactor(sonar): remove redundant casts (cpp:S1905)

* refactor(sonar): use std::scoped_lock instead of std::lock_guard (cpp:S5997)

* refactor(sonar): construct elements in place with emplace_back (cpp:S6003)

* refactor(sonar): make narrowing conversions explicit (cpp:S5276)

* refactor(sonar): mark unused parameters (cpp:S1172)

Unused names are commented out; parameters used only on some platforms
are marked [[maybe_unused]].

* refactor(sonar): declare non-mutating member functions const (cpp:S5817)

Virtual functions are left untouched so overrides keep matching.

* refactor(sonar): merge collapsible nested if statements (cpp:S1066)

Comments that preceded the inner if are kept above the merged statement.

* refactor(sonar): scope single-use variables in if init-statements (cpp:S6004)

* fix(sonar): give polymorphic base classes virtual destructors (cpp:S1235)

* refactor(sonar): use try_emplace for map insertion (cpp:S6030)

* refactor(sonar): use auto where the type is spelled out on the right (cpp:S5827)

* refactor(sonar): remove redundant parentheses (cpp:S1110)

* refactor(sonar): document intentionally empty functions (cpp:S1186)

* refactor(sonar): remove dead stores (cpp:S1854)

Side effects (e.g. LISTLINE++) are kept.

* refactor(sonar): remove unused variables, captures and private fields (cpp:S1481, cpp:S1068)

* refactor(sonar): use structured bindings for pair access (cpp:S6005)

* refactor(sonar): use range-based loops and ranges algorithms (cpp:S5566)

* refactor(sonar): split chained assignments (cpp:S1121)

* refactor(sonar): add default cases to switch statements (cpp:S3562)

* refactor(sonar): use std::size for array lengths (cpp:S7127)

* refactor(sonar): use std::ranges algorithms and std::erase(_if) (cpp:S6197)

* refactor(sonar): access static members through the class (cpp:S2209)

* refactor(sonar): add braces around nested if-else (cpp:S5261)

* refactor(sonar): avoid side effects inside typeid operands (cpp:S5279)

* refactor(sonar): drop top-level const from by-value return types (cpp:S5951)

* refactor(sonar): declare variables separately from their type definitions (cpp:S3646)

* refactor(sonar): declare loop counters in the for statement (cpp:S5955)

* refactor(sonar): rely on class template argument deduction (cpp:S6012)

* refactor(sonar): inherit base constructors instead of forwarding them (cpp:S5952)

* refactor(sonar): rename locals that shadow outer declarations (cpp:S1117)

Only local variables and definition parameters are renamed; shadowing
struct fields and enumerators in headers are left for a separate change.

* refactor(sonar): reduce enum qualification with using enum (cpp:S6177)

Applied only where no unqualified name in the block could be captured by
the introduced enumerators.

* refactor(sonar): mark converting constructors explicit (cpp:S1709)

sound_source and the gl::object conversion operators stay implicit; they
are relied upon by copy-list-initialisation and GL calls.

* refactor(sonar): initialise members in initialiser lists or declarations (cpp:S3230)

* refactor(sonar): make read-only local references and pointers const (cpp:S5350)

* refactor(sonar): take read-only pointer and reference parameters as const (cpp:S995)

TTrain command handlers keep their signature, it is fixed by the handler table.

* refactor(sonar): pass expensive-to-copy parameters by const reference (cpp:S1238)

Signatures declared in files touched by PR 206 (Driver.h, EU07.cpp) and
virtual overrides are left unchanged.

* refactor(sonar): use transparent comparators for string-keyed maps (cpp:S6045)

std::unordered_map instances and map types exposed in headers used by
other modules are left as they are.

* fix(sonar): do not use UI text as a printf format string (cpp:S5281)

Text lines containing '%' would otherwise be interpreted as format
specifiers by ImGui::TextColored.

* refactor(sonar): use std::bind_front for callbacks (cpp:S5995)

* refactor(sonar): drop const_cast on string literals passed to the Python C API (cpp:S859)

* refactor(sonar): take read-only string parameters as std::string_view (cpp:S6009)

The Windows messaging helpers keep std::string, they need c_str().

* refactor(sonar): make read-only global tables const (cpp:S5421)

Mutable global state (flags, timers, singletons) is left as is.

* refactor(sonar): replace single-case switch statements with if (cpp:S1301)

* refactor(sonar): format UUIDs and log timestamps with std::format (cpp:S6494, cpp:S5945)

* refactor(sonar): use std::array for local fixed-size arrays (cpp:S5945)

Arrays that are class members or part of headers are left unchanged.

* fix(sonar): test the bearing damage bit, not bit 0 (cpp:S872)

'DamageFlag & dtrain_bearing > 0' parsed as 'DamageFlag & (dtrain_bearing > 0)',
i.e. DamageFlag & 1, so bearing friction reacted to the wrong damage flag.

* refactor(sonar): assorted small fixes

- empty() instead of size() comparisons (cpp:S1155)
- member initialisers in declaration order (cpp:S3229)
- no redundant c_str() when a std::string is accepted (cpp:S7121)
- contains() on associative containers (cpp:S6171)
- const reference instead of a copying range-for (cpp:S6032)
- starts_with() for prefix checks (cpp:S6178)
- no std::move on temporaries (cpp:S5274)
- has_value() on std::optional (cpp:S7172)
- bool literals for bool members (cpp:S5820)
- inline only on the definition (cpp:S3548)
- explicit base access specifier (cpp:S5965)
- explicit element access instead of dereferencing an array (cpp:S7116)
- rely on the C++20 rewritten operator!= (cpp:S6186)

* refactor(sonar): more small fixes

- std::format instead of iostream manipulators in to_string/to_hex_str (cpp:S6495);
  output verified identical, negative hex values keep the unsigned form
- remove an empty compound statement (cpp:S108)
- drop an always-false unsigned < 0 branch (cpp:S1768)
- explicit lambda capture (cpp:S3608)
- std::make_unique (cpp:S5950)

* chore: strip stray carriage returns left in TTrain constructor comments

* fix: keep quantize() in its own value type

The S5276 change cast the result of the generic quantize<Type_>() to
unsigned int, which truncated float/double callers (shadow angle slider,
editor rotation snapping, AI speed control steps) and broke negative values.

* fix(sonar): use integer loop counters in segment sampling (cpp:S2193)

* refactor(sonar): clean up issues reported on PR 209

- remove locals left unused after the dead-store cleanup (cpp:S1481, cpp:S1854)
- unnamed unused parameter (cpp:S1172)
- single-use declarations moved into if init-statements (cpp:S6004)
- auto for casted initialisers (cpp:S5827)
- const references and pointers where nothing is modified (cpp:S5350)
- rename structured bindings shadowed by inner declarations (cpp:S1117)
2026-10-11 13:22:33 +02:00
maj00r
b1bdd42178 Forget a buffer's bindings when it is deleted (#182)
The binding tracker kept the name of a deleted buffer. When gl handed that
name to a new buffer, the tracker took it for already bound and skipped the
bind, so a new vao was left without its index buffer and the nvidia driver
read indices from a null pointer.
2026-09-23 01:03:01 +02:00
1aac9b4e76 Merge pull request #111 from MaSzyna-EU07/opengl-instancing
Some rendering improvements
2026-06-16 23:09:12 +02:00
c0abea1473 Merge pull request #109 from docentYT/fix-compilation-warnings
Fix compilation warnings
2026-06-16 11:14:25 +02:00
426ee0baac use textureGather for shadow PCF 2026-05-26 22:08:06 +02:00
docentYT
4878afbffc Change size arguments type to GLsizeiptr 2026-05-11 23:41:43 +02:00
3419666070 scale/endscale/localscale per node model 2026-05-10 13:12:49 +02:00
587077629f Enable instancing 2026-05-09 23:29:20 +02:00
7525b54ff1 Enable GLM_FORCE_DEFAULT_ALIGNED_GENTYPES 2026-05-06 20:41:01 +02:00
ff258e3d3c Sanitize NaN/Inf in env cubemap and tonemap to stop one-frame black flashes 2026-05-01 17:20:43 +02:00
bc0e4a9e62 Specgloss shaders improvements + experimental SSAO (debug only) 2026-04-21 00:25:29 +02:00
copilot-swe-agent[bot]
7e49aa8740 Rewrite #includes to use explicit subdirectory paths
Co-authored-by: Hirek193 <23196899+Hirek193@users.noreply.github.com>
2026-03-14 19:16:48 +00:00
docentYT
ed2f172954 Use glClientWaitSync instead of glGetSynciv 2026-02-07 19:47:32 +01:00
Wls50
b4737712de support cabview rain effect 2025-11-21 22:43:24 +01:00
Wls50
04eff45b5d remove duplicate user_data vector from world_vertex
update max. number of vertex attributes
to avoid user data getting "reused" across mesh draws
2024-07-06 20:25:53 +02:00
milek7
3cb5b5fd9a fix scene_ubs layout 2022-03-04 17:53:16 +01:00
milek7
5bafa31f9d Merge commit 'd8170c932b448ba6888e702746b5ae22632062d8' into sim 2022-01-05 22:21:05 +01:00
tmj-fstate
05d8af139a build 210509. configurable max draw range factor, moon visualization enhancement, night lighting tweak, minor bug fixes 2021-05-10 00:50:54 +02:00
milek7
78a15bf527 fix swapped arguments to glUniformBlockBinding 2021-01-22 19:07:30 +01:00
milek7
56eba08a6f CI shader validation 2021-01-21 15:51:03 +01:00
milek7
f0b364bafe basic GLES working again 2021-01-20 19:29:50 +01:00
milek7
97d6547824 log simulation timestamp, add highp int precision to gles shaders 2021-01-20 18:06:37 +01:00
milek7
1c40578d26 ubo padding fixes 2020-10-21 17:59:27 +02:00
milek7
6af6f5156d workaround for ebo binding issues, do not enable ai vehicles automatically on map 2020-10-21 00:45:19 +02:00
milek7
29f8f91ad8 Merge remote-tracking branch 'tmj/master' into sim 2020-10-18 23:35:14 +02:00
milek7
936effa9db openvr WIP 2020-09-29 22:27:13 +02:00
tmj-fstate
2ce3091e8f line breaker cab control enhancement, minor bug fixes 2020-02-02 22:30:36 +01:00
tmj-fstate
14699a96de build 200101. opengl 3.3 renderer projected headlights 2020-01-01 20:41:05 +01:00
tmj-fstate
943e05462d build 191224. opengl 3.3 renderer material glossiness support, minor bug fixes 2019-12-25 19:42:50 +01:00
tmj-fstate
0ebc7e282f minor bug fixes, minor diagnostics tweaks 2019-12-17 18:19:30 +01:00
tmj-fstate
63619d13a6 opengl 3.3 renderer cascaded shadow maps, minor gfx renderer optimizations 2019-12-05 17:19:49 +01:00
tmj-fstate
194400e1af inversed view transform uniform 2019-11-29 16:20:21 +01:00
tmj-fstate
babb43849e opengl error fixes 2019-11-14 15:49:12 +01:00
tmj-fstate
33140dd6a9 vehicle engine voltage calculation tweak, minor gfx renderer logging enhancements 2019-11-12 14:08:32 +01:00
tmj-fstate
a74402804d gfx renderers standardization, bug fixes 2019-11-07 00:28:59 +01:00
tmj-fstate
1dc81abae9 opengl 3.3 renderer switch to core profile, additional train state data exposed to uart interface, minor bug fixes 2019-11-01 18:51:27 +01:00
tmj-fstate
0fd23a53d9 milek7/sim branch opengl 3.3 renderer import 2019-10-26 15:17:09 +02:00
milek7
fc13d6c2a9 gfx.extraeffects setting, parallax shader changes 2019-09-27 20:07:52 +02:00
milek7
a3abdeac63 fixes for gles mode 2019-09-27 13:46:33 +02:00
milek7
8bb65f006d gl::query class, use of occlusion queries in glare rendering 2019-09-15 21:04:52 +02:00
milek7
5c84f8b156 remove DBG_NEW new preprocessor kludges, ensure stdafx.h is included everywhere, add debug build to Azure CI 2019-08-30 23:35:58 +02:00
milek7
540b21113e really unbind vao 2019-08-08 16:02:51 +02:00
milek7
0ed35ed254 Merge branch 'gfx-work' into sim 2019-08-08 15:56:06 +02:00
milek7
613bdb91d9 make vao mode selectable at runtime (enabled by default, disabled by multiviewports) 2019-08-08 15:48:55 +02:00
milek7
891fe7ddee pbo changes, trainingcard remarks 2019-03-31 14:02:43 +02:00
milek7
a0738d109b geometry shader changes 2019-03-17 23:20:12 +01:00
milek7
4383b0c7e0 geometry shaders, map poi icons 2019-03-17 20:30:25 +01:00
milek7
dba2308997 viewport changes 2019-03-12 22:17:13 +01:00