@babylonjs/core 6.34.1 → 6.34.3
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/Cameras/Inputs/followCameraMouseWheelInput.js +12 -9
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.js +28 -9
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/followCameraInputsManager.js +2 -1
- package/Cameras/followCameraInputsManager.js.map +1 -1
- package/Compute/computeShader.d.ts +8 -2
- package/Compute/computeShader.js +5 -1
- package/Compute/computeShader.js.map +1 -1
- package/Debug/skeletonViewer.js +2 -1
- package/Debug/skeletonViewer.js.map +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +3 -1
- package/Engines/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.js +3 -2
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/Processors/shaderCodeInliner.js +15 -14
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.computeShader.js +13 -4
- package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.js +3 -2
- package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js +8 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.d.ts +3 -1
- package/Engines/WebGPU/webgpuBufferManager.js +10 -2
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuPerfCounter.d.ts +15 -0
- package/Engines/WebGPU/webgpuPerfCounter.js +31 -0
- package/Engines/WebGPU/webgpuPerfCounter.js.map +1 -0
- package/Engines/WebGPU/webgpuQuerySet.d.ts +3 -1
- package/Engines/WebGPU/webgpuQuerySet.js +37 -18
- package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
- package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +20 -1
- package/Engines/WebGPU/webgpuRenderTargetWrapper.js +18 -1
- package/Engines/WebGPU/webgpuRenderTargetWrapper.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js +2 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
- package/Engines/WebGPU/webgpuTimestampQuery.d.ts +11 -2
- package/Engines/WebGPU/webgpuTimestampQuery.js +45 -7
- package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuTintWASM.js +3 -2
- package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
- package/Engines/engine.d.ts +3 -5
- package/Engines/engine.js.map +1 -1
- package/Engines/index.d.ts +1 -0
- package/Engines/index.js +1 -0
- package/Engines/index.js.map +1 -1
- package/Engines/nativeEngine.js +4 -2
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/thinEngine.js +4 -4
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +16 -1
- package/Engines/webgpuEngine.js +108 -54
- package/Engines/webgpuEngine.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +2 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
- package/Gizmos/lightGizmo.js +2 -1
- package/Gizmos/lightGizmo.js.map +1 -1
- package/Gizmos/rotationGizmo.js +1 -1
- package/Gizmos/rotationGizmo.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +2 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +3 -2
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +2 -1
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +2 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +3 -2
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +9 -8
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +2 -1
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +4 -0
- package/Materials/Textures/multiRenderTarget.js +1 -0
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.js +1 -2
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +1 -4
- package/Materials/uniformBuffer.js +2 -5
- package/Materials/uniformBuffer.js.map +1 -1
- package/Meshes/Builders/groundBuilder.d.ts +7 -1
- package/Meshes/Builders/groundBuilder.js +17 -8
- package/Meshes/Builders/groundBuilder.js.map +1 -1
- package/Meshes/Compression/dracoCompression.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.js +2 -1
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/mesh.d.ts +2 -1
- package/Meshes/mesh.js +3 -2
- package/Meshes/mesh.js.map +1 -1
- package/Misc/assetsManager.js +2 -2
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/dds.js +1 -1
- package/Misc/dds.js.map +1 -1
- package/Misc/fileTools.js +4 -0
- package/Misc/fileTools.js.map +1 -1
- package/Misc/logger.d.ts +3 -3
- package/Misc/logger.js +8 -4
- package/Misc/logger.js.map +1 -1
- package/Misc/perfCounter.d.ts +2 -1
- package/Misc/perfCounter.js +1 -0
- package/Misc/perfCounter.js.map +1 -1
- package/Misc/sceneSerializer.js +2 -1
- package/Misc/sceneSerializer.js.map +1 -1
- package/Misc/tools.d.ts +2 -7
- package/Misc/tools.js.map +1 -1
- package/Navigation/Plugins/recastJSPlugin.js +3 -3
- package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
- package/Particles/computeShaderParticleSystem.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.js +1 -1
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/physicsBody.d.ts +5 -0
- package/Physics/v2/physicsBody.js +7 -0
- package/Physics/v2/physicsBody.js.map +1 -1
- package/Physics/v2/ragdoll.d.ts +5 -10
- package/Physics/v2/ragdoll.js +29 -36
- package/Physics/v2/ragdoll.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +2 -2
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +3 -2
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +3 -2
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/Rendering/GaussianSplatting/gaussianSplatting.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +3 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
- package/XR/features/WebXRControllerPhysics.js +2 -2
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRMeshDetector.js +2 -1
- package/XR/features/WebXRMeshDetector.js.map +1 -1
- package/XR/features/WebXRWalkingLocomotion.js +1 -1
- package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
- package/XR/motionController/webXRMotionControllerManager.js +1 -1
- package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
- package/XR/webXRExperienceHelper.js +2 -2
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/assetContainer.js +2 -2
- package/assetContainer.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +2 -4
- package/scene.js +2 -1
- package/scene.js.map +1 -1
|
@@ -34,6 +34,7 @@ import type { WebGPUDataBuffer } from "../Meshes/WebGPU/webgpuDataBuffer";
|
|
|
34
34
|
import "../Buffers/buffer.align";
|
|
35
35
|
import "../ShadersWGSL/postprocess.vertex";
|
|
36
36
|
import type { RenderTargetWrapper } from "./renderTargetWrapper";
|
|
37
|
+
import { WebGPUPerfCounter } from "./WebGPU/webgpuPerfCounter";
|
|
37
38
|
/** @internal */
|
|
38
39
|
interface IWebGPURenderPassWrapper {
|
|
39
40
|
renderPassDescriptor: Nullable<GPURenderPassDescriptor>;
|
|
@@ -152,6 +153,8 @@ export declare class WebGPUEngine extends Engine {
|
|
|
152
153
|
/** @internal */
|
|
153
154
|
_timestampQuery: WebGPUTimestampQuery;
|
|
154
155
|
/** @internal */
|
|
156
|
+
_timestampIndex: number;
|
|
157
|
+
/** @internal */
|
|
155
158
|
_occlusionQuery: WebGPUOcclusionQuery;
|
|
156
159
|
/** @internal */
|
|
157
160
|
_compiledComputeEffects: {
|
|
@@ -299,6 +302,18 @@ export declare class WebGPUEngine extends Engine {
|
|
|
299
302
|
*/
|
|
300
303
|
get compatibilityMode(): boolean;
|
|
301
304
|
set compatibilityMode(mode: boolean);
|
|
305
|
+
/**
|
|
306
|
+
* Enables or disables GPU timing measurements.
|
|
307
|
+
* Note that this is only supported if the "timestamp-query" extension is enabled in the options.
|
|
308
|
+
*/
|
|
309
|
+
get enableGPUTimingMeasurements(): boolean;
|
|
310
|
+
set enableGPUTimingMeasurements(enable: boolean);
|
|
311
|
+
/**
|
|
312
|
+
* Gets the GPU time spent in the main render pass for the last frame rendered (in nanoseconds).
|
|
313
|
+
* You have to enable the "timestamp-query" extension in the engine constructor options and set engine.enableGPUTimingMeasurements = true.
|
|
314
|
+
* It will only return time spent in the main pass, not additional render target / compute passes (if any)!
|
|
315
|
+
*/
|
|
316
|
+
readonly gpuTimeInFrameForMainPass?: WebGPUPerfCounter;
|
|
302
317
|
/** @internal */
|
|
303
318
|
get currentSampleCount(): number;
|
|
304
319
|
/**
|
|
@@ -426,7 +441,7 @@ export declare class WebGPUEngine extends Engine {
|
|
|
426
441
|
/**
|
|
427
442
|
* Creates a new index buffer
|
|
428
443
|
* @param indices defines the content of the index buffer
|
|
429
|
-
* @param
|
|
444
|
+
* @param _updatable defines if the index buffer must be updatable
|
|
430
445
|
* @param label defines the label of the buffer (for debug purpose)
|
|
431
446
|
* @returns a new buffer
|
|
432
447
|
*/
|
package/Engines/webgpuEngine.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
/* eslint-disable babylonjs/available */
|
|
1
2
|
import { Logger } from "../Misc/logger.js";
|
|
2
3
|
import { Color4 } from "../Maths/math.js";
|
|
3
4
|
import { Engine } from "../Engines/engine.js";
|
|
4
5
|
import { InternalTexture, InternalTextureSource } from "../Materials/Textures/internalTexture.js";
|
|
5
6
|
import { Effect } from "../Materials/effect.js";
|
|
6
7
|
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
7
9
|
import * as WebGPUConstants from "./WebGPU/webgpuConstants.js";
|
|
8
10
|
import { VertexBuffer } from "../Buffers/buffer.js";
|
|
9
11
|
import { WebGPUPipelineContext } from "./WebGPU/webgpuPipelineContext.js";
|
|
@@ -34,6 +36,7 @@ import { ShaderLanguage } from "../Materials/shaderLanguage.js";
|
|
|
34
36
|
import { WebGPUSnapshotRendering } from "./WebGPU/webgpuSnapshotRendering.js";
|
|
35
37
|
import "../Buffers/buffer.align.js";
|
|
36
38
|
import "../ShadersWGSL/postprocess.vertex.js";
|
|
39
|
+
import { WebGPUPerfCounter } from "./WebGPU/webgpuPerfCounter.js";
|
|
37
40
|
const viewDescriptorSwapChainAntialiasing = {
|
|
38
41
|
label: `TextureView_SwapChain_ResolveTarget`,
|
|
39
42
|
dimension: WebGPUConstants.TextureDimension.E2d,
|
|
@@ -188,6 +191,20 @@ export class WebGPUEngine extends Engine {
|
|
|
188
191
|
set compatibilityMode(mode) {
|
|
189
192
|
this._compatibilityMode = mode;
|
|
190
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* Enables or disables GPU timing measurements.
|
|
196
|
+
* Note that this is only supported if the "timestamp-query" extension is enabled in the options.
|
|
197
|
+
*/
|
|
198
|
+
get enableGPUTimingMeasurements() {
|
|
199
|
+
return this._timestampQuery.enable;
|
|
200
|
+
}
|
|
201
|
+
set enableGPUTimingMeasurements(enable) {
|
|
202
|
+
if (this._timestampQuery.enable === enable) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
this.gpuTimeInFrameForMainPass = enable ? new WebGPUPerfCounter() : undefined;
|
|
206
|
+
this._timestampQuery.enable = enable;
|
|
207
|
+
}
|
|
191
208
|
/** @internal */
|
|
192
209
|
get currentSampleCount() {
|
|
193
210
|
return this._currentRenderTarget ? this._currentRenderTarget.samples : this._mainPassSampleCount;
|
|
@@ -231,6 +248,8 @@ export class WebGPUEngine extends Engine {
|
|
|
231
248
|
description: "",
|
|
232
249
|
};
|
|
233
250
|
/** @internal */
|
|
251
|
+
this._timestampIndex = 0;
|
|
252
|
+
/** @internal */
|
|
234
253
|
this._compiledComputeEffects = {};
|
|
235
254
|
/** @internal */
|
|
236
255
|
this._counters = {
|
|
@@ -420,11 +439,11 @@ export class WebGPUEngine extends Engine {
|
|
|
420
439
|
Logger.Error(e);
|
|
421
440
|
})
|
|
422
441
|
.then(() => {
|
|
423
|
-
this._bufferManager = new WebGPUBufferManager(this._device);
|
|
442
|
+
this._bufferManager = new WebGPUBufferManager(this, this._device);
|
|
424
443
|
this._textureHelper = new WebGPUTextureHelper(this._device, this._glslang, this._tintWASM, this._bufferManager, this._deviceEnabledExtensions);
|
|
425
444
|
this._cacheSampler = new WebGPUCacheSampler(this._device);
|
|
426
445
|
this._cacheBindGroups = new WebGPUCacheBindGroups(this._device, this._cacheSampler, this);
|
|
427
|
-
this._timestampQuery = new WebGPUTimestampQuery(this._device, this._bufferManager);
|
|
446
|
+
this._timestampQuery = new WebGPUTimestampQuery(this, this._device, this._bufferManager);
|
|
428
447
|
this._occlusionQuery = this._device.createQuerySet ? new WebGPUOcclusionQuery(this, this._device, this._bufferManager) : undefined;
|
|
429
448
|
this._bundleList = new WebGPUBundleList(this._device);
|
|
430
449
|
this._snapshotRendering = new WebGPUSnapshotRendering(this, this._snapshotRenderingMode, this._bundleList);
|
|
@@ -433,7 +452,7 @@ export class WebGPUEngine extends Engine {
|
|
|
433
452
|
if (this.dbgVerboseLogsForFirstFrames) {
|
|
434
453
|
if (this._count === undefined) {
|
|
435
454
|
this._count = 0;
|
|
436
|
-
|
|
455
|
+
Logger.Log(["%c frame #" + this._count + " - begin", "background: #ffff00"]);
|
|
437
456
|
}
|
|
438
457
|
}
|
|
439
458
|
this._uploadEncoder = this._device.createCommandEncoder(this._uploadEncoderDescriptor);
|
|
@@ -458,11 +477,11 @@ export class WebGPUEngine extends Engine {
|
|
|
458
477
|
this.resize();
|
|
459
478
|
})
|
|
460
479
|
.catch((e) => {
|
|
480
|
+
var _a;
|
|
461
481
|
Logger.Error("Can not create WebGPU Device and/or context.");
|
|
462
482
|
Logger.Error(e);
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
}
|
|
483
|
+
// eslint-disable-next-line no-console
|
|
484
|
+
(_a = console === null || console === void 0 ? void 0 : console.trace) === null || _a === void 0 ? void 0 : _a.call(console);
|
|
466
485
|
});
|
|
467
486
|
}
|
|
468
487
|
_initGlslang(glslangOptions) {
|
|
@@ -692,7 +711,7 @@ export class WebGPUEngine extends Engine {
|
|
|
692
711
|
this._count = 0;
|
|
693
712
|
}
|
|
694
713
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
695
|
-
|
|
714
|
+
Logger.Log(["frame #" + this._count + " - setSize -", width, height]);
|
|
696
715
|
}
|
|
697
716
|
}
|
|
698
717
|
this._initializeMainAttachments();
|
|
@@ -817,7 +836,14 @@ export class WebGPUEngine extends Engine {
|
|
|
817
836
|
this._count = 0;
|
|
818
837
|
}
|
|
819
838
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
820
|
-
|
|
839
|
+
Logger.Log([
|
|
840
|
+
"frame #" + this._count + " - viewport applied - (",
|
|
841
|
+
this._viewportCached.x,
|
|
842
|
+
this._viewportCached.y,
|
|
843
|
+
this._viewportCached.z,
|
|
844
|
+
this._viewportCached.w,
|
|
845
|
+
") current pass is main pass=" + this._currentPassIsMainPass(),
|
|
846
|
+
]);
|
|
821
847
|
}
|
|
822
848
|
}
|
|
823
849
|
}
|
|
@@ -854,7 +880,14 @@ export class WebGPUEngine extends Engine {
|
|
|
854
880
|
this._count = 0;
|
|
855
881
|
}
|
|
856
882
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
857
|
-
|
|
883
|
+
Logger.Log([
|
|
884
|
+
"frame #" + this._count + " - scissor applied - (",
|
|
885
|
+
this._scissorCached.x,
|
|
886
|
+
this._scissorCached.y,
|
|
887
|
+
this._scissorCached.z,
|
|
888
|
+
this._scissorCached.w,
|
|
889
|
+
") current pass is main pass=" + this._currentPassIsMainPass(),
|
|
890
|
+
]);
|
|
858
891
|
}
|
|
859
892
|
}
|
|
860
893
|
}
|
|
@@ -933,7 +966,7 @@ export class WebGPUEngine extends Engine {
|
|
|
933
966
|
this._count = 0;
|
|
934
967
|
}
|
|
935
968
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
936
|
-
|
|
969
|
+
Logger.Log(["frame #" + this._count + " - clear - backBuffer=", backBuffer, " depth=", depth, " stencil=", stencil, " scissor is active=", hasScissor]);
|
|
937
970
|
}
|
|
938
971
|
}
|
|
939
972
|
// We need to recreate the render pass so that the new parameters for clear color / depth / stencil are taken into account
|
|
@@ -1020,7 +1053,7 @@ export class WebGPUEngine extends Engine {
|
|
|
1020
1053
|
/**
|
|
1021
1054
|
* Creates a new index buffer
|
|
1022
1055
|
* @param indices defines the content of the index buffer
|
|
1023
|
-
* @param
|
|
1056
|
+
* @param _updatable defines if the index buffer must be updatable
|
|
1024
1057
|
* @param label defines the label of the buffer (for debug purpose)
|
|
1025
1058
|
* @returns a new buffer
|
|
1026
1059
|
*/
|
|
@@ -1257,10 +1290,10 @@ export class WebGPUEngine extends Engine {
|
|
|
1257
1290
|
const webGpuContext = pipelineContext;
|
|
1258
1291
|
const shaderLanguage = webGpuContext.shaderProcessingContext.shaderLanguage;
|
|
1259
1292
|
if (this.dbgShowShaderCode) {
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1293
|
+
Logger.Log(["defines", defines]);
|
|
1294
|
+
Logger.Log(vertexSourceCode);
|
|
1295
|
+
Logger.Log(fragmentSourceCode);
|
|
1296
|
+
Logger.Log("***********************************************");
|
|
1264
1297
|
}
|
|
1265
1298
|
webGpuContext.sources = {
|
|
1266
1299
|
fragment: fragmentSourceCode,
|
|
@@ -1319,7 +1352,7 @@ export class WebGPUEngine extends Engine {
|
|
|
1319
1352
|
effect.drawContext === this._currentDrawContext &&
|
|
1320
1353
|
!this._forceEnableEffect)) {
|
|
1321
1354
|
if (!effect.effect && this.dbgShowEmptyEnableEffectCalls) {
|
|
1322
|
-
|
|
1355
|
+
Logger.Log(["drawWrapper=", effect]);
|
|
1323
1356
|
throw "Invalid call to enableEffect: the effect property is empty!";
|
|
1324
1357
|
}
|
|
1325
1358
|
return;
|
|
@@ -1331,7 +1364,7 @@ export class WebGPUEngine extends Engine {
|
|
|
1331
1364
|
this._currentDrawContext = effect.drawContext;
|
|
1332
1365
|
this._counters.numEnableDrawWrapper++;
|
|
1333
1366
|
if (!this._currentMaterialContext) {
|
|
1334
|
-
|
|
1367
|
+
Logger.Log(["drawWrapper=", effect]);
|
|
1335
1368
|
throw `Invalid call to enableEffect: the materialContext property is empty!`;
|
|
1336
1369
|
}
|
|
1337
1370
|
}
|
|
@@ -1708,7 +1741,7 @@ export class WebGPUEngine extends Engine {
|
|
|
1708
1741
|
this._count = 0;
|
|
1709
1742
|
}
|
|
1710
1743
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
1711
|
-
|
|
1744
|
+
Logger.Log(["frame #" + this._count + " - _setTexture called with a null _currentEffect! texture=", texture]);
|
|
1712
1745
|
}
|
|
1713
1746
|
}
|
|
1714
1747
|
}
|
|
@@ -1758,7 +1791,7 @@ export class WebGPUEngine extends Engine {
|
|
|
1758
1791
|
this._count = 0;
|
|
1759
1792
|
}
|
|
1760
1793
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
1761
|
-
|
|
1794
|
+
Logger.Log("frame #" +
|
|
1762
1795
|
this._count +
|
|
1763
1796
|
" - generate mipmaps - width=" +
|
|
1764
1797
|
texture.width +
|
|
@@ -1898,6 +1931,7 @@ export class WebGPUEngine extends Engine {
|
|
|
1898
1931
|
this._endCurrentRenderPass();
|
|
1899
1932
|
this._snapshotRendering.endFrame();
|
|
1900
1933
|
this._timestampQuery.endFrame(this._renderEncoder);
|
|
1934
|
+
this._timestampIndex = 0;
|
|
1901
1935
|
this.flushFramebuffer();
|
|
1902
1936
|
this._textureHelper.destroyDeferredTextures();
|
|
1903
1937
|
this._bufferManager.destroyDeferredBuffers();
|
|
@@ -1911,7 +1945,7 @@ export class WebGPUEngine extends Engine {
|
|
|
1911
1945
|
for (const name in UniformBuffer._UpdatedUbosInFrame) {
|
|
1912
1946
|
list.push(name + ":" + UniformBuffer._UpdatedUbosInFrame[name]);
|
|
1913
1947
|
}
|
|
1914
|
-
|
|
1948
|
+
Logger.Log(["frame #" + this._count + " - updated ubos -", list.join(", ")]);
|
|
1915
1949
|
}
|
|
1916
1950
|
}
|
|
1917
1951
|
UniformBuffer._UpdatedUbosInFrame = {};
|
|
@@ -1933,12 +1967,12 @@ export class WebGPUEngine extends Engine {
|
|
|
1933
1967
|
this._count = 0;
|
|
1934
1968
|
}
|
|
1935
1969
|
if (this._count < this.dbgVerboseLogsNumFrames) {
|
|
1936
|
-
|
|
1970
|
+
Logger.Log(["%c frame #" + this._count + " - end", "background: #ffff00"]);
|
|
1937
1971
|
}
|
|
1938
1972
|
if (this._count < this.dbgVerboseLogsNumFrames) {
|
|
1939
1973
|
this._count++;
|
|
1940
1974
|
if (this._count !== this.dbgVerboseLogsNumFrames) {
|
|
1941
|
-
|
|
1975
|
+
Logger.Log(["%c frame #" + this._count + " - begin", "background: #ffff00"]);
|
|
1942
1976
|
}
|
|
1943
1977
|
}
|
|
1944
1978
|
}
|
|
@@ -1952,10 +1986,6 @@ export class WebGPUEngine extends Engine {
|
|
|
1952
1986
|
this._commandBuffers[0] = this._uploadEncoder.finish();
|
|
1953
1987
|
this._commandBuffers[1] = this._renderEncoder.finish();
|
|
1954
1988
|
this._device.queue.submit(this._commandBuffers);
|
|
1955
|
-
// Now that the command buffers have been submitted, we can reset the ubo as we can reuse the same GPU buffer(s)
|
|
1956
|
-
for (let i = 0; i < this._uniformBuffers.length; ++i) {
|
|
1957
|
-
this._uniformBuffers[i]._checkNewFrame(true);
|
|
1958
|
-
}
|
|
1959
1989
|
this._uploadEncoder = this._device.createCommandEncoder(this._uploadEncoderDescriptor);
|
|
1960
1990
|
this._renderEncoder = this._device.createCommandEncoder(this._renderEncoderDescriptor);
|
|
1961
1991
|
this._timestampQuery.startFrame(this._uploadEncoder);
|
|
@@ -2047,7 +2077,7 @@ export class WebGPUEngine extends Engine {
|
|
|
2047
2077
|
colorAttachments.push(null);
|
|
2048
2078
|
}
|
|
2049
2079
|
}
|
|
2050
|
-
(_e = this._debugPushGroup) === null || _e === void 0 ? void 0 : _e.call(this, "render target pass", 1);
|
|
2080
|
+
(_e = this._debugPushGroup) === null || _e === void 0 ? void 0 : _e.call(this, "render target pass" + (renderTargetWrapper.label ? " (" + renderTargetWrapper.label + ")" : ""), 1);
|
|
2051
2081
|
this._rttRenderPassWrapper.renderPassDescriptor = {
|
|
2052
2082
|
label: ((_f = renderTargetWrapper.label) !== null && _f !== void 0 ? _f : "RTT") + "RenderPass",
|
|
2053
2083
|
colorAttachments,
|
|
@@ -2068,6 +2098,7 @@ export class WebGPUEngine extends Engine {
|
|
|
2068
2098
|
: undefined,
|
|
2069
2099
|
occlusionQuerySet: ((_g = this._occlusionQuery) === null || _g === void 0 ? void 0 : _g.hasQueries) ? this._occlusionQuery.querySet : undefined,
|
|
2070
2100
|
};
|
|
2101
|
+
this._timestampQuery.startPass(this._rttRenderPassWrapper.renderPassDescriptor, this._timestampIndex);
|
|
2071
2102
|
this._currentRenderPass = this._renderEncoder.beginRenderPass(this._rttRenderPassWrapper.renderPassDescriptor);
|
|
2072
2103
|
if (this.dbgVerboseLogsForFirstFrames) {
|
|
2073
2104
|
if (this._count === undefined) {
|
|
@@ -2075,18 +2106,22 @@ export class WebGPUEngine extends Engine {
|
|
|
2075
2106
|
}
|
|
2076
2107
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
2077
2108
|
const internalTexture = rtWrapper.texture;
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2109
|
+
Logger.Log([
|
|
2110
|
+
"frame #" +
|
|
2111
|
+
this._count +
|
|
2112
|
+
" - render target begin pass - rtt name=" +
|
|
2113
|
+
renderTargetWrapper.label +
|
|
2114
|
+
", internalTexture.uniqueId=" +
|
|
2115
|
+
internalTexture.uniqueId +
|
|
2116
|
+
", width=" +
|
|
2117
|
+
internalTexture.width +
|
|
2118
|
+
", height=" +
|
|
2119
|
+
internalTexture.height +
|
|
2120
|
+
", setClearStates=" +
|
|
2121
|
+
setClearStates,
|
|
2122
|
+
"renderPassDescriptor=",
|
|
2123
|
+
this._rttRenderPassWrapper.renderPassDescriptor,
|
|
2124
|
+
]);
|
|
2090
2125
|
}
|
|
2091
2126
|
}
|
|
2092
2127
|
(_h = this._debugFlushPendingCommands) === null || _h === void 0 ? void 0 : _h.call(this);
|
|
@@ -2135,10 +2170,16 @@ export class WebGPUEngine extends Engine {
|
|
|
2135
2170
|
this._count = 0;
|
|
2136
2171
|
}
|
|
2137
2172
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
2138
|
-
|
|
2173
|
+
Logger.Log([
|
|
2174
|
+
"frame #" + this._count + " - main begin pass - texture width=" + this._mainTextureExtends.width,
|
|
2175
|
+
" height=" + this._mainTextureExtends.height + ", setClearStates=" + setClearStates,
|
|
2176
|
+
"renderPassDescriptor=",
|
|
2177
|
+
this._mainRenderPassWrapper.renderPassDescriptor,
|
|
2178
|
+
]);
|
|
2139
2179
|
}
|
|
2140
2180
|
}
|
|
2141
2181
|
(_b = this._debugPushGroup) === null || _b === void 0 ? void 0 : _b.call(this, "main pass", 0);
|
|
2182
|
+
this._timestampQuery.startPass(this._mainRenderPassWrapper.renderPassDescriptor, this._timestampIndex);
|
|
2142
2183
|
this._currentRenderPass = this._renderEncoder.beginRenderPass(this._mainRenderPassWrapper.renderPassDescriptor);
|
|
2143
2184
|
this._setDepthTextureFormat(this._mainRenderPassWrapper);
|
|
2144
2185
|
this._setColorFormat(this._mainRenderPassWrapper);
|
|
@@ -2160,12 +2201,16 @@ export class WebGPUEngine extends Engine {
|
|
|
2160
2201
|
this._bundleList.reset();
|
|
2161
2202
|
}
|
|
2162
2203
|
this._currentRenderPass.end();
|
|
2204
|
+
this._timestampQuery.endPass(this._timestampIndex, (this._currentRenderTarget && this._currentRenderTarget.gpuTimeInFrame
|
|
2205
|
+
? this._currentRenderTarget.gpuTimeInFrame
|
|
2206
|
+
: this.gpuTimeInFrameForMainPass));
|
|
2207
|
+
this._timestampIndex += 2;
|
|
2163
2208
|
if (this.dbgVerboseLogsForFirstFrames) {
|
|
2164
2209
|
if (this._count === undefined) {
|
|
2165
2210
|
this._count = 0;
|
|
2166
2211
|
}
|
|
2167
2212
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
2168
|
-
|
|
2213
|
+
Logger.Log("frame #" +
|
|
2169
2214
|
this._count +
|
|
2170
2215
|
" - " +
|
|
2171
2216
|
(currentPassIndex === 2 ? "main" : "render target") +
|
|
@@ -2226,18 +2271,24 @@ export class WebGPUEngine extends Engine {
|
|
|
2226
2271
|
this._count = 0;
|
|
2227
2272
|
}
|
|
2228
2273
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2274
|
+
Logger.Log([
|
|
2275
|
+
"frame #" +
|
|
2276
|
+
this._count +
|
|
2277
|
+
" - bindFramebuffer - rtt name=" +
|
|
2278
|
+
texture.label +
|
|
2279
|
+
", internalTexture.uniqueId=" +
|
|
2280
|
+
((_b = texture.texture) === null || _b === void 0 ? void 0 : _b.uniqueId) +
|
|
2281
|
+
", face=" +
|
|
2282
|
+
faceIndex +
|
|
2283
|
+
", lodLevel=" +
|
|
2284
|
+
lodLevel +
|
|
2285
|
+
", layer=" +
|
|
2286
|
+
layer,
|
|
2287
|
+
"colorAttachmentViewDescriptor=",
|
|
2288
|
+
this._rttRenderPassWrapper.colorAttachmentViewDescriptor,
|
|
2289
|
+
"depthAttachmentViewDescriptor=",
|
|
2290
|
+
this._rttRenderPassWrapper.depthAttachmentViewDescriptor,
|
|
2291
|
+
]);
|
|
2241
2292
|
}
|
|
2242
2293
|
}
|
|
2243
2294
|
// We don't create the render pass just now, we do a lazy creation of the render pass, hoping the render pass will be created by a call to clear()...
|
|
@@ -2285,7 +2336,7 @@ export class WebGPUEngine extends Engine {
|
|
|
2285
2336
|
this._count = 0;
|
|
2286
2337
|
}
|
|
2287
2338
|
if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {
|
|
2288
|
-
|
|
2339
|
+
Logger.Log("frame #" + this._count + " - unBindFramebuffer - rtt name=" + texture.label + ", internalTexture.uniqueId=", (_b = texture.texture) === null || _b === void 0 ? void 0 : _b.uniqueId);
|
|
2289
2340
|
}
|
|
2290
2341
|
}
|
|
2291
2342
|
this._mrtAttachments = [];
|
|
@@ -2518,8 +2569,11 @@ export class WebGPUEngine extends Engine {
|
|
|
2518
2569
|
dispose() {
|
|
2519
2570
|
var _a, _b;
|
|
2520
2571
|
this._isDisposed = true;
|
|
2572
|
+
this._timestampQuery.dispose();
|
|
2521
2573
|
(_a = this._mainTexture) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
2522
2574
|
(_b = this._depthTexture) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
2575
|
+
this._textureHelper.destroyDeferredTextures();
|
|
2576
|
+
this._bufferManager.destroyDeferredBuffers();
|
|
2523
2577
|
this._device.destroy();
|
|
2524
2578
|
super.dispose();
|
|
2525
2579
|
}
|