Buckets:
| import { Light } from './Light.js'; | |
| /** | |
| * This class emits light uniformly across the face a rectangular plane. | |
| * This light type can be used to simulate light sources such as bright | |
| * windows or strip lighting. | |
| * | |
| * Important Notes: | |
| * | |
| * - There is no shadow support. | |
| * - Only PBR materials are supported. | |
| * - You have to include `RectAreaLightUniformsLib` (`WebGLRenderer`) or `RectAreaLightTexturesLib` (`WebGPURenderer`) | |
| * into your app and init the uniforms/textures. | |
| * | |
| * ```js | |
| * RectAreaLightUniformsLib.init(); // only relevant for WebGLRenderer | |
| * THREE.RectAreaLightNode.setLTC( RectAreaLightTexturesLib.init() ); // only relevant for WebGPURenderer | |
| * | |
| * const intensity = 1; const width = 10; const height = 10; | |
| * const rectLight = new THREE.RectAreaLight( 0xffffff, intensity, width, height ); | |
| * rectLight.position.set( 5, 5, 0 ); | |
| * rectLight.lookAt( 0, 0, 0 ); | |
| * scene.add( rectLight ) | |
| * ``` | |
| * | |
| * @augments Light | |
| */ | |
| class RectAreaLight extends Light { | |
| /** | |
| * Constructs a new area light. | |
| * | |
| * @param {(number|Color|string)} [color=0xffffff] - The light's color. | |
| * @param {number} [intensity=1] - The light's strength/intensity. | |
| * @param {number} [width=10] - The width of the light. | |
| * @param {number} [height=10] - The height of the light. | |
| */ | |
| constructor( color, intensity, width = 10, height = 10 ) { | |
| super( color, intensity ); | |
| /** | |
| * This flag can be used for type testing. | |
| * | |
| * @type {boolean} | |
| * @readonly | |
| * @default true | |
| */ | |
| this.isRectAreaLight = true; | |
| this.type = 'RectAreaLight'; | |
| /** | |
| * The width of the light. | |
| * | |
| * @type {number} | |
| * @default 10 | |
| */ | |
| this.width = width; | |
| /** | |
| * The height of the light. | |
| * | |
| * @type {number} | |
| * @default 10 | |
| */ | |
| this.height = height; | |
| } | |
| /** | |
| * The light's power. Power is the luminous power of the light measured in lumens (lm). | |
| * Changing the power will also change the light's intensity. | |
| * | |
| * @type {number} | |
| */ | |
| get power() { | |
| // compute the light's luminous power (in lumens) from its intensity (in nits) | |
| return this.intensity * this.width * this.height * Math.PI; | |
| } | |
| set power( power ) { | |
| // set the light's intensity (in nits) from the desired luminous power (in lumens) | |
| this.intensity = power / ( this.width * this.height * Math.PI ); | |
| } | |
| copy( source ) { | |
| super.copy( source ); | |
| this.width = source.width; | |
| this.height = source.height; | |
| return this; | |
| } | |
| toJSON( meta ) { | |
| const data = super.toJSON( meta ); | |
| data.object.width = this.width; | |
| data.object.height = this.height; | |
| return data; | |
| } | |
| } | |
| export { RectAreaLight }; | |
Xet Storage Details
- Size:
- 2.61 kB
- Xet hash:
- 3e43dcfe94afe278084e359a780f6923fc97470fe81a66d74cdb04098a72d881
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.