4cc5bf881b58424d23aebd7c92dcf8bf17df9b65267595d705a641e1c82049b0.json 11 KB

1
  1. {"ast":null,"code":"import { WebGPUQuerySet } from \"./webgpuQuerySet.js\";\n/** @internal */\nexport class WebGPUOcclusionQuery {\n get querySet() {\n return this._querySet.querySet;\n }\n get hasQueries() {\n return this._currentTotalIndices !== this._availableIndices.length;\n }\n canBeginQuery(index) {\n if (this._frameQuerySetIsDirty === this._engine.frameId || this._queryFrameId[index] === this._engine.frameId) {\n return false;\n }\n const canBegin = this._engine._getCurrentRenderPassWrapper().renderPassDescriptor.occlusionQuerySet !== undefined;\n if (canBegin) {\n this._queryFrameId[index] = this._engine.frameId;\n }\n return canBegin;\n }\n constructor(engine, device, bufferManager, startCount = 50, incrementCount = 100) {\n this._availableIndices = [];\n this._frameQuerySetIsDirty = -1;\n this._queryFrameId = [];\n this._engine = engine;\n this._device = device;\n this._bufferManager = bufferManager;\n this._frameLastBuffer = -1;\n this._currentTotalIndices = 0;\n this._countIncrement = incrementCount;\n this._allocateNewIndices(startCount);\n }\n createQuery() {\n if (this._availableIndices.length === 0) {\n this._allocateNewIndices();\n }\n const index = this._availableIndices[this._availableIndices.length - 1];\n this._availableIndices.length--;\n return index;\n }\n deleteQuery(index) {\n this._availableIndices[this._availableIndices.length] = index;\n }\n isQueryResultAvailable(index) {\n this._retrieveQueryBuffer();\n return !!this._lastBuffer && index < this._lastBuffer.length;\n }\n getQueryResult(index) {\n var _this$_lastBuffer$ind, _this$_lastBuffer;\n return Number((_this$_lastBuffer$ind = (_this$_lastBuffer = this._lastBuffer) === null || _this$_lastBuffer === void 0 ? void 0 : _this$_lastBuffer[index]) !== null && _this$_lastBuffer$ind !== void 0 ? _this$_lastBuffer$ind : -1);\n }\n _retrieveQueryBuffer() {\n if (this._lastBuffer && this._frameLastBuffer === this._engine.frameId) {\n return;\n }\n if (this._frameLastBuffer !== this._engine.frameId) {\n this._frameLastBuffer = this._engine.frameId;\n this._querySet.readValues(0, this._currentTotalIndices).then(arrayBuffer => {\n this._lastBuffer = arrayBuffer;\n });\n }\n }\n _allocateNewIndices(numIndices) {\n var _numIndices;\n numIndices = (_numIndices = numIndices) !== null && _numIndices !== void 0 ? _numIndices : this._countIncrement;\n this._delayQuerySetDispose();\n for (let i = 0; i < numIndices; ++i) {\n this._availableIndices.push(this._currentTotalIndices + i);\n }\n this._currentTotalIndices += numIndices;\n this._querySet = new WebGPUQuerySet(this._engine, this._currentTotalIndices, \"occlusion\" /* WebGPUConstants.QueryType.Occlusion */, this._device, this._bufferManager, false, \"QuerySet_OcclusionQuery_count_\" + this._currentTotalIndices);\n this._frameQuerySetIsDirty = this._engine.frameId;\n }\n _delayQuerySetDispose() {\n const querySet = this._querySet;\n if (querySet) {\n // Wait a bit before disposing of the queryset, in case some queries are still running for it\n setTimeout(() => querySet.dispose, 1000);\n }\n }\n dispose() {\n var _this$_querySet;\n (_this$_querySet = this._querySet) === null || _this$_querySet === void 0 || _this$_querySet.dispose();\n this._availableIndices.length = 0;\n }\n}","map":{"version":3,"names":["WebGPUQuerySet","WebGPUOcclusionQuery","querySet","_querySet","hasQueries","_currentTotalIndices","_availableIndices","length","canBeginQuery","index","_frameQuerySetIsDirty","_engine","frameId","_queryFrameId","canBegin","_getCurrentRenderPassWrapper","renderPassDescriptor","occlusionQuerySet","undefined","constructor","engine","device","bufferManager","startCount","incrementCount","_device","_bufferManager","_frameLastBuffer","_countIncrement","_allocateNewIndices","createQuery","deleteQuery","isQueryResultAvailable","_retrieveQueryBuffer","_lastBuffer","getQueryResult","_this$_lastBuffer$ind","_this$_lastBuffer","Number","readValues","then","arrayBuffer","numIndices","_numIndices","_delayQuerySetDispose","i","push","setTimeout","dispose","_this$_querySet"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Engines/WebGPU/webgpuOcclusionQuery.js"],"sourcesContent":["import { WebGPUQuerySet } from \"./webgpuQuerySet.js\";\n/** @internal */\nexport class WebGPUOcclusionQuery {\n get querySet() {\n return this._querySet.querySet;\n }\n get hasQueries() {\n return this._currentTotalIndices !== this._availableIndices.length;\n }\n canBeginQuery(index) {\n if (this._frameQuerySetIsDirty === this._engine.frameId || this._queryFrameId[index] === this._engine.frameId) {\n return false;\n }\n const canBegin = this._engine._getCurrentRenderPassWrapper().renderPassDescriptor.occlusionQuerySet !== undefined;\n if (canBegin) {\n this._queryFrameId[index] = this._engine.frameId;\n }\n return canBegin;\n }\n constructor(engine, device, bufferManager, startCount = 50, incrementCount = 100) {\n this._availableIndices = [];\n this._frameQuerySetIsDirty = -1;\n this._queryFrameId = [];\n this._engine = engine;\n this._device = device;\n this._bufferManager = bufferManager;\n this._frameLastBuffer = -1;\n this._currentTotalIndices = 0;\n this._countIncrement = incrementCount;\n this._allocateNewIndices(startCount);\n }\n createQuery() {\n if (this._availableIndices.length === 0) {\n this._allocateNewIndices();\n }\n const index = this._availableIndices[this._availableIndices.length - 1];\n this._availableIndices.length--;\n return index;\n }\n deleteQuery(index) {\n this._availableIndices[this._availableIndices.length] = index;\n }\n isQueryResultAvailable(index) {\n this._retrieveQueryBuffer();\n return !!this._lastBuffer && index < this._lastBuffer.length;\n }\n getQueryResult(index) {\n return Number(this._lastBuffer?.[index] ?? -1);\n }\n _retrieveQueryBuffer() {\n if (this._lastBuffer && this._frameLastBuffer === this._engine.frameId) {\n return;\n }\n if (this._frameLastBuffer !== this._engine.frameId) {\n this._frameLastBuffer = this._engine.frameId;\n this._querySet.readValues(0, this._currentTotalIndices).then((arrayBuffer) => {\n this._lastBuffer = arrayBuffer;\n });\n }\n }\n _allocateNewIndices(numIndices) {\n numIndices = numIndices ?? this._countIncrement;\n this._delayQuerySetDispose();\n for (let i = 0; i < numIndices; ++i) {\n this._availableIndices.push(this._currentTotalIndices + i);\n }\n this._currentTotalIndices += numIndices;\n this._querySet = new WebGPUQuerySet(this._engine, this._currentTotalIndices, \"occlusion\" /* WebGPUConstants.QueryType.Occlusion */, this._device, this._bufferManager, false, \"QuerySet_OcclusionQuery_count_\" + this._currentTotalIndices);\n this._frameQuerySetIsDirty = this._engine.frameId;\n }\n _delayQuerySetDispose() {\n const querySet = this._querySet;\n if (querySet) {\n // Wait a bit before disposing of the queryset, in case some queries are still running for it\n setTimeout(() => querySet.dispose, 1000);\n }\n }\n dispose() {\n this._querySet?.dispose();\n this._availableIndices.length = 0;\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}