Skip to content

Overall Archetecture Design

Xiang Hong edited this page Aug 24, 2024 · 3 revisions

In general, DualDrill framework is trying to provide a easy to use libraries for code-first scientific computing/visualization interactive/batched (distribute) applications using GPU for computation and simulation. To achieve this, DualDrill framework is going to provide following functionalities:

  • Provide basic application infrastructure leveraging .NET platform, including system api's, async/await systems by .NET and dependency injections systems, etc. Currently focusing on supporting Windows and Linux.
  • Managed Graphics and Cuda API bindings/wrappers for easier and safer GPU application development in C#. Currently focusing on providing WebGPU(native) and Vulkan Apis.
  • Providing distributed connections apis, basically using WebRTC for realtime connections, with Websocket and HTTP for signal service and REST APIs over HTTP for batchmode interactions.
  • GPU programming using C#, by using custom attributes to make a EDSL in C#, and providing compiler(transplier) of MSIL to target shader languages (including WGSL, GLSL and CUDA)
  • Providing high-level abstraction of rendering and simulation applications, e.g. abstraction over native window surface and headless surface, abstraction over realtime simulation/rendering, abstraction over frame simulation/rendering, abstraction over user inputs etc.
  • Mathmatic libraries for graphics/geometric calculations, including classic vector/matrics based libraries and experimental geometric algebra based libraries
  • Runtime libraries for clents, espcially framework runtime libraries in js for browser clients and python client for IPython/Jupyter/Notebook environments
  • Editor experience providing via VSCode extensions
  • Opinioned limited UI libraries via html/js
Clone this wiki locally