@babylonjs/core 7.25.2 → 7.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Engines/Extensions/engine.prefilteredCubeTexture.d.ts +0 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.js +0 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.readTexture.d.ts +2 -9
- package/Engines/Extensions/engine.readTexture.js +3 -76
- package/Engines/Extensions/engine.readTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.alpha.js +3 -3
- package/Engines/WebGPU/Extensions/engine.alpha.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js +5 -5
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.js +10 -10
- package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.readTexture.js +3 -3
- package/Engines/WebGPU/Extensions/engine.readTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js +6 -6
- package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.js +2 -2
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTargetTexture.js +2 -2
- package/Engines/WebGPU/Extensions/engine.renderTargetTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js +1 -1
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +2 -2
- package/Engines/WebGPU/webgpuRenderTargetWrapper.js.map +1 -1
- package/Engines/abstractEngine.d.ts +2 -0
- package/Engines/abstractEngine.functions.d.ts +9 -0
- package/Engines/abstractEngine.functions.js +76 -0
- package/Engines/abstractEngine.functions.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/engine.d.ts +7 -5
- package/Engines/engine.js +7 -0
- package/Engines/engine.js.map +1 -1
- package/Engines/thinWebGPUEngine.d.ts +66 -0
- package/Engines/thinWebGPUEngine.js +120 -0
- package/Engines/thinWebGPUEngine.js.map +1 -0
- package/Engines/webgpuEngine.d.ts +9 -58
- package/Engines/webgpuEngine.js +9 -108
- package/Engines/webgpuEngine.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.d.ts +4 -0
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +17 -0
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.d.ts +2 -0
- package/Materials/Node/Blocks/Dual/textureBlock.js +30 -23
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorConverterBlock.d.ts +36 -0
- package/Materials/Node/Blocks/colorConverterBlock.js +192 -0
- package/Materials/Node/Blocks/colorConverterBlock.js.map +1 -0
- package/Materials/Node/Blocks/index.d.ts +4 -0
- package/Materials/Node/Blocks/index.js +4 -0
- package/Materials/Node/Blocks/index.js.map +1 -1
- package/Materials/Node/Blocks/loopBlock.d.ts +49 -0
- package/Materials/Node/Blocks/loopBlock.js +110 -0
- package/Materials/Node/Blocks/loopBlock.js.map +1 -0
- package/Materials/Node/Blocks/storageReadBlock.d.ts +27 -0
- package/Materials/Node/Blocks/storageReadBlock.js +52 -0
- package/Materials/Node/Blocks/storageReadBlock.js.map +1 -0
- package/Materials/Node/Blocks/storageWriteBlock.d.ts +31 -0
- package/Materials/Node/Blocks/storageWriteBlock.js +62 -0
- package/Materials/Node/Blocks/storageWriteBlock.js.map +1 -0
- package/Materials/Node/nodeMaterial.d.ts +1 -0
- package/Materials/Node/nodeMaterial.js +44 -12
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.d.ts +6 -0
- package/Materials/Node/nodeMaterialBlock.js +46 -3
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBlockConnectionPoint.d.ts +6 -0
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js +9 -0
- package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +4 -1
- package/Materials/Node/nodeMaterialBuildState.js +2 -0
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Textures/Filtering/hdrFiltering.d.ts +0 -1
- package/Materials/Textures/Filtering/hdrFiltering.js +0 -1
- package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
- package/Materials/Textures/Loaders/basisTextureLoader.d.ts +0 -1
- package/Materials/Textures/Loaders/basisTextureLoader.js +0 -1
- package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.d.ts +0 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js +0 -1
- package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.d.ts +0 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js +0 -1
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.d.ts +0 -2
- package/Materials/Textures/Procedurals/proceduralTexture.js +0 -2
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/baseTexture.d.ts +0 -1
- package/Materials/Textures/baseTexture.js +0 -1
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/colorGradingTexture.d.ts +0 -1
- package/Materials/Textures/colorGradingTexture.js +0 -2
- package/Materials/Textures/colorGradingTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.d.ts +0 -2
- package/Materials/Textures/cubeTexture.js +0 -2
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/equiRectangularCubeTexture.d.ts +0 -1
- package/Materials/Textures/equiRectangularCubeTexture.js +0 -1
- package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
- package/Materials/Textures/hdrCubeTexture.d.ts +0 -1
- package/Materials/Textures/hdrCubeTexture.js +0 -1
- package/Materials/Textures/hdrCubeTexture.js.map +1 -1
- package/Materials/Textures/rawCubeTexture.d.ts +0 -1
- package/Materials/Textures/rawCubeTexture.js +0 -1
- package/Materials/Textures/rawCubeTexture.js.map +1 -1
- package/Materials/Textures/rawTexture.d.ts +0 -1
- package/Materials/Textures/rawTexture.js +0 -1
- package/Materials/Textures/rawTexture.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.d.ts +0 -1
- package/Materials/Textures/rawTexture2DArray.js +0 -1
- package/Materials/Textures/rawTexture2DArray.js.map +1 -1
- package/Materials/Textures/rawTexture3D.d.ts +0 -1
- package/Materials/Textures/rawTexture3D.js +0 -1
- package/Materials/Textures/rawTexture3D.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +2 -3
- package/Materials/Textures/renderTargetTexture.js +13 -5
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/effectRenderer.d.ts +0 -1
- package/Materials/effectRenderer.js +0 -2
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/material.detailMapConfiguration.d.ts +2 -2
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +0 -1
- package/Materials/uniformBuffer.js +0 -1
- package/Materials/uniformBuffer.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +3 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +19 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Misc/basis.d.ts +3 -3
- package/Misc/basis.js.map +1 -1
- package/Misc/dds.d.ts +0 -1
- package/Misc/dds.js +0 -1
- package/Misc/dds.js.map +1 -1
- package/Misc/dumpTools.js +103 -82
- package/Misc/dumpTools.js.map +1 -1
- package/Misc/environmentTextureTools.d.ts +0 -2
- package/Misc/environmentTextureTools.js +0 -2
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/index.d.ts +2 -0
- package/Misc/index.js +3 -0
- package/Misc/index.js.map +1 -1
- package/Misc/minMaxReducer.d.ts +0 -1
- package/Misc/minMaxReducer.js +0 -1
- package/Misc/minMaxReducer.js.map +1 -1
- package/Misc/rgbdTextureTools.d.ts +0 -2
- package/Misc/rgbdTextureTools.js +5 -10
- package/Misc/rgbdTextureTools.js.map +1 -1
- package/Misc/screenshotTools.d.ts +0 -1
- package/Misc/screenshotTools.js +0 -1
- package/Misc/screenshotTools.js.map +1 -1
- package/Misc/textureTools.d.ts +0 -2
- package/Misc/textureTools.js +11 -2
- package/Misc/textureTools.js.map +1 -1
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.js.map +1 -1
- package/PostProcesses/anaglyphPostProcess.d.ts +2 -2
- package/PostProcesses/anaglyphPostProcess.js.map +1 -1
- package/PostProcesses/highlightsPostProcess.d.ts +2 -2
- package/PostProcesses/highlightsPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +0 -2
- package/PostProcesses/postProcess.js +0 -2
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/stereoscopicInterlacePostProcess.d.ts +3 -3
- package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.d.ts +2 -2
- package/PostProcesses/tonemapPostProcess.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ThinWebGPUEngine } from "./thinWebGPUEngine";
|
|
1
2
|
import type { Nullable, DataArray, IndicesArray, Immutable, FloatArray } from "../types";
|
|
2
3
|
import { InternalTexture, InternalTextureSource } from "../Materials/Textures/internalTexture";
|
|
3
4
|
import type { IEffectCreationOptions, IShaderPath } from "../Materials/effect";
|
|
@@ -9,7 +10,6 @@ import type { DataBuffer } from "../Buffers/dataBuffer";
|
|
|
9
10
|
import type { BaseTexture } from "../Materials/Textures/baseTexture";
|
|
10
11
|
import type { IShaderProcessor } from "./Processors/iShaderProcessor";
|
|
11
12
|
import type { ShaderProcessingContext } from "./Processors/shaderProcessingOptions";
|
|
12
|
-
import { WebGPUTextureManager } from "./WebGPU/webgpuTextureManager";
|
|
13
13
|
import { AbstractEngine } from "./abstractEngine";
|
|
14
14
|
import type { ISceneLike, AbstractEngineOptions } from "./abstractEngine";
|
|
15
15
|
import { WebGPUBufferManager } from "./WebGPU/webgpuBufferManager";
|
|
@@ -17,13 +17,10 @@ import type { HardwareTextureWrapper } from "../Materials/Textures/hardwareTextu
|
|
|
17
17
|
import { WebGPUHardwareTexture } from "./WebGPU/webgpuHardwareTexture";
|
|
18
18
|
import type { IColor4Like } from "../Maths/math.like";
|
|
19
19
|
import { WebGPUCacheSampler } from "./WebGPU/webgpuCacheSampler";
|
|
20
|
-
import type { WebGPUCacheRenderPipeline } from "./WebGPU/webgpuCacheRenderPipeline";
|
|
21
20
|
import type { DrawWrapper } from "../Materials/drawWrapper";
|
|
22
21
|
import { WebGPUMaterialContext } from "./WebGPU/webgpuMaterialContext";
|
|
23
22
|
import { WebGPUDrawContext } from "./WebGPU/webgpuDrawContext";
|
|
24
23
|
import type { IStencilState } from "../States/IStencilState";
|
|
25
|
-
import { WebGPUBundleList } from "./WebGPU/webgpuBundleList";
|
|
26
|
-
import { WebGPUTimestampQuery } from "./WebGPU/webgpuTimestampQuery";
|
|
27
24
|
import type { ComputeEffect } from "../Compute/computeEffect";
|
|
28
25
|
import { WebGPUOcclusionQuery } from "./WebGPU/webgpuOcclusionQuery";
|
|
29
26
|
import type { TwgslOptions } from "./WebGPU/webgpuTintWASM";
|
|
@@ -33,7 +30,6 @@ import type { InternalTextureCreationOptions, TextureSize } from "../Materials/T
|
|
|
33
30
|
import type { WebGPUDataBuffer } from "../Meshes/WebGPU/webgpuDataBuffer";
|
|
34
31
|
import "../Buffers/buffer.align";
|
|
35
32
|
import type { RenderTargetWrapper } from "./renderTargetWrapper";
|
|
36
|
-
import { WebGPUPerfCounter } from "./WebGPU/webgpuPerfCounter";
|
|
37
33
|
import type { Scene } from "../scene";
|
|
38
34
|
import { PerformanceMonitor } from "../Misc/performanceMonitor";
|
|
39
35
|
import "./AbstractEngine/abstractEngine.loadingScreen";
|
|
@@ -43,6 +39,13 @@ import "./AbstractEngine/abstractEngine.renderPass";
|
|
|
43
39
|
import "../Audio/audioEngine";
|
|
44
40
|
import type { TextureSampler } from "../Materials/Textures/textureSampler";
|
|
45
41
|
import type { StorageBuffer } from "../Buffers/storageBuffer";
|
|
42
|
+
import "./WebGPU/Extensions/engine.alpha";
|
|
43
|
+
import "./WebGPU/Extensions/engine.rawTexture";
|
|
44
|
+
import "./WebGPU/Extensions/engine.readTexture";
|
|
45
|
+
import "./WebGPU/Extensions/engine.cubeTexture";
|
|
46
|
+
import "./WebGPU/Extensions/engine.renderTarget";
|
|
47
|
+
import "./WebGPU/Extensions/engine.renderTargetTexture";
|
|
48
|
+
import "./WebGPU/Extensions/engine.renderTargetCube";
|
|
46
49
|
/** @internal */
|
|
47
50
|
interface IWebGPURenderPassWrapper {
|
|
48
51
|
renderPassDescriptor: Nullable<GPURenderPassDescriptor>;
|
|
@@ -118,7 +121,7 @@ export interface WebGPUEngineOptions extends AbstractEngineOptions, GPURequestAd
|
|
|
118
121
|
* The web GPU engine class provides support for WebGPU version of babylon.js.
|
|
119
122
|
* @since 5.0.0
|
|
120
123
|
*/
|
|
121
|
-
export declare class WebGPUEngine extends
|
|
124
|
+
export declare class WebGPUEngine extends ThinWebGPUEngine {
|
|
122
125
|
private static readonly _GlslangDefaultOptions;
|
|
123
126
|
private static _InstanceId;
|
|
124
127
|
/** A unique id to identify this instance */
|
|
@@ -150,23 +153,15 @@ export declare class WebGPUEngine extends AbstractEngine {
|
|
|
150
153
|
private _glslangOptions?;
|
|
151
154
|
private _twgslOptions?;
|
|
152
155
|
/** @internal */
|
|
153
|
-
_textureHelper: WebGPUTextureManager;
|
|
154
|
-
/** @internal */
|
|
155
156
|
_bufferManager: WebGPUBufferManager;
|
|
156
157
|
private _clearQuad;
|
|
157
158
|
/** @internal */
|
|
158
159
|
_cacheSampler: WebGPUCacheSampler;
|
|
159
|
-
/** @internal */
|
|
160
|
-
_cacheRenderPipeline: WebGPUCacheRenderPipeline;
|
|
161
160
|
private _cacheBindGroups;
|
|
162
161
|
private _emptyVertexBuffer;
|
|
163
162
|
/** @internal */
|
|
164
163
|
_mrtAttachments: number[];
|
|
165
164
|
/** @internal */
|
|
166
|
-
_timestampQuery: WebGPUTimestampQuery;
|
|
167
|
-
/** @internal */
|
|
168
|
-
_timestampIndex: number;
|
|
169
|
-
/** @internal */
|
|
170
165
|
_occlusionQuery: WebGPUOcclusionQuery;
|
|
171
166
|
/** @internal */
|
|
172
167
|
_compiledComputeEffects: {
|
|
@@ -207,22 +202,11 @@ export declare class WebGPUEngine extends AbstractEngine {
|
|
|
207
202
|
_ubInvertY: WebGPUDataBuffer;
|
|
208
203
|
/** @internal */
|
|
209
204
|
_ubDontInvertY: WebGPUDataBuffer;
|
|
210
|
-
/** @internal */
|
|
211
|
-
_uploadEncoder: GPUCommandEncoder;
|
|
212
|
-
/** @internal */
|
|
213
|
-
_renderEncoder: GPUCommandEncoder;
|
|
214
205
|
private _commandBuffers;
|
|
215
|
-
/** @internal */
|
|
216
|
-
_currentRenderPass: Nullable<GPURenderPassEncoder>;
|
|
217
206
|
private _mainRenderPassWrapper;
|
|
218
207
|
private _rttRenderPassWrapper;
|
|
219
208
|
/** @internal */
|
|
220
209
|
_pendingDebugCommands: Array<[string, Nullable<string>]>;
|
|
221
|
-
/**
|
|
222
|
-
* Used for both the compatibilityMode=false and the snapshot rendering modes (as both can't be enabled at the same time)
|
|
223
|
-
* @internal
|
|
224
|
-
*/
|
|
225
|
-
_bundleList: WebGPUBundleList;
|
|
226
210
|
private _defaultDrawContext;
|
|
227
211
|
private _defaultMaterialContext;
|
|
228
212
|
/** @internal */
|
|
@@ -233,20 +217,6 @@ export declare class WebGPUEngine extends AbstractEngine {
|
|
|
233
217
|
private _currentIndexBuffer;
|
|
234
218
|
private _colorWriteLocal;
|
|
235
219
|
private _forceEnableEffect;
|
|
236
|
-
/** @internal */
|
|
237
|
-
dbgShowShaderCode: boolean;
|
|
238
|
-
/** @internal */
|
|
239
|
-
dbgSanityChecks: boolean;
|
|
240
|
-
/** @internal */
|
|
241
|
-
dbgVerboseLogsForFirstFrames: boolean;
|
|
242
|
-
/** @internal */
|
|
243
|
-
dbgVerboseLogsNumFrames: number;
|
|
244
|
-
/** @internal */
|
|
245
|
-
dbgLogIfNotDrawWrapper: boolean;
|
|
246
|
-
/** @internal */
|
|
247
|
-
dbgShowEmptyEnableEffectCalls: boolean;
|
|
248
|
-
private _snapshotRendering;
|
|
249
|
-
protected _snapshotRenderingMode: number;
|
|
250
220
|
/**
|
|
251
221
|
* Gets or sets the snapshot rendering mode
|
|
252
222
|
*/
|
|
@@ -336,18 +306,6 @@ export declare class WebGPUEngine extends AbstractEngine {
|
|
|
336
306
|
*/
|
|
337
307
|
get compatibilityMode(): boolean;
|
|
338
308
|
set compatibilityMode(mode: boolean);
|
|
339
|
-
/**
|
|
340
|
-
* Enables or disables GPU timing measurements.
|
|
341
|
-
* Note that this is only supported if the "timestamp-query" extension is enabled in the options.
|
|
342
|
-
*/
|
|
343
|
-
get enableGPUTimingMeasurements(): boolean;
|
|
344
|
-
set enableGPUTimingMeasurements(enable: boolean);
|
|
345
|
-
/**
|
|
346
|
-
* Gets the GPU time spent in the main render pass for the last frame rendered (in nanoseconds).
|
|
347
|
-
* You have to enable the "timestamp-query" extension in the engine constructor options and set engine.enableGPUTimingMeasurements = true.
|
|
348
|
-
* It will only return time spent in the main pass, not additional render target / compute passes (if any)!
|
|
349
|
-
*/
|
|
350
|
-
readonly gpuTimeInFrameForMainPass?: WebGPUPerfCounter;
|
|
351
309
|
/** @internal */
|
|
352
310
|
get currentSampleCount(): number;
|
|
353
311
|
/**
|
|
@@ -450,7 +408,6 @@ export declare class WebGPUEngine extends AbstractEngine {
|
|
|
450
408
|
* @internal
|
|
451
409
|
*/
|
|
452
410
|
_getShaderProcessingContext(shaderLanguage: ShaderLanguage, pureMode: boolean): Nullable<ShaderProcessingContext>;
|
|
453
|
-
private _currentPassIsMainPass;
|
|
454
411
|
private _getCurrentRenderPass;
|
|
455
412
|
/** @internal */
|
|
456
413
|
_getCurrentRenderPassWrapper(): IWebGPURenderPassWrapper;
|
|
@@ -836,10 +793,6 @@ export declare class WebGPUEngine extends AbstractEngine {
|
|
|
836
793
|
* @param texture texture to generate the mipmaps for
|
|
837
794
|
*/
|
|
838
795
|
generateMipmaps(texture: InternalTexture): void;
|
|
839
|
-
/**
|
|
840
|
-
* @internal
|
|
841
|
-
*/
|
|
842
|
-
_generateMipmaps(texture: InternalTexture, commandEncoder?: GPUCommandEncoder): void;
|
|
843
796
|
/**
|
|
844
797
|
* Update a portion of an internal texture
|
|
845
798
|
* @param texture defines the texture to update
|
|
@@ -905,8 +858,6 @@ export declare class WebGPUEngine extends AbstractEngine {
|
|
|
905
858
|
_currentFrameBufferIsDefaultFrameBuffer(): boolean;
|
|
906
859
|
private _startRenderTargetRenderPass;
|
|
907
860
|
private _startMainRenderPass;
|
|
908
|
-
/** @internal */
|
|
909
|
-
_endCurrentRenderPass(): number;
|
|
910
861
|
/**
|
|
911
862
|
* Binds the frame buffer to the specified texture.
|
|
912
863
|
* @param texture The render target wrapper to render to
|
package/Engines/webgpuEngine.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* eslint-disable babylonjs/available */
|
|
2
2
|
import { Logger } from "../Misc/logger.js";
|
|
3
|
+
import { ThinWebGPUEngine } from "./thinWebGPUEngine.js";
|
|
3
4
|
import { Color4 } from "../Maths/math.js";
|
|
4
5
|
import { InternalTexture } from "../Materials/Textures/internalTexture.js";
|
|
5
6
|
import { Effect } from "../Materials/effect.js";
|
|
@@ -34,7 +35,6 @@ import { WebGPUTintWASM } from "./WebGPU/webgpuTintWASM.js";
|
|
|
34
35
|
import { WebGPUShaderProcessor } from "./WebGPU/webgpuShaderProcessor.js";
|
|
35
36
|
import { WebGPUSnapshotRendering } from "./WebGPU/webgpuSnapshotRendering.js";
|
|
36
37
|
import "../Buffers/buffer.align.js";
|
|
37
|
-
import { WebGPUPerfCounter } from "./WebGPU/webgpuPerfCounter.js";
|
|
38
38
|
import { SphericalPolynomial } from "../Maths/sphericalPolynomial.js";
|
|
39
39
|
import { PerformanceMonitor } from "../Misc/performanceMonitor.js";
|
|
40
40
|
import { CreateImageBitmapFromSource, ExitFullscreen, ExitPointerlock, GetFontOffset, RequestFullscreen, RequestPointerlock, ResizeImageBitmap, _CommonDispose, _CommonInit, } from "./engine.common.js";
|
|
@@ -47,6 +47,13 @@ import "./AbstractEngine/abstractEngine.renderPass.js";
|
|
|
47
47
|
import "../Audio/audioEngine.js";
|
|
48
48
|
import { resetCachedPipeline } from "../Materials/effect.functions.js";
|
|
49
49
|
import { WebGPUExternalTexture } from "./WebGPU/webgpuExternalTexture.js";
|
|
50
|
+
import "./WebGPU/Extensions/engine.alpha.js";
|
|
51
|
+
import "./WebGPU/Extensions/engine.rawTexture.js";
|
|
52
|
+
import "./WebGPU/Extensions/engine.readTexture.js";
|
|
53
|
+
import "./WebGPU/Extensions/engine.cubeTexture.js";
|
|
54
|
+
import "./WebGPU/Extensions/engine.renderTarget.js";
|
|
55
|
+
import "./WebGPU/Extensions/engine.renderTargetTexture.js";
|
|
56
|
+
import "./WebGPU/Extensions/engine.renderTargetCube.js";
|
|
50
57
|
const viewDescriptorSwapChainAntialiasing = {
|
|
51
58
|
label: `TextureView_SwapChain_ResolveTarget`,
|
|
52
59
|
dimension: "2d" /* WebGPUConstants.TextureDimension.E2d */,
|
|
@@ -66,7 +73,7 @@ const tempColor4 = new Color4();
|
|
|
66
73
|
* The web GPU engine class provides support for WebGPU version of babylon.js.
|
|
67
74
|
* @since 5.0.0
|
|
68
75
|
*/
|
|
69
|
-
export class WebGPUEngine extends
|
|
76
|
+
export class WebGPUEngine extends ThinWebGPUEngine {
|
|
70
77
|
/**
|
|
71
78
|
* Gets or sets the snapshot rendering mode
|
|
72
79
|
*/
|
|
@@ -215,20 +222,6 @@ export class WebGPUEngine extends AbstractEngine {
|
|
|
215
222
|
set compatibilityMode(mode) {
|
|
216
223
|
this._compatibilityMode = mode;
|
|
217
224
|
}
|
|
218
|
-
/**
|
|
219
|
-
* Enables or disables GPU timing measurements.
|
|
220
|
-
* Note that this is only supported if the "timestamp-query" extension is enabled in the options.
|
|
221
|
-
*/
|
|
222
|
-
get enableGPUTimingMeasurements() {
|
|
223
|
-
return this._timestampQuery.enable;
|
|
224
|
-
}
|
|
225
|
-
set enableGPUTimingMeasurements(enable) {
|
|
226
|
-
if (this._timestampQuery.enable === enable) {
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
this.gpuTimeInFrameForMainPass = enable ? new WebGPUPerfCounter() : undefined;
|
|
230
|
-
this._timestampQuery.enable = enable;
|
|
231
|
-
}
|
|
232
225
|
/** @internal */
|
|
233
226
|
get currentSampleCount() {
|
|
234
227
|
return this._currentRenderTarget ? this._currentRenderTarget.samples : this._mainPassSampleCount;
|
|
@@ -274,8 +267,6 @@ export class WebGPUEngine extends AbstractEngine {
|
|
|
274
267
|
description: "",
|
|
275
268
|
};
|
|
276
269
|
/** @internal */
|
|
277
|
-
this._timestampIndex = 0;
|
|
278
|
-
/** @internal */
|
|
279
270
|
this._compiledComputeEffects = {};
|
|
280
271
|
/** @internal */
|
|
281
272
|
this._counters = {
|
|
@@ -305,8 +296,6 @@ export class WebGPUEngine extends AbstractEngine {
|
|
|
305
296
|
this._virtualScenes = new Array();
|
|
306
297
|
this._commandBuffers = [null, null];
|
|
307
298
|
// Frame Buffer Life Cycle (recreated for each render target pass)
|
|
308
|
-
/** @internal */
|
|
309
|
-
this._currentRenderPass = null;
|
|
310
299
|
this._mainRenderPassWrapper = {
|
|
311
300
|
renderPassDescriptor: null,
|
|
312
301
|
colorAttachmentViewDescriptor: null,
|
|
@@ -327,20 +316,6 @@ export class WebGPUEngine extends AbstractEngine {
|
|
|
327
316
|
this._currentIndexBuffer = null;
|
|
328
317
|
this._colorWriteLocal = true;
|
|
329
318
|
this._forceEnableEffect = false;
|
|
330
|
-
// TODO WEBGPU remove those variables when code stabilized
|
|
331
|
-
/** @internal */
|
|
332
|
-
this.dbgShowShaderCode = false;
|
|
333
|
-
/** @internal */
|
|
334
|
-
this.dbgSanityChecks = true;
|
|
335
|
-
/** @internal */
|
|
336
|
-
this.dbgVerboseLogsForFirstFrames = false;
|
|
337
|
-
/** @internal */
|
|
338
|
-
this.dbgVerboseLogsNumFrames = 10;
|
|
339
|
-
/** @internal */
|
|
340
|
-
this.dbgLogIfNotDrawWrapper = true;
|
|
341
|
-
/** @internal */
|
|
342
|
-
this.dbgShowEmptyEnableEffectCalls = true;
|
|
343
|
-
this._snapshotRenderingMode = 0;
|
|
344
319
|
/**
|
|
345
320
|
* Indicates if the z range in NDC space is 0..1 (value: true) or -1..1 (value: false)
|
|
346
321
|
*/
|
|
@@ -917,9 +892,6 @@ export class WebGPUEngine extends AbstractEngine {
|
|
|
917
892
|
_getShaderProcessingContext(shaderLanguage, pureMode) {
|
|
918
893
|
return new WebGPUShaderProcessingContext(shaderLanguage, pureMode);
|
|
919
894
|
}
|
|
920
|
-
_currentPassIsMainPass() {
|
|
921
|
-
return this._currentRenderTarget === null;
|
|
922
|
-
}
|
|
923
895
|
_getCurrentRenderPass() {
|
|
924
896
|
if (this._currentRenderTarget && !this._currentRenderPass) {
|
|
925
897
|
// delayed creation of the render target pass, but we now need to create it as we are requested the render pass
|
|
@@ -2139,45 +2111,6 @@ export class WebGPUEngine extends AbstractEngine {
|
|
|
2139
2111
|
generateMipmaps(texture) {
|
|
2140
2112
|
this._generateMipmaps(texture);
|
|
2141
2113
|
}
|
|
2142
|
-
/**
|
|
2143
|
-
* @internal
|
|
2144
|
-
*/
|
|
2145
|
-
_generateMipmaps(texture, commandEncoder) {
|
|
2146
|
-
commandEncoder = commandEncoder ?? this._renderEncoder;
|
|
2147
|
-
const gpuHardwareTexture = texture._hardwareTexture;
|
|
2148
|
-
if (!gpuHardwareTexture) {
|
|
2149
|
-
return;
|
|
2150
|
-
}
|
|
2151
|
-
if (commandEncoder === this._renderEncoder) {
|
|
2152
|
-
// We must close the current pass (if any) because we are going to use the render encoder to generate the mipmaps (so, we are going to create a new render pass)
|
|
2153
|
-
this._endCurrentRenderPass();
|
|
2154
|
-
}
|
|
2155
|
-
const format = texture._hardwareTexture.format;
|
|
2156
|
-
const mipmapCount = WebGPUTextureHelper.ComputeNumMipmapLevels(texture.width, texture.height);
|
|
2157
|
-
if (this.dbgVerboseLogsForFirstFrames) {
|
|
2158
|
-
if (this._count === undefined) {
|
|
2159
|
-
this._count = 0;
|
|
2160
|
-
}
|
|
2161
|
-
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
2162
|
-
Logger.Log("frame #" +
|
|
2163
|
-
this._count +
|
|
2164
|
-
" - generate mipmaps - width=" +
|
|
2165
|
-
texture.width +
|
|
2166
|
-
", height=" +
|
|
2167
|
-
texture.height +
|
|
2168
|
-
", isCube=" +
|
|
2169
|
-
texture.isCube +
|
|
2170
|
-
", command encoder=" +
|
|
2171
|
-
(commandEncoder === this._renderEncoder ? "render" : "copy"));
|
|
2172
|
-
}
|
|
2173
|
-
}
|
|
2174
|
-
if (texture.isCube) {
|
|
2175
|
-
this._textureHelper.generateCubeMipmaps(gpuHardwareTexture, format, mipmapCount, commandEncoder);
|
|
2176
|
-
}
|
|
2177
|
-
else {
|
|
2178
|
-
this._textureHelper.generateMipmaps(gpuHardwareTexture, format, mipmapCount, 0, texture.is3D, commandEncoder);
|
|
2179
|
-
}
|
|
2180
|
-
}
|
|
2181
2114
|
/**
|
|
2182
2115
|
* Update a portion of an internal texture
|
|
2183
2116
|
* @param texture defines the texture to update
|
|
@@ -2586,38 +2519,6 @@ export class WebGPUEngine extends AbstractEngine {
|
|
|
2586
2519
|
this._stencilStateComposer.enabled = false;
|
|
2587
2520
|
}
|
|
2588
2521
|
}
|
|
2589
|
-
/** @internal */
|
|
2590
|
-
_endCurrentRenderPass() {
|
|
2591
|
-
if (!this._currentRenderPass) {
|
|
2592
|
-
return 0;
|
|
2593
|
-
}
|
|
2594
|
-
const currentPassIndex = this._currentPassIsMainPass() ? 2 : 1;
|
|
2595
|
-
if (!this._snapshotRendering.endRenderPass(this._currentRenderPass) && !this.compatibilityMode) {
|
|
2596
|
-
this._bundleList.run(this._currentRenderPass);
|
|
2597
|
-
this._bundleList.reset();
|
|
2598
|
-
}
|
|
2599
|
-
this._currentRenderPass.end();
|
|
2600
|
-
this._timestampQuery.endPass(this._timestampIndex, (this._currentRenderTarget && this._currentRenderTarget.gpuTimeInFrame
|
|
2601
|
-
? this._currentRenderTarget.gpuTimeInFrame
|
|
2602
|
-
: this.gpuTimeInFrameForMainPass));
|
|
2603
|
-
this._timestampIndex += 2;
|
|
2604
|
-
if (this.dbgVerboseLogsForFirstFrames) {
|
|
2605
|
-
if (this._count === undefined) {
|
|
2606
|
-
this._count = 0;
|
|
2607
|
-
}
|
|
2608
|
-
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
2609
|
-
Logger.Log("frame #" +
|
|
2610
|
-
this._count +
|
|
2611
|
-
" - " +
|
|
2612
|
-
(currentPassIndex === 2 ? "main" : "render target") +
|
|
2613
|
-
" end pass" +
|
|
2614
|
-
(currentPassIndex === 1 ? " - internalTexture.uniqueId=" + this._currentRenderTarget?.texture?.uniqueId : ""));
|
|
2615
|
-
}
|
|
2616
|
-
}
|
|
2617
|
-
this._debugPopGroup?.(0);
|
|
2618
|
-
this._currentRenderPass = null;
|
|
2619
|
-
return currentPassIndex;
|
|
2620
|
-
}
|
|
2621
2522
|
/**
|
|
2622
2523
|
* Binds the frame buffer to the specified texture.
|
|
2623
2524
|
* @param texture The render target wrapper to render to
|