使用 esbuild 在 Typescript 文件中加载 .wglsl 文件的方法?

发布于 2025-01-15 05:51:03 字数 753 浏览 1 评论 0原文

我使用 esbuild 作为捆绑 Typescript 代码的工具,但我找不到为“.wgsl”文件配置加载器的方法。

Mi app.ts 文件:

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

我的shader.d.ts:

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

我的 esbuild 文件(如您所见,我无法使用 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));

I'm using esbuild as a tool to bundle my Typescript code but i can't find a way to configure a loader for ".wgsl" files.

Mi app.ts file :

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

My shader.d.ts :

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

My esbuild file (as you can see i can't use 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));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ヅ她的身影、若隐若现 2025-01-22 05:51:03

我们使用 Vite 导入 WGSL 和其他资产。
例如,通过在路径中添加“?raw”,Vite 将为您完成这项工作。

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

Vite 还可以通过简单的方式导入 wasm、worker、url,您可以查看: https://vitejs.dev/guide/assets.html#importing-asset-as-url

我们还基于Vite建立了一个项目,为WebGPU的新人分享基础示例
https://github.com/Orillusion/orillusion-webgpu-samples
欢迎更多演示

We use Vite to import WGSL and other assets.
e.g. by adding '?raw' in the path, Vite will do the job for you.

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

Vite could also import wasm, worker, url in a simple way, you can check: https://vitejs.dev/guide/assets.html#importing-asset-as-url

We also set up a project based on Vite to share basic samples for new comers of WebGPU
https://github.com/Orillusion/orillusion-webgpu-samples
More demos are welcome

能怎样 2025-01-22 05:51:03

你想要像 esbuild-plugin-glsl (这是一个 GLSL 导入插件 < em>esbuild,而 ts-shader-loaderwebpack 的导入插件)。

You want something like esbuild-plugin-glsl (which is a GLSL import plugin for esbuild, whereas ts-shader-loader is an import plugin for webpack).

梦里人 2025-01-22 05:51:03

我必须向 esbuild-plugin-glsl 做出贡献,以允许其他用户加载 . .wgsl 文件。这是我的 esbuild 文件。使用版本 1.1.0^

import { build } from "esbuild";
import { glsl } from "esbuild-plugin-glsl";

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

d.ts 文件应该有这样的:

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

导入着色器的方法是:

//This file has the Fragment and Vertex Shader Code.
import shader from './shader.wgsl';

I had to contribute to esbuild-plugin-glsl to allow other users to load a .wgsl file. Here's my esbuild file. Use the version 1.1.0^

import { build } from "esbuild";
import { glsl } from "esbuild-plugin-glsl";

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

the d.ts file should have this :

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

the way to import a shader is :

//This file has the Fragment and Vertex Shader Code.
import shader from './shader.wgsl';
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文