UNPKG

@babylonjs/viewer

Version:

The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.

1 lines 223 kB
import{I as e,C as t,a9 as r,aa as s,L as n,ab as i,ac as a,ad as o,ae as u,af as c,ag as h,ah as l,m as d,ai as p,aj as _,a1 as g,S as f,b as m,ak as b,al as x,am as T,an as y,ao as E,ap as R,aq as S,ar as A,j as C,as as I,at as v,au as w,av as B,aw as L,ax as F,ay as P,az as D,aA as M,aB as U,aC as O,aD as G}from"./index-Bw2N6w1y.esm.min.js";import"./bakedVertexAnimation-C76-HDZc.esm.min.js";import"./instancesDeclaration-DrjSuS-6.esm.min.js";import"./helperFunctions-BD2JDv1s.esm.min.js";import"./fresnelFunction-UiVWse9C.esm.min.js";import"./meshUboDeclaration-B530jCEj.esm.min.js";import"./sceneUboDeclaration-Bfi1TSBE.esm.min.js";import"./decalFragment-BoIWDCTJ.esm.min.js";import"./audioEngine-BZ_elF0R.esm.min.js";class N{static ComputeNumMipmapLevels(t,r){return e(Math.max(t,r))+1}static GetTextureTypeFromFormat(e){switch(e){case"r8unorm":case"r8uint":case"rg8unorm":case"rg8uint":case"rgba8unorm":case"rgba8unorm-srgb":case"rgba8uint":case"bgra8unorm":case"bgra8unorm-srgb":case"rgb10a2uint":case"rgb10a2unorm":case"rgb9e5ufloat":case"rg11b10ufloat":case"bc7-rgba-unorm":case"bc7-rgba-unorm-srgb":case"bc6h-rgb-ufloat":case"bc5-rg-unorm":case"bc3-rgba-unorm":case"bc3-rgba-unorm-srgb":case"bc2-rgba-unorm":case"bc2-rgba-unorm-srgb":case"bc4-r-unorm":case"bc1-rgba-unorm":case"bc1-rgba-unorm-srgb":case"etc2-rgb8unorm":case"etc2-rgb8unorm-srgb":case"etc2-rgb8a1unorm":case"etc2-rgb8a1unorm-srgb":case"etc2-rgba8unorm":case"etc2-rgba8unorm-srgb":case"eac-r11unorm":case"eac-rg11unorm":case"astc-4x4-unorm":case"astc-4x4-unorm-srgb":case"astc-5x4-unorm":case"astc-5x4-unorm-srgb":case"astc-5x5-unorm":case"astc-5x5-unorm-srgb":case"astc-6x5-unorm":case"astc-6x5-unorm-srgb":case"astc-6x6-unorm":case"astc-6x6-unorm-srgb":case"astc-8x5-unorm":case"astc-8x5-unorm-srgb":case"astc-8x6-unorm":case"astc-8x6-unorm-srgb":case"astc-8x8-unorm":case"astc-8x8-unorm-srgb":case"astc-10x5-unorm":case"astc-10x5-unorm-srgb":case"astc-10x6-unorm":case"astc-10x6-unorm-srgb":case"astc-10x8-unorm":case"astc-10x8-unorm-srgb":case"astc-10x10-unorm":case"astc-10x10-unorm-srgb":case"astc-12x10-unorm":case"astc-12x10-unorm-srgb":case"astc-12x12-unorm":case"astc-12x12-unorm-srgb":case"stencil8":return t.TEXTURETYPE_UNSIGNED_BYTE;case"r8snorm":case"r8sint":case"rg8snorm":case"rg8sint":case"rgba8snorm":case"rgba8sint":case"bc6h-rgb-float":case"bc5-rg-snorm":case"bc4-r-snorm":case"eac-r11snorm":case"eac-rg11snorm":return t.TEXTURETYPE_BYTE;case"r16uint":case"r16unorm":case"rg16unorm":case"rgba16unorm":case"rg16uint":case"rgba16uint":case"depth16unorm":return t.TEXTURETYPE_UNSIGNED_SHORT;case"r16sint":case"r16snorm":case"rg16snorm":case"rgba16snorm":case"rg16sint":case"rgba16sint":return t.TEXTURETYPE_SHORT;case"r16float":case"rg16float":case"rgba16float":return t.TEXTURETYPE_HALF_FLOAT;case"r32uint":case"rg32uint":case"rgba32uint":case"r32sint":case"rg32sint":case"rgba32sint":return t.TEXTURETYPE_UNSIGNED_INTEGER;case"r32float":case"rg32float":case"rgba32float":case"depth32float":case"depth32float-stencil8":case"depth24plus":case"depth24plus-stencil8":return t.TEXTURETYPE_FLOAT}return t.TEXTURETYPE_UNSIGNED_BYTE}static GetBlockInformationFromFormat(e){switch(e){case"r8unorm":case"r8snorm":case"r8uint":case"r8sint":return{width:1,height:1,length:1};case"r16uint":case"r16sint":case"r16unorm":case"rg16unorm":case"rgba16unorm":case"r16snorm":case"rg16snorm":case"rgba16snorm":case"r16float":case"rg8unorm":case"rg8snorm":case"rg8uint":case"rg8sint":case"depth16unorm":return{width:1,height:1,length:2};case"r32uint":case"r32sint":case"r32float":case"rg16uint":case"rg16sint":case"rg16float":case"rgba8unorm":case"rgba8unorm-srgb":case"rgba8snorm":case"rgba8uint":case"rgba8sint":case"bgra8unorm":case"bgra8unorm-srgb":case"rgb9e5ufloat":case"rgb10a2uint":case"rgb10a2unorm":case"rg11b10ufloat":case"depth32float":return{width:1,height:1,length:4};case"rg32uint":case"rg32sint":case"rg32float":case"rgba16uint":case"rgba16sint":case"rgba16float":return{width:1,height:1,length:8};case"rgba32uint":case"rgba32sint":case"rgba32float":return{width:1,height:1,length:16};case"stencil8":throw"No fixed size for Stencil8 format!";case"depth24plus":throw"No fixed size for Depth24Plus format!";case"depth24plus-stencil8":throw"No fixed size for Depth24PlusStencil8 format!";case"depth32float-stencil8":return{width:1,height:1,length:5};case"bc7-rgba-unorm":case"bc7-rgba-unorm-srgb":case"bc6h-rgb-ufloat":case"bc6h-rgb-float":case"bc5-rg-unorm":case"bc5-rg-snorm":case"bc3-rgba-unorm":case"bc3-rgba-unorm-srgb":case"bc2-rgba-unorm":case"bc2-rgba-unorm-srgb":case"etc2-rgba8unorm":case"etc2-rgba8unorm-srgb":case"eac-rg11unorm":case"eac-rg11snorm":case"astc-4x4-unorm":case"astc-4x4-unorm-srgb":return{width:4,height:4,length:16};case"bc4-r-unorm":case"bc4-r-snorm":case"bc1-rgba-unorm":case"bc1-rgba-unorm-srgb":case"etc2-rgb8unorm":case"etc2-rgb8unorm-srgb":case"etc2-rgb8a1unorm":case"etc2-rgb8a1unorm-srgb":case"eac-r11unorm":case"eac-r11snorm":return{width:4,height:4,length:8};case"astc-5x4-unorm":case"astc-5x4-unorm-srgb":return{width:5,height:4,length:16};case"astc-5x5-unorm":case"astc-5x5-unorm-srgb":return{width:5,height:5,length:16};case"astc-6x5-unorm":case"astc-6x5-unorm-srgb":return{width:6,height:5,length:16};case"astc-6x6-unorm":case"astc-6x6-unorm-srgb":return{width:6,height:6,length:16};case"astc-8x5-unorm":case"astc-8x5-unorm-srgb":return{width:8,height:5,length:16};case"astc-8x6-unorm":case"astc-8x6-unorm-srgb":return{width:8,height:6,length:16};case"astc-8x8-unorm":case"astc-8x8-unorm-srgb":return{width:8,height:8,length:16};case"astc-10x5-unorm":case"astc-10x5-unorm-srgb":return{width:10,height:5,length:16};case"astc-10x6-unorm":case"astc-10x6-unorm-srgb":return{width:10,height:6,length:16};case"astc-10x8-unorm":case"astc-10x8-unorm-srgb":return{width:10,height:8,length:16};case"astc-10x10-unorm":case"astc-10x10-unorm-srgb":return{width:10,height:10,length:16};case"astc-12x10-unorm":case"astc-12x10-unorm-srgb":return{width:12,height:10,length:16};case"astc-12x12-unorm":case"astc-12x12-unorm-srgb":return{width:12,height:12,length:16}}return{width:1,height:1,length:4}}static IsHardwareTexture(e){return!!e.release}static IsInternalTexture(e){return!!e.dispose}static IsImageBitmap(e){return void 0!==e.close}static IsImageBitmapArray(e){return Array.isArray(e)&&void 0!==e[0].close}static IsCompressedFormat(e){switch(e){case"bc7-rgba-unorm-srgb":case"bc7-rgba-unorm":case"bc6h-rgb-float":case"bc6h-rgb-ufloat":case"bc5-rg-snorm":case"bc5-rg-unorm":case"bc4-r-snorm":case"bc4-r-unorm":case"bc3-rgba-unorm-srgb":case"bc3-rgba-unorm":case"bc2-rgba-unorm-srgb":case"bc2-rgba-unorm":case"bc1-rgba-unorm-srgb":case"bc1-rgba-unorm":case"etc2-rgb8unorm":case"etc2-rgb8unorm-srgb":case"etc2-rgb8a1unorm":case"etc2-rgb8a1unorm-srgb":case"etc2-rgba8unorm":case"etc2-rgba8unorm-srgb":case"eac-r11unorm":case"eac-r11snorm":case"eac-rg11unorm":case"eac-rg11snorm":case"astc-4x4-unorm":case"astc-4x4-unorm-srgb":case"astc-5x4-unorm":case"astc-5x4-unorm-srgb":case"astc-5x5-unorm":case"astc-5x5-unorm-srgb":case"astc-6x5-unorm":case"astc-6x5-unorm-srgb":case"astc-6x6-unorm":case"astc-6x6-unorm-srgb":case"astc-8x5-unorm":case"astc-8x5-unorm-srgb":case"astc-8x6-unorm":case"astc-8x6-unorm-srgb":case"astc-8x8-unorm":case"astc-8x8-unorm-srgb":case"astc-10x5-unorm":case"astc-10x5-unorm-srgb":case"astc-10x6-unorm":case"astc-10x6-unorm-srgb":case"astc-10x8-unorm":case"astc-10x8-unorm-srgb":case"astc-10x10-unorm":case"astc-10x10-unorm-srgb":case"astc-12x10-unorm":case"astc-12x10-unorm-srgb":case"astc-12x12-unorm":case"astc-12x12-unorm-srgb":return!0}return!1}static GetWebGPUTextureFormat(e,r,s=!1){switch(r){case t.TEXTUREFORMAT_DEPTH16:return"depth16unorm";case t.TEXTUREFORMAT_DEPTH24:return"depth24plus";case t.TEXTUREFORMAT_DEPTH24_STENCIL8:return"depth24plus-stencil8";case t.TEXTUREFORMAT_DEPTH32_FLOAT:return"depth32float";case t.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8:return"depth32float-stencil8";case t.TEXTUREFORMAT_STENCIL8:return"stencil8";case t.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM:return s?"bc7-rgba-unorm-srgb":"bc7-rgba-unorm";case t.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:return"bc6h-rgb-ufloat";case t.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:return"bc6h-rgb-float";case t.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5:return s?"bc3-rgba-unorm-srgb":"bc3-rgba-unorm";case t.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3:return s?"bc2-rgba-unorm-srgb":"bc2-rgba-unorm";case t.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1:case t.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1:return s?"bc1-rgba-unorm-srgb":"bc1-rgba-unorm";case t.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4:return s?"astc-4x4-unorm-srgb":"astc-4x4-unorm";case t.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL:case t.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2:return s?"etc2-rgb8unorm-srgb":"etc2-rgb8unorm";case t.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC:return s?"etc2-rgba8unorm-srgb":"etc2-rgba8unorm"}switch(e){case t.TEXTURETYPE_BYTE:switch(r){case t.TEXTUREFORMAT_RED:return"r8snorm";case t.TEXTUREFORMAT_RG:return"rg8snorm";case t.TEXTUREFORMAT_RGB:throw"RGB format not supported in WebGPU";case t.TEXTUREFORMAT_RED_INTEGER:return"r8sint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg8sint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:return"rgba8sint";default:return"rgba8snorm"}case t.TEXTURETYPE_UNSIGNED_BYTE:switch(r){case t.TEXTUREFORMAT_RED:return"r8unorm";case t.TEXTUREFORMAT_RG:return"rg8unorm";case t.TEXTUREFORMAT_RGB:throw"TEXTUREFORMAT_RGB format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA:return s?"rgba8unorm-srgb":"rgba8unorm";case t.TEXTUREFORMAT_BGRA:return s?"bgra8unorm-srgb":"bgra8unorm";case t.TEXTUREFORMAT_RED_INTEGER:return"r8uint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg8uint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:return"rgba8uint";case t.TEXTUREFORMAT_ALPHA:throw"TEXTUREFORMAT_ALPHA format not supported in WebGPU";case t.TEXTUREFORMAT_LUMINANCE:throw"TEXTUREFORMAT_LUMINANCE format not supported in WebGPU";case t.TEXTUREFORMAT_LUMINANCE_ALPHA:throw"TEXTUREFORMAT_LUMINANCE_ALPHA format not supported in WebGPU";default:return"rgba8unorm"}case t.TEXTURETYPE_SHORT:switch(r){case t.TEXTUREFORMAT_RED_INTEGER:return"r16sint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg16sint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:default:return"rgba16sint"}case t.TEXTURETYPE_UNSIGNED_SHORT:switch(r){case t.TEXTUREFORMAT_RED_INTEGER:return"r16uint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg16uint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:default:return"rgba16uint"}case t.TEXTURETYPE_INT:switch(r){case t.TEXTUREFORMAT_RED_INTEGER:return"r32sint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg32sint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:default:return"rgba32sint"}case t.TEXTURETYPE_UNSIGNED_INTEGER:switch(r){case t.TEXTUREFORMAT_RED_INTEGER:return"r32uint";case t.TEXTUREFORMAT_RG_INTEGER:return"rg32uint";case t.TEXTUREFORMAT_RGB_INTEGER:throw"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA_INTEGER:default:return"rgba32uint"}case t.TEXTURETYPE_FLOAT:switch(r){case t.TEXTUREFORMAT_RED:return"r32float";case t.TEXTUREFORMAT_RG:return"rg32float";case t.TEXTUREFORMAT_RGB:throw"TEXTUREFORMAT_RGB format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA:default:return"rgba32float"}case t.TEXTURETYPE_HALF_FLOAT:switch(r){case t.TEXTUREFORMAT_RED:return"r16float";case t.TEXTUREFORMAT_RG:return"rg16float";case t.TEXTUREFORMAT_RGB:throw"TEXTUREFORMAT_RGB format not supported in WebGPU";case t.TEXTUREFORMAT_RGBA:default:return"rgba16float"}case t.TEXTURETYPE_UNSIGNED_SHORT_5_6_5:throw"TEXTURETYPE_UNSIGNED_SHORT_5_6_5 format not supported in WebGPU";case t.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV:switch(r){case t.TEXTUREFORMAT_RGBA:return"rg11b10ufloat";case t.TEXTUREFORMAT_RGBA_INTEGER:throw"TEXTUREFORMAT_RGBA_INTEGER format not supported in WebGPU when type is TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV";default:return"rg11b10ufloat"}case t.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV:switch(r){case t.TEXTUREFORMAT_RGBA:return"rgb9e5ufloat";case t.TEXTUREFORMAT_RGBA_INTEGER:throw"TEXTUREFORMAT_RGBA_INTEGER format not supported in WebGPU when type is TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV";default:return"rgb9e5ufloat"}case t.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4:throw"TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4 format not supported in WebGPU";case t.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1:throw"TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1 format not supported in WebGPU";case t.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV:switch(r){case t.TEXTUREFORMAT_RGBA:return"rgb10a2unorm";case t.TEXTUREFORMAT_RGBA_INTEGER:return"rgb10a2uint";default:return"rgb10a2unorm"}}return s?"rgba8unorm-srgb":"rgba8unorm"}static GetNumChannelsFromWebGPUTextureFormat(e){switch(e){case"r8unorm":case"r8snorm":case"r8uint":case"r8sint":case"bc4-r-unorm":case"bc4-r-snorm":case"r16uint":case"r16sint":case"depth16unorm":case"r16float":case"r16unorm":case"r16snorm":case"r32uint":case"r32sint":case"r32float":case"depth32float":case"stencil8":case"depth24plus":case"eac-r11unorm":case"eac-r11snorm":return 1;case"rg8unorm":case"rg8snorm":case"rg8uint":case"rg8sint":case"depth32float-stencil8":case"bc5-rg-unorm":case"bc5-rg-snorm":case"rg16uint":case"rg16sint":case"rg16float":case"rg16unorm":case"rg16snorm":case"rg32uint":case"rg32sint":case"rg32float":case"depth24plus-stencil8":case"eac-rg11unorm":case"eac-rg11snorm":return 2;case"rgb9e5ufloat":case"rg11b10ufloat":case"bc6h-rgb-ufloat":case"bc6h-rgb-float":case"etc2-rgb8unorm":case"etc2-rgb8unorm-srgb":return 3;case"rgba8unorm":case"rgba8unorm-srgb":case"rgba8snorm":case"rgba8uint":case"rgba8sint":case"bgra8unorm":case"bgra8unorm-srgb":case"rgba16unorm":case"rgba16snorm":case"rgb10a2uint":case"rgb10a2unorm":case"bc7-rgba-unorm":case"bc7-rgba-unorm-srgb":case"bc3-rgba-unorm":case"bc3-rgba-unorm-srgb":case"bc2-rgba-unorm":case"bc2-rgba-unorm-srgb":case"bc1-rgba-unorm":case"bc1-rgba-unorm-srgb":case"rgba16uint":case"rgba16sint":case"rgba16float":case"rgba32uint":case"rgba32sint":case"rgba32float":case"etc2-rgb8a1unorm":case"etc2-rgb8a1unorm-srgb":case"etc2-rgba8unorm":case"etc2-rgba8unorm-srgb":case"astc-4x4-unorm":case"astc-4x4-unorm-srgb":case"astc-5x4-unorm":case"astc-5x4-unorm-srgb":case"astc-5x5-unorm":case"astc-5x5-unorm-srgb":case"astc-6x5-unorm":case"astc-6x5-unorm-srgb":case"astc-6x6-unorm":case"astc-6x6-unorm-srgb":case"astc-8x5-unorm":case"astc-8x5-unorm-srgb":case"astc-8x6-unorm":case"astc-8x6-unorm-srgb":case"astc-8x8-unorm":case"astc-8x8-unorm-srgb":case"astc-10x5-unorm":case"astc-10x5-unorm-srgb":case"astc-10x6-unorm":case"astc-10x6-unorm-srgb":case"astc-10x8-unorm":case"astc-10x8-unorm-srgb":case"astc-10x10-unorm":case"astc-10x10-unorm-srgb":case"astc-12x10-unorm":case"astc-12x10-unorm-srgb":case"astc-12x12-unorm":case"astc-12x12-unorm-srgb":return 4}throw`Unknown format ${e}!`}static HasStencilAspect(e){switch(e){case"stencil8":case"depth32float-stencil8":case"depth24plus-stencil8":return!0}return!1}static HasDepthAndStencilAspects(e){switch(e){case"depth32float-stencil8":case"depth24plus-stencil8":return!0}return!1}static GetDepthFormatOnly(e){switch(e){case"depth16unorm":return"depth16unorm";case"depth24plus":case"depth24plus-stencil8":return"depth24plus";case"depth32float":case"depth32float-stencil8":return"depth32float"}return e}static GetSample(e){return e>1?4:1}}class W{constructor(){this._gpuTimeInFrameId=-1,this.counter=new r}_addDuration(e,t){e<this._gpuTimeInFrameId||(this._gpuTimeInFrameId!==e?(this.counter._fetchResult(),this.counter.fetchNewFrame(),this.counter.addCount(t,!1),this._gpuTimeInFrameId=e):this.counter.addCount(t,!1))}}class $ extends s{constructor(){super(...arguments),this.dbgShowShaderCode=!1,this.dbgSanityChecks=!0,this.dbgVerboseLogsNumFrames=10,this.dbgLogIfNotDrawWrapper=!0,this.dbgShowEmptyEnableEffectCalls=!0,this.dbgVerboseLogsForFirstFrames=!1,this._currentRenderPass=null,this._snapshotRenderingMode=t.SNAPSHOTRENDERING_STANDARD,this._timestampIndex=0,this._debugStackRenderPass=[]}get enableGPUTimingMeasurements(){return this._timestampQuery.enable}set enableGPUTimingMeasurements(e){this._timestampQuery.enable!==e&&(this.gpuTimeInFrameForMainPass=e?new W:void 0,this._timestampQuery.enable=e)}_currentPassIsMainPass(){return null===this._currentRenderTarget}_endCurrentRenderPass(){if(!this._currentRenderPass)return 0;if(0!==this._debugStackRenderPass.length)for(let e=0;e<this._debugStackRenderPass.length;++e)this._currentRenderPass.popDebugGroup();const e=this._currentPassIsMainPass()?2:1;return this._snapshotRendering.endRenderPass(this._currentRenderPass)||this.compatibilityMode||(this._bundleList.run(this._currentRenderPass),this._bundleList.reset()),this._currentRenderPass.end(),this._timestampQuery.endPass(this._timestampIndex,this._currentRenderTarget&&this._currentRenderTarget.gpuTimeInFrame?this._currentRenderTarget.gpuTimeInFrame:this.gpuTimeInFrameForMainPass),this._timestampIndex+=2,this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log("frame #"+this._count+" - "+(2===e?"main":"render target")+" end pass"+(1===e?" - internalTexture.uniqueId="+this._currentRenderTarget?.texture?.uniqueId:""))),this._debugPopGroup?.(0),this._currentRenderPass=null,e}_generateMipmaps(e,t){t=t??this._renderEncoder;const r=e._hardwareTexture;if(!r)return;t===this._renderEncoder&&this._endCurrentRenderPass();const s=e._hardwareTexture.format,i=N.ComputeNumMipmapLevels(e.width,e.height);this.dbgVerboseLogsForFirstFrames&&(void 0===this._count&&(this._count=0),(!this._count||this._count<this.dbgVerboseLogsNumFrames)&&n.Log("frame #"+this._count+" - generate mipmaps - width="+e.width+", height="+e.height+", isCube="+e.isCube+", command encoder="+(t===this._renderEncoder?"render":"copy"))),e.isCube?this._textureHelper.generateCubeMipmaps(r,s,i,t):this._textureHelper.generateMipmaps(r,s,i,0,e.is3D,t)}}var V,H,X,k,Y,q,Q,z,K,j,J,Z,ee,te,re,se,ne,ie,ae,oe,ue,ce,he,le,de,pe,_e,ge,fe,me,be,xe,Te,ye,Ee,Re,Se,Ae,Ce,Ie,ve;!function(e){e.LowPower="low-power",e.HighPerformance="high-performance"}(V||(V={})),function(e){e.DepthClipControl="depth-clip-control",e.Depth32FloatStencil8="depth32float-stencil8",e.TextureCompressionBC="texture-compression-bc",e.TextureCompressionBCSliced3D="texture-compression-bc-sliced-3d",e.TextureCompressionETC2="texture-compression-etc2",e.TextureCompressionASTC="texture-compression-astc",e.TextureCompressionASTCSliced3D="texture-compression-astc-sliced-3d",e.TimestampQuery="timestamp-query",e.IndirectFirstInstance="indirect-first-instance",e.ShaderF16="shader-f16",e.RG11B10UFloatRenderable="rg11b10ufloat-renderable",e.BGRA8UnormStorage="bgra8unorm-storage",e.Float32Filterable="float32-filterable",e.Float32Blendable="float32-blendable",e.ClipDistances="clip-distances",e.DualSourceBlending="dual-source-blending"}(H||(H={})),function(e){e.Unmapped="unmapped",e.Pending="pending",e.Mapped="mapped"}(X||(X={})),function(e){e[e.MapRead=1]="MapRead",e[e.MapWrite=2]="MapWrite",e[e.CopySrc=4]="CopySrc",e[e.CopyDst=8]="CopyDst",e[e.Index=16]="Index",e[e.Vertex=32]="Vertex",e[e.Uniform=64]="Uniform",e[e.Storage=128]="Storage",e[e.Indirect=256]="Indirect",e[e.QueryResolve=512]="QueryResolve"}(k||(k={})),function(e){e[e.Read=1]="Read",e[e.Write=2]="Write"}(Y||(Y={})),function(e){e.E1d="1d",e.E2d="2d",e.E3d="3d"}(q||(q={})),function(e){e[e.CopySrc=1]="CopySrc",e[e.CopyDst=2]="CopyDst",e[e.TextureBinding=4]="TextureBinding",e[e.StorageBinding=8]="StorageBinding",e[e.RenderAttachment=16]="RenderAttachment"}(Q||(Q={})),function(e){e.E1d="1d",e.E2d="2d",e.E2dArray="2d-array",e.Cube="cube",e.CubeArray="cube-array",e.E3d="3d"}(z||(z={})),function(e){e.All="all",e.StencilOnly="stencil-only",e.DepthOnly="depth-only"}(K||(K={})),function(e){e.R8Unorm="r8unorm",e.R8Snorm="r8snorm",e.R8Uint="r8uint",e.R8Sint="r8sint",e.R16Uint="r16uint",e.R16Sint="r16sint",e.R16Float="r16float",e.RG8Unorm="rg8unorm",e.RG8Snorm="rg8snorm",e.RG8Uint="rg8uint",e.RG8Sint="rg8sint",e.R16Unorm="r16unorm",e.R16Snorm="r16snorm",e.RG16Unorm="rg16unorm",e.RG16Snorm="rg16snorm",e.RGBA16Unorm="rgba16unorm",e.RGBA16Snorm="rgba16snorm",e.R32Uint="r32uint",e.R32Sint="r32sint",e.R32Float="r32float",e.RG16Uint="rg16uint",e.RG16Sint="rg16sint",e.RG16Float="rg16float",e.RGBA8Unorm="rgba8unorm",e.RGBA8UnormSRGB="rgba8unorm-srgb",e.RGBA8Snorm="rgba8snorm",e.RGBA8Uint="rgba8uint",e.RGBA8Sint="rgba8sint",e.BGRA8Unorm="bgra8unorm",e.BGRA8UnormSRGB="bgra8unorm-srgb",e.RGB9E5UFloat="rgb9e5ufloat",e.RGB10A2UINT="rgb10a2uint",e.RGB10A2Unorm="rgb10a2unorm",e.RG11B10UFloat="rg11b10ufloat",e.RG32Uint="rg32uint",e.RG32Sint="rg32sint",e.RG32Float="rg32float",e.RGBA16Uint="rgba16uint",e.RGBA16Sint="rgba16sint",e.RGBA16Float="rgba16float",e.RGBA32Uint="rgba32uint",e.RGBA32Sint="rgba32sint",e.RGBA32Float="rgba32float",e.Stencil8="stencil8",e.Depth16Unorm="depth16unorm",e.Depth24Plus="depth24plus",e.Depth24PlusStencil8="depth24plus-stencil8",e.Depth32Float="depth32float",e.BC1RGBAUnorm="bc1-rgba-unorm",e.BC1RGBAUnormSRGB="bc1-rgba-unorm-srgb",e.BC2RGBAUnorm="bc2-rgba-unorm",e.BC2RGBAUnormSRGB="bc2-rgba-unorm-srgb",e.BC3RGBAUnorm="bc3-rgba-unorm",e.BC3RGBAUnormSRGB="bc3-rgba-unorm-srgb",e.BC4RUnorm="bc4-r-unorm",e.BC4RSnorm="bc4-r-snorm",e.BC5RGUnorm="bc5-rg-unorm",e.BC5RGSnorm="bc5-rg-snorm",e.BC6HRGBUFloat="bc6h-rgb-ufloat",e.BC6HRGBFloat="bc6h-rgb-float",e.BC7RGBAUnorm="bc7-rgba-unorm",e.BC7RGBAUnormSRGB="bc7-rgba-unorm-srgb",e.ETC2RGB8Unorm="etc2-rgb8unorm",e.ETC2RGB8UnormSRGB="etc2-rgb8unorm-srgb",e.ETC2RGB8A1Unorm="etc2-rgb8a1unorm",e.ETC2RGB8A1UnormSRGB="etc2-rgb8a1unorm-srgb",e.ETC2RGBA8Unorm="etc2-rgba8unorm",e.ETC2RGBA8UnormSRGB="etc2-rgba8unorm-srgb",e.EACR11Unorm="eac-r11unorm",e.EACR11Snorm="eac-r11snorm",e.EACRG11Unorm="eac-rg11unorm",e.EACRG11Snorm="eac-rg11snorm",e.ASTC4x4Unorm="astc-4x4-unorm",e.ASTC4x4UnormSRGB="astc-4x4-unorm-srgb",e.ASTC5x4Unorm="astc-5x4-unorm",e.ASTC5x4UnormSRGB="astc-5x4-unorm-srgb",e.ASTC5x5Unorm="astc-5x5-unorm",e.ASTC5x5UnormSRGB="astc-5x5-unorm-srgb",e.ASTC6x5Unorm="astc-6x5-unorm",e.ASTC6x5UnormSRGB="astc-6x5-unorm-srgb",e.ASTC6x6Unorm="astc-6x6-unorm",e.ASTC6x6UnormSRGB="astc-6x6-unorm-srgb",e.ASTC8x5Unorm="astc-8x5-unorm",e.ASTC8x5UnormSRGB="astc-8x5-unorm-srgb",e.ASTC8x6Unorm="astc-8x6-unorm",e.ASTC8x6UnormSRGB="astc-8x6-unorm-srgb",e.ASTC8x8Unorm="astc-8x8-unorm",e.ASTC8x8UnormSRGB="astc-8x8-unorm-srgb",e.ASTC10x5Unorm="astc-10x5-unorm",e.ASTC10x5UnormSRGB="astc-10x5-unorm-srgb",e.ASTC10x6Unorm="astc-10x6-unorm",e.ASTC10x6UnormSRGB="astc-10x6-unorm-srgb",e.ASTC10x8Unorm="astc-10x8-unorm",e.ASTC10x8UnormSRGB="astc-10x8-unorm-srgb",e.ASTC10x10Unorm="astc-10x10-unorm",e.ASTC10x10UnormSRGB="astc-10x10-unorm-srgb",e.ASTC12x10Unorm="astc-12x10-unorm",e.ASTC12x10UnormSRGB="astc-12x10-unorm-srgb",e.ASTC12x12Unorm="astc-12x12-unorm",e.ASTC12x12UnormSRGB="astc-12x12-unorm-srgb",e.Depth32FloatStencil8="depth32float-stencil8"}(j||(j={})),function(e){e.ClampToEdge="clamp-to-edge",e.Repeat="repeat",e.MirrorRepeat="mirror-repeat"}(J||(J={})),function(e){e.Nearest="nearest",e.Linear="linear"}(Z||(Z={})),function(e){e.Nearest="nearest",e.Linear="linear"}(ee||(ee={})),function(e){e.Never="never",e.Less="less",e.Equal="equal",e.LessEqual="less-equal",e.Greater="greater",e.NotEqual="not-equal",e.GreaterEqual="greater-equal",e.Always="always"}(te||(te={})),function(e){e[e.Vertex=1]="Vertex",e[e.Fragment=2]="Fragment",e[e.Compute=4]="Compute"}(re||(re={})),function(e){e.Uniform="uniform",e.Storage="storage",e.ReadOnlyStorage="read-only-storage"}(se||(se={})),function(e){e.Filtering="filtering",e.NonFiltering="non-filtering",e.Comparison="comparison"}(ne||(ne={})),function(e){e.Float="float",e.UnfilterableFloat="unfilterable-float",e.Depth="depth",e.Sint="sint",e.Uint="uint"}(ie||(ie={})),function(e){e.WriteOnly="write-only",e.ReadOnly="read-only",e.ReadWrite="read-write"}(ae||(ae={})),function(e){e.Error="error",e.Warning="warning",e.Info="info"}(oe||(oe={})),function(e){e.Validation="validation",e.Internal="internal"}(ue||(ue={})),function(e){e.Auto="auto"}(ce||(ce={})),function(e){e.PointList="point-list",e.LineList="line-list",e.LineStrip="line-strip",e.TriangleList="triangle-list",e.TriangleStrip="triangle-strip"}(he||(he={})),function(e){e.CCW="ccw",e.CW="cw"}(le||(le={})),function(e){e.None="none",e.Front="front",e.Back="back"}(de||(de={})),function(e){e[e.Red=1]="Red",e[e.Green=2]="Green",e[e.Blue=4]="Blue",e[e.Alpha=8]="Alpha",e[e.All=15]="All"}(pe||(pe={})),function(e){e.Zero="zero",e.One="one",e.Src="src",e.OneMinusSrc="one-minus-src",e.SrcAlpha="src-alpha",e.OneMinusSrcAlpha="one-minus-src-alpha",e.Dst="dst",e.OneMinusDst="one-minus-dst",e.DstAlpha="dst-alpha",e.OneMinusDstAlpha="one-minus-dst-alpha",e.SrcAlphaSaturated="src-alpha-saturated",e.Constant="constant",e.OneMinusConstant="one-minus-constant",e.Src1="src1",e.OneMinusSrc1="one-minus-src1",e.Src1Alpha="src1-alpha",e.OneMinusSrc1Alpha="one-minus-src1-alpha"}(_e||(_e={})),function(e){e.Add="add",e.Subtract="subtract",e.ReverseSubtract="reverse-subtract",e.Min="min",e.Max="max"}(ge||(ge={})),function(e){e.Keep="keep",e.Zero="zero",e.Replace="replace",e.Invert="invert",e.IncrementClamp="increment-clamp",e.DecrementClamp="decrement-clamp",e.IncrementWrap="increment-wrap",e.DecrementWrap="decrement-wrap"}(fe||(fe={})),function(e){e.Uint16="uint16",e.Uint32="uint32"}(me||(me={})),function(e){e.Uint8x2="uint8x2",e.Uint8x4="uint8x4",e.Sint8x2="sint8x2",e.Sint8x4="sint8x4",e.Unorm8x2="unorm8x2",e.Unorm8x4="unorm8x4",e.Snorm8x2="snorm8x2",e.Snorm8x4="snorm8x4",e.Uint16x2="uint16x2",e.Uint16x4="uint16x4",e.Sint16x2="sint16x2",e.Sint16x4="sint16x4",e.Unorm16x2="unorm16x2",e.Unorm16x4="unorm16x4",e.Snorm16x2="snorm16x2",e.Snorm16x4="snorm16x4",e.Float16x2="float16x2",e.Float16x4="float16x4",e.Float32="float32",e.Float32x2="float32x2",e.Float32x3="float32x3",e.Float32x4="float32x4",e.Uint32="uint32",e.Uint32x2="uint32x2",e.Uint32x3="uint32x3",e.Uint32x4="uint32x4",e.Sint32="sint32",e.Sint32x2="sint32x2",e.Sint32x3="sint32x3",e.Sint32x4="sint32x4",e.UNORM10x10x10x2="unorm10-10-10-2"}(be||(be={})),function(e){e.Vertex="vertex",e.Instance="instance"}(xe||(xe={})),function(e){e.Beginning="beginning",e.End="end"}(Te||(Te={})),function(e){e.Beginning="beginning",e.End="end"}(ye||(ye={})),function(e){e.Load="load",e.Clear="clear"}(Ee||(Ee={})),function(e){e.Store="store",e.Discard="discard"}(Re||(Re={})),function(e){e.Occlusion="occlusion",e.Timestamp="timestamp"}(Se||(Se={})),function(e){e.Opaque="opaque",e.Premultiplied="premultiplied"}(Ae||(Ae={})),function(e){e.Standard="standard",e.Extended="extended"}(Ce||(Ce={})),function(e){e.Unknown="unknown",e.Destroyed="destroyed"}(Ie||(Ie={})),function(e){e.Validation="validation",e.OutOfMemory="out-of-memory",e.Internal="internal"}(ve||(ve={}));class we{constructor(){this.shaderLanguage=0}_addUniformToLeftOverUBO(e,t,r){let s=0;[e,t,s]=this._getArraySize(e,t,r);for(let t=0;t<this._webgpuProcessingContext.leftOverUniforms.length;t++)if(this._webgpuProcessingContext.leftOverUniforms[t].name===e)return;this._webgpuProcessingContext.leftOverUniforms.push({name:e,type:t,length:s})}_buildLeftOverUBO(){if(!this._webgpuProcessingContext.leftOverUniforms.length)return"";const e=we.LeftOvertUBOName;let t=this._webgpuProcessingContext.availableBuffers[e];return t||(t={binding:this._webgpuProcessingContext.getNextFreeUBOBinding()},this._webgpuProcessingContext.availableBuffers[e]=t,this._addBufferBindingDescription(e,t,"uniform",!0),this._addBufferBindingDescription(e,t,"uniform",!1)),this._generateLeftOverUBOCode(e,t)}_collectBindingNames(){for(let e=0;e<this._webgpuProcessingContext.bindGroupLayoutEntries.length;e++){const t=this._webgpuProcessingContext.bindGroupLayoutEntries[e];if(void 0!==t)for(let r=0;r<t.length;r++){const t=this._webgpuProcessingContext.bindGroupLayoutEntries[e][r],s=this._webgpuProcessingContext.bindGroupLayoutEntryInfo[e][t.binding].name,n=this._webgpuProcessingContext.bindGroupLayoutEntryInfo[e][t.binding].nameInArrayOfTexture;t&&(t.texture||t.externalTexture||t.storageTexture?this._webgpuProcessingContext.textureNames.push(n):t.sampler?this._webgpuProcessingContext.samplerNames.push(s):t.buffer&&this._webgpuProcessingContext.bufferNames.push(s))}else this._webgpuProcessingContext.bindGroupLayoutEntries[e]=[]}}_preCreateBindGroupEntries(){const e=this._webgpuProcessingContext.bindGroupEntries;for(let t=0;t<this._webgpuProcessingContext.bindGroupLayoutEntries.length;t++){const r=this._webgpuProcessingContext.bindGroupLayoutEntries[t],s=[];for(let e=0;e<r.length;e++){const r=this._webgpuProcessingContext.bindGroupLayoutEntries[t][e];r.sampler||r.texture||r.storageTexture||r.externalTexture?s.push({binding:r.binding,resource:void 0}):r.buffer&&s.push({binding:r.binding,resource:{buffer:void 0,offset:0,size:0}})}e[t]=s}}_addTextureBindingDescription(e,t,r,s,n,i){let{groupIndex:a,bindingIndex:o}=t.textures[r];if(this._webgpuProcessingContext.bindGroupLayoutEntries[a]||(this._webgpuProcessingContext.bindGroupLayoutEntries[a]=[],this._webgpuProcessingContext.bindGroupLayoutEntryInfo[a]=[]),!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[a][o]){let i;i=null===s?this._webgpuProcessingContext.bindGroupLayoutEntries[a].push({binding:o,visibility:0,externalTexture:{}}):n?this._webgpuProcessingContext.bindGroupLayoutEntries[a].push({binding:o,visibility:0,storageTexture:{access:"write-only",format:n,viewDimension:s}}):this._webgpuProcessingContext.bindGroupLayoutEntries[a].push({binding:o,visibility:0,texture:{sampleType:t.sampleType,viewDimension:s,multisampled:!1}});const u=t.isTextureArray?e+r:e;this._webgpuProcessingContext.bindGroupLayoutEntryInfo[a][o]={name:e,index:i-1,nameInArrayOfTexture:u}}o=this._webgpuProcessingContext.bindGroupLayoutEntryInfo[a][o].index,this._webgpuProcessingContext.bindGroupLayoutEntries[a][o].visibility|=i?1:2}_addSamplerBindingDescription(e,t,r){let{groupIndex:s,bindingIndex:n}=t.binding;if(this._webgpuProcessingContext.bindGroupLayoutEntries[s]||(this._webgpuProcessingContext.bindGroupLayoutEntries[s]=[],this._webgpuProcessingContext.bindGroupLayoutEntryInfo[s]=[]),!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[s][n]){const r=this._webgpuProcessingContext.bindGroupLayoutEntries[s].push({binding:n,visibility:0,sampler:{type:t.type}});this._webgpuProcessingContext.bindGroupLayoutEntryInfo[s][n]={name:e,index:r-1}}n=this._webgpuProcessingContext.bindGroupLayoutEntryInfo[s][n].index,this._webgpuProcessingContext.bindGroupLayoutEntries[s][n].visibility|=r?1:2}_addBufferBindingDescription(e,t,r,s){let{groupIndex:n,bindingIndex:i}=t.binding;if(this._webgpuProcessingContext.bindGroupLayoutEntries[n]||(this._webgpuProcessingContext.bindGroupLayoutEntries[n]=[],this._webgpuProcessingContext.bindGroupLayoutEntryInfo[n]=[]),!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[n][i]){const t=this._webgpuProcessingContext.bindGroupLayoutEntries[n].push({binding:i,visibility:0,buffer:{type:r}});this._webgpuProcessingContext.bindGroupLayoutEntryInfo[n][i]={name:e,index:t-1}}i=this._webgpuProcessingContext.bindGroupLayoutEntryInfo[n][i].index,this._webgpuProcessingContext.bindGroupLayoutEntries[n][i].visibility|=s?1:2}}we.LeftOvertUBOName="LeftOver",we.InternalsUBOName="Internals",we.UniformSizes={bool:1,int:1,float:1,vec2:2,ivec2:2,uvec2:2,vec3:3,ivec3:3,uvec3:3,vec4:4,ivec4:4,uvec4:4,mat2:4,mat3:12,mat4:16,i32:1,u32:1,f32:1,mat2x2:4,mat3x3:12,mat4x4:16,mat2x2f:4,mat3x3f:12,mat4x4f:16,vec2i:2,vec3i:3,vec4i:4,vec2u:2,vec3u:3,vec4u:4,vec2f:2,vec3f:3,vec4f:4,vec2h:1,vec3h:2,vec4h:2},we._SamplerFunctionByWebGLSamplerType={sampler2D:"sampler2D",sampler2DArray:"sampler2DArray",sampler2DShadow:"sampler2DShadow",sampler2DArrayShadow:"sampler2DArrayShadow",samplerCube:"samplerCube",sampler3D:"sampler3D"},we._TextureTypeByWebGLSamplerType={sampler2D:"texture2D",sampler2DArray:"texture2DArray",sampler2DShadow:"texture2D",sampler2DArrayShadow:"texture2DArray",samplerCube:"textureCube",samplerCubeArray:"textureCubeArray",sampler3D:"texture3D"},we._GpuTextureViewDimensionByWebGPUTextureType={textureCube:"cube",textureCubeArray:"cube-array",texture2D:"2d",texture2DArray:"2d-array",texture3D:"3d"},we._SamplerTypeByWebGLSamplerType={sampler2DShadow:"samplerShadow",sampler2DArrayShadow:"samplerShadow"},we._IsComparisonSamplerByWebGPUSamplerType={samplerShadow:!0,samplerArrayShadow:!0,sampler:!1};class Be{get isAsync(){return!1}get isReady(){return!!this.stages}constructor(e,t){this.bindGroupLayouts={},this._name="unnamed",this.shaderProcessingContext=e,this._leftOverUniformsByName={},this.engine=t,this.vertexBufferKindToType={}}_handlesSpectorRebuildCallback(){}_fillEffectInformation(e,t,r,s,n,i,a,o){const u=this.engine;u._doNotHandleContextLost&&(e._fragmentSourceCode="",e._vertexSourceCode="");const c=this.shaderProcessingContext.availableTextures;let h;for(h=0;h<n.length;h++){const e=n[h],t=c[n[h]];null==t||null==t?(n.splice(h,1),h--):i[e]=h}for(const e of u.getAttributes(this,a))o.push(e);this.buildUniformLayout();const l=[],d=[];for(h=0;h<a.length;h++){const e=o[h];e>=0&&(l.push(a[h]),d.push(e))}this.shaderProcessingContext.attributeNamesFromEffect=l,this.shaderProcessingContext.attributeLocationsFromEffect=d}buildUniformLayout(){if(this.shaderProcessingContext.leftOverUniforms.length){this.uniformBuffer?.dispose(),this.uniformBuffer=new i(this.engine,void 0,void 0,"leftOver-"+this._name);for(const e of this.shaderProcessingContext.leftOverUniforms){const t=e.type.replace(/^(.*?)(<.*>)?$/,"$1"),r=we.UniformSizes[t];this.uniformBuffer.addUniform(e.name,r,e.length),this._leftOverUniformsByName[e.name]=e.type}this.uniformBuffer.create()}}setEngine(e){this.engine=e}dispose(){this.uniformBuffer&&this.uniformBuffer.dispose()}setInt(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateInt(e,t)}setInt2(e,t,r){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateInt2(e,t,r)}setInt3(e,t,r,s){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateInt3(e,t,r,s)}setInt4(e,t,r,s,n){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateInt4(e,t,r,s,n)}setIntArray(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateIntArray(e,t)}setIntArray2(e,t){this.setIntArray(e,t)}setIntArray3(e,t){this.setIntArray(e,t)}setIntArray4(e,t){this.setIntArray(e,t)}setUInt(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateUInt(e,t)}setUInt2(e,t,r){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateUInt2(e,t,r)}setUInt3(e,t,r,s){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateUInt3(e,t,r,s)}setUInt4(e,t,r,s,n){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateUInt4(e,t,r,s,n)}setUIntArray(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateUIntArray(e,t)}setUIntArray2(e,t){this.setUIntArray(e,t)}setUIntArray3(e,t){this.setUIntArray(e,t)}setUIntArray4(e,t){this.setUIntArray(e,t)}setArray(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateArray(e,t)}setArray2(e,t){this.setArray(e,t)}setArray3(e,t){this.setArray(e,t)}setArray4(e,t){this.setArray(e,t)}setMatrices(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateMatrices(e,t)}setMatrix(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateMatrix(e,t)}setMatrix3x3(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateMatrix3x3(e,t)}setMatrix2x2(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateMatrix2x2(e,t)}setFloat(e,t){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateFloat(e,t)}setVector2(e,t){this.setFloat2(e,t.x,t.y)}setFloat2(e,t,r){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateFloat2(e,t,r)}setVector3(e,t){this.setFloat3(e,t.x,t.y,t.z)}setFloat3(e,t,r,s){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateFloat3(e,t,r,s)}setVector4(e,t){this.setFloat4(e,t.x,t.y,t.z,t.w)}setQuaternion(e,t){this.setFloat4(e,t.x,t.y,t.z,t.w)}setFloat4(e,t,r,s,n){this.uniformBuffer&&this._leftOverUniformsByName[e]&&this.uniformBuffer.updateFloat4(e,t,r,s,n)}setColor3(e,t){this.setFloat3(e,t.r,t.g,t.b)}setColor4(e,t,r){this.setFloat4(e,t.r,t.g,t.b,r)}setDirectColor4(e,t){this.setFloat4(e,t.r,t.g,t.b,t.a)}_getVertexShaderCode(){return this.sources?.vertex}_getFragmentShaderCode(){return this.sources?.fragment}}const Le={mat2:2,mat3:3,mat4:4,mat2x2:2,mat3x3:3,mat4x4:4};class Fe{static get KnownUBOs(){return Fe._SimplifiedKnownBindings?Fe._SimplifiedKnownUBOs:Fe._KnownUBOs}constructor(e,t=!1){this.vertexBufferKindToNumberOfComponents={},this.shaderLanguage=e,this._attributeNextLocation=0,this._varyingNextLocation=0,this.freeGroupIndex=0,this.freeBindingIndex=0,this.availableVaryings={},this.availableAttributes={},this.availableBuffers={},this.availableTextures={},this.availableSamplers={},this.orderedAttributes=[],this.bindGroupLayoutEntries=[],this.bindGroupLayoutEntryInfo=[],this.bindGroupEntries=[],this.bufferNames=[],this.textureNames=[],this.samplerNames=[],this.leftOverUniforms=[],t||this._findStartingGroupBinding()}_findStartingGroupBinding(){const e=Fe.KnownUBOs,t=[];for(const r in e){const s=e[r].binding;-1!==s.groupIndex&&(void 0===t[s.groupIndex]?t[s.groupIndex]=s.bindingIndex:t[s.groupIndex]=Math.max(t[s.groupIndex],s.bindingIndex))}this.freeGroupIndex=t.length-1,0===this.freeGroupIndex?(this.freeGroupIndex++,this.freeBindingIndex=0):this.freeBindingIndex=t[t.length-1]+1}getAttributeNextLocation(e,t=0){const r=this._attributeNextLocation;return this._attributeNextLocation+=(Le[e]??1)*(t||1),r}getVaryingNextLocation(e,t=0){const r=this._varyingNextLocation;return this._varyingNextLocation+=(Le[e]??1)*(t||1),r}getNextFreeUBOBinding(){return this._getNextFreeBinding(1)}_getNextFreeBinding(e){if(this.freeBindingIndex>65536-e&&(this.freeGroupIndex++,this.freeBindingIndex=0),4===this.freeGroupIndex)throw"Too many textures or UBOs have been declared and it is not supported in WebGPU.";const t={groupIndex:this.freeGroupIndex,bindingIndex:this.freeBindingIndex};return this.freeBindingIndex+=e,t}}function Pe(e,t,r,s){let n=s,i=0,a="";for(;n<r.length;){const s=r.charAt(n);if(a)s===a?'"'===a||"'"===a?"\\"!==r.charAt(n-1)&&(a=""):a="":"*/"===a&&"*"===s&&n+1<r.length&&("/"===r.charAt(n+1)&&(a=""),""===a&&n++);else switch(s){case e:i++;break;case t:i--;break;case'"':case"'":case"`":a=s;break;case"/":if(n+1<r.length){const e=r.charAt(n+1);"/"===e?a="\n":"*"===e&&(a="*/")}}if(n++,0===i)break}return 0===i?n-1:-1}function De(e,t){for(;t<e.length;){const r=e[t];if(" "!==r&&"\n"!==r&&"\r"!==r&&"\t"!==r&&"\n"!==r&&" "!==r)break;t++}return t}function Me(e){const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||95==t}function Ue(e){let t=0,r="",s=!1;const n=[];for(;t<e.length;){const i=e.charAt(t);if(r)i===r?'"'===r||"'"===r?("\\"!==e.charAt(t-1)&&(r=""),n.push(i)):(r="",s=!1):"*/"===r&&"*"===i&&t+1<e.length?("/"===e.charAt(t+1)&&(r=""),""===r&&(s=!1,t++)):s||n.push(i);else{switch(i){case'"':case"'":case"`":r=i;break;case"/":if(t+1<e.length){const n=e.charAt(t+1);"/"===n?(r="\n",s=!0):"*"===n&&(r="*/",s=!0)}}s||n.push(i)}t++}return n.join("")}function Oe(e,t,r,s){for(;t>=0&&e.charAt(t)!==r&&e.charAt(t)!==s;)t--;return t}function Ge(e,t,r,s){let n=e.indexOf(t);if(n<0)return e;if(r){for(;n++<e.length&&"{"!=e.charAt(n););if(n<e.length){const t=e.substring(0,n+1),s=e.substring(n+1);e=t+r+s}}if(s){const t=e.lastIndexOf("}");e=e.substring(0,t),e+=s+"\n}"}return e}Fe._SimplifiedKnownBindings=!0,Fe._SimplifiedKnownUBOs={Scene:{binding:{groupIndex:0,bindingIndex:0}},Light0:{binding:{groupIndex:-1,bindingIndex:-1}},Light1:{binding:{groupIndex:-1,bindingIndex:-1}},Light2:{binding:{groupIndex:-1,bindingIndex:-1}},Light3:{binding:{groupIndex:-1,bindingIndex:-1}},Light4:{binding:{groupIndex:-1,bindingIndex:-1}},Light5:{binding:{groupIndex:-1,bindingIndex:-1}},Light6:{binding:{groupIndex:-1,bindingIndex:-1}},Light7:{binding:{groupIndex:-1,bindingIndex:-1}},Light8:{binding:{groupIndex:-1,bindingIndex:-1}},Light9:{binding:{groupIndex:-1,bindingIndex:-1}},Light10:{binding:{groupIndex:-1,bindingIndex:-1}},Light11:{binding:{groupIndex:-1,bindingIndex:-1}},Light12:{binding:{groupIndex:-1,bindingIndex:-1}},Light13:{binding:{groupIndex:-1,bindingIndex:-1}},Light14:{binding:{groupIndex:-1,bindingIndex:-1}},Light15:{binding:{groupIndex:-1,bindingIndex:-1}},Light16:{binding:{groupIndex:-1,bindingIndex:-1}},Light17:{binding:{groupIndex:-1,bindingIndex:-1}},Light18:{binding:{groupIndex:-1,bindingIndex:-1}},Light19:{binding:{groupIndex:-1,bindingIndex:-1}},Light20:{binding:{groupIndex:-1,bindingIndex:-1}},Light21:{binding:{groupIndex:-1,bindingIndex:-1}},Light22:{binding:{groupIndex:-1,bindingIndex:-1}},Light23:{binding:{groupIndex:-1,bindingIndex:-1}},Light24:{binding:{groupIndex:-1,bindingIndex:-1}},Light25:{binding:{groupIndex:-1,bindingIndex:-1}},Light26:{binding:{groupIndex:-1,bindingIndex:-1}},Light27:{binding:{groupIndex:-1,bindingIndex:-1}},Light28:{binding:{groupIndex:-1,bindingIndex:-1}},Light29:{binding:{groupIndex:-1,bindingIndex:-1}},Light30:{binding:{groupIndex:-1,bindingIndex:-1}},Light31:{binding:{groupIndex:-1,bindingIndex:-1}},Material:{binding:{groupIndex:-1,bindingIndex:-1}},Mesh:{binding:{groupIndex:-1,bindingIndex:-1}},Internals:{binding:{groupIndex:-1,bindingIndex:-1}}},Fe._KnownUBOs={Scene:{binding:{groupIndex:0,bindingIndex:0}},Light0:{binding:{groupIndex:1,bindingIndex:0}},Light1:{binding:{groupIndex:1,bindingIndex:1}},Light2:{binding:{groupIndex:1,bindingIndex:2}},Light3:{binding:{groupIndex:1,bindingIndex:3}},Light4:{binding:{groupIndex:1,bindingIndex:4}},Light5:{binding:{groupIndex:1,bindingIndex:5}},Light6:{binding:{groupIndex:1,bindingIndex:6}},Light7:{binding:{groupIndex:1,bindingIndex:7}},Light8:{binding:{groupIndex:1,bindingIndex:8}},Light9:{binding:{groupIndex:1,bindingIndex:9}},Light10:{binding:{groupIndex:1,bindingIndex:10}},Light11:{binding:{groupIndex:1,bindingIndex:11}},Light12:{binding:{groupIndex:1,bindingIndex:12}},Light13:{binding:{groupIndex:1,bindingIndex:13}},Light14:{binding:{groupIndex:1,bindingIndex:14}},Light15:{binding:{groupIndex:1,bindingIndex:15}},Light16:{binding:{groupIndex:1,bindingIndex:16}},Light17:{binding:{groupIndex:1,bindingIndex:17}},Light18:{binding:{groupIndex:1,bindingIndex:18}},Light19:{binding:{groupIndex:1,bindingIndex:19}},Light20:{binding:{groupIndex:1,bindingIndex:20}},Light21:{binding:{groupIndex:1,bindingIndex:21}},Light22:{binding:{groupIndex:1,bindingIndex:22}},Light23:{binding:{groupIndex:1,bindingIndex:23}},Light24:{binding:{groupIndex:1,bindingIndex:24}},Light25:{binding:{groupIndex:1,bindingIndex:25}},Light26:{binding:{groupIndex:1,bindingIndex:26}},Light27:{binding:{groupIndex:1,bindingIndex:27}},Light28:{binding:{groupIndex:1,bindingIndex:28}},Light29:{binding:{groupIndex:1,bindingIndex:29}},Light30:{binding:{groupIndex:1,bindingIndex:30}},Light31:{binding:{groupIndex:1,bindingIndex:31}},Material:{binding:{groupIndex:2,bindingIndex:0}},Mesh:{binding:{groupIndex:2,bindingIndex:1}},Internals:{binding:{groupIndex:2,bindingIndex:2}}};class Ne extends we{constructor(){super(...arguments),this._missingVaryings=[],this._textureArrayProcessing=[],this._vertexIsGLES3=!1,this._fragmentIsGLES3=!1,this.shaderLanguage=0,this.parseGLES3=!0}_getArraySize(e,t,r){let s=0;const n=e.indexOf("["),i=e.indexOf("]");if(n>0&&i>0){const t=e.substring(n+1,i);s=+t,isNaN(s)&&(s=+r[t.trim()]),e=e.substring(0,n)}return[e,t,s]}initializeShaders(e){this._webgpuProcessingContext=e,this._missingVaryings.length=0,this._textureArrayProcessing.length=0,this.attributeKeywordName=void 0,this.varyingVertexKeywordName=void 0,this.varyingFragmentKeywordName=void 0}preProcessShaderCode(e,t){const r=`// Internals UBO\nuniform ${we.InternalsUBOName} {\nfloat yFactor_;\nfloat textureOutputHeight_;\n};\n`,s=-1!==e.indexOf("// Internals UBO");return t?(this._fragmentIsGLES3=-1!==e.indexOf("#version 3"),this._fragmentIsGLES3&&(this.varyingFragmentKeywordName="in"),s?e:r+"##INJECTCODE##\n"+e):(this._vertexIsGLES3=-1!==e.indexOf("#version 3"),this._vertexIsGLES3&&(this.attributeKeywordName="in",this.varyingVertexKeywordName="out"),s?e:r+e)}varyingCheck(e,t){return(t&&this._fragmentIsGLES3?/(flat\s)?\s*\bin\b/:!t&&this._vertexIsGLES3?/(flat\s)?\s*\bout\b/:/(flat\s)?\s*\bvarying\b/).test(e)}varyingProcessor(e,t,r){this._preProcessors=r;const s=(t&&this._fragmentIsGLES3?/\s*(flat)?\s*in\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/gm:!t&&this._vertexIsGLES3?/\s*(flat)?\s*out\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/gm:/\s*(flat)?\s*varying\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/gm).exec(e);if(null!==s){const i=s[1]??"",a=s[2],o=s[3];let u;t?(u=this._webgpuProcessingContext.availableVaryings[o],this._missingVaryings[u]="",void 0===u&&n.Warn(`Invalid fragment shader: The varying named "${o}" is not declared in the vertex shader! This declaration will be ignored.`)):(u=this._webgpuProcessingContext.getVaryingNextLocation(a,this._getArraySize(o,a,r)[2]),this._webgpuProcessingContext.availableVaryings[o]=u,this._missingVaryings[u]=`layout(location = ${u}) ${i} in ${a} ${o};`),e=e.replace(s[0],void 0===u?"":`layout(location = ${u}) ${i} ${t?"in":"out"} ${a} ${o};`)}return e}attributeProcessor(e,t){this._preProcessors=t;const r=(this._vertexIsGLES3?/\s*in\s+(\S+)\s+(\S+)\s*;/gm:/\s*attribute\s+(\S+)\s+(\S+)\s*;/gm).exec(e);if(null!==r){const s=r[1],n=r[2],i=this._webgpuProcessingContext.getAttributeNextLocation(s,this._getArraySize(n,s,t)[2]);this._webgpuProcessingContext.availableAttributes[n]=i,this._webgpuProcessingContext.orderedAttributes[i]=n;const a=this._webgpuProcessingContext.vertexBufferKindToNumberOfComponents[n];if(void 0!==a){const t=a<0?-1===a?"int":"ivec"+-a:1===a?"uint":"uvec"+a,o=`_int_${n}_`;e=e.replace(r[0],`layout(location = ${i}) in ${t} ${o}; ${s} ${n} = ${s}(${o});`)}else e=e.replace(r[0],`layout(location = ${i}) in ${s} ${n};`)}return e}uniformProcessor(e,r,s){this._preProcessors=s;const n=/\s*uniform\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/gm.exec(e);if(null!==n){let i=n[1],a=n[2];if(0===i.indexOf("sampler")||1===i.indexOf("sampler")){let n=0;[a,i,n]=this._getArraySize(a,i,s);let o=this._webgpuProcessingContext.availableTextures[a];if(!o){o={autoBindSampler:!0,isTextureArray:n>0,isStorageTexture:!1,textures:[],sampleType:"float"};for(let e=0;e<(n||1);++e)o.textures.push(this._webgpuProcessingContext.getNextFreeUBOBinding())}const u=we._SamplerTypeByWebGLSamplerType[i]??"sampler",c=!!we._IsComparisonSamplerByWebGPUSamplerType[u],h=c?"comparison":"filtering",l=a+t.AUTOSAMPLERSUFFIX;let d=this._webgpuProcessingContext.availableSamplers[l];d||(d={binding:this._webgpuProcessingContext.getNextFreeUBOBinding(),type:h});const p="u"===i.charAt(0)?"u":"i"===i.charAt(0)?"i":"";p&&(i=i.substring(1));const _=c?"depth":"u"===p?"uint":"i"===p?"sint":"float";o.sampleType=_;const g=n>0,f=d.binding.groupIndex,m=d.binding.bindingIndex,b=we._SamplerFunctionByWebGLSamplerType[i],x=we._TextureTypeByWebGLSamplerType[i],T=we._GpuTextureViewDimensionByWebGPUTextureType[x];if(g){const t=[];t.push(`layout(set = ${f}, binding = ${m}) uniform ${p}${u} ${l};`),e="\n";for(let r=0;r<n;++r){const s=o.textures[r].groupIndex,n=o.textures[r].bindingIndex;t.push(`layout(set = ${s}, binding = ${n}) uniform ${x} ${a}Texture${r};`),e+=`${r>0?"\n":""}#define ${a}${r} ${p}${b}(${a}Texture${r}, ${l})`}e=t.join("\n")+e,this._textureArrayProcessing.push(a)}else n=1,e=`layout(set = ${f}, binding = ${m}) uniform ${u} ${l};\n layout(set = ${o.textures[0].groupIndex}, binding = ${o.textures[0].bindingIndex}) uniform ${p}${x} ${a}Texture;\n #define ${a} ${p}${b}(${a}Texture, ${l})`;this._webgpuProcessingContext.availableTextures[a]=o,this._webgpuProcessingContext.availableSamplers[l]=d,this._addSamplerBindingDescription(l,d,!r);for(let e=0;e<n;++e)this._addTextureBindingDescription(a,o,e,T,null,!r)}else this._addUniformToLeftOverUBO(a,i,s),e=""}return e}uniformBufferProcessor(e,t){const r=/uniform\s+(\w+)/gm.exec(e);if(null!==r){const s=r[1];let n=this._webgpuProcessingContext.availableBuffers[s];if(!n){const e=Fe.KnownUBOs[s];let t;t=e&&-1!==e.binding.groupIndex?e.binding:this._webgpuProcessingContext.getNextFreeUBOBinding(),n={binding:t},this._webgpuProcessingContext.availableBuffers[s]=n}this._addBufferBindingDescription(s,n,"uniform",!t),e=e.replace("uniform",`layout(set = ${n.binding.groupIndex}, binding = ${n.binding.bindingIndex}) uniform`)}return e}postProcessor(e,t,r,s,n){const i=-1!==e.search(/#extension.+GL_EXT_draw_buffers.+require/);if(e=(e=e.replace(/#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g,"")).replace(/texture2D\s*\(/g,"texture("),r){const t=e.indexOf("gl_FragCoord")>=0,r="\n glFragCoord_ = gl_FragCoord;\n if (yFactor_ == 1.) {\n glFragCoord_.y = textureOutputHeight_ - glFragCoord_.y;\n }\n ",s=t?"vec4 glFragCoord_;\n":"",n=-1!==e.search(/layout *\(location *= *0\) *out/g);if(e=(e=(e=(e=(e=(e=(e=e.replace(/texture2DLodEXT\s*\(/g,"textureLod(")).replace(/textureCubeLodEXT\s*\(/g,"textureLod(")).replace(/textureCube\s*\(/g,"texture(")).replace(/gl_FragDepthEXT/g,"gl_FragDepth")).replace(/gl_FragColor/g,"glFragColor")).replace(/gl_FragData/g,"glFragData")).replace(/gl