Aardvark.Media is part of the open-source Aardvark platform for visual computing, real-time graphics and visualization. aardvark.media works on top of aardvark.base and uses aardvark.rendering as (3D)-rendering engine:
3D graphics, user interfaces and complex interactions on top are challenging and time consuming in classical programming models. High-level abstraction, immutable data and functional programming concepts on the other hand boost productivity. aardvark.media brings together high-performance applications and purely functional application programming. The ELM architecture has become popular in web-development and for user interfaces (e.g. ELM, Fabulous, Elmish,...) and makes declarative, reliable UI and app development easier. aardvark.media follows the same concept but has some distinct features:
- Just like buttons in elm or elmish, aardvark.media supports interactions with objects in 3D renderings. Rendering is done by the highly efficient aardvark.rendering engine.
- Other systems execute the view function after each modification to the model. In aardvark.media the changes are computed on the model (which is typically much smaller than the generated UI) itself. aardvark.base's incremental system takes care of reexecuting specific parts of the view function. This takes the burden of diffing from the HTML engine, but more importantly allows to incrementally update optimized scene representations for 3D rendering. The rational behind this is that the model is typically much smaller than the generated UI, or more severely much easier to diff than 3D geometry.
- aardvark.media currently runs on netcore and serves a website using suave. The rendering part is done in fullblown OpenGL/Vulkan in the aardvark rendering engine. Applications typically use the electron based aardium for client side application deployment or full server side application deployment. We work on client-side deployment using fable as well, but aardvark.media's server side approach has also advantages and particular usecases.