Skip to content

TinyFFR || Realtime .NET 3D#

Rotating Cube

TinyFFR (Tiny Fixed Function Renderer) is a C# .NET9 library designed to help you render things in 3D:

  • Delivered via NuGet
  • Supports Windows, MacOS (Apple Silicon only), Linux (Wayland; Debian/Ubuntu)
  • Standalone or integrated with WPF, Avalonia, Winforms
  • Free for commercial and non-commercial use (see license)
  • Physically-based rendering (via filament)
  • Asset loading (via assimp and stb_image)
  • Window management and input handling (via SDL)
  • Fully-abstracted math & geometry API - no pre-existing 3D or linear algebra knowledge required
  • Zero-GC design

Key Features#

  • Lightweight


    TinyFFR is primarily designed for C#/.NET programmers that want to render 3D scenes or objects without needing to integrate a game engine or write against a raw graphics API (it's tiny!).

  • Integrated Asset Loading


    TinyFFR makes it easy to load assets such as images, 3D models, textures and HDR cubemaps by integrating popular open-source asset loading libraries such as assimp and stb_image.

  • Window & Input Handling


    TinyFFR helps you discover connected displays, create & manage windows, and capture/process user input with a rich API that supports keyboard, mouse, and gamepad on Windows, Wayland, X11 and MacOS.

  • Easy Scene Building


    TinyFFR provides ways to quickly organise and build 3D scenes (including lights, objects, and backdrops) all with a few lines of code. The library does not require writing shader code or even understanding modern material models.

  • Minimal Math Required


    TinyFFR comes integrated with an abstracted math API that uses plain-English terminology. No prior knowledge of 3D rendering or linear algebra is required. You don't need to know what a quaternion is.

  • Zero-GC Design


    TinyFFR is designed from the ground-up as a non-garbage-generating library; the API works primarily with struct-based handles around unmanaged or pooled resources, resulting in a zero-jitter, smooth rendering experience.

When to use TinyFFR#

TinyFFR is just a renderer.

Consider TinyFFR if you don't need "game engine" features such as physics, audio, or environment editing (or you want to add your own implementations for those on top).

TinyFFR may not be for you if you need everything a modern game engine provides and you're not willing or able to add those features another way.


TinyFFR is fixed-function.

Consider TinyFFR if you don't want to write shaders or design materials and just want to quickly render scenes using a fixed selection of material types for your objects.

TinyFFR may not be for you if you want more flexibility in defining materials and their shading.


TinyFFR is currently in very early prerelease.

Consider TinyFFR if you're okay with using a library that may be missing key features or have performance issues and bugs at this early stage.

TinyFFR may not be for you if you need a mature option at this point in time, although the source is available!

Comments