1 |
- {"ast":null,"code":"import { Matrix } from \"../Maths/math.vector.js\";\nimport { Material } from \"../Materials/material.js\";\n/**\n * Base class of materials working in push mode in babylon JS\n * @internal\n */\nexport class PushMaterial extends Material {\n constructor(name, scene, storeEffectOnSubMeshes = true, forceGLSL = false) {\n super(name, scene, undefined, forceGLSL);\n this._normalMatrix = new Matrix();\n this._storeEffectOnSubMeshes = storeEffectOnSubMeshes;\n }\n getEffect() {\n return this._storeEffectOnSubMeshes ? this._activeEffect : super.getEffect();\n }\n isReady(mesh, useInstances) {\n if (!mesh) {\n return false;\n }\n if (!this._storeEffectOnSubMeshes) {\n return true;\n }\n if (!mesh.subMeshes || mesh.subMeshes.length === 0) {\n return true;\n }\n return this.isReadyForSubMesh(mesh, mesh.subMeshes[0], useInstances);\n }\n _isReadyForSubMesh(subMesh) {\n const defines = subMesh.materialDefines;\n if (!this.checkReadyOnEveryCall && subMesh.effect && defines) {\n if (defines._renderId === this.getScene().getRenderId()) {\n return true;\n }\n }\n return false;\n }\n /**\n * Binds the given world matrix to the active effect\n *\n * @param world the matrix to bind\n */\n bindOnlyWorldMatrix(world) {\n this._activeEffect.setMatrix(\"world\", world);\n }\n /**\n * Binds the given normal matrix to the active effect\n *\n * @param normalMatrix the matrix to bind\n */\n bindOnlyNormalMatrix(normalMatrix) {\n this._activeEffect.setMatrix(\"normalMatrix\", normalMatrix);\n }\n bind(world, mesh) {\n if (!mesh) {\n return;\n }\n this.bindForSubMesh(world, mesh, mesh.subMeshes[0]);\n }\n _afterBind(mesh, effect = null, subMesh) {\n super._afterBind(mesh, effect, subMesh);\n this.getScene()._cachedEffect = effect;\n if (subMesh) {\n subMesh._drawWrapper._forceRebindOnNextCall = false;\n } else {\n this._drawWrapper._forceRebindOnNextCall = false;\n }\n }\n _mustRebind(scene, effect, subMesh, visibility = 1) {\n return subMesh._drawWrapper._forceRebindOnNextCall || scene.isCachedMaterialInvalid(this, effect, visibility);\n }\n dispose(forceDisposeEffect, forceDisposeTextures, notBoundToMesh) {\n this._activeEffect = undefined;\n super.dispose(forceDisposeEffect, forceDisposeTextures, notBoundToMesh);\n }\n}","map":{"version":3,"names":["Matrix","Material","PushMaterial","constructor","name","scene","storeEffectOnSubMeshes","forceGLSL","undefined","_normalMatrix","_storeEffectOnSubMeshes","getEffect","_activeEffect","isReady","mesh","useInstances","subMeshes","length","isReadyForSubMesh","_isReadyForSubMesh","subMesh","defines","materialDefines","checkReadyOnEveryCall","effect","_renderId","getScene","getRenderId","bindOnlyWorldMatrix","world","setMatrix","bindOnlyNormalMatrix","normalMatrix","bind","bindForSubMesh","_afterBind","_cachedEffect","_drawWrapper","_forceRebindOnNextCall","_mustRebind","visibility","isCachedMaterialInvalid","dispose","forceDisposeEffect","forceDisposeTextures","notBoundToMesh"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/pushMaterial.js"],"sourcesContent":["import { Matrix } from \"../Maths/math.vector.js\";\nimport { Material } from \"../Materials/material.js\";\n/**\n * Base class of materials working in push mode in babylon JS\n * @internal\n */\nexport class PushMaterial extends Material {\n constructor(name, scene, storeEffectOnSubMeshes = true, forceGLSL = false) {\n super(name, scene, undefined, forceGLSL);\n this._normalMatrix = new Matrix();\n this._storeEffectOnSubMeshes = storeEffectOnSubMeshes;\n }\n getEffect() {\n return this._storeEffectOnSubMeshes ? this._activeEffect : super.getEffect();\n }\n isReady(mesh, useInstances) {\n if (!mesh) {\n return false;\n }\n if (!this._storeEffectOnSubMeshes) {\n return true;\n }\n if (!mesh.subMeshes || mesh.subMeshes.length === 0) {\n return true;\n }\n return this.isReadyForSubMesh(mesh, mesh.subMeshes[0], useInstances);\n }\n _isReadyForSubMesh(subMesh) {\n const defines = subMesh.materialDefines;\n if (!this.checkReadyOnEveryCall && subMesh.effect && defines) {\n if (defines._renderId === this.getScene().getRenderId()) {\n return true;\n }\n }\n return false;\n }\n /**\n * Binds the given world matrix to the active effect\n *\n * @param world the matrix to bind\n */\n bindOnlyWorldMatrix(world) {\n this._activeEffect.setMatrix(\"world\", world);\n }\n /**\n * Binds the given normal matrix to the active effect\n *\n * @param normalMatrix the matrix to bind\n */\n bindOnlyNormalMatrix(normalMatrix) {\n this._activeEffect.setMatrix(\"normalMatrix\", normalMatrix);\n }\n bind(world, mesh) {\n if (!mesh) {\n return;\n }\n this.bindForSubMesh(world, mesh, mesh.subMeshes[0]);\n }\n _afterBind(mesh, effect = null, subMesh) {\n super._afterBind(mesh, effect, subMesh);\n this.getScene()._cachedEffect = effect;\n if (subMesh) {\n subMesh._drawWrapper._forceRebindOnNextCall = false;\n }\n else {\n this._drawWrapper._forceRebindOnNextCall = false;\n }\n }\n _mustRebind(scene, effect, subMesh, visibility = 1) {\n return subMesh._drawWrapper._forceRebindOnNextCall || scene.isCachedMaterialInvalid(this, effect, visibility);\n }\n dispose(forceDisposeEffect, forceDisposeTextures, notBoundToMesh) {\n this._activeEffect = undefined;\n super.dispose(forceDisposeEffect, forceDisposeTextures, notBoundToMesh);\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|