starry / backend /libs /three /lights /HemisphereLightProbe.js
k-l-lambda's picture
feat: add Python ML services (CPU mode) with model download
2b7aae2
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 };