Novolis Docs
novolis-rendering / design.md

Design

dotnetgraphicsrenderingnovolis

Role

novolis-rendering produces CPU framebuffers (Rgba32 pixels). It is not a game engine and does not replace novolis-raylib (GPU host) or novolis-simulation (worlds, clocks, cameras).

Dependency rules

novolis-math (Geometry)  →  novolis-rendering
novolis-rendering        ⊥  novolis-raylib
novolis-rendering        ⊥  novolis-simulation

Apps may reference any combination and own glue:

Simulation.View (ViewPose) → RenderCamera → IRayTracer → ImageBuffer → Raylib/Silk presenter

Packages

PackageDepends onOwns
Novolis.Rendering.AbstractionsNovolis.Math.GeometryBuffers, camera, scene DTOs, IRayTracer
Novolis.Rendering.RaytraceAbstractions, MathCpuRayTracer, intersection helpers
Novolis.RenderingFacets aboveMeta / convenience reference
Novolis.Rendering.TwoDMath.Geometry, Math.Topology2D scene, sprites, collision, HUD, menus
Novolis.Rendering.Backends.TwoD.SilkTwoD, Silk.NETOpenGL orthographic renderer + game loop

See [design-two-d.md](./design-two-d.html) for the Mario-style 2D stack.

Roadmap

Full phased plan (materials, compile pipeline, backends, Raylib/Silk presenters):

[roadmap-raytracing.md](./roadmap-raytracing.html)

Presentation (out of scope in core packages)

Optional host packages — no scene/material types:

  • Novolis.Rendering.Presentation.Raylib — IFramePresenter → Raylib texture blit
  • Novolis.Silk.Presentation — same contract via Silk.NET

Golden tests for the tracer use PNG hashes over CPU pixels without native Raylib.

Acceleration

CpuRayTracer v1 uses brute-force triangle tests. BVH traversal may move to Math (shared with Physics collision) without changing IRayTracer.

Related