{"ast":null,"code":"import { Scene } from \"../scene.js\";\nimport { SceneComponentConstants } from \"../sceneComponent.js\";\nimport { PrePassRenderer } from \"./prePassRenderer.js\";\nimport { Logger } from \"../Misc/logger.js\";\nObject.defineProperty(Scene.prototype, \"prePassRenderer\", {\n get: function () {\n return this._prePassRenderer;\n },\n set: function (value) {\n if (value && value.isSupported) {\n this._prePassRenderer = value;\n }\n },\n enumerable: true,\n configurable: true\n});\nScene.prototype.enablePrePassRenderer = function () {\n if (this._prePassRenderer) {\n return this._prePassRenderer;\n }\n this._prePassRenderer = new PrePassRenderer(this);\n if (!this._prePassRenderer.isSupported) {\n this._prePassRenderer = null;\n Logger.Error(\"PrePassRenderer needs WebGL 2 support.\\n\" + \"Maybe you tried to use the following features that need the PrePassRenderer :\\n\" + \" + Subsurface Scattering\");\n }\n return this._prePassRenderer;\n};\nScene.prototype.disablePrePassRenderer = function () {\n if (!this._prePassRenderer) {\n return;\n }\n this._prePassRenderer.dispose();\n this._prePassRenderer = null;\n};\n/**\n * Defines the Geometry Buffer scene component responsible to manage a G-Buffer useful\n * in several rendering techniques.\n */\nexport class PrePassRendererSceneComponent {\n /**\n * Creates a new instance of the component for the given scene\n * @param scene Defines the scene to register the component in\n */\n constructor(scene) {\n /**\n * The component name helpful to identify the component in the list of scene components.\n */\n this.name = SceneComponentConstants.NAME_PREPASSRENDERER;\n this.scene = scene;\n }\n /**\n * Registers the component in a given scene\n */\n register() {\n this.scene._beforeCameraDrawStage.registerStep(SceneComponentConstants.STEP_BEFORECAMERADRAW_PREPASS, this, this._beforeCameraDraw);\n this.scene._afterCameraDrawStage.registerStep(SceneComponentConstants.STEP_AFTERCAMERADRAW_PREPASS, this, this._afterCameraDraw);\n this.scene._beforeRenderTargetDrawStage.registerStep(SceneComponentConstants.STEP_BEFORERENDERTARGETDRAW_PREPASS, this, this._beforeRenderTargetDraw);\n this.scene._afterRenderTargetDrawStage.registerStep(SceneComponentConstants.STEP_AFTERCAMERADRAW_PREPASS, this, this._afterRenderTargetDraw);\n this.scene._beforeClearStage.registerStep(SceneComponentConstants.STEP_BEFORECLEAR_PREPASS, this, this._beforeClearStage);\n this.scene._beforeRenderTargetClearStage.registerStep(SceneComponentConstants.STEP_BEFORERENDERTARGETCLEAR_PREPASS, this, this._beforeRenderTargetClearStage);\n this.scene._beforeRenderingMeshStage.registerStep(SceneComponentConstants.STEP_BEFORERENDERINGMESH_PREPASS, this, this._beforeRenderingMeshStage);\n this.scene._afterRenderingMeshStage.registerStep(SceneComponentConstants.STEP_AFTERRENDERINGMESH_PREPASS, this, this._afterRenderingMeshStage);\n }\n _beforeRenderTargetDraw(renderTarget, faceIndex, layer) {\n if (this.scene.prePassRenderer && !renderTarget.noPrePassRenderer) {\n this.scene.prePassRenderer._setRenderTarget(renderTarget._prePassRenderTarget);\n this.scene.prePassRenderer._beforeDraw(undefined, faceIndex, layer);\n }\n }\n _afterRenderTargetDraw(renderTarget, faceIndex, layer) {\n if (this.scene.prePassRenderer && !renderTarget.noPrePassRenderer) {\n this.scene.prePassRenderer._afterDraw(faceIndex, layer);\n }\n }\n _beforeRenderTargetClearStage(renderTarget) {\n if (this.scene.prePassRenderer && !renderTarget.noPrePassRenderer) {\n if (!renderTarget._prePassRenderTarget) {\n renderTarget._prePassRenderTarget = this.scene.prePassRenderer._createRenderTarget(renderTarget.name + \"_prePassRTT\", renderTarget);\n }\n this.scene.prePassRenderer._setRenderTarget(renderTarget._prePassRenderTarget);\n this.scene.prePassRenderer._clear();\n }\n }\n _beforeCameraDraw(camera) {\n if (this.scene.prePassRenderer) {\n this.scene.prePassRenderer._setRenderTarget(null);\n this.scene.prePassRenderer._beforeDraw(camera);\n }\n }\n _afterCameraDraw() {\n if (this.scene.prePassRenderer) {\n this.scene.prePassRenderer._afterDraw();\n }\n }\n _beforeClearStage() {\n if (this.scene.prePassRenderer) {\n this.scene.prePassRenderer._setRenderTarget(null);\n this.scene.prePassRenderer._clear();\n }\n }\n _beforeRenderingMeshStage(mesh, subMesh, batch, effect) {\n if (!effect) {\n return;\n }\n // Render to MRT\n const scene = mesh.getScene();\n if (scene.prePassRenderer) {\n scene.prePassRenderer.bindAttachmentsForEffect(effect, subMesh);\n }\n }\n _afterRenderingMeshStage(mesh) {\n const scene = mesh.getScene();\n if (scene.prePassRenderer) {\n scene.prePassRenderer.restoreAttachments();\n }\n }\n /**\n * Rebuilds the elements related to this component in case of\n * context lost for instance.\n */\n rebuild() {\n // Nothing to do for this component\n }\n /**\n * Disposes the component and the associated resources\n */\n dispose() {\n this.scene.disablePrePassRenderer();\n }\n}\nPrePassRenderer._SceneComponentInitialization = scene => {\n // Register the G Buffer component to the scene.\n let component = scene._getComponent(SceneComponentConstants.NAME_PREPASSRENDERER);\n if (!component) {\n component = new PrePassRendererSceneComponent(scene);\n scene._addComponent(component);\n }\n};","map":{"version":3,"names":["Scene","SceneComponentConstants","PrePassRenderer","Logger","Object","defineProperty","prototype","get","_prePassRenderer","set","value","isSupported","enumerable","configurable","enablePrePassRenderer","Error","disablePrePassRenderer","dispose","PrePassRendererSceneComponent","constructor","scene","name","NAME_PREPASSRENDERER","register","_beforeCameraDrawStage","registerStep","STEP_BEFORECAMERADRAW_PREPASS","_beforeCameraDraw","_afterCameraDrawStage","STEP_AFTERCAMERADRAW_PREPASS","_afterCameraDraw","_beforeRenderTargetDrawStage","STEP_BEFORERENDERTARGETDRAW_PREPASS","_beforeRenderTargetDraw","_afterRenderTargetDrawStage","_afterRenderTargetDraw","_beforeClearStage","STEP_BEFORECLEAR_PREPASS","_beforeRenderTargetClearStage","STEP_BEFORERENDERTARGETCLEAR_PREPASS","_beforeRenderingMeshStage","STEP_BEFORERENDERINGMESH_PREPASS","_afterRenderingMeshStage","STEP_AFTERRENDERINGMESH_PREPASS","renderTarget","faceIndex","layer","prePassRenderer","noPrePassRenderer","_setRenderTarget","_prePassRenderTarget","_beforeDraw","undefined","_afterDraw","_createRenderTarget","_clear","camera","mesh","subMesh","batch","effect","getScene","bindAttachmentsForEffect","restoreAttachments","rebuild","_SceneComponentInitialization","component","_getComponent","_addComponent"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Rendering/prePassRendererSceneComponent.js"],"sourcesContent":["import { Scene } from \"../scene.js\";\nimport { SceneComponentConstants } from \"../sceneComponent.js\";\nimport { PrePassRenderer } from \"./prePassRenderer.js\";\nimport { Logger } from \"../Misc/logger.js\";\nObject.defineProperty(Scene.prototype, \"prePassRenderer\", {\n get: function () {\n return this._prePassRenderer;\n },\n set: function (value) {\n if (value && value.isSupported) {\n this._prePassRenderer = value;\n }\n },\n enumerable: true,\n configurable: true,\n});\nScene.prototype.enablePrePassRenderer = function () {\n if (this._prePassRenderer) {\n return this._prePassRenderer;\n }\n this._prePassRenderer = new PrePassRenderer(this);\n if (!this._prePassRenderer.isSupported) {\n this._prePassRenderer = null;\n Logger.Error(\"PrePassRenderer needs WebGL 2 support.\\n\" + \"Maybe you tried to use the following features that need the PrePassRenderer :\\n\" + \" + Subsurface Scattering\");\n }\n return this._prePassRenderer;\n};\nScene.prototype.disablePrePassRenderer = function () {\n if (!this._prePassRenderer) {\n return;\n }\n this._prePassRenderer.dispose();\n this._prePassRenderer = null;\n};\n/**\n * Defines the Geometry Buffer scene component responsible to manage a G-Buffer useful\n * in several rendering techniques.\n */\nexport class PrePassRendererSceneComponent {\n /**\n * Creates a new instance of the component for the given scene\n * @param scene Defines the scene to register the component in\n */\n constructor(scene) {\n /**\n * The component name helpful to identify the component in the list of scene components.\n */\n this.name = SceneComponentConstants.NAME_PREPASSRENDERER;\n this.scene = scene;\n }\n /**\n * Registers the component in a given scene\n */\n register() {\n this.scene._beforeCameraDrawStage.registerStep(SceneComponentConstants.STEP_BEFORECAMERADRAW_PREPASS, this, this._beforeCameraDraw);\n this.scene._afterCameraDrawStage.registerStep(SceneComponentConstants.STEP_AFTERCAMERADRAW_PREPASS, this, this._afterCameraDraw);\n this.scene._beforeRenderTargetDrawStage.registerStep(SceneComponentConstants.STEP_BEFORERENDERTARGETDRAW_PREPASS, this, this._beforeRenderTargetDraw);\n this.scene._afterRenderTargetDrawStage.registerStep(SceneComponentConstants.STEP_AFTERCAMERADRAW_PREPASS, this, this._afterRenderTargetDraw);\n this.scene._beforeClearStage.registerStep(SceneComponentConstants.STEP_BEFORECLEAR_PREPASS, this, this._beforeClearStage);\n this.scene._beforeRenderTargetClearStage.registerStep(SceneComponentConstants.STEP_BEFORERENDERTARGETCLEAR_PREPASS, this, this._beforeRenderTargetClearStage);\n this.scene._beforeRenderingMeshStage.registerStep(SceneComponentConstants.STEP_BEFORERENDERINGMESH_PREPASS, this, this._beforeRenderingMeshStage);\n this.scene._afterRenderingMeshStage.registerStep(SceneComponentConstants.STEP_AFTERRENDERINGMESH_PREPASS, this, this._afterRenderingMeshStage);\n }\n _beforeRenderTargetDraw(renderTarget, faceIndex, layer) {\n if (this.scene.prePassRenderer && !renderTarget.noPrePassRenderer) {\n this.scene.prePassRenderer._setRenderTarget(renderTarget._prePassRenderTarget);\n this.scene.prePassRenderer._beforeDraw(undefined, faceIndex, layer);\n }\n }\n _afterRenderTargetDraw(renderTarget, faceIndex, layer) {\n if (this.scene.prePassRenderer && !renderTarget.noPrePassRenderer) {\n this.scene.prePassRenderer._afterDraw(faceIndex, layer);\n }\n }\n _beforeRenderTargetClearStage(renderTarget) {\n if (this.scene.prePassRenderer && !renderTarget.noPrePassRenderer) {\n if (!renderTarget._prePassRenderTarget) {\n renderTarget._prePassRenderTarget = this.scene.prePassRenderer._createRenderTarget(renderTarget.name + \"_prePassRTT\", renderTarget);\n }\n this.scene.prePassRenderer._setRenderTarget(renderTarget._prePassRenderTarget);\n this.scene.prePassRenderer._clear();\n }\n }\n _beforeCameraDraw(camera) {\n if (this.scene.prePassRenderer) {\n this.scene.prePassRenderer._setRenderTarget(null);\n this.scene.prePassRenderer._beforeDraw(camera);\n }\n }\n _afterCameraDraw() {\n if (this.scene.prePassRenderer) {\n this.scene.prePassRenderer._afterDraw();\n }\n }\n _beforeClearStage() {\n if (this.scene.prePassRenderer) {\n this.scene.prePassRenderer._setRenderTarget(null);\n this.scene.prePassRenderer._clear();\n }\n }\n _beforeRenderingMeshStage(mesh, subMesh, batch, effect) {\n if (!effect) {\n return;\n }\n // Render to MRT\n const scene = mesh.getScene();\n if (scene.prePassRenderer) {\n scene.prePassRenderer.bindAttachmentsForEffect(effect, subMesh);\n }\n }\n _afterRenderingMeshStage(mesh) {\n const scene = mesh.getScene();\n if (scene.prePassRenderer) {\n scene.prePassRenderer.restoreAttachments();\n }\n }\n /**\n * Rebuilds the elements related to this component in case of\n * context lost for instance.\n */\n rebuild() {\n // Nothing to do for this component\n }\n /**\n * Disposes the component and the associated resources\n */\n dispose() {\n this.scene.disablePrePassRenderer();\n }\n}\nPrePassRenderer._SceneComponentInitialization = (scene) => {\n // Register the G Buffer component to the scene.\n let component = scene._getComponent(SceneComponentConstants.NAME_PREPASSRENDERER);\n if (!component) {\n component = new PrePassRendererSceneComponent(scene);\n scene._addComponent(component);\n }\n};\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}