npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@feng3d/glsl2wgsl

v0.0.3

Published

着色器GLSL到WGSL语言的转换

Readme

着色器GLSL到WGSL语言的转换

把着色器从 GLSL100/GLSL300/GLSL450 升级到 WebGPU 着色器语言 WGSL。

当前库主要处理了 GLSL100 -> GLSL300 -> GLSL450 -> WGSLGLSL450 -> WGSL 过程。

GLSL100 -> GLSL300 -> GLSL450这部分升级的内容由依赖的 @feng3d/glslup 库处理。

示例

@feng3d/glsl2wgsl示例

这里已经完整的把 webgl2 中使用到的着色器都转换为了 WebGPU 着色器。

功能

  1. initGlsl2wgsl 初始化 glslang 与 tint,需要在使用前调用。
  2. glsl2wgslProgram 把 GLSL100/GLSL300/GLSL450 着色器转换为 WGSL 着色器。

从 @feng3d/glslup 中继承。

  1. glslup300 把 GLSL100 升级到 GLSL300。
  2. glslup450 把 GLSL100/GLSL300 升级到 GLSL450。
  3. glslup300Program 把 GLSL100 着色器程序转换为 GLSL300 着色器程序(包含顶点与片段着色器)。
  4. glslup450Program 把 GLSL100/GLSL300 着色器程序转换为 GLSL450 着色器程序(包含顶点与片段着色器)。

安装

npm install @feng3d/glsl2wgsl

使用

import { glsl2wgslProgram, initGlsl2wgsl } from '@feng3d/glsl2wgsl';

main();

async function main() {
    // 初始化
    await initGlsl2wgsl(); // 初始化 glslang 与 tint

    const result = glsl2wgslProgram({
        vertex: `
        attribute vec4 aVertexPosition;
        attribute vec4 aVertexColor;
    
        uniform mat4 uModelViewMatrix;
        uniform mat4 uProjectionMatrix;
    
        varying lowp vec4 vColor;
    
        void main(void) {
          gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition;
          vColor = aVertexColor;
        }
        `,
        fragment: `
        varying lowp vec4 vColor;
    
        void main(void) {
          gl_FragColor = vColor;
        }
        `,
    });

    console.log(`WebGPU顶点着色器:`);
    console.log(result.vertex)
    console.log(`WebGPU片段着色器:`);
    console.log(result.fragment);
    console.log(`layoutInfo:`);
    console.log(result.layoutInfo);
}

参考

  1. https://github.com/BabylonJS/Babylon.js