Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ProwlEngine/Prowl.Quill/llms.txt

Use this file to discover all available pages before exploring further.

Prowl.Quill is designed to be renderer-agnostic. All rendering is funnelled through a single interface — ICanvasRenderer — which you implement once for your target graphics API. The library ships with six ready-made sample backends covering OpenTK, Raylib, SFML, Silk.NET, Unity, and WebAssembly. Whether you are building a desktop game, a browser app, or a Unity project, there is a backend you can drop in or adapt to your needs. Every backend follows the same three-step frame loop: call canvas.BeginFrame(...), issue drawing commands, then call canvas.Render().

The ICanvasRenderer Interface

Every backend in this section is a concrete implementation of ICanvasRenderer:
public interface ICanvasRenderer : IDisposable
{
    object CreateTexture(uint width, uint height);
    Int2 GetTextureSize(object texture);
    void SetTextureData(object texture, IntRect bounds, byte[] data);
    void RenderCalls(Canvas canvas, IReadOnlyList<DrawCall> drawCalls);
    bool SupportsBackdropBlur => false;
}
SupportsBackdropBlur defaults to false. Backends that implement the dual Kawase blur pipeline override this to true, enabling frosted-glass / backdrop-blur fills. When a backend returns false, backdrop-blur draw calls degrade gracefully to flat tinted fills so your code continues to run unmodified.

Backend Comparison

BackendNuGet PackagePlatformNotes
OpenTKOpenTKWindows, macOS, LinuxFull OpenGL 3.3 backend; supports BackdropBlur
RaylibRaylib-csWindows, macOS, LinuxWraps rlgl; supports BackdropBlur
SFMLSFML.NetWindows, macOS, LinuxUses SFML shader pipeline; supports BackdropBlur
Silk.NETSilk.NET.OpenGL, Silk.NET.WindowingWindows, macOS, LinuxOpenGL via Silk.NET bindings; supports BackdropBlur
UnityN/A (DLL import)Unity Editor & RuntimeUses Unity Mesh + CommandBuffer; no BackdropBlur
WebAssemblyN/A (WASM/Blazor)Browser (WebGL 2)Bridges to JS via WebGLInterop; no BackdropBlur
BackdropBlur is supported by OpenTK, Raylib, SFML, and Silk.NET backends, all of which implement a dual Kawase downsample/upsample pyramid. When SupportsBackdropBlur is false, Quill automatically degrades to a flat fill.

Available Backends

OpenTK

Full OpenGL 3.3 Core backend using the OpenTK windowing library. The reference implementation, including dual Kawase backdrop blur. Ideal for desktop applications and game tools.

Raylib

Integrates with Raylib’s rlgl immediate-mode layer. Minimal setup — one renderer class, one render loop. Great for prototyping and indie game development.

SFML

Uses SFML.Net’s shader and vertex-array pipeline. Familiar to C++ SFML developers porting projects to .NET. Supports backdrop blur via render textures.

Silk.NET

OpenGL 3.3 via Silk.NET bindings. Unopinionated windowing, compatible with Vulkan-next migration paths. Mirrors the OpenTK backend structure closely.

Unity

Renders inside Unity using Graphics.DrawMeshNow or a CommandBuffer. Requires netstandard2.1 DLL builds of Quill, Scribe, and Vector placed in Assets/Plugins.

WebAssembly

Runs in the browser via .NET WASM and a thin JavaScript WebGL 2 interop layer. Exports frame callbacks as [JSExport] methods and serialises draw calls across the JS boundary.

Building a Custom Backend

If none of the provided backends fits your needs, you can implement ICanvasRenderer yourself. The interface is deliberately small — four methods and one property — and the Custom Backend guide walks you through a complete skeleton implementation with annotated steps.

Build docs developers (and LLMs) love