Commit Graph
658 Commits
Author SHA1 Message Date
metalgearslothandGitHub 03e28a8121 Fix StyleBoxTexture using negative bounds UIBox2 (#6986)
* Fix StyleBoxTexture using negative bounds UIBox2

Admin menu calls first draw with 0,0 bounds so the margin makes it negative; we just clamp it.

* a test fix
2026-08-16 07:18:59 +00:00
metalgearslothandGitHub 3cf083a5b8 Add API for getting current IClydeMonitor (#6615) 2026-08-14 23:11:22 +10:00
DamianXandGitHub 7a5da33050 Fix Clyde deadlock on nvidia/wayland (#6966) 2026-08-13 19:47:20 +10:00
metalgearslothandGitHub 1d0b581982 Revert "Fix sRGB framebuffer in Linux GLES compatibility mode" (#6954)
Revert "Fix sRGB framebuffer in Linux GLES compatibility mode (#6846)"

This reverts commit 9cefa1167c.
2026-08-09 10:10:17 +00:00
metalgearslothandGitHub 2750729d34 Release inputs on window focus loss (#6851) 2026-08-08 16:32:05 +10:00
metalgearslothandGitHub 3dd5b14c4b Font outline caching + draw batching for outlines (#6892) 2026-08-08 15:45:04 +10:00
metalgearslothandGitHub d97a89b9f2 Add polygon occluders (#6831) 2026-08-07 17:18:52 +10:00
DoubleHypercubeandGitHub 1f65b9a593 Add support for Sun Microsystems Help through Cut keys (#6922) 2026-08-07 00:23:58 +10:00
metalgearslothandGitHub fe5260953a Use fastpath for RSI state drawing (#6895) 2026-08-05 12:51:22 +10:00
metalgearslothandGitHub 04217c0e55 Cache texture UVs (#6894)
* Cache texture UVs

O(0) beats doing basic maths operations. Followup work to make some hot drawing paths (fonts + RSIs) use the AtlasTexture methods instead.

* 2026-08-02: Support headless atlas textures
2026-08-02 04:17:07 +00:00
PokandGitHub a4d22e4810 Fix Text Outline (#6889)
fix-text-outline
2026-08-02 01:44:10 +00:00
0a4c0d9cdd Cache PostShader render targets in Clyde (#6657)
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2026-08-01 20:16:41 +10:00
metalgearslothandGitHub 7f21c749b0 Add multiple post-shader support (#6817) 2026-08-01 16:56:24 +10:00
metalgearslothandGitHub bc55ae00d6 Box2 + Box2Rotated performance and fixes (#6668) 2026-08-01 15:30:41 +10:00
PokandGitHub 8a9123ab36 Text Outline (#6832) 2026-08-01 15:20:59 +10:00
09699f6748 Expose relative mouse mode on windows (#6865)
Co-authored-by: lunarica <lassovira@duck.com>
2026-08-01 15:12:01 +10:00
v0idRiftandGitHub 9cefa1167c Fix sRGB framebuffer in Linux GLES compatibility mode (#6846) 2026-07-29 23:15:33 +10:00
5e79016217 Illumination measuring system to determine how "lit up" entities are (#5574)
Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2026-07-23 23:09:22 +10:00
metalgearslothandGitHub 537c4cb02f Fix sprite jittering (#6805) 2026-07-18 15:40:00 +10:00
rebaserHEADandGitHub 7089bd7a69 Tracy: Add entity rendering profiling zones (#6714) 2026-07-18 13:08:04 +10:00
WhatstoneandGitHub 7c7d1ae451 Cleanup: Warning resolution/suppression (#6721) 2026-07-16 19:43:54 +10:00
metalgearslothandGitHub 17b66c574e Fix SetUniformDirect allocation spam (#6769) 2026-07-16 17:28:34 +10:00
PokandGitHub b0b1fa354a FovRenderTarget (#6781) 2026-07-11 07:13:05 +10:00
f2625bf5c5 Removes IMapManager (#6584)
* Move MapManager queries to SharedMapSystem
Moves all variants of FindGridsIntersecting/TryFindGridAt to SharedMapSystem
Hollows out the MapManager methods and converts them into relays to SharedMapSystem

* Move CreateGrid to SharedMapSystem
Moves the functionality for CreateGrid and its variants to SharedMapSystem
Hollows out the MapManager methods and converts them into relays for the SharedMapSystem methods
Obsoletes them too
Also moves over the GetAllMapGrids and GetAllGrids methods

* Move RaiseOnTileChanged to SharedMapSystem
Also moves the SuppressOnTileChanged flag member to SharedMapSystem
Hollows out and obsoletes the MapManager versions

* Move default value constants to SharedMapSystem

* Converts map pausing events into LocalizedEntityCommands

* Move MapManager related delegates/structs to SharedMapSystem
Moves the GridCreationOptions struct to the same namespace as SharedMapSystem and converts it into a record struct
Move the GridCallback delegates to the same namespace as SharedMapSystem

* Move CullDeletionHistory to SharedMapSystem
Well, that was less painful than I thought it would be

* Actually obsolete the NetworkedMapManager method

* Rename file

* Doc comments for new SharedMapSystem methods

* Doc comment

* Doc comments

* Fix access

* Purge all references to IMapManagerInternal

* Cull easy IMapManager references

* The rest

* Purge IMapManager

* Private internal FindGridsIntersecting method

* please die

* 41

* notes

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2026-07-01 19:32:17 -07:00
metalgearslothandGitHub afd792c0b1 Merge branch 'master' into master-merge 2026-06-26 21:48:28 +10:00
metalgearslothandGitHub 03ef503285 Add batch drawing methods (#6655)
* Add batched drawing API

Internally Clyde batches drawing, however when drawing hundreds / thousands of the same quad the batch checks add up. This just omits those checks and directly draws instead. Same with skipping color modulation.

Long-term could probably figure out a way to SIMD the transforms better.

* RN
2026-06-26 21:45:32 +10:00
metalgearsloth 3000a76322 Merge remote-tracking branch 'upstream/master' into 2026-06-07-sprite-sort 2026-06-19 19:33:07 +10:00
metalgearsloth 8e98d5479f Also this one 2026-06-11 19:49:58 +10:00
metalgearsloth 9d677d2277 Reduce per-frame allocs for openGL logs
Skip allocating entirely if we log-level not enabled. This is no.2 on debug allocations on client.
2026-06-11 18:55:43 +10:00
metalgearsloth 72ae628a5c Optimise sprite sorts
Quick and dirty but shaved off 10% on debug, would be less on release.
2026-06-07 00:00:18 +10:00
SamukaandGitHub 94c20cae28 Add scroll lock key (#6617)
* add scroll lock

* localization
2026-06-04 16:50:18 +02:00
83c2a1be11 [Dependency] source generator part 2 (#6550)
* [Dependency] source generator

No more reflection, no more codegen at runtime

Also various changes to Roslyn helpers to make this easier to write.

Requires all types with dependencies to be partial and not have readonly dependency fields. An analyzer enforces this at warning level, the previous injection strategies have remained in the code *for now* as a fallback.

No fallback is available for [field: Dependency] properties, due to a Roslyn bug.

Code Fixes exist. We love Roslyn

* Apply dependencies generator changes to all code

* Release notes

* Preprocessor got hands

* Handle nullable dependencies

These are bad but gotta deal with it.

* Apply suggestions from code review

Co-authored-by: Moony <moony@hellomouse.net>

* Fine, let's not use collection expressions

---------

Co-authored-by: Moony <moony@hellomouse.net>
2026-05-08 12:38:33 +02:00
B_KirillandGitHub bbf199757c Fix VRAM leak in MapChunk edge rendering (#6441)
* Fix VRAM leak in MapChunk edge rendering

* Remove CheckGlError because it is called in each of the deletion methods

* Revert "Remove CheckGlError because it is called in each of the deletion methods"

This reverts commit a48ffd71aa.
2026-05-08 11:57:50 +02:00
f95a16cf2e Always clean up render handle state after overlay draws (#6508)
* Always clean up render handle state after overlay draws

* i just forgot to commit that part i guess

---------

Co-authored-by: mirrorcult <mirrorcult@pm.me>
2026-05-05 12:44:42 +02:00
AmyandGitHub 63f1d3b4a5 Report error string on create cursor failure (#6455)
report error string on create cursor failure
2026-03-14 22:28:29 -04:00
eoineoineoinandGitHub 5393cfab85 Avoid crashing client when reloading a shader with syntax errors (#6425) 2026-02-27 08:20:19 -05:00
PJB3005 e7f75ab35d Fix size of OSWindows on macOS (& probably Wayland)
The way SDL handles window coordinates passes through the native platform API's behavior instead of trying to make a consistent API, so the way sizes are handled on macOS is different.
2026-01-31 08:13:19 +01:00
PJB3005 02b64b7386 Show task bar progress bar for loading progress
Using the new API in SDL 3.4.0
2026-01-18 23:30:15 +01:00
PJB3005 36e5f10511 Update SDL3 to 3.4.0 2026-01-18 23:30:15 +01:00
Richard Van TasselandGitHub 93d14d55c7 Let viewport clear when eye is missing (#6379)
* Adds option to viewport to allow render target clearing if eye is missing

* on->when and add to IClydeViewport

* add to ClydeHeadless
2026-01-18 21:17:31 +01:00
PJB3005 d43c3f2caf Merge remote-tracking branch 'origin/master' into 25-11-01-cef-update 2025-12-27 01:50:23 +01:00
PJB3005 ad056e0b45 Add [NotContentImplementable] to client interfaces 2025-12-23 18:34:27 +01:00
B_KirillandGitHub 68609a94d8 Fix inverted clipboard error check in SDL3 (#6348) 2025-12-22 17:35:09 +01:00
PJB3005 095c5f58d9 Obliterate GLFW with an orbital strike 2025-12-15 22:45:39 +01:00
SzuntiandGitHub 899eef397c Make Caps Lock bindable (#6308) 2025-11-24 11:10:24 +01:00
PJB3005 b8ff394f73 Fix spamming startup error messages for projects without splash logo 2025-11-16 15:01:46 +01:00
3f19d25018 Box Simd (#6193)
* Box Simd

* Add 256 bit version of GetAABB

* Add AABB bechmarks

* No real diff between 128 & 256, so removing 256

| Method     | Mean      | Error     | StdDev    | Ratio |
|----------- |----------:|----------:|----------:|------:|
| GetAABB    | 5.8107 ns | 0.0154 ns | 0.0137 ns |  1.00 |
| GetAABB128 | 0.4927 ns | 0.0003 ns | 0.0002 ns |  0.08 |
| GetAABB256 | 0.4332 ns | 0.0006 ns | 0.0006 ns |  0.07 |

* Add Box2Rotated.Transform Benchmark

* Results

20% faster and much smaller code. Also I don't think it inlined RotateVec

* Add Matrix3x2Helper.TransformBox() benchmark

new:

| Method    | Mean     | Error     | StdDev    | Code Size |
|---------- |---------:|----------:|----------:|----------:|
| Transform | 2.463 ns | 0.0766 ns | 0.0679 ns |     216 B |

old:
| Method    | Mean     | Error     | StdDev    | Median   | Code Size |
|---------- |---------:|----------:|----------:|---------:|----------:|
| Transform | 9.469 ns | 0.2140 ns | 0.5408 ns | 9.206 ns |     621 B |

* Fix polygon constructor

* SlimPolygonBenchmark

* use new SimdHelper for other methods

* Fix bugs

* Use new methods

* Simd SlimPolygon.ComputeAABB

* Move simd transform to physics

* Cleanup

* Remove uneccesary Unsafe.SkipInit

* These tests all work on master

* Add Transform.MulSimd test

* Add SlimPolygon constructor tests

* Add ComputeAABB test

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2025-11-10 18:30:08 +11:00
PJB3005 602d7833a1 Initial macOS WebView support
This is a gigantic kerfuffle because Chromium expects a very specific directory & app bundle layout. Have to change a bunch of resource loading code to account for content development being launched from an app bundle, and also had to make automatic MSBuild tooling & a python script to generate such an app bundle
2025-11-09 00:06:16 +01:00
e49515956a Add a basic loading screen! (#6003)
* Added basic loading screen

* Make it look better!

* I forgor xD

* Fix test fails

* Add comment

* Removed unused import

* Only write to file if the number of sections changed

* Servers can now have their own settings

* Minor optionzation and rare colors

* Remove some of the cvars

* debug only loading messages

* Added a few more steps

* Only one section at a time

* nullable section name

* Lock out functions if finished

* Get rid of saving the ccvar

* Cleanup

* Forgot!

* A few tweaks

* Disable vsync

* remove colors

* remove outdated vsync functions

* Silly me xD

* What I get for trying to be clever... ;(

* Better seconds display

* Simplify drawing logic + it looks better

* Type does not need to be partial

* Make interface to expose to content

* Use correct define to gate showing debug info

Should be TOOLS instead of DEBUG

* Use appropriate exception type in BeginLoadingSection

* Fix exception when closing window during loading screen

Would try to stop the main loop before it exists.

* Rename CVars, put debug info behind CVar instead of conditional compilation.

* Add to RELEASE-NOTES.md

* Add UI scaling support

* Make ILoadingScreenManager fully internal

Didn't realize content can't touch it as it'd break the total amount of sections

* Don't re-enable vsync manually, GameController does it at the end of init

* Add command to show top load time usage.

* Improve verbosity of debug time tracking

More steps and some steps named better

---------

Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
2025-10-30 00:38:59 +01:00
Pieter-Jan BriersandGitHub f3a3f564e1 System font API (#5393)
* System font API

This is a new API that allows operating system fonts to be loaded by the engine and used by content.

Fonts are provided in a flat list exposing all the relevant metadata. They are loaded from disk with a Load call.

Initial implementation is only for Windows DirectWrite.

* Load system fonts as memory mapped files if possible.

This allows sharing the font file memory with other processes which is always good.

* Use ArrayPool to reduce char array allocations

* Disable verbose logging

* Implement system font support on Linux via Fontconfig

* Implement macOS support

* Add "FREEDESKTOP" define constant

This is basically LINUX || FREEBSD. Though FreeBSD currently gets detected as LINUX too. Oh well.

* Compile out Fontconfig and CoreText system font backends when not on those platforms

* Don't add Fontconfig package dep on Mac/Windows

* Allow disabling system font support via CVar

Cuz why not.
2025-10-28 22:07:55 +01:00