SpriteBatcher now sorts with a stable LSD radix sort: equal-key sprites keep submission order across frames (no flicker) and passes over digits identical in all keys are skipped, making the common single-layer case nearly free. Hot paths avoid per-sprite trig and square roots: SinCos is skipped for unrotated sprites and the culling radius comes from the region's precomputed diagonal. Stress scene (100k entities, ~61k on screen, Release): 103 -> 124 FPS. Sample now runs with VSync off to show real frame rates. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
25 lines
1.6 KiB
Markdown
25 lines
1.6 KiB
Markdown
# Roadmap
|
|
|
|
Базовый движок (ядро, рендер, ассеты с кодогенерацией, ввод, звук, демо) реализован —
|
|
текущие возможности описаны в [architecture.md](architecture.md). Здесь — только планы.
|
|
|
|
Пункт считается завершённым, когда покрыт тестами и показан в `MrGameEng.Sample`;
|
|
после завершения он убирается отсюда и фиксируется в architecture.md.
|
|
|
|
## Ближайшее
|
|
|
|
- [ ] Текст: рендер шрифтов FontStashSharp через батчер движка
|
|
(новый модуль `MrGameEng.Text`, потребует зависимости от Graphics)
|
|
- [ ] MSBuild target для автоматической компиляции `.fx` → `.mgfx` через `dotnet-mgfxc`
|
|
(лоадер `.mgfx` в AssetManager уже готов; target — когда появится первый кастомный шейдер)
|
|
|
|
## Бэклог
|
|
|
|
- Physics2D (выбор библиотеки: Aether.Physics2D / своя)
|
|
- Tilemap (поддержка Tiled)
|
|
- Particles
|
|
- UI
|
|
- Бенчмарки BenchmarkDotNet для систем (сейчас производительность контролируется стресс-сценой)
|
|
- Spatial hash для culling на очень больших мирах (если профилирование покажет необходимость)
|
|
- Параллельная запись вершин (Parallel.For по чанкам), если упрёмся в CPU на ещё больших сценах
|