1 |
- {"ast":null,"code":"import { __decorate } from \"../tslib.es6.js\";\nimport { serialize, serializeAsVector3 } from \"../Misc/decorators.js\";\nimport { Matrix, TmpVectors, Vector3 } from \"../Maths/math.vector.js\";\nimport { Light } from \"./light.js\";\nimport { Axis } from \"../Maths/math.axis.js\";\n/**\n * Base implementation IShadowLight\n * It groups all the common behaviour in order to reduce duplication and better follow the DRY pattern.\n */\nexport class ShadowLight extends Light {\n constructor() {\n super(...arguments);\n this._needProjectionMatrixCompute = true;\n this._viewMatrix = Matrix.Identity();\n this._projectionMatrix = Matrix.Identity();\n }\n _setPosition(value) {\n this._position = value;\n }\n /**\n * Sets the position the shadow will be casted from. Also use as the light position for both\n * point and spot lights.\n */\n get position() {\n return this._position;\n }\n /**\n * Sets the position the shadow will be casted from. Also use as the light position for both\n * point and spot lights.\n */\n set position(value) {\n this._setPosition(value);\n }\n _setDirection(value) {\n this._direction = value;\n }\n /**\n * In 2d mode (needCube being false), gets the direction used to cast the shadow.\n * Also use as the light direction on spot and directional lights.\n */\n get direction() {\n return this._direction;\n }\n /**\n * In 2d mode (needCube being false), sets the direction used to cast the shadow.\n * Also use as the light direction on spot and directional lights.\n */\n set direction(value) {\n this._setDirection(value);\n }\n /**\n * Gets the shadow projection clipping minimum z value.\n */\n get shadowMinZ() {\n return this._shadowMinZ;\n }\n /**\n * Sets the shadow projection clipping minimum z value.\n */\n set shadowMinZ(value) {\n this._shadowMinZ = value;\n this.forceProjectionMatrixCompute();\n }\n /**\n * Sets the shadow projection clipping maximum z value.\n */\n get shadowMaxZ() {\n return this._shadowMaxZ;\n }\n /**\n * Gets the shadow projection clipping maximum z value.\n */\n set shadowMaxZ(value) {\n this._shadowMaxZ = value;\n this.forceProjectionMatrixCompute();\n }\n /**\n * Computes the transformed information (transformedPosition and transformedDirection in World space) of the current light\n * @returns true if the information has been computed, false if it does not need to (no parenting)\n */\n computeTransformedInformation() {\n if (this.parent && this.parent.getWorldMatrix) {\n if (!this.transformedPosition) {\n this.transformedPosition = Vector3.Zero();\n }\n Vector3.TransformCoordinatesToRef(this.position, this.parent.getWorldMatrix(), this.transformedPosition);\n // In case the direction is present.\n if (this.direction) {\n if (!this.transformedDirection) {\n this.transformedDirection = Vector3.Zero();\n }\n Vector3.TransformNormalToRef(this.direction, this.parent.getWorldMatrix(), this.transformedDirection);\n }\n return true;\n }\n return false;\n }\n /**\n * Return the depth scale used for the shadow map.\n * @returns the depth scale.\n */\n getDepthScale() {\n return 50.0;\n }\n /**\n * Get the direction to use to render the shadow map. In case of cube texture, the face index can be passed.\n * @param faceIndex The index of the face we are computed the direction to generate shadow\n * @returns The set direction in 2d mode otherwise the direction to the cubemap face if needCube() is true\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getShadowDirection(faceIndex) {\n return this.transformedDirection ? this.transformedDirection : this.direction;\n }\n /**\n * If computeTransformedInformation has been called, returns the ShadowLight absolute position in the world. Otherwise, returns the local position.\n * @returns the position vector in world space\n */\n getAbsolutePosition() {\n return this.transformedPosition ? this.transformedPosition : this.position;\n }\n /**\n * Sets the ShadowLight direction toward the passed target.\n * @param target The point to target in local space\n * @returns the updated ShadowLight direction\n */\n setDirectionToTarget(target) {\n this.direction = Vector3.Normalize(target.subtract(this.position));\n return this.direction;\n }\n /**\n * Returns the light rotation in euler definition.\n * @returns the x y z rotation in local space.\n */\n getRotation() {\n this.direction.normalize();\n const xaxis = Vector3.Cross(this.direction, Axis.Y);\n const yaxis = Vector3.Cross(xaxis, this.direction);\n return Vector3.RotationFromAxis(xaxis, yaxis, this.direction);\n }\n /**\n * Returns whether or not the shadow generation require a cube texture or a 2d texture.\n * @returns true if a cube texture needs to be use\n */\n needCube() {\n return false;\n }\n /**\n * Detects if the projection matrix requires to be recomputed this frame.\n * @returns true if it requires to be recomputed otherwise, false.\n */\n needProjectionMatrixCompute() {\n return this._needProjectionMatrixCompute;\n }\n /**\n * Forces the shadow generator to recompute the projection matrix even if position and direction did not changed.\n */\n forceProjectionMatrixCompute() {\n this._needProjectionMatrixCompute = true;\n }\n /** @internal */\n _initCache() {\n super._initCache();\n this._cache.position = Vector3.Zero();\n }\n /** @internal */\n _isSynchronized() {\n if (!this._cache.position.equals(this.position)) {\n return false;\n }\n return true;\n }\n /**\n * Computes the world matrix of the node\n * @param force defines if the cache version should be invalidated forcing the world matrix to be created from scratch\n * @returns the world matrix\n */\n computeWorldMatrix(force) {\n if (!force && this.isSynchronized()) {\n this._currentRenderId = this.getScene().getRenderId();\n return this._worldMatrix;\n }\n this._updateCache();\n this._cache.position.copyFrom(this.position);\n if (!this._worldMatrix) {\n this._worldMatrix = Matrix.Identity();\n }\n Matrix.TranslationToRef(this.position.x, this.position.y, this.position.z, this._worldMatrix);\n if (this.parent && this.parent.getWorldMatrix) {\n this._worldMatrix.multiplyToRef(this.parent.getWorldMatrix(), this._worldMatrix);\n this._markSyncedWithParent();\n }\n // Cache the determinant\n this._worldMatrixDeterminantIsDirty = true;\n return this._worldMatrix;\n }\n /**\n * Gets the minZ used for shadow according to both the scene and the light.\n * @param activeCamera The camera we are returning the min for\n * @returns the depth min z\n */\n getDepthMinZ(activeCamera) {\n return this.shadowMinZ !== undefined ? this.shadowMinZ : activeCamera.minZ;\n }\n /**\n * Gets the maxZ used for shadow according to both the scene and the light.\n * @param activeCamera The camera we are returning the max for\n * @returns the depth max z\n */\n getDepthMaxZ(activeCamera) {\n return this.shadowMaxZ !== undefined ? this.shadowMaxZ : activeCamera.maxZ;\n }\n /**\n * Sets the shadow projection matrix in parameter to the generated projection matrix.\n * @param matrix The matrix to updated with the projection information\n * @param viewMatrix The transform matrix of the light\n * @param renderList The list of mesh to render in the map\n * @returns The current light\n */\n setShadowProjectionMatrix(matrix, viewMatrix, renderList) {\n if (this.customProjectionMatrixBuilder) {\n this.customProjectionMatrixBuilder(viewMatrix, renderList, matrix);\n } else {\n this._setDefaultShadowProjectionMatrix(matrix, viewMatrix, renderList);\n }\n return this;\n }\n /** @internal */\n _syncParentEnabledState() {\n super._syncParentEnabledState();\n if (!this.parent || !this.parent.getWorldMatrix) {\n this.transformedPosition = null;\n this.transformedDirection = null;\n }\n }\n /**\n * Returns the view matrix.\n * @param faceIndex The index of the face for which we want to extract the view matrix. Only used for point light types.\n * @returns The view matrix. Can be null, if a view matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).\n */\n getViewMatrix(faceIndex) {\n const lightDirection = TmpVectors.Vector3[0];\n let lightPosition = this.position;\n if (this.computeTransformedInformation()) {\n lightPosition = this.transformedPosition;\n }\n Vector3.NormalizeToRef(this.getShadowDirection(faceIndex), lightDirection);\n if (Math.abs(Vector3.Dot(lightDirection, Vector3.Up())) === 1.0) {\n lightDirection.z = 0.0000000000001; // Required to avoid perfectly perpendicular light\n }\n const lightTarget = TmpVectors.Vector3[1];\n lightPosition.addToRef(lightDirection, lightTarget);\n Matrix.LookAtLHToRef(lightPosition, lightTarget, Vector3.Up(), this._viewMatrix);\n return this._viewMatrix;\n }\n /**\n * Returns the projection matrix.\n * Note that viewMatrix and renderList are optional and are only used by lights that calculate the projection matrix from a list of meshes (e.g. directional lights with automatic extents calculation).\n * @param viewMatrix The view transform matrix of the light (optional).\n * @param renderList The list of meshes to take into account when calculating the projection matrix (optional).\n * @returns The projection matrix. Can be null, if a projection matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).\n */\n getProjectionMatrix(viewMatrix, renderList) {\n this.setShadowProjectionMatrix(this._projectionMatrix, viewMatrix !== null && viewMatrix !== void 0 ? viewMatrix : this._viewMatrix, renderList !== null && renderList !== void 0 ? renderList : []);\n return this._projectionMatrix;\n }\n}\n__decorate([serializeAsVector3()], ShadowLight.prototype, \"position\", null);\n__decorate([serializeAsVector3()], ShadowLight.prototype, \"direction\", null);\n__decorate([serialize()], ShadowLight.prototype, \"shadowMinZ\", null);\n__decorate([serialize()], ShadowLight.prototype, \"shadowMaxZ\", null);","map":{"version":3,"names":["__decorate","serialize","serializeAsVector3","Matrix","TmpVectors","Vector3","Light","Axis","ShadowLight","constructor","arguments","_needProjectionMatrixCompute","_viewMatrix","Identity","_projectionMatrix","_setPosition","value","_position","position","_setDirection","_direction","direction","shadowMinZ","_shadowMinZ","forceProjectionMatrixCompute","shadowMaxZ","_shadowMaxZ","computeTransformedInformation","parent","getWorldMatrix","transformedPosition","Zero","TransformCoordinatesToRef","transformedDirection","TransformNormalToRef","getDepthScale","getShadowDirection","faceIndex","getAbsolutePosition","setDirectionToTarget","target","Normalize","subtract","getRotation","normalize","xaxis","Cross","Y","yaxis","RotationFromAxis","needCube","needProjectionMatrixCompute","_initCache","_cache","_isSynchronized","equals","computeWorldMatrix","force","isSynchronized","_currentRenderId","getScene","getRenderId","_worldMatrix","_updateCache","copyFrom","TranslationToRef","x","y","z","multiplyToRef","_markSyncedWithParent","_worldMatrixDeterminantIsDirty","getDepthMinZ","activeCamera","undefined","minZ","getDepthMaxZ","maxZ","setShadowProjectionMatrix","matrix","viewMatrix","renderList","customProjectionMatrixBuilder","_setDefaultShadowProjectionMatrix","_syncParentEnabledState","getViewMatrix","lightDirection","lightPosition","NormalizeToRef","Math","abs","Dot","Up","lightTarget","addToRef","LookAtLHToRef","getProjectionMatrix","prototype"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Lights/shadowLight.js"],"sourcesContent":["import { __decorate } from \"../tslib.es6.js\";\nimport { serialize, serializeAsVector3 } from \"../Misc/decorators.js\";\nimport { Matrix, TmpVectors, Vector3 } from \"../Maths/math.vector.js\";\nimport { Light } from \"./light.js\";\nimport { Axis } from \"../Maths/math.axis.js\";\n/**\n * Base implementation IShadowLight\n * It groups all the common behaviour in order to reduce duplication and better follow the DRY pattern.\n */\nexport class ShadowLight extends Light {\n constructor() {\n super(...arguments);\n this._needProjectionMatrixCompute = true;\n this._viewMatrix = Matrix.Identity();\n this._projectionMatrix = Matrix.Identity();\n }\n _setPosition(value) {\n this._position = value;\n }\n /**\n * Sets the position the shadow will be casted from. Also use as the light position for both\n * point and spot lights.\n */\n get position() {\n return this._position;\n }\n /**\n * Sets the position the shadow will be casted from. Also use as the light position for both\n * point and spot lights.\n */\n set position(value) {\n this._setPosition(value);\n }\n _setDirection(value) {\n this._direction = value;\n }\n /**\n * In 2d mode (needCube being false), gets the direction used to cast the shadow.\n * Also use as the light direction on spot and directional lights.\n */\n get direction() {\n return this._direction;\n }\n /**\n * In 2d mode (needCube being false), sets the direction used to cast the shadow.\n * Also use as the light direction on spot and directional lights.\n */\n set direction(value) {\n this._setDirection(value);\n }\n /**\n * Gets the shadow projection clipping minimum z value.\n */\n get shadowMinZ() {\n return this._shadowMinZ;\n }\n /**\n * Sets the shadow projection clipping minimum z value.\n */\n set shadowMinZ(value) {\n this._shadowMinZ = value;\n this.forceProjectionMatrixCompute();\n }\n /**\n * Sets the shadow projection clipping maximum z value.\n */\n get shadowMaxZ() {\n return this._shadowMaxZ;\n }\n /**\n * Gets the shadow projection clipping maximum z value.\n */\n set shadowMaxZ(value) {\n this._shadowMaxZ = value;\n this.forceProjectionMatrixCompute();\n }\n /**\n * Computes the transformed information (transformedPosition and transformedDirection in World space) of the current light\n * @returns true if the information has been computed, false if it does not need to (no parenting)\n */\n computeTransformedInformation() {\n if (this.parent && this.parent.getWorldMatrix) {\n if (!this.transformedPosition) {\n this.transformedPosition = Vector3.Zero();\n }\n Vector3.TransformCoordinatesToRef(this.position, this.parent.getWorldMatrix(), this.transformedPosition);\n // In case the direction is present.\n if (this.direction) {\n if (!this.transformedDirection) {\n this.transformedDirection = Vector3.Zero();\n }\n Vector3.TransformNormalToRef(this.direction, this.parent.getWorldMatrix(), this.transformedDirection);\n }\n return true;\n }\n return false;\n }\n /**\n * Return the depth scale used for the shadow map.\n * @returns the depth scale.\n */\n getDepthScale() {\n return 50.0;\n }\n /**\n * Get the direction to use to render the shadow map. In case of cube texture, the face index can be passed.\n * @param faceIndex The index of the face we are computed the direction to generate shadow\n * @returns The set direction in 2d mode otherwise the direction to the cubemap face if needCube() is true\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getShadowDirection(faceIndex) {\n return this.transformedDirection ? this.transformedDirection : this.direction;\n }\n /**\n * If computeTransformedInformation has been called, returns the ShadowLight absolute position in the world. Otherwise, returns the local position.\n * @returns the position vector in world space\n */\n getAbsolutePosition() {\n return this.transformedPosition ? this.transformedPosition : this.position;\n }\n /**\n * Sets the ShadowLight direction toward the passed target.\n * @param target The point to target in local space\n * @returns the updated ShadowLight direction\n */\n setDirectionToTarget(target) {\n this.direction = Vector3.Normalize(target.subtract(this.position));\n return this.direction;\n }\n /**\n * Returns the light rotation in euler definition.\n * @returns the x y z rotation in local space.\n */\n getRotation() {\n this.direction.normalize();\n const xaxis = Vector3.Cross(this.direction, Axis.Y);\n const yaxis = Vector3.Cross(xaxis, this.direction);\n return Vector3.RotationFromAxis(xaxis, yaxis, this.direction);\n }\n /**\n * Returns whether or not the shadow generation require a cube texture or a 2d texture.\n * @returns true if a cube texture needs to be use\n */\n needCube() {\n return false;\n }\n /**\n * Detects if the projection matrix requires to be recomputed this frame.\n * @returns true if it requires to be recomputed otherwise, false.\n */\n needProjectionMatrixCompute() {\n return this._needProjectionMatrixCompute;\n }\n /**\n * Forces the shadow generator to recompute the projection matrix even if position and direction did not changed.\n */\n forceProjectionMatrixCompute() {\n this._needProjectionMatrixCompute = true;\n }\n /** @internal */\n _initCache() {\n super._initCache();\n this._cache.position = Vector3.Zero();\n }\n /** @internal */\n _isSynchronized() {\n if (!this._cache.position.equals(this.position)) {\n return false;\n }\n return true;\n }\n /**\n * Computes the world matrix of the node\n * @param force defines if the cache version should be invalidated forcing the world matrix to be created from scratch\n * @returns the world matrix\n */\n computeWorldMatrix(force) {\n if (!force && this.isSynchronized()) {\n this._currentRenderId = this.getScene().getRenderId();\n return this._worldMatrix;\n }\n this._updateCache();\n this._cache.position.copyFrom(this.position);\n if (!this._worldMatrix) {\n this._worldMatrix = Matrix.Identity();\n }\n Matrix.TranslationToRef(this.position.x, this.position.y, this.position.z, this._worldMatrix);\n if (this.parent && this.parent.getWorldMatrix) {\n this._worldMatrix.multiplyToRef(this.parent.getWorldMatrix(), this._worldMatrix);\n this._markSyncedWithParent();\n }\n // Cache the determinant\n this._worldMatrixDeterminantIsDirty = true;\n return this._worldMatrix;\n }\n /**\n * Gets the minZ used for shadow according to both the scene and the light.\n * @param activeCamera The camera we are returning the min for\n * @returns the depth min z\n */\n getDepthMinZ(activeCamera) {\n return this.shadowMinZ !== undefined ? this.shadowMinZ : activeCamera.minZ;\n }\n /**\n * Gets the maxZ used for shadow according to both the scene and the light.\n * @param activeCamera The camera we are returning the max for\n * @returns the depth max z\n */\n getDepthMaxZ(activeCamera) {\n return this.shadowMaxZ !== undefined ? this.shadowMaxZ : activeCamera.maxZ;\n }\n /**\n * Sets the shadow projection matrix in parameter to the generated projection matrix.\n * @param matrix The matrix to updated with the projection information\n * @param viewMatrix The transform matrix of the light\n * @param renderList The list of mesh to render in the map\n * @returns The current light\n */\n setShadowProjectionMatrix(matrix, viewMatrix, renderList) {\n if (this.customProjectionMatrixBuilder) {\n this.customProjectionMatrixBuilder(viewMatrix, renderList, matrix);\n }\n else {\n this._setDefaultShadowProjectionMatrix(matrix, viewMatrix, renderList);\n }\n return this;\n }\n /** @internal */\n _syncParentEnabledState() {\n super._syncParentEnabledState();\n if (!this.parent || !this.parent.getWorldMatrix) {\n this.transformedPosition = null;\n this.transformedDirection = null;\n }\n }\n /**\n * Returns the view matrix.\n * @param faceIndex The index of the face for which we want to extract the view matrix. Only used for point light types.\n * @returns The view matrix. Can be null, if a view matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).\n */\n getViewMatrix(faceIndex) {\n const lightDirection = TmpVectors.Vector3[0];\n let lightPosition = this.position;\n if (this.computeTransformedInformation()) {\n lightPosition = this.transformedPosition;\n }\n Vector3.NormalizeToRef(this.getShadowDirection(faceIndex), lightDirection);\n if (Math.abs(Vector3.Dot(lightDirection, Vector3.Up())) === 1.0) {\n lightDirection.z = 0.0000000000001; // Required to avoid perfectly perpendicular light\n }\n const lightTarget = TmpVectors.Vector3[1];\n lightPosition.addToRef(lightDirection, lightTarget);\n Matrix.LookAtLHToRef(lightPosition, lightTarget, Vector3.Up(), this._viewMatrix);\n return this._viewMatrix;\n }\n /**\n * Returns the projection matrix.\n * Note that viewMatrix and renderList are optional and are only used by lights that calculate the projection matrix from a list of meshes (e.g. directional lights with automatic extents calculation).\n * @param viewMatrix The view transform matrix of the light (optional).\n * @param renderList The list of meshes to take into account when calculating the projection matrix (optional).\n * @returns The projection matrix. Can be null, if a projection matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).\n */\n getProjectionMatrix(viewMatrix, renderList) {\n this.setShadowProjectionMatrix(this._projectionMatrix, viewMatrix ?? this._viewMatrix, renderList ?? []);\n return this._projectionMatrix;\n }\n}\n__decorate([\n serializeAsVector3()\n], ShadowLight.prototype, \"position\", null);\n__decorate([\n serializeAsVector3()\n], ShadowLight.prototype, \"direction\", null);\n__decorate([\n serialize()\n], ShadowLight.prototype, \"shadowMinZ\", null);\n__decorate([\n serialize()\n], ShadowLight.prototype, \"shadowMaxZ\", null);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|