Skip to content

Commit

Permalink
Merge branch 'master' into font-rework
Browse files Browse the repository at this point in the history
  • Loading branch information
hyazinthh committed Aug 1, 2024
2 parents c529ae6 + 5b52a1d commit 55a8777
Show file tree
Hide file tree
Showing 62 changed files with 1,962 additions and 1,147 deletions.
47 changes: 6 additions & 41 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,49 +3,14 @@
![Linux](https://github.com/aardvark-platform/aardvark.rendering/workflows/Linux/badge.svg)

[![Discord](https://badgen.net/discord/online-members/UyecnhM)](https://discord.gg/UyecnhM)
[![license](https://img.shields.io/github/license/aardvark-platform/aardvark.rendering.svg)](https://github.com/aardvark-platform/aardvark.rendering/blob/master/LICENSE)
[![license](https://img.shields.io/github/license/aardvark-platform/aardvark.base.svg)](https://github.com/aardvark-platform/aardvark.rendering/blob/master/LICENSE)

[The Aardvark Platform](https://aardvarkians.com/) |
[Platform Wiki](https://github.com/aardvarkplatform/aardvark.docs/wiki) |
[aardvark.rendering Examples](%2Fsrc%2FExamples%20(netcore)) |
[Technical Walkthrough and Examples](https://github.com/aardvark-platform/walkthrough) |
[Platform Examples](https://github.com/aardvark-platform/aardvark.docs/wiki/Examples) |
[Gallery](https://github.com/aardvarkplatform/aardvark.docs/wiki/Gallery) |
[Quickstart](https://github.com/aardvarkplatform/aardvark.docs/wiki/Quickstart-Windows) |
[Status](https://github.com/aardvarkplatform/aardvark.docs/wiki/Status)
[Gallery](https://github.com/aardvark-platform/aardvark.docs/wiki/Gallery) |
[Packages&Repositories](https://github.com/aardvark-platform/aardvark.docs/wiki/Packages-and-Repositories)

Aardvark.Rendering is part of the open-source [Aardvark platform](https://github.com/aardvark-platform/aardvark.docs/wiki) for visual computing, real-time graphics and visualization. This repository heavily builds on datastructures and tools from [aardvark.base](https://github.com/aardvark-platform/aardvark.base). The engine can be used standalone or using [aardvark.media](https://github.com/aardvark-platform/aardvark.media) which provides purely functional ELM style application abstraction.
The Aardvark.Rendering engine is a high-performance engine that tries to bridge the gap between efficiency and high-level easy-to-use abstractions. The engine is used in applied research and industry as well as basic research, and heavily embraces incremental computation. It tracks all changes in the scene description and automatically updates affected parts in the incrementally maintained optimization data structures. The engine currently has two backends: OpenGL and Vulkan, runs on netstandard, and is basically platform independent. It was born in 2006 and was mostly written in C#, but later moved towards functional programming. Now, most of the code is written in F#. Supported platforms are windows, linux, macOS. Render backends exist for OpenGL and Vulkan.

![Alt text](./data/context.svg)


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](https://www.youtube.com/watch?v=QjVRJworUOw) 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](https://www.cg.tuwien.ac.at/courses/RendEng/2015/RendEng-2015-11-16-paper2.pdf). 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](https://www.vrvis.at/publications/pdfs/PB-VRVis-2015-015.pdf). The scene graph concept and implementation is published in the paper [Attribute Grammars for Incremental Scene Graph Rendering](https://www.vrvis.at/publications/pdfs/PB-VRVis-2019-004.pdf).
- 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](https://github.com/aardvark-platform/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 [Discord](https://discord.gg/UyecnhM)

To list some, the most important [packages found on nuget](https://www.nuget.org/packages?q=aardvark.Rendering.*) are:
- Aardvark.Rendering
- Aardvark.Rendering.GL
- Aardvark.Rendering.Vulkan
- Aardvark.SceneGraph
- Aardvark.Application.WPF.GL
- Aardvark.Application.WPF
- Aardvark.Application.WinForms.GL
- Aardvark.Application.WinForms.Vulkan
- Aardvark.Application.WinForms
- Aardvark.Application
- Aardvark.GPGPU
- Aardvark.Application.OpenVR
- Aardvark.Application.Slim
- Aardvark.Application.Slim.GL
- Aardvark.Application.Slim.Vulkan
- Aardvark.Rendering.Text
- Aardvark.SceneGraph.IO
You can find demos and code in the Gallery and Packages&Repositories links above. Additionally, examples are available in the `src/Examples*` folder in this repository. For more information, please refer to the [aardvark.docs wiki](https://github.com/aardvark-platform/aardvark.docs/wiki).

Aardvark.Rendering is part of the open-source [Aardvark Platform](https://github.com/aardvark-platform) for visual computing, real-time graphics, and visualization. Aardvark.Rendering is a stand-alone rendering engine that builds on basic data structures and tools from [Aardvark.Base](https://github.com/aardvark-platform/aardvark.base). It is also integrated into [Aardvark.Media](https://github.com/aardvark-platform/aardvark.media), which provides web-based user interfaces and ELM-style application development. [Aardvark.Algodat](https://github.com/aardvark-platform/aardvark.algodat) provides advanced geometry tooling and algorithms, including out-of-core point cloud rendering and PolyMesh processing algorithms.
41 changes: 39 additions & 2 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
### 5.4.12
- [GL] Fixed potential memory leak after ContextHandle is disposed
- Optimized generic dispatch
- Fixed potential leaks with ConcurrentDictionary.GetOrAdd

### 5.4.11
- [Application.WPF.GL] SharingRenderControl implementation now uses Silk.NET.Direct3D9 instead of SharpDX
- Removed SharpDX dependency
- Re-added dynamic shader caches
- Fixed multi-threading issue in PrimitiveValueConverter
- [Sg] Use single value attributes for IndexedGeometry
- [IndexedGeometry] Fixed Union() and added ToIndexed() overload
- [IndexedGeometry] Added overload Clone() for deep copy

### 5.4.10
- [OpenVR] changed GL texture submit to 2 textures (previously side by side, issue with Quest 3)
- [GL] Improved querying of supported sample counts
- [GL] Fixed double disposal of Context
- [GLFW] Fixed OpenTK context interop
- [Vulkan] Fixed conservative raster validation error

### 5.4.10-prerelease0006
- rebuild glvm for ARM64

Expand All @@ -9,12 +30,29 @@

### 5.4.10-prerelease0003
- [FontResolve] fixed null family name failure

### 5.4.10-prerelease0002
- [PathSegment] minor fixes

### 5.4.10-prerelease0001
- [Text] improved Font resolver for Windows and MacOS
- [PathSegment] fixed several PathSegment tools and added a few new ones### 5.4.7
- [PathSegment] fixed several PathSegment tools and added a few new ones

### 5.4.9
- [LodRenderer] Handle exceptions in background threads
- [GL] Implemented GLSL shader caches for platforms that do not support program binaries (e.g. MacOS)

### 5.4.8
- [GL] Fixed locking order of GlobalResourceLock and context locks to avoid potential deadlocks
- [GL] Added workaround for layered rendering and GLSL < 430
- [GL] Made context creation and sharing more robust (see RuntimeConfig.RobustContextSharing)
- [GL] Improved disposal of ContextHandle
- [GLVM / VKVM] Updated ARM64 binaries
- [GLFW] Fixed context resource leaks
- [GLFW] Reset GetCurrentContext on disposal
- [WinForms / WPF] Removed double dispose of context

### 5.4.7
- Fixed Frustum.withAspect and Frustum.withHorizontalFieldOfViewInDegrees
- [GL] Fixed InvalidEnum error due to GL_POINT_SPRITE
- [GL] Removed validation via proxy textures (resulted in errors on AMD with multisampled textures)
Expand All @@ -33,7 +71,6 @@
- [GLFW] Use no error context only when indicated by debug config
- Added IRenderTask.GetRuntime() and IRenderTask.GetFramebufferSignature()


### 5.4.6
- [ContextHandles] GL.Enable(EnableCap.PointSprite)
- [ManagedPool] Avoid evaluating draw call set if not active
Expand Down
Binary file modified lib/Native/Aardvark.Rendering.GL/mac/ARM64/libglvm.dylib
Binary file not shown.
Binary file modified lib/Native/Aardvark.Rendering.Vulkan/mac/ARM64/libvkvm.dylib
Binary file not shown.
4 changes: 3 additions & 1 deletion paket.dependencies
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ nuget CommonMark.NET ~> 0.15.1
nuget GLSLangSharp ~> 0.4.14

nuget Unofficial.LibTessDotNet ~> 2.0.2
nuget SharpDX.Direct3D9 ~> 4.0.1
nuget AssimpNet ~> 5.0.0-beta1
nuget Offler ~> 2.0.3
nuget FSharp.Data ~> 4.2.10
Expand All @@ -41,10 +40,13 @@ nuget Unofficial.OpenTK ~> 3.0.21
nuget Unofficial.OpenTK.GLControl ~> 3.0.21
nuget Silk.NET.GLFW = 2.15.0
nuget Silk.NET.Core = 2.15.0
nuget Silk.NET.Direct3D9 = 2.15.0

nuget SharpZipLib ~> 1.4.1
nuget FuzzySharp ~> 2.0.2

nuget Aardvark.PixImage.Pfim ~> 0.9.2

group Test
framework: net6.0
source https://api.nuget.org/v3/index.json
Expand Down
Loading

0 comments on commit 55a8777

Please sign in to comment.