5b8036df916e208b5b1ad82998713cfe87aec4bedd61ba3dd2b412ec6119e052.json 22 KB

1
  1. {"ast":null,"code":"import { __decorate } from \"../tslib.es6.js\";\nimport { serialize } from \"../Misc/decorators.js\";\nimport { Matrix, Vector3 } from \"../Maths/math.vector.js\";\nimport { Node } from \"../node.js\";\nimport { Light } from \"./light.js\";\nimport { ShadowLight } from \"./shadowLight.js\";\nimport { RegisterClass } from \"../Misc/typeStore.js\";\nNode.AddNodeConstructor(\"Light_Type_0\", (name, scene) => {\n return () => new PointLight(name, Vector3.Zero(), scene);\n});\n/**\n * A point light is a light defined by an unique point in world space.\n * The light is emitted in every direction from this point.\n * A good example of a point light is a standard light bulb.\n * Documentation: https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction\n */\nexport class PointLight extends ShadowLight {\n /**\n * Getter: In case of direction provided, the shadow will not use a cube texture but simulate a spot shadow as a fallback\n * This specifies what angle the shadow will use to be created.\n *\n * It default to 90 degrees to work nicely with the cube texture generation for point lights shadow maps.\n */\n get shadowAngle() {\n return this._shadowAngle;\n }\n /**\n * Setter: In case of direction provided, the shadow will not use a cube texture but simulate a spot shadow as a fallback\n * This specifies what angle the shadow will use to be created.\n *\n * It default to 90 degrees to work nicely with the cube texture generation for point lights shadow maps.\n */\n set shadowAngle(value) {\n this._shadowAngle = value;\n this.forceProjectionMatrixCompute();\n }\n /**\n * Gets the direction if it has been set.\n * In case of direction provided, the shadow will not use a cube texture but simulate a spot shadow as a fallback\n */\n get direction() {\n return this._direction;\n }\n /**\n * In case of direction provided, the shadow will not use a cube texture but simulate a spot shadow as a fallback\n */\n set direction(value) {\n const previousNeedCube = this.needCube();\n this._direction = value;\n if (this.needCube() !== previousNeedCube && this._shadowGenerators) {\n const iterator = this._shadowGenerators.values();\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\n const shadowGenerator = key.value;\n shadowGenerator.recreateShadowMap();\n }\n }\n }\n /**\n * Creates a PointLight object from the passed name and position (Vector3) and adds it in the scene.\n * A PointLight emits the light in every direction.\n * It can cast shadows.\n * If the scene camera is already defined and you want to set your PointLight at the camera position, just set it :\n * ```javascript\n * var pointLight = new PointLight(\"pl\", camera.position, scene);\n * ```\n * Documentation : https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction\n * @param name The light friendly name\n * @param position The position of the point light in the scene\n * @param scene The scene the lights belongs to\n */\n constructor(name, position, scene) {\n super(name, scene);\n this._shadowAngle = Math.PI / 2;\n this.position = position;\n }\n /**\n * Returns the string \"PointLight\"\n * @returns the class name\n */\n getClassName() {\n return \"PointLight\";\n }\n /**\n * Returns the integer 0.\n * @returns The light Type id as a constant defines in Light.LIGHTTYPEID_x\n */\n getTypeID() {\n return Light.LIGHTTYPEID_POINTLIGHT;\n }\n /**\n * Specifies whether or not the shadowmap should be a cube texture.\n * @returns true if the shadowmap needs to be a cube texture.\n */\n needCube() {\n return !this.direction;\n }\n /**\n * Returns a new Vector3 aligned with the PointLight cube system according to the passed cube face index (integer).\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 getShadowDirection(faceIndex) {\n if (this.direction) {\n return super.getShadowDirection(faceIndex);\n } else {\n switch (faceIndex) {\n case 0:\n return new Vector3(1.0, 0.0, 0.0);\n case 1:\n return new Vector3(-1.0, 0.0, 0.0);\n case 2:\n return new Vector3(0.0, -1.0, 0.0);\n case 3:\n return new Vector3(0.0, 1.0, 0.0);\n case 4:\n return new Vector3(0.0, 0.0, 1.0);\n case 5:\n return new Vector3(0.0, 0.0, -1.0);\n }\n }\n return Vector3.Zero();\n }\n /**\n * Sets the passed matrix \"matrix\" as a left-handed perspective projection matrix with the following settings :\n * - fov = PI / 2\n * - aspect ratio : 1.0\n * - z-near and far equal to the active camera minZ and maxZ.\n * Returns the PointLight.\n * @param matrix\n * @param viewMatrix\n * @param renderList\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _setDefaultShadowProjectionMatrix(matrix, viewMatrix, renderList) {\n const activeCamera = this.getScene().activeCamera;\n if (!activeCamera) {\n return;\n }\n const minZ = this.shadowMinZ !== undefined ? this.shadowMinZ : activeCamera.minZ;\n const maxZ = this.shadowMaxZ !== undefined ? this.shadowMaxZ : activeCamera.maxZ;\n const useReverseDepthBuffer = this.getScene().getEngine().useReverseDepthBuffer;\n Matrix.PerspectiveFovLHToRef(this.shadowAngle, 1.0, useReverseDepthBuffer ? maxZ : minZ, useReverseDepthBuffer ? minZ : maxZ, matrix, true, this._scene.getEngine().isNDCHalfZRange, undefined, useReverseDepthBuffer);\n }\n _buildUniformLayout() {\n this._uniformBuffer.addUniform(\"vLightData\", 4);\n this._uniformBuffer.addUniform(\"vLightDiffuse\", 4);\n this._uniformBuffer.addUniform(\"vLightSpecular\", 4);\n this._uniformBuffer.addUniform(\"vLightFalloff\", 4);\n this._uniformBuffer.addUniform(\"shadowsInfo\", 3);\n this._uniformBuffer.addUniform(\"depthValues\", 2);\n this._uniformBuffer.create();\n }\n /**\n * Sets the passed Effect \"effect\" with the PointLight transformed position (or position, if none) and passed name (string).\n * @param effect The effect to update\n * @param lightIndex The index of the light in the effect to update\n * @returns The point light\n */\n transferToEffect(effect, lightIndex) {\n if (this.computeTransformedInformation()) {\n this._uniformBuffer.updateFloat4(\"vLightData\", this.transformedPosition.x, this.transformedPosition.y, this.transformedPosition.z, 0.0, lightIndex);\n } else {\n this._uniformBuffer.updateFloat4(\"vLightData\", this.position.x, this.position.y, this.position.z, 0, lightIndex);\n }\n this._uniformBuffer.updateFloat4(\"vLightFalloff\", this.range, this._inverseSquaredRange, 0, 0, lightIndex);\n return this;\n }\n transferToNodeMaterialEffect(effect, lightDataUniformName) {\n if (this.computeTransformedInformation()) {\n effect.setFloat3(lightDataUniformName, this.transformedPosition.x, this.transformedPosition.y, this.transformedPosition.z);\n } else {\n effect.setFloat3(lightDataUniformName, this.position.x, this.position.y, this.position.z);\n }\n return this;\n }\n /**\n * Prepares the list of defines specific to the light type.\n * @param defines the list of defines\n * @param lightIndex defines the index of the light for the effect\n */\n prepareLightSpecificDefines(defines, lightIndex) {\n defines[\"POINTLIGHT\" + lightIndex] = true;\n }\n}\n__decorate([serialize()], PointLight.prototype, \"shadowAngle\", null);\n// Register Class Name\nRegisterClass(\"BABYLON.PointLight\", PointLight);","map":{"version":3,"names":["__decorate","serialize","Matrix","Vector3","Node","Light","ShadowLight","RegisterClass","AddNodeConstructor","name","scene","PointLight","Zero","shadowAngle","_shadowAngle","value","forceProjectionMatrixCompute","direction","_direction","previousNeedCube","needCube","_shadowGenerators","iterator","values","key","next","done","shadowGenerator","recreateShadowMap","constructor","position","Math","PI","getClassName","getTypeID","LIGHTTYPEID_POINTLIGHT","getShadowDirection","faceIndex","_setDefaultShadowProjectionMatrix","matrix","viewMatrix","renderList","activeCamera","getScene","minZ","shadowMinZ","undefined","maxZ","shadowMaxZ","useReverseDepthBuffer","getEngine","PerspectiveFovLHToRef","_scene","isNDCHalfZRange","_buildUniformLayout","_uniformBuffer","addUniform","create","transferToEffect","effect","lightIndex","computeTransformedInformation","updateFloat4","transformedPosition","x","y","z","range","_inverseSquaredRange","transferToNodeMaterialEffect","lightDataUniformName","setFloat3","prepareLightSpecificDefines","defines","prototype"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Lights/pointLight.js"],"sourcesContent":["import { __decorate } from \"../tslib.es6.js\";\nimport { serialize } from \"../Misc/decorators.js\";\nimport { Matrix, Vector3 } from \"../Maths/math.vector.js\";\nimport { Node } from \"../node.js\";\nimport { Light } from \"./light.js\";\nimport { ShadowLight } from \"./shadowLight.js\";\nimport { RegisterClass } from \"../Misc/typeStore.js\";\nNode.AddNodeConstructor(\"Light_Type_0\", (name, scene) => {\n return () => new PointLight(name, Vector3.Zero(), scene);\n});\n/**\n * A point light is a light defined by an unique point in world space.\n * The light is emitted in every direction from this point.\n * A good example of a point light is a standard light bulb.\n * Documentation: https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction\n */\nexport class PointLight extends ShadowLight {\n /**\n * Getter: In case of direction provided, the shadow will not use a cube texture but simulate a spot shadow as a fallback\n * This specifies what angle the shadow will use to be created.\n *\n * It default to 90 degrees to work nicely with the cube texture generation for point lights shadow maps.\n */\n get shadowAngle() {\n return this._shadowAngle;\n }\n /**\n * Setter: In case of direction provided, the shadow will not use a cube texture but simulate a spot shadow as a fallback\n * This specifies what angle the shadow will use to be created.\n *\n * It default to 90 degrees to work nicely with the cube texture generation for point lights shadow maps.\n */\n set shadowAngle(value) {\n this._shadowAngle = value;\n this.forceProjectionMatrixCompute();\n }\n /**\n * Gets the direction if it has been set.\n * In case of direction provided, the shadow will not use a cube texture but simulate a spot shadow as a fallback\n */\n get direction() {\n return this._direction;\n }\n /**\n * In case of direction provided, the shadow will not use a cube texture but simulate a spot shadow as a fallback\n */\n set direction(value) {\n const previousNeedCube = this.needCube();\n this._direction = value;\n if (this.needCube() !== previousNeedCube && this._shadowGenerators) {\n const iterator = this._shadowGenerators.values();\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\n const shadowGenerator = key.value;\n shadowGenerator.recreateShadowMap();\n }\n }\n }\n /**\n * Creates a PointLight object from the passed name and position (Vector3) and adds it in the scene.\n * A PointLight emits the light in every direction.\n * It can cast shadows.\n * If the scene camera is already defined and you want to set your PointLight at the camera position, just set it :\n * ```javascript\n * var pointLight = new PointLight(\"pl\", camera.position, scene);\n * ```\n * Documentation : https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction\n * @param name The light friendly name\n * @param position The position of the point light in the scene\n * @param scene The scene the lights belongs to\n */\n constructor(name, position, scene) {\n super(name, scene);\n this._shadowAngle = Math.PI / 2;\n this.position = position;\n }\n /**\n * Returns the string \"PointLight\"\n * @returns the class name\n */\n getClassName() {\n return \"PointLight\";\n }\n /**\n * Returns the integer 0.\n * @returns The light Type id as a constant defines in Light.LIGHTTYPEID_x\n */\n getTypeID() {\n return Light.LIGHTTYPEID_POINTLIGHT;\n }\n /**\n * Specifies whether or not the shadowmap should be a cube texture.\n * @returns true if the shadowmap needs to be a cube texture.\n */\n needCube() {\n return !this.direction;\n }\n /**\n * Returns a new Vector3 aligned with the PointLight cube system according to the passed cube face index (integer).\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 getShadowDirection(faceIndex) {\n if (this.direction) {\n return super.getShadowDirection(faceIndex);\n }\n else {\n switch (faceIndex) {\n case 0:\n return new Vector3(1.0, 0.0, 0.0);\n case 1:\n return new Vector3(-1.0, 0.0, 0.0);\n case 2:\n return new Vector3(0.0, -1.0, 0.0);\n case 3:\n return new Vector3(0.0, 1.0, 0.0);\n case 4:\n return new Vector3(0.0, 0.0, 1.0);\n case 5:\n return new Vector3(0.0, 0.0, -1.0);\n }\n }\n return Vector3.Zero();\n }\n /**\n * Sets the passed matrix \"matrix\" as a left-handed perspective projection matrix with the following settings :\n * - fov = PI / 2\n * - aspect ratio : 1.0\n * - z-near and far equal to the active camera minZ and maxZ.\n * Returns the PointLight.\n * @param matrix\n * @param viewMatrix\n * @param renderList\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _setDefaultShadowProjectionMatrix(matrix, viewMatrix, renderList) {\n const activeCamera = this.getScene().activeCamera;\n if (!activeCamera) {\n return;\n }\n const minZ = this.shadowMinZ !== undefined ? this.shadowMinZ : activeCamera.minZ;\n const maxZ = this.shadowMaxZ !== undefined ? this.shadowMaxZ : activeCamera.maxZ;\n const useReverseDepthBuffer = this.getScene().getEngine().useReverseDepthBuffer;\n Matrix.PerspectiveFovLHToRef(this.shadowAngle, 1.0, useReverseDepthBuffer ? maxZ : minZ, useReverseDepthBuffer ? minZ : maxZ, matrix, true, this._scene.getEngine().isNDCHalfZRange, undefined, useReverseDepthBuffer);\n }\n _buildUniformLayout() {\n this._uniformBuffer.addUniform(\"vLightData\", 4);\n this._uniformBuffer.addUniform(\"vLightDiffuse\", 4);\n this._uniformBuffer.addUniform(\"vLightSpecular\", 4);\n this._uniformBuffer.addUniform(\"vLightFalloff\", 4);\n this._uniformBuffer.addUniform(\"shadowsInfo\", 3);\n this._uniformBuffer.addUniform(\"depthValues\", 2);\n this._uniformBuffer.create();\n }\n /**\n * Sets the passed Effect \"effect\" with the PointLight transformed position (or position, if none) and passed name (string).\n * @param effect The effect to update\n * @param lightIndex The index of the light in the effect to update\n * @returns The point light\n */\n transferToEffect(effect, lightIndex) {\n if (this.computeTransformedInformation()) {\n this._uniformBuffer.updateFloat4(\"vLightData\", this.transformedPosition.x, this.transformedPosition.y, this.transformedPosition.z, 0.0, lightIndex);\n }\n else {\n this._uniformBuffer.updateFloat4(\"vLightData\", this.position.x, this.position.y, this.position.z, 0, lightIndex);\n }\n this._uniformBuffer.updateFloat4(\"vLightFalloff\", this.range, this._inverseSquaredRange, 0, 0, lightIndex);\n return this;\n }\n transferToNodeMaterialEffect(effect, lightDataUniformName) {\n if (this.computeTransformedInformation()) {\n effect.setFloat3(lightDataUniformName, this.transformedPosition.x, this.transformedPosition.y, this.transformedPosition.z);\n }\n else {\n effect.setFloat3(lightDataUniformName, this.position.x, this.position.y, this.position.z);\n }\n return this;\n }\n /**\n * Prepares the list of defines specific to the light type.\n * @param defines the list of defines\n * @param lightIndex defines the index of the light for the effect\n */\n prepareLightSpecificDefines(defines, lightIndex) {\n defines[\"POINTLIGHT\" + lightIndex] = true;\n }\n}\n__decorate([\n serialize()\n], PointLight.prototype, \"shadowAngle\", null);\n// Register Class Name\nRegisterClass(\"BABYLON.PointLight\", PointLight);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}