ComputeSharp 2.0 - DirextX 12 및 D2D1으로 GPU에서 C#을 쉽게 실행

재미난 프로젝트가 있었네요. ComputeSharp은 100% C#으로 개발되었으며 DX12, D2D1 및 동적으로 생성되는 HLSL 컴퓨팅 및 픽셀 셰이더를 통해 GPU에서 C# 코드를 병렬로 실행할 수 있는 .NET 라이브러리입니다.

이미 이 라이브러리를 이용해 Microsoft Store에서 2023년 1월부터 사용자 지정 효과 및 픽셀 셰이더를 이용해 새로운 앱 카드와 같은 애플리케이션 그래픽 요소를 표현하는데 사용하였으며

유형한 그래픽 툴인 Paint.NET에서는 버전 5.0부터 ComputeSharp.D2D1을 이용해서 아키텍처의 핵심 구성에 사용되고 있습니다.
(사실 ComputeSharp.D2D1은 Paint.NET을 위해 특별히 개발되었다고 하네요)

ComputeSharp 라이브러리를 이용하면 다음과 같은 픽셀 셰이더 효과를 쉽게 개발할 수 있습니다. (shadertoy.com의 것을 가져와 변환했다고 합니다)

ComputeSharp으로 만들어진 픽셀 셰이더 샘플은 다음의 경로로 설치하여 실행해볼 수 있습니다.

아래의 글을 통해 ComputeSharp이 무엇인가에 대해 알 수 있습니다.


6개의 좋아요

유사하지만 결이 다른 프로젝트로 ILGPU가 있습니다.

ComputeSharp과의 차이점에 대해 Sergio Pedri님의 설명으로 확인할 수 있습니다.

이 두 프로젝트는 근본적으로 다른 아키텍처를 가진 매우 다른 프로젝트입니다.

  • ILGPU는 JIT 컴파일러를 사용하며 CPU/OpenCL/CUDA를 타깃으로 합니다. 주요 장점은 셰이더를 작성하기가 조금 더 쉽고(내가 보기에 대부분 배열을 사용할 수 있기 때문에) 크로스 플랫폼이며 CPU에서 셰이더 디버깅도 지원한다는 점입니다.
  • ComputeSharp는 소스 제너레이터를 사용하며 DirectX 전용입니다. 이로 인해 Windows 및 GPU/WARP 실행으로 제한되지만(즉, CPU 디버깅 없음), 그 대신 HLSL 및 리소스 관리와 1:1 기능 패리티를 제공하는 솔루션(모든 HLSL 유형과 내재 및 리소스 유형에 액세스할 수 있음), AOT 시나리오도 지원하며(IL 바이트코드를 로드하기 위한 리플렉션이 없기 때문에 컴파일 타임에 모두 수행), DirectX 12, D2D1 및 Win2D와 상호 운용되며 스왑 체인 패널을 통해 시각적으로 렌더링할 수 있습니다. 훨씬 더 그래픽 지향적이라고 할 수 있습니다.

따라서 본질적으로 두 프로젝트는 매우 다른 두 가지 용도로 사용되며, 어느 쪽이 다른 쪽보다 낫다고 말하기보다는 매우 다른 프로젝트일 뿐입니다.
또한 두 프로젝트 모두 Microsoft에서 직접 지원하는 것이 아니라 독립적인 프로젝트입니다
(저는 MSFT 소속이지만 ComputeSharp는 제 개인 프로젝트입니다).

3개의 좋아요