shader - En måte å laste .wglsl-filer i Typescript-filer ved å bruke esbuild?


Jeg bruker esbuild som et verktøy for å pakke sammen TypeScript-koden min, men jeg finner ikke en måte å konfigurere en loader for ".wgsl"-filer.

Min app.ts-fil :

import shader from './shader.wgsl';
//webgpu logic

Min shader.d.ts :

declare module '*.wgsl'{
  const value: string;
  export default value;
}

Min esbuild-fil (som du kan se kan jeg ikke bruke ts-shader-loader):

import { build } from "esbuild";
import * as ShaderLoader from "ts-shader-loader";

build({
    entryPoints: ['./src/app.ts'],
    bundle: true,
    sourcemap : true,
    target : 'es2015',
    format:'esm',
    minify : true,
    outfile: './dist/js/app.js',
    tsconfig: './tsconfig.json'
    plugins: [ShaderLoader]
}).catch(() => process.exit(1));

Svar #1

Vi bruker Vite for å importere WGSL og andre ressurser.
f.eks. ved å legge til '?raw' i banen, vil Vite gjøre jobben for deg.

import shader from './shaders/xxx.wgsl?raw'

Vite kan også importere wasm, worker, url på en enkel måte, du kan sjekke: https://vitejs.dev/guide/assets.html#importing-asset-as-url

Vi satte også opp et prosjekt basert på Vite for å dele grunnleggende eksempler for nykommere til WebGPU https://github.com/Orillusion/orillusion-webgpu-samples
Flere demoer er velkomne

Svar #2

Du vil ha noe som esbuild-plugin-glsl (som er en GLSL import-plugin for esbuild, mens ts-shader-loader er en import-plugin for webpack).

Relaterte artikler