|
15 | 15 | - Render context uses camera state (BeginCamera/EndCamera) instead of hardcoding. |
16 | 16 | - Configurable `maxPointLights` and `ShadowConfig` for CSM cascades. |
17 | 17 | - `RenderBuffer3D` with `IDisposable` for `ArrayPool` return. |
18 | | - |
19 | 18 | - Initial port of Mibo from MonoGame to raylib-cs. |
20 | 19 | - Core: `RaylibGame` runtime loop integrating Elmish architecture with raylib lifecycle. |
21 | 20 | - Core: `Program` module for configuring init, update, renderers, and services. |
|
25 | 24 | - Rendering: `Batch3DRenderer` for 3D rendering with custom Phong shader and lighting. |
26 | 25 | - Rendering: 2D lighting system (ambient, point, directional lights with CPU accumulation). |
27 | 26 | - Rendering: 3D lighting system (ambient, directional, point lights with GPU Phong shader). |
28 | | -- Rendering: Post-processing pipeline with `PostProcessConfig` and embedded GLSL shaders. |
| 27 | +- Rendering: Post-processing pipeline with multi-pass `PostProcessPass` and embedded GLSL shaders. |
29 | 28 | - Rendering: Default shader library (`DefaultShaders.fs`) with Phong and tint shaders. |
30 | 29 | - Rendering: `ModelHelper.setMaterialShader` for patching model material shaders (required by raylib). |
31 | 30 | - Input: `InputMap` and `ActionState` types for semantic input mapping. |
|
34 | 33 | - Time: `FixedStep` configuration for deterministic physics/simulation steps. |
35 | 34 | - Animation: `Mibo.Animation` module for 2D sprite animation with `SpriteSheet.fromFrames`, `SpriteSheet.fromGrid`, `AnimatedSprite.update`, and layer-sorted rendering via `RenderCmd2D.DrawSprite`. |
36 | 35 | - Code-first level design: `Mibo.Layout` and `Mibo.Layout3D` modules for 2D and 3D grid-based levels (planned). |
37 | | - |
38 | 36 | - Documentation: Official documentation site with guides for all modules. |
39 | 37 | - Sample: 2D Platformer with procedural terrain, sprite animation, day/night cycle, and dynamic lighting. |
40 | 38 | - Sample: 3D Platformer with procedural levels, custom Phong shader, camera-relative controls, and day/night GPU lighting. |
| 39 | + |
| 40 | +### Changed |
| 41 | + |
| 42 | +- ThreeDSample: Minimap rendering now bakes blocks into a CPU-side `Image` + GPU `Texture2D` instead of emitting ~1600 individual `FillRect` commands per frame. The texture is rebuilt every N frames and drawn as a single `Sprite`, reducing per-frame draw calls from ~1600 to 5 (1 sprite + player marker + direction line + border). |
| 43 | +- ThreeDSample: Refactored `MinimapView` into proper MVU module (`Minimap`) with `MinimapModel`, `system`, and `view`. Block collection and texture baking moved from the view function into the update pipeline. |
| 44 | +- ThreeDSample: Moved text overlay from `View.fs` `DrawImmediate` escape hatch to a proper `Diagnostics` 2D module with `Command2D.text`. Both minimap and diagnostics share a single 2D renderer. |
| 45 | +- ThreeDSample: Sun/moon cycle now uses model time instead of hardcoded noon. Arc distance scales with loaded world size via `arcRadius`. |
| 46 | +- ThreeDSample: Mushroom light collection moved from `View.fs` to `mushroomLightSystem`. Lights stored as `PointLight3D` on the model, `CastsShadows = false` for performance. |
| 47 | +- ThreeDSample: Pre-computed lighting state (`LightingModel`) stored on `GameModel`, populated by `lightingSystem`. View reads from model instead of computing DayNight values. |
| 48 | + |
| 49 | +### Removed |
| 50 | + |
| 51 | +- Dead code cleanup: removed unused `PostProcessConfig` type, `Renderer2D.createWithConfig`, `Renderer3D.createWithConfig`, and empty `RenderCommand.fs`/`RenderContext.fs` stub files. |
| 52 | +- ThreeDSample: Removed dead `DayNight.State`, `DayNight.initial`, `DayNight.update` (never used). |
0 commit comments