File size: 867 Bytes
2b7aae2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { Color } from '../math/Color.js';
import { Vector3 } from '../math/Vector3.js';
import { LightProbe } from './LightProbe.js';

class HemisphereLightProbe extends LightProbe {
	constructor(skyColor, groundColor, intensity = 1) {
		super(undefined, intensity);

		const color1 = new Color().set(skyColor);
		const color2 = new Color().set(groundColor);

		const sky = new Vector3(color1.r, color1.g, color1.b);
		const ground = new Vector3(color2.r, color2.g, color2.b);

		// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );
		const c0 = Math.sqrt(Math.PI);
		const c1 = c0 * Math.sqrt(0.75);

		this.sh.coefficients[0].copy(sky).add(ground).multiplyScalar(c0);
		this.sh.coefficients[1].copy(sky).sub(ground).multiplyScalar(c1);
	}
}

HemisphereLightProbe.prototype.isHemisphereLightProbe = true;

export { HemisphereLightProbe };