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.Abstractions``Novolis.Math.Geometry`Buffers, camera, scene DTOs, `IRayTracer`
`Novolis.Rendering.Raytrace`Abstractions, Math`CpuRayTracer`, intersection helpers
`Novolis.Rendering`Facets aboveMeta / convenience reference
`Novolis.Rendering.TwoD`Math.Geometry, Math.Topology2D scene, sprites, collision, HUD, menus
`Novolis.Rendering.Backends.TwoD.Silk`TwoD, 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.RaylibIFramePresenter → 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