Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking issue for Silk.NET 3.0 #209

Open
21 of 79 tasks
Perksey opened this issue Jun 21, 2020 · 17 comments
Open
21 of 79 tasks

Tracking issue for Silk.NET 3.0 #209

Perksey opened this issue Jun 21, 2020 · 17 comments

Comments

@Perksey
Copy link
Member

Perksey commented Jun 21, 2020

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.

Proposed Features

SDP

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

Windowing

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

Input

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

SilkTouch & Bindings

NOTE: The originally-approved proposal is very obsolete and is likely to be updated throughout 3.0's development. It is also unclear whether we want to subject SilkTouch to the proposals process as it is unlikely to expose any APIs in its complete form, however this obviously changes if we want the source generator form factor still. This section tracks the latest 3.0 development as we know it

  • [Complete] Design & Development - @Perksey
  • [Complete] GLFW PoC - @Perksey
  • [Complete] Proposed (latest) - @Perksey @curin
  • [Complete] Reviewed (latest) - @dotnet/silk-dotnet
  • [Complete] Approved (latest) - @dotnet/silk-dotnet
  • [In Progress] Implemented - @Perksey @curin
  • [Not Started] Pri 0: SDL bindings generated - unassigned
  • [Complete] Pri 0: OpenGL bindings generated - @Perksey
  • [Not Started] Pri 0: OpenAL bindings generated - unassigned
  • [Not Started] Pri 1: Vulkan bindings generated - unassigned
  • [Not Started] Pri 1: Windows bindings generated (existing headers covered) - unassigned
  • [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: Shderc bindings generated - unassigned

Generic Maths

TODO

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
    • SilkTouch can generate raw bindings
    • SilkTouch can do basic rewriting to use wrapper types
    • Windowing and Input are implemented for desktop
    • SDL
    • OpenGL
    • OpenAL
    • Generic Maths
  • Preview 2 released with all Pri 1 and some Pri 2 items implemented
    • Bugfixes from 3.0 Preview 1
    • Vulkan
    • 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
@michael-hawker
Copy link

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

@Perksey
Copy link
Member Author

Perksey commented Feb 26, 2021

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

@Perksey Perksey modified the milestone: 3.0 Jun 11, 2021
@Perksey Perksey mentioned this issue Jun 18, 2021
@BergerBytes
Copy link

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

@michael-hawker
Copy link

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

@Perksey
Copy link
Member Author

Perksey commented Aug 27, 2021

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.

@GeorgeS2019
Copy link

GeorgeS2019 commented Sep 13, 2021

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

@IsaacMarovitz
Copy link

Any idea when we'll get Metal bindings?

@Beyley
Copy link
Contributor

Beyley commented Jan 16, 2023

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

@Perksey
Copy link
Member Author

Perksey commented Jul 27, 2023

@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
Copy link
Member Author

Perksey commented Jul 27, 2023

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!

@HurricanKai
Copy link
Member

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

@Perksey
Copy link
Member Author

Perksey commented Jul 27, 2023

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.

@HurricanKai
Copy link
Member

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

@Perksey
Copy link
Member Author

Perksey commented Jul 27, 2023

Okay, done thanks.

@Perksey
Copy link
Member Author

Perksey commented Nov 21, 2023

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

@curin
Copy link
Contributor

curin commented Jan 21, 2024

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

@Perksey
Copy link
Member Author

Perksey commented Jan 24, 2024

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Todo
Development

No branches or pull requests

8 participants