webgpuTintWASM.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { Logger } from "../../Misc/logger.js";
  2. import { Tools } from "../../Misc/tools.js";
  3. /** @internal */
  4. export class WebGPUTintWASM {
  5. async initTwgsl(twgslOptions) {
  6. if (WebGPUTintWASM._Twgsl) {
  7. return;
  8. }
  9. twgslOptions = twgslOptions || {};
  10. twgslOptions = {
  11. ...WebGPUTintWASM._TWgslDefaultOptions,
  12. ...twgslOptions,
  13. };
  14. if (twgslOptions.twgsl) {
  15. WebGPUTintWASM._Twgsl = twgslOptions.twgsl;
  16. return Promise.resolve();
  17. }
  18. if (twgslOptions.jsPath && twgslOptions.wasmPath) {
  19. await Tools.LoadBabylonScriptAsync(twgslOptions.jsPath);
  20. }
  21. if (self.twgsl) {
  22. WebGPUTintWASM._Twgsl = await self.twgsl(Tools.GetBabylonScriptURL(twgslOptions.wasmPath));
  23. return Promise.resolve();
  24. }
  25. return Promise.reject("twgsl is not available.");
  26. }
  27. convertSpirV2WGSL(code, disableUniformityAnalysis = false) {
  28. const ccode = WebGPUTintWASM._Twgsl.convertSpirV2WGSL(code, WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis);
  29. if (WebGPUTintWASM.ShowWGSLShaderCode) {
  30. Logger.Log(ccode);
  31. Logger.Log("***********************************************");
  32. }
  33. return WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis ? "diagnostic(off, derivative_uniformity);\n" + ccode : ccode;
  34. }
  35. }
  36. // Default twgsl options.
  37. WebGPUTintWASM._TWgslDefaultOptions = {
  38. jsPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.js`,
  39. wasmPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.wasm`,
  40. };
  41. WebGPUTintWASM.ShowWGSLShaderCode = false;
  42. WebGPUTintWASM.DisableUniformityAnalysis = false;
  43. WebGPUTintWASM._Twgsl = null;
  44. //# sourceMappingURL=webgpuTintWASM.js.map