왜 TypeShade인가
TypeShade는 타입이 있는 소스 파일로 셰이더 로직을 작성하고, 지원하는 GPU 타깃으로 컴파일하는 언어입니다. TypeScript 개발 도구, 셰이더 소스 공유, 출력 검증을 같은 개발 과정에 연결합니다.
TypeScript 개발 도구
함수, 클래스, 타입 주석, import를 이용해 익숙한 방식으로 셰이더 코드를 구성합니다. 파일 첫머리의 "use typeshade"는 셰이더 타입과 실행 규칙을 적용하는 경계입니다. 편집기 확장은 자동 완성, 셰이더 진단, 코드 탐색을 제공합니다. TypeScript 대응표는 지원하는 각 구문이 어떻게 컴파일되는지 설명합니다.
셰이더 소스 공유
WebGPU는 WGSL을, WebGL2는 GLSL ES 3.00을 사용합니다. 구현을 따로 관리하면 변경할 때마다 각 언어에 반영해야 합니다. TypeShade는 셰이더 프로그램을 공통 중간 표현으로 변환하고, 여기서 지원하는 타깃 코드를 생성합니다. 헬퍼 함수를 수정하면 같은 컴파일 과정에서 각 타깃의 출력에 반영됩니다. 타깃 가이드는 타깃별 기능 차이를 설명합니다.
호스트 연동
컴파일러는 호스트가 확인하고 사용할 수 있도록 셰이더 소스와 리플렉션 메타데이터를 제공합니다. 애플리케이션은 이 출력을 자체 렌더러에 연결할 수 있습니다. Vite 플러그인을 쓰면 셰이더 모듈을 import하고 typeshade/runtime으로 진입점을 호출할 수도 있습니다. WebGPU와 WebGL2 가이드는 연동 방식과 호스트가 제공하는 리소스를 설명합니다.
검증 기준
CPU 오라클은 같은 중간 표현을 배정밀도로 계산합니다. 이 결과는 GPU 출력을 확인하는 기준값으로 쓰입니다. 컴파일러 검사에는 타깃 코드 컴파일, 출력 스냅샷, 차등 테스트도 포함됩니다. 부동소수점 결과는 실행 타깃에 따라 달라질 수 있습니다. 검증 페이지는 각 검사의 범위를 설명합니다.
GPU 제약
셰이더는 리소스, 셰이더 단계, 타깃별 규칙을 따라야 합니다. 일부 구문은 WGSL만 생성하며, WebGL2의 컴퓨트 실행은 지원하는 변환 방식과 기능 범위로 제한됩니다. TypeShade를 도입하면 컴파일 단계와 언어 규칙이 추가됩니다. 언어 가이드와 타깃 가이드는 이 제약을 설명합니다. 타깃이 하나이거나 특정 타깃의 기능이 필요한 프로젝트는 기존 WGSL이나 GLSL로 요구사항을 충족할 수도 있습니다.
프로젝트 상태
TypeShade는 정식 출시 전입니다. 도입 전에 고정된 컴파일러 버전에서 애플리케이션에 필요한 기능과 타깃을 확인해야 합니다. 빠른 시작은 현재 설정 방법을, 설계 규칙은 언어가 따르는 규칙을 설명합니다.
시작하기
Playground에서 셰이더를 수정하고 출력을 확인할 수 있습니다. 프로젝트에 적용하는 방법은 빠른 시작에, 완성된 프로그램은 예제에 있습니다.