@babylonjs/core 8.18.0 → 8.19.0
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/Collisions/intersectionInfo.d.ts +1 -0
- package/Collisions/intersectionInfo.js +1 -0
- package/Collisions/intersectionInfo.js.map +1 -1
- package/Compute/computeShader.d.ts +7 -0
- package/Compute/computeShader.js +15 -0
- package/Compute/computeShader.js.map +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +2 -1
- package/Engines/Extensions/engine.computeShader.js +1 -0
- package/Engines/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/IDrawContext.d.ts +31 -1
- package/Engines/IDrawContext.js.map +1 -1
- package/Engines/IMaterialContext.d.ts +1 -0
- package/Engines/IMaterialContext.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +2 -2
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuComputeContext.js +15 -0
- package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.d.ts +48 -3
- package/Engines/WebGPU/webgpuDrawContext.js +81 -13
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuMaterialContext.d.ts +1 -0
- package/Engines/WebGPU/webgpuMaterialContext.js +1 -0
- package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.js +7 -3
- package/Engines/WebGPU/webgpuStencilStateComposer.js.map +1 -1
- package/Engines/abstractEngine.d.ts +4 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/engine.d.ts +2 -2
- package/Engines/nativeEngine.d.ts +1 -1
- package/Engines/nativeEngine.js +2 -2
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.d.ts +8 -0
- package/Engines/renderTargetWrapper.js +8 -0
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/thinEngine.d.ts +2 -3
- package/Engines/thinEngine.js +3 -2
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +7 -4
- package/Engines/webgpuEngine.js +28 -15
- package/Engines/webgpuEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Passes/renderPass.d.ts +8 -0
- package/FrameGraph/Passes/renderPass.js +10 -1
- package/FrameGraph/Passes/renderPass.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +46 -2
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +62 -15
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +4 -0
- package/FrameGraph/Tasks/Texture/clearTextureTask.js +5 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +14 -5
- package/FrameGraph/frameGraphRenderContext.js +34 -14
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/frameGraphTextureManager.d.ts +3 -1
- package/FrameGraph/frameGraphTextureManager.js +16 -10
- package/FrameGraph/frameGraphTextureManager.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +1 -0
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +4 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +7 -0
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.d.ts +1 -0
- package/Materials/PBR/pbrBaseMaterial.js +8 -6
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/drawWrapper.d.ts +34 -2
- package/Materials/drawWrapper.js +22 -2
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effectRenderer.d.ts +4 -0
- package/Materials/effectRenderer.js +2 -1
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/index.d.ts +1 -0
- package/Materials/index.js +1 -0
- package/Materials/index.js.map +1 -1
- package/Materials/material.d.ts +8 -1
- package/Materials/material.js +21 -1
- package/Materials/material.js.map +1 -1
- package/Materials/materialHelper.functions.d.ts +3 -1
- package/Materials/materialHelper.functions.js +7 -1
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Materials/shaderMaterial.js +11 -0
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/standardMaterial.d.ts +1 -0
- package/Materials/standardMaterial.js +2 -1
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +6 -0
- package/Materials/uniformBuffer.js +8 -0
- package/Materials/uniformBuffer.js.map +1 -1
- package/Meshes/abstractMesh.js +3 -2
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/mesh.js +6 -0
- package/Meshes/mesh.js.map +1 -1
- package/Misc/fileTools.js +1 -1
- package/Misc/fileTools.js.map +1 -1
- package/States/index.d.ts +1 -0
- package/States/index.js +1 -0
- package/States/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -138,7 +138,7 @@ export declare class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
138
138
|
/** @internal */
|
|
139
139
|
readonly _clearReverseDepthValue = 0;
|
|
140
140
|
/** @internal */
|
|
141
|
-
|
|
141
|
+
_clearStencilValue: number;
|
|
142
142
|
private readonly _defaultSampleCount;
|
|
143
143
|
/** @internal */
|
|
144
144
|
_options: WebGPUEngineOptions;
|
|
@@ -216,8 +216,10 @@ export declare class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
216
216
|
_currentDrawContext: WebGPUDrawContext;
|
|
217
217
|
/** @internal */
|
|
218
218
|
_currentMaterialContext: WebGPUMaterialContext;
|
|
219
|
+
private _currentVertexBuffers;
|
|
219
220
|
private _currentOverrideVertexBuffers;
|
|
220
221
|
private _currentIndexBuffer;
|
|
222
|
+
private _dummyIndexBuffer;
|
|
221
223
|
private _colorWriteLocal;
|
|
222
224
|
private _forceEnableEffect;
|
|
223
225
|
/**
|
|
@@ -464,8 +466,9 @@ export declare class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
464
466
|
* @param backBuffer defines if the back buffer must be cleared
|
|
465
467
|
* @param depth defines if the depth buffer must be cleared
|
|
466
468
|
* @param stencil defines if the stencil buffer must be cleared
|
|
469
|
+
* @param stencilClearValue defines the value to use to clear the stencil buffer (default is 0)
|
|
467
470
|
*/
|
|
468
|
-
clear(color: Nullable<IColor4Like>, backBuffer: boolean, depth: boolean, stencil?: boolean): void;
|
|
471
|
+
clear(color: Nullable<IColor4Like>, backBuffer: boolean, depth: boolean, stencil?: boolean, stencilClearValue?: number): void;
|
|
469
472
|
private _clearFullQuad;
|
|
470
473
|
/**
|
|
471
474
|
* Creates a vertex buffer
|
|
@@ -525,12 +528,12 @@ export declare class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
525
528
|
* Bind a list of vertex buffers with the engine
|
|
526
529
|
* @param vertexBuffers defines the list of vertex buffers to bind
|
|
527
530
|
* @param indexBuffer defines the index buffer to bind
|
|
528
|
-
* @param
|
|
531
|
+
* @param _effect defines the effect associated with the vertex buffers
|
|
529
532
|
* @param overrideVertexBuffers defines optional list of avertex buffers that overrides the entries in vertexBuffers
|
|
530
533
|
*/
|
|
531
534
|
bindBuffers(vertexBuffers: {
|
|
532
535
|
[key: string]: Nullable<VertexBuffer>;
|
|
533
|
-
}, indexBuffer: Nullable<DataBuffer>,
|
|
536
|
+
}, indexBuffer: Nullable<DataBuffer>, _effect: Effect, overrideVertexBuffers?: {
|
|
534
537
|
[kind: string]: Nullable<VertexBuffer>;
|
|
535
538
|
}): void;
|
|
536
539
|
/**
|
package/Engines/webgpuEngine.js
CHANGED
|
@@ -319,6 +319,7 @@ export class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
319
319
|
};
|
|
320
320
|
/** @internal */
|
|
321
321
|
this._pendingDebugCommands = [];
|
|
322
|
+
this._currentVertexBuffers = {};
|
|
322
323
|
this._currentOverrideVertexBuffers = null;
|
|
323
324
|
this._currentIndexBuffer = null;
|
|
324
325
|
this._colorWriteLocal = true;
|
|
@@ -515,6 +516,7 @@ export class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
515
516
|
size: 1,
|
|
516
517
|
label: "EmptyVertexBuffer",
|
|
517
518
|
});
|
|
519
|
+
this._dummyIndexBuffer = this._bufferManager.createBuffer(new Uint16Array([0, 0, 0, 0]), WebGPUConstants.BufferUsage.Storage | WebGPUConstants.BufferUsage.CopyDst, "DummyIndices");
|
|
518
520
|
this._cacheRenderPipeline = new WebGPUCacheRenderPipelineTree(this._device, this._emptyVertexBuffer);
|
|
519
521
|
this._depthCullingState = new WebGPUDepthCullingState(this._cacheRenderPipeline);
|
|
520
522
|
this._stencilStateComposer = new WebGPUStencilStateComposer(this._cacheRenderPipeline);
|
|
@@ -1135,12 +1137,16 @@ export class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
1135
1137
|
* @param backBuffer defines if the back buffer must be cleared
|
|
1136
1138
|
* @param depth defines if the depth buffer must be cleared
|
|
1137
1139
|
* @param stencil defines if the stencil buffer must be cleared
|
|
1140
|
+
* @param stencilClearValue defines the value to use to clear the stencil buffer (default is 0)
|
|
1138
1141
|
*/
|
|
1139
|
-
clear(color, backBuffer, depth, stencil = false) {
|
|
1142
|
+
clear(color, backBuffer, depth, stencil = false, stencilClearValue = 0) {
|
|
1140
1143
|
// Some PGs are using color3...
|
|
1141
1144
|
if (color && color.a === undefined) {
|
|
1142
1145
|
color.a = 1;
|
|
1143
1146
|
}
|
|
1147
|
+
if (stencil) {
|
|
1148
|
+
this._clearStencilValue = stencilClearValue;
|
|
1149
|
+
}
|
|
1144
1150
|
const hasScissor = this._scissorIsActive();
|
|
1145
1151
|
if (this.dbgVerboseLogsForFirstFrames) {
|
|
1146
1152
|
if (this._count === undefined) {
|
|
@@ -1218,7 +1224,7 @@ export class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
1218
1224
|
else {
|
|
1219
1225
|
view = data;
|
|
1220
1226
|
}
|
|
1221
|
-
const dataBuffer = this._bufferManager.createBuffer(view, WebGPUConstants.BufferUsage.Vertex | WebGPUConstants.BufferUsage.CopyDst, label);
|
|
1227
|
+
const dataBuffer = this._bufferManager.createBuffer(view, WebGPUConstants.BufferUsage.Vertex | WebGPUConstants.BufferUsage.CopyDst | WebGPUConstants.BufferUsage.Storage, label);
|
|
1222
1228
|
return dataBuffer;
|
|
1223
1229
|
}
|
|
1224
1230
|
/**
|
|
@@ -1259,7 +1265,7 @@ export class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
1259
1265
|
is32Bits = false;
|
|
1260
1266
|
}
|
|
1261
1267
|
}
|
|
1262
|
-
const dataBuffer = this._bufferManager.createBuffer(view, WebGPUConstants.BufferUsage.Index | WebGPUConstants.BufferUsage.CopyDst, label);
|
|
1268
|
+
const dataBuffer = this._bufferManager.createBuffer(view, WebGPUConstants.BufferUsage.Index | WebGPUConstants.BufferUsage.CopyDst | WebGPUConstants.BufferUsage.Storage, label);
|
|
1263
1269
|
dataBuffer.is32Bits = is32Bits;
|
|
1264
1270
|
return dataBuffer;
|
|
1265
1271
|
}
|
|
@@ -1380,13 +1386,14 @@ export class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
1380
1386
|
* Bind a list of vertex buffers with the engine
|
|
1381
1387
|
* @param vertexBuffers defines the list of vertex buffers to bind
|
|
1382
1388
|
* @param indexBuffer defines the index buffer to bind
|
|
1383
|
-
* @param
|
|
1389
|
+
* @param _effect defines the effect associated with the vertex buffers
|
|
1384
1390
|
* @param overrideVertexBuffers defines optional list of avertex buffers that overrides the entries in vertexBuffers
|
|
1385
1391
|
*/
|
|
1386
|
-
bindBuffers(vertexBuffers, indexBuffer,
|
|
1392
|
+
bindBuffers(vertexBuffers, indexBuffer, _effect, overrideVertexBuffers) {
|
|
1393
|
+
this._currentVertexBuffers = vertexBuffers;
|
|
1387
1394
|
this._currentIndexBuffer = indexBuffer;
|
|
1388
1395
|
this._currentOverrideVertexBuffers = overrideVertexBuffers ?? null;
|
|
1389
|
-
this._cacheRenderPipeline.setBuffers(
|
|
1396
|
+
this._cacheRenderPipeline.setBuffers(this._currentVertexBuffers, this._currentIndexBuffer, this._currentOverrideVertexBuffers);
|
|
1390
1397
|
}
|
|
1391
1398
|
/**
|
|
1392
1399
|
* @internal
|
|
@@ -1613,7 +1620,7 @@ export class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
1613
1620
|
* @returns the new context
|
|
1614
1621
|
*/
|
|
1615
1622
|
createDrawContext() {
|
|
1616
|
-
return new WebGPUDrawContext(this._bufferManager);
|
|
1623
|
+
return new WebGPUDrawContext(this._bufferManager, this._dummyIndexBuffer);
|
|
1617
1624
|
}
|
|
1618
1625
|
/**
|
|
1619
1626
|
* @internal
|
|
@@ -2461,15 +2468,19 @@ export class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
2461
2468
|
? {
|
|
2462
2469
|
view: depthMSAATextureView ? depthMSAATextureView : depthTextureView,
|
|
2463
2470
|
depthClearValue: mustClearDepth ? (this.useReverseDepthBuffer ? this._clearReverseDepthValue : this._clearDepthValue) : undefined,
|
|
2464
|
-
depthLoadOp: mustClearDepth ? "clear" /* WebGPUConstants.LoadOp.Clear */ : "load" /* WebGPUConstants.LoadOp.Load */,
|
|
2465
|
-
depthStoreOp: "store" /* WebGPUConstants.StoreOp.Store */,
|
|
2471
|
+
depthLoadOp: rtWrapper.depthReadOnly ? undefined : mustClearDepth ? "clear" /* WebGPUConstants.LoadOp.Clear */ : "load" /* WebGPUConstants.LoadOp.Load */,
|
|
2472
|
+
depthStoreOp: rtWrapper.depthReadOnly ? undefined : "store" /* WebGPUConstants.StoreOp.Store */,
|
|
2473
|
+
depthReadOnly: rtWrapper.depthReadOnly,
|
|
2466
2474
|
stencilClearValue: rtWrapper._depthStencilTextureWithStencil && mustClearStencil ? this._clearStencilValue : undefined,
|
|
2467
|
-
stencilLoadOp:
|
|
2475
|
+
stencilLoadOp: rtWrapper.stencilReadOnly
|
|
2468
2476
|
? undefined
|
|
2469
|
-
:
|
|
2470
|
-
?
|
|
2471
|
-
:
|
|
2472
|
-
|
|
2477
|
+
: !depthTextureHasStencil
|
|
2478
|
+
? undefined
|
|
2479
|
+
: rtWrapper._depthStencilTextureWithStencil && mustClearStencil
|
|
2480
|
+
? "clear" /* WebGPUConstants.LoadOp.Clear */
|
|
2481
|
+
: "load" /* WebGPUConstants.LoadOp.Load */,
|
|
2482
|
+
stencilStoreOp: rtWrapper.stencilReadOnly ? undefined : !depthTextureHasStencil ? undefined : "store" /* WebGPUConstants.StoreOp.Store */,
|
|
2483
|
+
stencilReadOnly: rtWrapper.stencilReadOnly,
|
|
2473
2484
|
}
|
|
2474
2485
|
: undefined,
|
|
2475
2486
|
occlusionQuerySet: this._occlusionQuery?.hasQueries ? this._occlusionQuery.querySet : undefined,
|
|
@@ -2826,6 +2837,8 @@ export class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
2826
2837
|
this.applyStates();
|
|
2827
2838
|
const webgpuPipelineContext = this._currentEffect._pipelineContext;
|
|
2828
2839
|
this.bindUniformBufferBase(this._currentRenderTarget ? this._ubInvertY : this._ubDontInvertY, 0, WebGPUShaderProcessor.InternalsUBOName);
|
|
2840
|
+
this._currentDrawContext.setVertexPulling(this._currentMaterialContext.useVertexPulling, webgpuPipelineContext, this._currentVertexBuffers, this._cacheRenderPipeline.indexBuffer, // don't use this._currentIndexBuffer, it will have been set to null by _drawArraysType!
|
|
2841
|
+
this._currentOverrideVertexBuffers);
|
|
2829
2842
|
if (webgpuPipelineContext.uniformBuffer) {
|
|
2830
2843
|
webgpuPipelineContext.uniformBuffer.update();
|
|
2831
2844
|
this.bindUniformBufferBase(webgpuPipelineContext.uniformBuffer.getBuffer(), 0, WebGPUShaderProcessor.LeftOvertUBOName);
|
|
@@ -2901,7 +2914,7 @@ export class WebGPUEngine extends ThinWebGPUEngine {
|
|
|
2901
2914
|
}
|
|
2902
2915
|
// draw
|
|
2903
2916
|
const nonCompatMode = !this.compatibilityMode && !this._snapshotRendering.record;
|
|
2904
|
-
if (
|
|
2917
|
+
if (this._currentDrawContext.indirectDrawBuffer) {
|
|
2905
2918
|
this._currentDrawContext.setIndirectData(count, instancesCount || 1, start);
|
|
2906
2919
|
if (drawType === 0) {
|
|
2907
2920
|
renderPass2.drawIndexedIndirect(this._currentDrawContext.indirectDrawBuffer, 0);
|