0、背景
SPIR-V、GLSL 和 WGSL 是三种不同的着色语言或中间表示形式,它们在现代图形编程中的关系如下:
1、playcanvas
方案: glsl 转 SPIR-V 转 wgsl
调研版本:
"version": "2.4.0-dev"
webgpu-shader.js
transpile(src, shaderType, originalSrc) {try {const spirv = this.shader.device.glslang.compileGLSL(src, shaderType);const wgsl = this.shader.device.twgsl.convertSpirV2WGSL(spirv);return wgsl;} catch (err) {console.error(`Failed to transpile webgl ${shaderType} shader [${this.shader.label}] to WebGPU while rendering ${DebugGraphics.toString()}, error:\n [${err.stack}]`, {processed: src,original: originalSrc,shader: this.shader,error: err,stack: err.stack});}}
2、babylon.js
version:
7.40.2
看着是完全实现了两套。
4、three.js
"version": "0.171.0",
自己抽象了 tsl 。可以为任意版本的语言。