A .NET library to run C# code in parallel on the GPU through DX12 and D2D1, generating HLSL shaders dynamically.
ComputeSharp is a .NET library that allows developers to write C# code that executes in parallel on the GPU by dynamically generating HLSL compute and pixel shaders. It provides APIs to access GPU devices, allocate buffers and textures, and move data between GPU and RAM, simplifying GPU programming for .NET applications. The library integrates with DirectX 12 and D2D1 to enable high-performance graphics and compute tasks.
.NET developers building applications that require GPU acceleration, such as scientific simulations, real-time graphics, audio visualizers, or image processing tools, particularly those targeting Windows platforms with UWP or WinUI.
Developers choose ComputeSharp because it eliminates the need to write HLSL manually, offering a C#-first approach that reduces boilerplate and integrates seamlessly with the .NET ecosystem. Its production-ready status and adoption by major applications like the Microsoft Store and Paint.NET provide confidence in its stability and performance.
A .NET library to run C# code in parallel on the GPU through DX12, D2D1, and dynamically generated HLSL compute and pixel shaders, with the goal of making GPU computing easy to use for all .NET developers! 🚀
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables writing compute and pixel shaders entirely in C# without HLSL expertise, as stated in the README's key features, reducing boilerplate for .NET developers.
Powers major applications like the Microsoft Store and Paint.NET, showcasing real-world reliability and performance, as highlighted in the README's usage showcase.
Automatically transpiles C# code to optimized HLSL at runtime, simplifying shader development and maintenance, a core feature emphasized in the description.
Offers specialized packages for UWP, WinUI, DXC compilation, and PIX debugging, catering to diverse development needs, as listed in the available packages table.
Tied to DirectX 12 and Windows APIs, making it unsuitable for cross-platform development, as all packages target UWP or WinUI environments exclusively.
Requires configuration of DirectX 12 and dependencies, and the multi-package structure can be overwhelming, as hinted by the need for separate extensions like D3D12MemoryAllocator.
Despite abstraction, developers must still understand GPU parallelism and memory management to write efficient shaders, as the library doesn't fully hide underlying complexities.