Aardvark.Rendering is part of the open-source Aardvark platform for visual computing, real-time graphics and visualization. This repository heavily builds on datastructures and tools from aardvark.base. The engine can be used standalone or using aardvark.media which provides purely functional ELM style application abstraction.
The aardvark rendering engine was the vital spark which finally led to the complete ecosystem of libraries, we now call aardvark-platform. The engine as such was born in 2006. At that time, the engine was written mostly in C# (which was rather unusual in a world of highly optimized C++ engines). Later we more and more moved towards functional programming. In various rewrites we modernized the engine over and over again. Now most code is written in F#. The unique features of the engine are:
- The engine tries to bridge the gap between efficiency and high-level easy to use abstractions. We used a lot of energy to get out good performance for a lot cases. We did a lot but we look forward to getting better and better in this regard. This video demonstrates the rapid prototyping features of aardvark.
- It is used in applied research and industry but it is also used as vehicle for basic research.
- The engine heavily embraces incremental computation. Rendering engines typically use some form of scene description which is then interpreted by the rendering kernel. The interpretation of large scenes quickly becomes a bottleneck. Aardvark by contrast tracks all changes in the scene description and automatically updates affected parts in the incrementally maintained optimization datstructures. The approach was published in a paper An Incremental Rendering VM. The scene graph concept and implementation is published in the paper Attribute Grammars for Incremental Scene Graph Rendering.
- The engine currently has two backends: OpenGL and Vulkan, runs on netstandard and is basically platform independent
- Not like classic rendering engines, the aardvark rendering engine does not provide any tooling such as level editors etc. but lives from the aardvark platform as whole which provides tools to create customized tooling for various needs.
- Aardvark does not understand light, shadows or particular material workflows as in most game engines. Instead, the codebase provides a rich set of tools to customize those features to fit the needs.
- For application and UI programming we recommend to climb the abstraction ladder up towards aardvark.media which provides easy-to-use ELM style API to both UI and high-performance computer graphics.
We are constantly looking for cool contributions ideas etc! Meet us on gitter
To list some, the most important packages found on nuget are: