v2.0.0
Added
- Cameras (parity): the MonoGame and raylib
Camera2D/Camera3Dmodules now offer the same set of operations. MonoGameCamera2DgainsviewportBounds,screenToWorld/worldToScreen,smoothFollow/clampTarget, and the fullrender/withViewport/withClear/splitScreen*config-builder surface it lacked; raylibCamera3DgainslookAt/orthographic/orbit/screenPointToRay(wrappingRaylib.GetScreenToWorldRay). Closes the camera API-surface gap between the backends. - Docs: new "MonoGame type quirks" reference collects the raylib-vs-MonoGame type differences that first-time MonoGame users hit —
System.NumericsvsMicrosoft.Xna.Frameworkmath (Core layout/spatial/light APIs takeSystem.Numericson both backends, so a bareVector2resolves to the wrong type on MonoGame), float vs intRectangle,Colorconstructors, theIAssetsnamespace and asset-path conventions, and the live window size viactx.WindowWidth/ctx.WindowHeight. The affected guide pages now cross-link to it. - Templates: the starters now steer AI assistants (and readers) to the API reference for exact signatures and to the guides only for general usage; the MonoGame starters additionally require reading the type-quirks reference before writing code.
Changed
- MonoGame — Breaking: the camera modules are consolidated into a single
Camera2D/Camera3Dsurface that mirrors the raylib layout. The standaloneCamera2DConfigmodule is removed — its builders (render/withViewport/splitScreen*) now live in theCamera2Dmodule, andwithClearColoris renamedwithClear.Camera2D.smoothFollow/clampTargetnow return a new camera instead of mutating in place (the camera's fields are immutable). - Raylib — Breaking: the 2D camera readers (
viewportBounds/screenToWorld/worldToScreen) andCamera3D.screenPointToRaynow take the camera by read-only reference (inref), so call sites must pass&camera(thesmoothFollow/clampTargetmutators already usedbyref). This skips copying the nativeCamera2D/Camera3Dstructs on per-frame reads. All raylib camera helpers are nowinline. - Culling — Breaking:
Culling.isGenericVisibleis renamedisVisibleBox(it tests a bounding box against the frustum — the new name says what it does).
Removed
- 3D — Breaking: removed
ShadowAtlasConfig.ShowDebugOverlayand the raylibShadowAtlas.RenderDebugOverlayoverlay — a dev-time diagnostic that leaked into the preview builds. No config flag overlays the shadow atlas on screen anymore. - Cameras — Breaking: removed
Camera3DConfig.PostProcessPassesand theCamera3D.withPostProcess/withoutPostProcessbuilders — the pipelines never read them (v2 post-processing is command-driven viaDraw3D.postProcess), so they were no-ops. Also removedCamera2D.overlay/Camera3D.overlay— they only set a viewport and a black clear (no compositing); the equivalent isrender |> withViewport |> withClear, and on-top layering is draw order.
Fixed
- Docs: the Culling guide now covers both backends (raylib's
Frustumvs MonoGame's nativeBoundingFrustum, and the raylibCamera2D.viewportBounds &cameraform), instead of describing only the raylib types.
Full Changelog: v1.3.0...v2.0.0