@flighthq/lighting 0.5.1-next.704.19c91ec → 0.5.1-next.730.f29a5aa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/ambientLight.d.ts.map +1 -1
- package/dist/ambientLight.js +9 -2
- package/dist/ambientLight.js.map +1 -1
- package/dist/areaLight.d.ts.map +1 -1
- package/dist/areaLight.js +15 -1
- package/dist/areaLight.js.map +1 -1
- package/dist/directionalLight.d.ts.map +1 -1
- package/dist/directionalLight.js +22 -3
- package/dist/directionalLight.js.map +1 -1
- package/dist/environment.d.ts.map +1 -1
- package/dist/environment.js +2 -1
- package/dist/environment.js.map +1 -1
- package/dist/hemisphereLight.d.ts.map +1 -1
- package/dist/hemisphereLight.js +5 -1
- package/dist/hemisphereLight.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lightAnalysis.d.ts.map +1 -1
- package/dist/lightAnalysis.js +63 -16
- package/dist/lightAnalysis.js.map +1 -1
- package/dist/pointLight.d.ts.map +1 -1
- package/dist/pointLight.js +15 -1
- package/dist/pointLight.js.map +1 -1
- package/dist/spotLight.d.ts +1 -0
- package/dist/spotLight.d.ts.map +1 -1
- package/dist/spotLight.js +23 -1
- package/dist/spotLight.js.map +1 -1
- package/package.json +5 -5
- package/src/ambientLight.test.ts +14 -3
- package/src/areaLight.test.ts +22 -1
- package/src/directionalLight.test.ts +39 -1
- package/src/environment.test.ts +5 -2
- package/src/hemisphereLight.test.ts +12 -2
- package/src/lightAnalysis.test.ts +51 -4
- package/src/pointLight.test.ts +22 -1
- package/src/sceneForwardLights.test.ts +27 -0
- package/src/spotLight.test.ts +47 -1
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/lighting`. The `@fli
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/lighting@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/lighting@0.5.1-next.730.f29a5aa](https://github.com/flighthq/flight/tree/f29a5aab5db192284ce5cadf08ffae2649a598ea/packages/lighting)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/f29a5aab5db192284ce5cadf08ffae2649a598ea/LICENSE.md)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ambientLight.d.ts","sourceRoot":"","sources":["../src/ambientLight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAIlF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"ambientLight.d.ts","sourceRoot":"","sources":["../src/ambientLight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAIlF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,YAAY,CAO9E;AAID,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAQxF"}
|
package/dist/ambientLight.js
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
-
import { AmbientLightKind } from '@flighthq/types/contract';
|
|
2
|
+
import { AmbientLightKind, UnitlessLightUnit } from '@flighthq/types/contract';
|
|
3
3
|
// Independent copy of an ambient light's data. The `kind` discriminant is carried over.
|
|
4
4
|
export function cloneAmbientLight(source) {
|
|
5
|
-
return createAmbientLight({
|
|
5
|
+
return createAmbientLight({
|
|
6
|
+
color: source.color,
|
|
7
|
+
enabled: source.enabled,
|
|
8
|
+
intensity: source.intensity,
|
|
9
|
+
intensityUnit: source.intensityUnit,
|
|
10
|
+
});
|
|
6
11
|
}
|
|
7
12
|
// Uniform omnidirectional fill light. Color is packed sRgb-albedo RGBA (0xrrggbbaa); defaults to
|
|
8
13
|
// opaque white at unit intensity. Ambient lights do not cast shadows.
|
|
9
14
|
export function createAmbientLight(options) {
|
|
10
15
|
return createEntity({
|
|
11
16
|
color: options?.color ?? 0xffffffff,
|
|
17
|
+
enabled: options?.enabled ?? true,
|
|
12
18
|
intensity: options?.intensity ?? 1,
|
|
19
|
+
intensityUnit: options?.intensityUnit ?? UnitlessLightUnit,
|
|
13
20
|
kind: AmbientLightKind,
|
|
14
21
|
});
|
|
15
22
|
}
|
package/dist/ambientLight.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ambientLight.js","sourceRoot":"","sources":["../src/ambientLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ambientLight.js","sourceRoot":"","sources":["../src/ambientLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE/E,wFAAwF;AACxF,MAAM,UAAU,iBAAiB,CAAC,MAA8B;IAC9D,OAAO,kBAAkB,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC,CAAC;AACL,CAAC;AAED,iGAAiG;AACjG,sEAAsE;AACtE,MAAM,UAAU,kBAAkB,CAAC,OAAuC;IACxE,OAAO,YAAY,CAAC;QAClB,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,UAAU;QACnC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI;QACjC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC;QAClC,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,iBAAiB;QAC1D,IAAI,EAAE,gBAAgB;KACvB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/areaLight.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"areaLight.d.ts","sourceRoot":"","sources":["../src/areaLight.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIzF,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"areaLight.d.ts","sourceRoot":"","sources":["../src/areaLight.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIzF,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAsBrE;AAMD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,SAAS,CA0B/E;AAOD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,EAChC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC5B,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,GACxB,IAAI,CA6BN"}
|
package/dist/areaLight.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { createEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { cloneVector3, createVector3, normalizeVector3, setVector3 } from '@flighthq/geometry/contract';
|
|
3
|
-
import { AreaLightKind } from '@flighthq/types/contract';
|
|
3
|
+
import { AreaLightKind, UnitlessLightUnit } from '@flighthq/types/contract';
|
|
4
4
|
// Independent copy of an area light's data, including fresh position/direction/right/up vectors.
|
|
5
5
|
export function cloneAreaLight(source) {
|
|
6
6
|
return createEntity({
|
|
7
7
|
castsShadow: source.castsShadow,
|
|
8
8
|
color: source.color,
|
|
9
|
+
decay: source.decay,
|
|
9
10
|
direction: cloneVector3(source.direction),
|
|
11
|
+
enabled: source.enabled,
|
|
10
12
|
intensity: source.intensity,
|
|
13
|
+
intensityUnit: source.intensityUnit,
|
|
11
14
|
kind: AreaLightKind,
|
|
12
15
|
normalBias: source.normalBias,
|
|
13
16
|
pcfRadius: source.pcfRadius,
|
|
@@ -15,6 +18,10 @@ export function cloneAreaLight(source) {
|
|
|
15
18
|
range: source.range,
|
|
16
19
|
right: cloneVector3(source.right),
|
|
17
20
|
shadowBias: source.shadowBias,
|
|
21
|
+
shadowFar: source.shadowFar,
|
|
22
|
+
shadowMapSize: source.shadowMapSize,
|
|
23
|
+
shadowNear: source.shadowNear,
|
|
24
|
+
shadowStrength: source.shadowStrength,
|
|
18
25
|
up: cloneVector3(source.up),
|
|
19
26
|
});
|
|
20
27
|
}
|
|
@@ -30,8 +37,11 @@ export function createAreaLight(options) {
|
|
|
30
37
|
return createEntity({
|
|
31
38
|
castsShadow: options?.castsShadow ?? false,
|
|
32
39
|
color: options?.color ?? 0xffffffff,
|
|
40
|
+
decay: options?.decay ?? 2,
|
|
33
41
|
direction: direction ? cloneVector3(direction) : createVector3(0, -1, 0),
|
|
42
|
+
enabled: options?.enabled ?? true,
|
|
34
43
|
intensity: options?.intensity ?? 1,
|
|
44
|
+
intensityUnit: options?.intensityUnit ?? UnitlessLightUnit,
|
|
35
45
|
kind: AreaLightKind,
|
|
36
46
|
normalBias: options?.normalBias ?? 0,
|
|
37
47
|
pcfRadius: options?.pcfRadius ?? 0,
|
|
@@ -39,6 +49,10 @@ export function createAreaLight(options) {
|
|
|
39
49
|
range: options?.range ?? -1,
|
|
40
50
|
right: right ? cloneVector3(right) : createVector3(1, 0, 0),
|
|
41
51
|
shadowBias: options?.shadowBias ?? 0,
|
|
52
|
+
shadowFar: options?.shadowFar ?? 500,
|
|
53
|
+
shadowMapSize: options?.shadowMapSize ?? 1024,
|
|
54
|
+
shadowNear: options?.shadowNear ?? 0.5,
|
|
55
|
+
shadowStrength: options?.shadowStrength ?? 1,
|
|
42
56
|
up: up ? cloneVector3(up) : createVector3(0, 0, 1),
|
|
43
57
|
});
|
|
44
58
|
}
|
package/dist/areaLight.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"areaLight.js","sourceRoot":"","sources":["../src/areaLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAExG,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"areaLight.js","sourceRoot":"","sources":["../src/areaLight.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directionalLight.d.ts","sourceRoot":"","sources":["../src/directionalLight.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAI1F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"directionalLight.d.ts","sourceRoot":"","sources":["../src/directionalLight.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAI1F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAmB1F;AAKD,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,gBAAgB,CAsBpG;AAID,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CASzG;AAID,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,IAAI,CAQN"}
|
package/dist/directionalLight.js
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import { createEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { cloneVector3, createVector3, setVector3 } from '@flighthq/geometry/contract';
|
|
3
|
-
import { DirectionalLightKind } from '@flighthq/types/contract';
|
|
3
|
+
import { DirectionalLightKind, UnitlessLightUnit } from '@flighthq/types/contract';
|
|
4
4
|
// Independent copy of a directional light's data, including a fresh `direction` vector.
|
|
5
5
|
export function cloneDirectionalLight(source) {
|
|
6
6
|
return createEntity({
|
|
7
|
+
cascadeCount: source.cascadeCount,
|
|
8
|
+
cascadeSplits: source.cascadeSplits.slice(),
|
|
7
9
|
castsShadow: source.castsShadow,
|
|
8
10
|
color: source.color,
|
|
9
11
|
direction: cloneVector3(source.direction),
|
|
12
|
+
enabled: source.enabled,
|
|
10
13
|
intensity: source.intensity,
|
|
14
|
+
intensityUnit: source.intensityUnit,
|
|
11
15
|
kind: DirectionalLightKind,
|
|
12
16
|
normalBias: source.normalBias,
|
|
13
17
|
pcfRadius: source.pcfRadius,
|
|
14
18
|
shadowBias: source.shadowBias,
|
|
19
|
+
shadowFar: source.shadowFar,
|
|
20
|
+
shadowMapSize: source.shadowMapSize,
|
|
21
|
+
shadowNear: source.shadowNear,
|
|
22
|
+
shadowStrength: source.shadowStrength,
|
|
15
23
|
});
|
|
16
24
|
}
|
|
17
25
|
// Infinitely distant directional light (sun). `direction` is the world-space travel direction
|
|
@@ -19,16 +27,27 @@ export function cloneDirectionalLight(source) {
|
|
|
19
27
|
// defaults to opaque white at unit intensity, pointing straight down (0, -1, 0) with shadows off.
|
|
20
28
|
export function createDirectionalLight(options) {
|
|
21
29
|
const direction = options?.direction;
|
|
22
|
-
|
|
30
|
+
const light = createEntity({
|
|
31
|
+
cascadeCount: options?.cascadeCount ?? 1,
|
|
32
|
+
cascadeSplits: options?.cascadeSplits?.slice() ?? [1],
|
|
23
33
|
castsShadow: options?.castsShadow ?? false,
|
|
24
34
|
color: options?.color ?? 0xffffffff,
|
|
25
|
-
direction:
|
|
35
|
+
direction: createVector3(0, -1, 0),
|
|
36
|
+
enabled: options?.enabled ?? true,
|
|
26
37
|
intensity: options?.intensity ?? 1,
|
|
38
|
+
intensityUnit: options?.intensityUnit ?? UnitlessLightUnit,
|
|
27
39
|
kind: DirectionalLightKind,
|
|
28
40
|
normalBias: options?.normalBias ?? 0,
|
|
29
41
|
pcfRadius: options?.pcfRadius ?? 0,
|
|
30
42
|
shadowBias: options?.shadowBias ?? 0,
|
|
43
|
+
shadowFar: options?.shadowFar ?? 500,
|
|
44
|
+
shadowMapSize: options?.shadowMapSize ?? 1024,
|
|
45
|
+
shadowNear: options?.shadowNear ?? 0.5,
|
|
46
|
+
shadowStrength: options?.shadowStrength ?? 1,
|
|
31
47
|
});
|
|
48
|
+
if (direction)
|
|
49
|
+
setDirectionalLightDirection(light, direction.x, direction.y, direction.z);
|
|
50
|
+
return light;
|
|
32
51
|
}
|
|
33
52
|
// Writes a normalized direction into `out.direction`. Normalizes the supplied x/y/z components
|
|
34
53
|
// before storing so the renderer can rely on a unit-length direction. Alias-safe.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directionalLight.js","sourceRoot":"","sources":["../src/directionalLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"directionalLight.js","sourceRoot":"","sources":["../src/directionalLight.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAKhF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,CAE3E;AAKD,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAKhF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,CAE3E;AAKD,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAOrF"}
|
package/dist/environment.js
CHANGED
|
@@ -3,13 +3,14 @@ import { EnvironmentKind } from '@flighthq/types/contract';
|
|
|
3
3
|
// Independent copy of the environment's data. The `environment` cubemap reference is shared, not
|
|
4
4
|
// deep-copied: a Texture is a GPU-backed resource, so the copy aliases the same source.
|
|
5
5
|
export function cloneEnvironment(source) {
|
|
6
|
-
return createEnvironment({ environment: source.environment, intensity: source.intensity });
|
|
6
|
+
return createEnvironment({ enabled: source.enabled, environment: source.environment, intensity: source.intensity });
|
|
7
7
|
}
|
|
8
8
|
// Image-based environment lighting + skybox source. `environment` is the radiance cubemap used
|
|
9
9
|
// for the skybox and as the IBL specular/irradiance source; `intensity` scales its contribution.
|
|
10
10
|
// Defaults to no cubemap (null) at unit intensity.
|
|
11
11
|
export function createEnvironment(options) {
|
|
12
12
|
return createEntity({
|
|
13
|
+
enabled: options?.enabled ?? true,
|
|
13
14
|
environment: options?.environment ?? null,
|
|
14
15
|
intensity: options?.intensity ?? 1,
|
|
15
16
|
kind: EnvironmentKind,
|
package/dist/environment.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,iGAAiG;AACjG,wFAAwF;AACxF,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC5D,OAAO,iBAAiB,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,iGAAiG;AACjG,wFAAwF;AACxF,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC5D,OAAO,iBAAiB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AACtH,CAAC;AAED,+FAA+F;AAC/F,iGAAiG;AACjG,mDAAmD;AACnD,MAAM,UAAU,iBAAiB,CAAC,OAAsC;IACtE,OAAO,YAAY,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI;QACjC,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;QACzC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC;QAClC,IAAI,EAAE,eAAe;KACtB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hemisphereLight.d.ts","sourceRoot":"","sources":["../src/hemisphereLight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIxF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"hemisphereLight.d.ts","sourceRoot":"","sources":["../src/hemisphereLight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIxF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,eAAe,CAQvF;AAKD,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,eAAe,CASjG"}
|
package/dist/hemisphereLight.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
-
import { HemisphereLightKind } from '@flighthq/types/contract';
|
|
2
|
+
import { HemisphereLightKind, UnitlessLightUnit } from '@flighthq/types/contract';
|
|
3
3
|
// Independent copy of a hemisphere light's data. The `kind` discriminant is carried over.
|
|
4
4
|
export function cloneHemisphereLight(source) {
|
|
5
5
|
return createHemisphereLight({
|
|
6
|
+
enabled: source.enabled,
|
|
6
7
|
groundColor: source.groundColor,
|
|
7
8
|
intensity: source.intensity,
|
|
9
|
+
intensityUnit: source.intensityUnit,
|
|
8
10
|
skyColor: source.skyColor,
|
|
9
11
|
});
|
|
10
12
|
}
|
|
@@ -13,8 +15,10 @@ export function cloneHemisphereLight(source) {
|
|
|
13
15
|
// opaque white at unit intensity. Hemisphere lights do not cast shadows.
|
|
14
16
|
export function createHemisphereLight(options) {
|
|
15
17
|
return createEntity({
|
|
18
|
+
enabled: options?.enabled ?? true,
|
|
16
19
|
groundColor: options?.groundColor ?? 0xffffffff,
|
|
17
20
|
intensity: options?.intensity ?? 1,
|
|
21
|
+
intensityUnit: options?.intensityUnit ?? UnitlessLightUnit,
|
|
18
22
|
kind: HemisphereLightKind,
|
|
19
23
|
skyColor: options?.skyColor ?? 0xffffffff,
|
|
20
24
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hemisphereLight.js","sourceRoot":"","sources":["../src/hemisphereLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"hemisphereLight.js","sourceRoot":"","sources":["../src/hemisphereLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElF,0FAA0F;AAC1F,MAAM,UAAU,oBAAoB,CAAC,MAAiC;IACpE,OAAO,qBAAqB,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,4FAA4F;AAC5F,gGAAgG;AAChG,yEAAyE;AACzE,MAAM,UAAU,qBAAqB,CAAC,OAA0C;IAC9E,OAAO,YAAY,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI;QACjC,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,UAAU;QAC/C,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC;QAClC,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,iBAAiB;QAC1D,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,UAAU;KAC1C,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { applyLightExposure, cloneAmbientLight, cloneAreaLight, cloneDirectionalLight, cloneEnvironment, cloneHemisphereLight, clonePointLight, cloneSpotLight, convertLightIntensity, createAmbientLight, createAreaLight, createDirectionalLight, createEnvironment, createHemisphereLight, createPointLight, createScene3DLights, createSpotLight, getLightContributionAtBoundingSphere, getLightInfluenceBounds, getLightLinearIntensity, getLightLuminance, getSpotLightConeDegrees, hasLightInfluenceOnBounds, isLightCastingShadow, selectScene3DForwardLights, setAreaLightOrientation, setDirectionalLightDirection, setDirectionalLightTarget, setSpotLightCone, setSpotLightDirection, setSpotLightTarget, } from './contract';
|
|
1
|
+
export { applyLightExposure, cloneAmbientLight, cloneAreaLight, cloneDirectionalLight, cloneEnvironment, cloneHemisphereLight, clonePointLight, cloneSpotLight, convertLightIntensity, createAmbientLight, createAreaLight, createDirectionalLight, createEnvironment, createHemisphereLight, createPointLight, createScene3DLights, createSpotLight, getLightContributionAtBoundingSphere, getLightInfluenceBounds, getLightLinearIntensity, getLightLuminance, getSpotLightConeDegrees, hasLightInfluenceOnBounds, isLightCastingShadow, selectScene3DForwardLights, setAreaLightOrientation, setDirectionalLightDirection, setDirectionalLightTarget, setSpotLightBlend, setSpotLightCone, setSpotLightDirection, setSpotLightTarget, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,oCAAoC,EACpC,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,oCAAoC,EACpC,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { applyLightExposure, cloneAmbientLight, cloneAreaLight, cloneDirectionalLight, cloneEnvironment, cloneHemisphereLight, clonePointLight, cloneSpotLight, convertLightIntensity, createAmbientLight, createAreaLight, createDirectionalLight, createEnvironment, createHemisphereLight, createPointLight, createScene3DLights, createSpotLight, getLightContributionAtBoundingSphere, getLightInfluenceBounds, getLightLinearIntensity, getLightLuminance, getSpotLightConeDegrees, hasLightInfluenceOnBounds, isLightCastingShadow, selectScene3DForwardLights, setAreaLightOrientation, setDirectionalLightDirection, setDirectionalLightTarget, setSpotLightCone, setSpotLightDirection, setSpotLightTarget, } from './contract';
|
|
1
|
+
export { applyLightExposure, cloneAmbientLight, cloneAreaLight, cloneDirectionalLight, cloneEnvironment, cloneHemisphereLight, clonePointLight, cloneSpotLight, convertLightIntensity, createAmbientLight, createAreaLight, createDirectionalLight, createEnvironment, createHemisphereLight, createPointLight, createScene3DLights, createSpotLight, getLightContributionAtBoundingSphere, getLightInfluenceBounds, getLightLinearIntensity, getLightLuminance, getSpotLightConeDegrees, hasLightInfluenceOnBounds, isLightCastingShadow, selectScene3DForwardLights, setAreaLightOrientation, setDirectionalLightDirection, setDirectionalLightTarget, setSpotLightBlend, setSpotLightCone, setSpotLightDirection, setSpotLightTarget, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,oCAAoC,EACpC,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,oCAAoC,EACpC,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightAnalysis.d.ts","sourceRoot":"","sources":["../src/lightAnalysis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"lightAnalysis.d.ts","sourceRoot":"","sources":["../src/lightAnalysis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,kBAAkB,EAGlB,KAAK,EACL,UAAU,EACV,SAAS,EACV,MAAM,0BAA0B,CAAC;AAkBlC,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,EACvC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACnC,MAAM,CAgCR;AAOD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CA4C7F;AAOD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAmChE;AAMD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,CA2B/G;AASD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAOpE"}
|
package/dist/lightAnalysis.js
CHANGED
|
@@ -3,11 +3,12 @@ import { AmbientLightKind, AreaLightKind, DirectionalLightKind, EnvironmentKind,
|
|
|
3
3
|
// Estimates the radiance contribution of one punctual light at a world-space bounding sphere.
|
|
4
4
|
// Distance uses the nearest sphere surface (`centerDistance - radius`) so large objects receive
|
|
5
5
|
// radius slack instead of being ranked only at their centre. The attenuation matches the forward
|
|
6
|
-
// shaders:
|
|
7
|
-
// apply the same smoothstep cone at the sphere centre. Multiplying by
|
|
8
|
-
// result suitable for deterministic forward-budget ranking rather than
|
|
6
|
+
// shaders at the default decay: distance^decay falloff multiplied by the squared glTF/UE4 range
|
|
7
|
+
// window; spot lights also apply the same smoothstep cone at the sphere centre. Multiplying by
|
|
8
|
+
// getLightLuminance makes the result suitable for deterministic forward-budget ranking rather than
|
|
9
|
+
// material-specific shading. Disabled lights contribute zero.
|
|
9
10
|
export function getLightContributionAtBoundingSphere(light, bounds) {
|
|
10
|
-
if (bounds.radius < 0)
|
|
11
|
+
if (!isLightEnabled(light) || bounds.radius < 0)
|
|
11
12
|
return 0;
|
|
12
13
|
const centerDx = bounds.center.x - light.position.x;
|
|
13
14
|
const centerDy = bounds.center.y - light.position.y;
|
|
@@ -21,7 +22,8 @@ export function getLightContributionAtBoundingSphere(light, bounds) {
|
|
|
21
22
|
const windowed = Math.max(0, Math.min(1, 1 - factor * factor));
|
|
22
23
|
window = windowed * windowed;
|
|
23
24
|
}
|
|
24
|
-
|
|
25
|
+
const attenuation = Math.max(distance, 0.01) ** light.decay;
|
|
26
|
+
let contribution = (getLightLuminance(light) * window) / attenuation;
|
|
25
27
|
if (light.kind === SpotLightKind) {
|
|
26
28
|
const spot = light;
|
|
27
29
|
const directionLength = Math.hypot(spot.direction.x, spot.direction.y, spot.direction.z);
|
|
@@ -38,7 +40,15 @@ export function getLightContributionAtBoundingSphere(light, bounds) {
|
|
|
38
40
|
// region the light can illuminate. Lights with a finite `range` produce a sphere centered at
|
|
39
41
|
// `position` with `radius = range`. Non-spatial lights (ambient, hemisphere, environment) and
|
|
40
42
|
// infinite-range spatial lights produce a sentinel sphere with `radius = -1` (unlimited reach).
|
|
43
|
+
// Disabled lights write a zero-radius bound at the origin; culling queries reject them explicitly.
|
|
41
44
|
export function getLightInfluenceBounds(out, light) {
|
|
45
|
+
if (!isLightEnabled(light)) {
|
|
46
|
+
out.center.x = 0;
|
|
47
|
+
out.center.y = 0;
|
|
48
|
+
out.center.z = 0;
|
|
49
|
+
out.radius = 0;
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
42
52
|
const kind = light.kind;
|
|
43
53
|
if (kind === AmbientLightKind ||
|
|
44
54
|
kind === HemisphereLightKind ||
|
|
@@ -74,23 +84,53 @@ export function getLightInfluenceBounds(out, light) {
|
|
|
74
84
|
out.center.z = 0;
|
|
75
85
|
out.radius = -1;
|
|
76
86
|
}
|
|
77
|
-
// Returns the linear-light luminance of a light's color × intensity. Packed sRGB
|
|
78
|
-
// gamma-decoded through the shared color primitive before applying the Rec. 709
|
|
79
|
-
// the radiance that packScene3DLightBlock sends to the shader.
|
|
80
|
-
//
|
|
87
|
+
// Returns the linear-light luminance of a built-in light's color × stored intensity. Packed sRGB
|
|
88
|
+
// channels are gamma-decoded through the shared color primitive before applying the Rec. 709
|
|
89
|
+
// weights, matching the radiance that packScene3DLightBlock sends to the shader. Hemisphere lights
|
|
90
|
+
// use the mean of their sky/ground luminances; Environment and open custom kinds return zero.
|
|
91
|
+
// Disabled lights also return zero.
|
|
81
92
|
export function getLightLuminance(light) {
|
|
82
|
-
|
|
83
|
-
const color = colored.color;
|
|
84
|
-
if (color === undefined)
|
|
93
|
+
if (!isLightEnabled(light))
|
|
85
94
|
return 0;
|
|
86
|
-
|
|
87
|
-
|
|
95
|
+
switch (light.kind) {
|
|
96
|
+
case AmbientLightKind: {
|
|
97
|
+
const ambient = light;
|
|
98
|
+
return getColorLuminance(ambient.color) * ambient.intensity;
|
|
99
|
+
}
|
|
100
|
+
case AreaLightKind: {
|
|
101
|
+
const area = light;
|
|
102
|
+
return getColorLuminance(area.color) * area.intensity;
|
|
103
|
+
}
|
|
104
|
+
case DirectionalLightKind: {
|
|
105
|
+
const directional = light;
|
|
106
|
+
return getColorLuminance(directional.color) * directional.intensity;
|
|
107
|
+
}
|
|
108
|
+
case EnvironmentKind:
|
|
109
|
+
return 0;
|
|
110
|
+
case HemisphereLightKind: {
|
|
111
|
+
const hemisphere = light;
|
|
112
|
+
const meanColorLuminance = (getColorLuminance(hemisphere.groundColor) + getColorLuminance(hemisphere.skyColor)) * 0.5;
|
|
113
|
+
return meanColorLuminance * hemisphere.intensity;
|
|
114
|
+
}
|
|
115
|
+
case PointLightKind: {
|
|
116
|
+
const point = light;
|
|
117
|
+
return getColorLuminance(point.color) * point.intensity;
|
|
118
|
+
}
|
|
119
|
+
case SpotLightKind: {
|
|
120
|
+
const spot = light;
|
|
121
|
+
return getColorLuminance(spot.color) * spot.intensity;
|
|
122
|
+
}
|
|
123
|
+
default:
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
88
126
|
}
|
|
89
|
-
// Returns true when `light` could influence a point within `bounds`. Non-spatial lights (ambient,
|
|
127
|
+
// Returns true when an enabled `light` could influence a point within `bounds`. Non-spatial lights (ambient,
|
|
90
128
|
// hemisphere, directional, environment) and infinite-range lights always return true. For spatial
|
|
91
129
|
// lights with a finite range, tests whether the influence sphere intersects `bounds` using a
|
|
92
130
|
// sphere-sphere overlap test. An empty `bounds` (radius < 0) is treated as no overlap.
|
|
93
131
|
export function hasLightInfluenceOnBounds(light, bounds) {
|
|
132
|
+
if (!isLightEnabled(light))
|
|
133
|
+
return false;
|
|
94
134
|
const kind = light.kind;
|
|
95
135
|
if (kind === AmbientLightKind ||
|
|
96
136
|
kind === HemisphereLightKind ||
|
|
@@ -116,7 +156,7 @@ export function hasLightInfluenceOnBounds(light, bounds) {
|
|
|
116
156
|
const radSum = spatial.range + bounds.radius;
|
|
117
157
|
return distSq <= radSum * radSum;
|
|
118
158
|
}
|
|
119
|
-
// Returns true when the light is configured to cast shadows. Non-shadow-capable light types
|
|
159
|
+
// Returns true when the enabled light is configured to cast shadows. Non-shadow-capable light types
|
|
120
160
|
// (AmbientLight, HemisphereLight, Environment) always return false.
|
|
121
161
|
//
|
|
122
162
|
// `Light` declares only `kind`, so the shadow-capable field is not on the base type and a custom light
|
|
@@ -124,12 +164,19 @@ export function hasLightInfluenceOnBounds(light, bounds) {
|
|
|
124
164
|
// have, and comparing against `true` keeps the declared return type honest for a custom kind whose
|
|
125
165
|
// `castsShadow` is absent or is not a boolean at all.
|
|
126
166
|
export function isLightCastingShadow(light) {
|
|
167
|
+
if (!isLightEnabled(light))
|
|
168
|
+
return false;
|
|
127
169
|
const kind = light.kind;
|
|
128
170
|
if (kind === AmbientLightKind || kind === HemisphereLightKind || kind === EnvironmentKind) {
|
|
129
171
|
return false;
|
|
130
172
|
}
|
|
131
173
|
return 'castsShadow' in light && light.castsShadow === true;
|
|
132
174
|
}
|
|
175
|
+
// Built-in descriptors always carry `enabled`; an open custom kind may omit it and keeps the
|
|
176
|
+
// historical enabled-by-default behavior. A custom kind may still opt into the same gate.
|
|
177
|
+
function isLightEnabled(light) {
|
|
178
|
+
return !('enabled' in light) || light.enabled !== false;
|
|
179
|
+
}
|
|
133
180
|
function smoothstep(edge0, edge1, value) {
|
|
134
181
|
if (edge0 === edge1)
|
|
135
182
|
return value < edge0 ? 0 : 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightAnalysis.js","sourceRoot":"","sources":["../src/lightAnalysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"lightAnalysis.js","sourceRoot":"","sources":["../src/lightAnalysis.ts"],"names":[],"mappings":"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"}
|
package/dist/pointLight.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointLight.d.ts","sourceRoot":"","sources":["../src/pointLight.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAI9E,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"pointLight.d.ts","sourceRoot":"","sources":["../src/pointLight.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAI9E,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,CAmBxE;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAoBlF"}
|
package/dist/pointLight.js
CHANGED
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
import { createEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { cloneVector3, createVector3 } from '@flighthq/geometry/contract';
|
|
3
|
-
import { PointLightKind } from '@flighthq/types/contract';
|
|
3
|
+
import { PointLightKind, UnitlessLightUnit } from '@flighthq/types/contract';
|
|
4
4
|
// Independent copy of a point light's data, including a fresh `position` vector.
|
|
5
5
|
export function clonePointLight(source) {
|
|
6
6
|
return createEntity({
|
|
7
7
|
castsShadow: source.castsShadow,
|
|
8
8
|
color: source.color,
|
|
9
|
+
decay: source.decay,
|
|
10
|
+
enabled: source.enabled,
|
|
9
11
|
intensity: source.intensity,
|
|
12
|
+
intensityUnit: source.intensityUnit,
|
|
10
13
|
kind: PointLightKind,
|
|
11
14
|
normalBias: source.normalBias,
|
|
12
15
|
pcfRadius: source.pcfRadius,
|
|
13
16
|
position: cloneVector3(source.position),
|
|
14
17
|
range: source.range,
|
|
15
18
|
shadowBias: source.shadowBias,
|
|
19
|
+
shadowFar: source.shadowFar,
|
|
20
|
+
shadowMapSize: source.shadowMapSize,
|
|
21
|
+
shadowNear: source.shadowNear,
|
|
22
|
+
shadowStrength: source.shadowStrength,
|
|
16
23
|
});
|
|
17
24
|
}
|
|
18
25
|
// Omnidirectional point light. `position` is world-space; intensity falls off with distance up
|
|
@@ -23,13 +30,20 @@ export function createPointLight(options) {
|
|
|
23
30
|
return createEntity({
|
|
24
31
|
castsShadow: options?.castsShadow ?? false,
|
|
25
32
|
color: options?.color ?? 0xffffffff,
|
|
33
|
+
decay: options?.decay ?? 2,
|
|
34
|
+
enabled: options?.enabled ?? true,
|
|
26
35
|
intensity: options?.intensity ?? 1,
|
|
36
|
+
intensityUnit: options?.intensityUnit ?? UnitlessLightUnit,
|
|
27
37
|
kind: PointLightKind,
|
|
28
38
|
normalBias: options?.normalBias ?? 0,
|
|
29
39
|
pcfRadius: options?.pcfRadius ?? 0,
|
|
30
40
|
position: position ? cloneVector3(position) : createVector3(0, 0, 0),
|
|
31
41
|
range: options?.range ?? -1,
|
|
32
42
|
shadowBias: options?.shadowBias ?? 0,
|
|
43
|
+
shadowFar: options?.shadowFar ?? 500,
|
|
44
|
+
shadowMapSize: options?.shadowMapSize ?? 1024,
|
|
45
|
+
shadowNear: options?.shadowNear ?? 0.5,
|
|
46
|
+
shadowStrength: options?.shadowStrength ?? 1,
|
|
33
47
|
});
|
|
34
48
|
}
|
|
35
49
|
//# sourceMappingURL=pointLight.js.map
|
package/dist/pointLight.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointLight.js","sourceRoot":"","sources":["../src/pointLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"pointLight.js","sourceRoot":"","sources":["../src/pointLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7E,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,MAA4B;IAC1D,OAAO,YAAY,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC,CAAC;AACL,CAAC;AAED,+FAA+F;AAC/F,gGAAgG;AAChG,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,OAAqC;IACpE,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IACnC,OAAO,YAAY,CAAC;QAClB,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,KAAK;QAC1C,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,UAAU;QACnC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI;QACjC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC;QAClC,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,iBAAiB;QAC1D,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,CAAC;QACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC;QAClC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;QAC3B,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,CAAC;QACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,GAAG;QACpC,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,IAAI;QAC7C,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,GAAG;QACtC,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC"}
|
package/dist/spotLight.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { SpotLight, SpotLightConeAngles, SpotLightOptions } from '@flighthq
|
|
|
2
2
|
export declare function cloneSpotLight(source: Readonly<SpotLight>): SpotLight;
|
|
3
3
|
export declare function createSpotLight(options?: Readonly<SpotLightOptions>): SpotLight;
|
|
4
4
|
export declare function getSpotLightConeDegrees(out: SpotLightConeAngles, source: Readonly<SpotLight>): void;
|
|
5
|
+
export declare function setSpotLightBlend(out: SpotLight, blend: number): void;
|
|
5
6
|
export declare function setSpotLightCone(out: SpotLight, innerDegrees: number, outerDegrees: number): void;
|
|
6
7
|
export declare function setSpotLightDirection(out: SpotLight, x: number, y: number, z: number): void;
|
|
7
8
|
export declare function setSpotLightTarget(out: SpotLight, targetX: number, targetY: number, targetZ: number): void;
|
package/dist/spotLight.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spotLight.d.ts","sourceRoot":"","sources":["../src/spotLight.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjG,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"spotLight.d.ts","sourceRoot":"","sources":["../src/spotLight.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjG,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAuBrE;AAMD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,SAAS,CA4B/E;AAKD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAGnG;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAErE;AAKD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAGjG;AAID,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ3F;AAKD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAY1G"}
|