Silk.NET icon indicating copy to clipboard operation
Silk.NET copied to clipboard

Tracking issue for Silk.NET 3.0

Open Perksey opened this issue 5 years ago • 33 comments

Silk.NET 3.0 Roadmap

THIS IS A LIVING DOCUMENT

Overview

Welcome to the Silk.NET 3.0 roadmap! This tracks the current progress of 3.0 - the major rewrite project for Silk.NET 3.0. You can read more about why we're doing this in the 3.0 proposal, but basically the .NET world has changed a lot since Silk.NET was originally written (Silk.NET was written against .NET Core 2.1, long before "One .NET" existed), and we want to ensure we ship a library that encourages write-once-run-everywhere and embraces user feedback and modern bindings techniques developed elsewhere within the .NET Foundation.

Learn more about Silk.NET 3.0:

Proposed Features

SDP

  • [x] [Complete] Design & Development - @Perksey
  • [x] [Complete] Proposed - @Perksey
  • [x] [Complete] Reviewed - @dotnet/silk-dotnet
  • [x] [Complete] Approved - @dotnet/silk-dotnet
  • [ ] [In Progress] Implemented - @dotnet/silk-dotnet

Windowing

  • [x] [Complete] Design & Development - @Perksey @HurricanKai
  • [x] [Complete] Proposed - @Perksey @HurricanKai
  • [x] [Complete] Reviewed - @dotnet/silk-dotnet
  • [x] [Complete] Approved - @dotnet/silk-dotnet
  • [x] [Complete] Implemented (API) - @Perksey
  • [x] [Complete] Pri 0: SDL support - @Perksey
  • [ ] [Needs Testing] Pri 1: iOS support (TBD) - unassigned
  • [ ] [Needs Testing] Pri 1: Android support (TBD) - unassigned

Input

  • [x] [Complete] Design & Development - @Perksey @ThomasMiz
  • [x] [Complete] Proposed - @Perksey @domportera
  • [x] [Complete] Reviewed - @dotnet/silk-dotnet
  • [x] [Complete] Approved - @dotnet/silk-dotnet
  • [ ] [In Progress] Implemented (API) - @domportera
  • [ ] [In Progress] Pri 0: SDL support - @domportera
  • [ ] [Not Started] Pri 1: Android support (TBD) - unassigned
  • [ ] [Not Started] Pri 2: iOS support (TBD) - unassigned

SilkTouch & Bindings

  • [x] [Complete] Design & Development - @Perksey
  • [x] [Complete] GLFW PoC - @Perksey
  • [x] [Complete] Proposed (latest) - @Perksey @Curin
  • [x] [Complete] Reviewed (latest) - @dotnet/silk-dotnet
  • [x] [Complete] Approved (latest) - @dotnet/silk-dotnet
  • [ ] [In Progress] Implemented (see #887) - @Perksey @Curin
  • [x] [Complete] Pri 0: SDL bindings generated - @Perksey
  • [x] [Complete] Pri 0: OpenGL bindings generated - @Perksey
  • [x] [Complete] Pri 0: OpenAL bindings generated - @Perksey
  • [x] [Complete] Pri 1: Vulkan bindings generated - @Exanite
  • [ ] [In Progress] Pri 1: Windows bindings generated (existing headers covered) - @curin
  • [ ] [Not Started] Pri 1: OpenXR bindings (should be trivial with Vulkan support done) - unassigned
  • [ ] [Not Started] Pri 2: OpenCL bindings generated - unassigned
  • [ ] [Not Started] Pri 3: Assimp bindings generated - unassigned
  • [ ] [Not Started] Pri 3: WebGPU bindings generated - unassigned
  • [ ] [Not Started] Pri 4: SPIR-V Reflect bindings generated - unassigned
  • [ ] [Not Started] Pri 4: SPIR-V Cross bindings generated - unassigned
  • [ ] [Not Started] Pri 4: Shaderc bindings generated - unassigned

Generic Maths

  • [x] [Complete] Design & Development - @Perksey @curin @uwx
  • [x] [Complete] Proposed - @Perksey @curin @uwx
  • [x] [Complete] Reviewed - @dotnet/silk-dotnet
  • [x] [Complete] Approved - @dotnet/silk-dotnet
  • [ ] [In Progress] Implemented (API) - @Tweety-Lab @otac0n

Milestones

NOTE: The below milestones will be complemented by regular experimental feed updates. The Silk.NET team may add additional previews at their discretion.. Rough timelines for each of the previews may be added to this issue at a later date if the Silk.NET team has a high degree of confidence that they can be met.

THE FEATURES IN EACH PREVIEW SPECIFIED HEREIN DO NOT NECESSARILY HAVE TO BE COMPLETED IN THAT ORDER, IF YOU WOULD LIKE TO WORK ON SOMETHING, PLEASE DO SO! The dependencies for each work item are specified in the Proposed Features section.

The priorities above basically map 1:1 into previews as defined in the SDP's original roadmap as below:

  • [ ] Preview 1 released with all Pri 0 and some Pri 1 items implemented
    • [x] SilkTouch can generate raw bindings
    • [x] SilkTouch can do basic rewriting to use wrapper types
    • [ ] Windowing and Input are implemented for desktop
    • [x] SDL
    • [x] OpenGL
    • [x] OpenAL
  • [ ] Preview 2 released with all Pri 1 and some Pri 2 items implemented
    • [ ] Bugfixes from 3.0 Preview 1
    • [ ] Generic Maths
    • [x] Vulkan
      • [ ] The improvements identified in #2457 are implemented
    • [ ] OpenXR
    • [ ] SilkTouch has more overloads implemented. All generic overloads should be implemented by now, but some API-specific overloads may not be implemented.
    • [ ] Windowing and Input are implemented for Android.
    • [ ] Windows SDK bindings (2.X coverage met)
  • [ ] Preview 3 released with all Pri 2 and some Pri 3 items implemented
    • [ ] Bugfixes from 3.0 Preview 2
    • [ ] SilkTouch generator is complete
    • [ ] Windowing and Input are implemented for iOS
    • [ ] OpenCL
  • [ ] Preview 4 released with all Pri 3 and 4 items implemented
    • [ ] Bugfixes from 3.0 Preview 3
    • [ ] Assimp
    • [ ] WebGPU
    • [ ] SPIR-V Reflect
    • [ ] SPIR-V Cross
    • [ ] Shaderc
  • [ ] Preview 5 released with bugfixes
    • [ ] Bugfixes from 3.0 Preview 4
    • [ ] More SIMD?
  • [ ] RTM
    • [ ] Bugfixes from 3.0 Preview 5

Untracked Features

NOTE: None of these features are guaranteed for 3.0 and may be pushed to 3.X or cancelled altogether. Some of them have been demoted from the original priorities specified in the SDP.

  • [ ] [Not Started] WASM support - unassigned
  • [ ] [Not Started] WebGL bindings - unassigned
  • [ ] [Not Started] Metal bindings (Objective-C support in ClangSharp) - unassigned
  • [ ] [Not Started] WPF integration - unassigned
  • [ ] [Not Started] WinForms integration - unassigned
  • [ ] [Not Started] Avalonia integration - unassigned
  • [ ] [Not Started] MAUI integration - unassigned
  • [ ] [Not Started] SIMD vectorization - unassigned

Perksey avatar Jun 21 '20 21:06 Perksey

For clarification. Would WebGL bindings mean that a Silk.NET project could run in the browser over Web Assembly (WASM)?

michael-hawker avatar Feb 26 '21 21:02 michael-hawker

Yeah exactly, our WebGL and WebGPU bindings are intended to work on Blazor WASM once created to maximise portability of .NET 6 apps.

Perksey avatar Feb 26 '21 21:02 Perksey

Mentioned in #345; Just wanted to add a +1 for MAUI support.

BergerBytes avatar Aug 27 '21 21:08 BergerBytes

MAUI support would also mean WinUI 3/Uno platform support I believe too, so that'd be cool.

michael-hawker avatar Aug 27 '21 23:08 michael-hawker

We have included MAUI support in our work in progress software development plan for 3.0 and will likely be our top priority after WinForms and WPF support, which analytics and discord activity indicate are in massive demand.

This is definitely something we are keen on getting in.

Perksey avatar Aug 27 '21 23:08 Perksey

@Perksey FYI: for an ongoing example of a .NET 3D engine supporting WinUI 3 project reunion example

GeorgeS2019 avatar Sep 13 '21 12:09 GeorgeS2019

Any idea when we'll get Metal bindings?

IsaacMarovitz avatar Jan 16 '23 04:01 IsaacMarovitz

Any idea when we'll get Metal bindings?

No ETA for Metal, and its not something the team is working on at all right now, but we welcome any contributions to move us forward

Beyley avatar Jan 16 '23 04:01 Beyley

@dotnet/silk-dotnet I've tried to extrapolate all the info from the proposals (as currently approved) into this issue (see the updated description). It makes no assumption on the outcomes of the current SilkTouch or SilkTouchX/SilkX work, mostly just wanted this for tracking.

Please let me know if you have any issues with the above.

Perksey avatar Jul 27 '23 18:07 Perksey

Likewise, if there's any other untracked promises for 3.0 we've made or the community wants to be made, please let me know!

Perksey avatar Jul 27 '23 18:07 Perksey

I think GLFW bindings are arguably < 0, I think we agreed those are a good PoC?

HurricanKai avatar Jul 27 '23 19:07 HurricanKai

Yes you are right... but do you really want a priority -1? That just feels silly! Unless we're using unsigned integers, then we'll a priority 4,294,967,295...

I expect the SilkTouch Design & Development and GLFW bindings tasks to complete at the same time.

Perksey avatar Jul 27 '23 19:07 Perksey

I mean it doesn't matter so much, but I'd see GLFW PoC as a separate point - leaving Prio 0 GLFW as an additional item

HurricanKai avatar Jul 27 '23 20:07 HurricanKai

Okay, done thanks.

Perksey avatar Jul 27 '23 20:07 Perksey

I've updated the issue to reflect latest developments. This also has been changed to indicate that we're using SDL3 instead of GLFW as I believe is the consensus on the team, primarily because I've backed down haha

Perksey avatar Nov 21 '23 06:11 Perksey

Unless current plans change, generic math should get bumped up to preview 1

curin avatar Jan 21 '24 02:01 curin

SilkTouch Notes

  • Mods should be able to declare ordering, TransformFunctions currently must be before PrettifyNames because PrettifyNames, despite having a ridiculous amount of code accounting for it, isn't fully compatible with having lots of functions with the same name. This is its own issue that needs to be worked through, but for now the solution is just whacking the TransformFunctions at the end of the pipeline.
    • Is this because of return type conflicts? Should we make this a better experience?

Perksey avatar Jan 24 '24 03:01 Perksey