@flighthq/lighting 0.2.1-next.738.07b221d → 0.2.1-next.841.373388f
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/dist/lightAnalysis.js +1 -1
- package/dist/lightAnalysis.js.map +1 -1
- package/dist/sceneForwardLights.d.ts +2 -2
- package/dist/sceneForwardLights.d.ts.map +1 -1
- package/dist/sceneForwardLights.js +1 -1
- package/dist/sceneForwardLights.js.map +1 -1
- package/dist/sceneLights.d.ts +2 -2
- package/dist/sceneLights.d.ts.map +1 -1
- package/dist/sceneLights.js +4 -4
- package/dist/sceneLights.js.map +1 -1
- package/package.json +5 -5
- package/src/sceneForwardLights.test.ts +12 -12
- package/src/sceneLights.test.ts +5 -5
package/dist/lightAnalysis.js
CHANGED
|
@@ -76,7 +76,7 @@ export function getLightInfluenceBounds(out, light) {
|
|
|
76
76
|
}
|
|
77
77
|
// Returns the linear-light luminance of a light's color × intensity. Packed sRGB channels are
|
|
78
78
|
// gamma-decoded through the shared color primitive before applying the Rec. 709 weights, matching
|
|
79
|
-
// the radiance that
|
|
79
|
+
// the radiance that packScene3DLightBlock sends to the shader. Useful for ranking lights by their
|
|
80
80
|
// rendered contribution when prioritizing a forward-light budget.
|
|
81
81
|
export function getLightLuminance(light) {
|
|
82
82
|
const colored = light;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightAnalysis.js","sourceRoot":"","sources":["../src/lightAnalysis.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lightAnalysis.js","sourceRoot":"","sources":["../src/lightAnalysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { BoundingSphereLike,
|
|
2
|
-
export declare function
|
|
1
|
+
import type { BoundingSphereLike, Scene3DForwardLightSelection, Scene3DLightsLike } from '@flighthq/types';
|
|
2
|
+
export declare function selectScene3DForwardLights(out: Scene3DForwardLightSelection, lights: Readonly<Scene3DLightsLike>, bounds: Readonly<BoundingSphereLike>): void;
|
|
3
3
|
//# sourceMappingURL=sceneForwardLights.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneForwardLights.d.ts","sourceRoot":"","sources":["../src/sceneForwardLights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAElB,
|
|
1
|
+
{"version":3,"file":"sceneForwardLights.d.ts","sourceRoot":"","sources":["../src/sceneForwardLights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAElB,4BAA4B,EAC5B,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AAazB,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,4BAA4B,EACjC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACnC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACnC,IAAI,CAkCN"}
|
|
@@ -8,7 +8,7 @@ import { getLightContributionAtBoundingSphere } from './lightAnalysis';
|
|
|
8
8
|
//
|
|
9
9
|
// `out.point` and `out.spot` are reused mutable arrays. All inputs are read into fixed-size scratch
|
|
10
10
|
// before either output array is changed, so `out` may alias `lights`.
|
|
11
|
-
export function
|
|
11
|
+
export function selectScene3DForwardLights(out, lights, bounds) {
|
|
12
12
|
const points = lights.point;
|
|
13
13
|
const spots = lights.spot;
|
|
14
14
|
const pointCount = selectStrongestLights(points, bounds, scratchSelectedPointLights, scratchSelectedPointIndices, scratchSelectedPointScores);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneForwardLights.js","sourceRoot":"","sources":["../src/sceneForwardLights.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,oCAAoC,EAAE,MAAM,iBAAiB,CAAC;AAEvE,gGAAgG;AAChG,gGAAgG;AAChG,+FAA+F;AAC/F,8FAA8F;AAC9F,WAAW;AACX,EAAE;AACF,oGAAoG;AACpG,sEAAsE;AACtE,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"sceneForwardLights.js","sourceRoot":"","sources":["../src/sceneForwardLights.ts"],"names":[],"mappings":"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"}
|
package/dist/sceneLights.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function
|
|
1
|
+
import type { Scene3DLights, Scene3DLightsLike } from '@flighthq/types';
|
|
2
|
+
export declare function createScene3DLights(options?: Readonly<Partial<Scene3DLightsLike>>): Scene3DLights;
|
|
3
3
|
//# sourceMappingURL=sceneLights.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneLights.d.ts","sourceRoot":"","sources":["../src/sceneLights.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"sceneLights.d.ts","sourceRoot":"","sources":["../src/sceneLights.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAWxE,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,aAAa,CAQjG"}
|
package/dist/sceneLights.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { createEntity } from '@flighthq/entity';
|
|
2
|
-
// Constructs a `
|
|
2
|
+
// Constructs a `Scene3DLights` draw-argument, filling every absent slot: the single ambient/directional
|
|
3
3
|
// terms default to `null` and the punctual arrays to empty. Prefer this over a bare object literal —
|
|
4
4
|
// a literal that omits a slot passes `undefined` where the packer expects a light-or-null, which the
|
|
5
5
|
// strict `!== null` presence check reads as "present" and then dereferences (the classic
|
|
6
6
|
// `undefined.direction` crash). Going through the constructor makes an omitted slot unrepresentable.
|
|
7
7
|
//
|
|
8
|
-
// `
|
|
8
|
+
// `Scene3DLights` is a per-draw argument (lights are not scene members), but the exported `create*`
|
|
9
9
|
// product still carries Flight's Entity shape invariant. That identity does not imply a GPU binding:
|
|
10
|
-
// the packed `
|
|
11
|
-
export function
|
|
10
|
+
// the packed `Scene3DLightBlock` is what a backend caches, keyed off the render state.
|
|
11
|
+
export function createScene3DLights(options) {
|
|
12
12
|
return createEntity({
|
|
13
13
|
ambient: options?.ambient ?? null,
|
|
14
14
|
directional: options?.directional ?? null,
|
package/dist/sceneLights.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneLights.js","sourceRoot":"","sources":["../src/sceneLights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,
|
|
1
|
+
{"version":3,"file":"sceneLights.js","sourceRoot":"","sources":["../src/sceneLights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,wGAAwG;AACxG,qGAAqG;AACrG,qGAAqG;AACrG,yFAAyF;AACzF,qGAAqG;AACrG,EAAE;AACF,oGAAoG;AACpG,qGAAqG;AACrG,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CAAC,OAA8C;IAChF,OAAO,YAAY,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI;QACjC,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;QACzC,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE;QACrC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;QAC3B,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;KAC1B,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/lighting",
|
|
3
|
-
"version": "0.2.1-next.
|
|
3
|
+
"version": "0.2.1-next.841.373388f",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@flighthq/color": "0.2.1-next.
|
|
36
|
-
"@flighthq/entity": "0.2.1-next.
|
|
37
|
-
"@flighthq/geometry": "0.2.1-next.
|
|
38
|
-
"@flighthq/types": "0.2.1-next.
|
|
35
|
+
"@flighthq/color": "0.2.1-next.841.373388f",
|
|
36
|
+
"@flighthq/entity": "0.2.1-next.841.373388f",
|
|
37
|
+
"@flighthq/geometry": "0.2.1-next.841.373388f",
|
|
38
|
+
"@flighthq/types": "0.2.1-next.841.373388f"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"typescript": "^5.3.0"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createBoundingSphere } from '@flighthq/geometry';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Scene3DForwardLightSelection, Scene3DLightsLike } from '@flighthq/types';
|
|
3
3
|
|
|
4
4
|
import { createPointLight } from './pointLight';
|
|
5
|
-
import {
|
|
5
|
+
import { selectScene3DForwardLights } from './sceneForwardLights';
|
|
6
6
|
import { createSpotLight } from './spotLight';
|
|
7
7
|
|
|
8
|
-
function selection():
|
|
8
|
+
function selection(): Scene3DForwardLightSelection {
|
|
9
9
|
return { indices: [], point: [], spot: [] };
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -21,12 +21,12 @@ function spotLights(xs: readonly number[]) {
|
|
|
21
21
|
);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
describe('
|
|
24
|
+
describe('selectScene3DForwardLights', () => {
|
|
25
25
|
it('keeps all three points and three spots when both families are within budget', () => {
|
|
26
26
|
const points = [8, 7, 6].map((x) => createPointLight({ position: { x, y: 0, z: 0 }, range: -1 }));
|
|
27
27
|
const spots = spotLights([5, 4, 3]);
|
|
28
28
|
const out = selection();
|
|
29
|
-
|
|
29
|
+
selectScene3DForwardLights(
|
|
30
30
|
out,
|
|
31
31
|
{ ambient: null, directional: null, point: points, spot: spots },
|
|
32
32
|
createBoundingSphere(0, 0, 0, 0),
|
|
@@ -53,7 +53,7 @@ describe('selectSceneForwardLights', () => {
|
|
|
53
53
|
range: -1,
|
|
54
54
|
});
|
|
55
55
|
const out = selection();
|
|
56
|
-
|
|
56
|
+
selectScene3DForwardLights(
|
|
57
57
|
out,
|
|
58
58
|
{ ambient: null, directional: null, point: [...gray, white] },
|
|
59
59
|
createBoundingSphere(0, 0, 0, 0),
|
|
@@ -66,7 +66,7 @@ describe('selectSceneForwardLights', () => {
|
|
|
66
66
|
const points = [8, 7, 6, 5, 4, 3].map((x) => createPointLight({ position: { x, y: 0, z: 0 }, range: -1 }));
|
|
67
67
|
const spots = spotLights([8, 7, 6, 5, 4, 3]);
|
|
68
68
|
const out = selection();
|
|
69
|
-
|
|
69
|
+
selectScene3DForwardLights(
|
|
70
70
|
out,
|
|
71
71
|
{ ambient: null, directional: null, point: points, spot: spots },
|
|
72
72
|
createBoundingSphere(0, 0, 0, 0),
|
|
@@ -79,7 +79,7 @@ describe('selectSceneForwardLights', () => {
|
|
|
79
79
|
it('uses stable input order to break equal-contribution ties', () => {
|
|
80
80
|
const points = Array.from({ length: 6 }, () => createPointLight({ position: { x: 2, y: 0, z: 0 }, range: -1 }));
|
|
81
81
|
const out = selection();
|
|
82
|
-
|
|
82
|
+
selectScene3DForwardLights(
|
|
83
83
|
out,
|
|
84
84
|
{ ambient: null, directional: null, point: points },
|
|
85
85
|
createBoundingSphere(0, 0, 0, 0),
|
|
@@ -90,7 +90,7 @@ describe('selectSceneForwardLights', () => {
|
|
|
90
90
|
|
|
91
91
|
it('omits zero-contribution lights', () => {
|
|
92
92
|
const out = selection();
|
|
93
|
-
|
|
93
|
+
selectScene3DForwardLights(
|
|
94
94
|
out,
|
|
95
95
|
{
|
|
96
96
|
ambient: null,
|
|
@@ -110,10 +110,10 @@ describe('selectSceneForwardLights', () => {
|
|
|
110
110
|
];
|
|
111
111
|
const far = points[0];
|
|
112
112
|
const near = points[1];
|
|
113
|
-
const lights:
|
|
114
|
-
const out = lights as
|
|
113
|
+
const lights: Scene3DLightsLike = { ambient: null, directional: null, point: points, spot: [] };
|
|
114
|
+
const out = lights as Scene3DLightsLike & Scene3DForwardLightSelection;
|
|
115
115
|
out.indices = [];
|
|
116
|
-
|
|
116
|
+
selectScene3DForwardLights(out, lights, createBoundingSphere(0, 0, 0, 0));
|
|
117
117
|
expect(out.point).toEqual([near, far]);
|
|
118
118
|
expect(out.indices).toEqual([1, 0]);
|
|
119
119
|
});
|
package/src/sceneLights.test.ts
CHANGED
|
@@ -4,11 +4,11 @@ import { describe, expect, it } from 'vitest';
|
|
|
4
4
|
import { createAmbientLight } from './ambientLight';
|
|
5
5
|
import { createDirectionalLight } from './directionalLight';
|
|
6
6
|
import { createPointLight } from './pointLight';
|
|
7
|
-
import {
|
|
7
|
+
import { createScene3DLights } from './sceneLights';
|
|
8
8
|
|
|
9
|
-
describe('
|
|
9
|
+
describe('createScene3DLights', () => {
|
|
10
10
|
it('fills every absent slot — singles to null, punctual arrays to empty', () => {
|
|
11
|
-
const lights =
|
|
11
|
+
const lights = createScene3DLights();
|
|
12
12
|
expect(lights.ambient).toBeNull();
|
|
13
13
|
expect(lights.directional).toBeNull();
|
|
14
14
|
expect(lights.point).toEqual([]);
|
|
@@ -19,7 +19,7 @@ describe('createSceneLights', () => {
|
|
|
19
19
|
|
|
20
20
|
it('carries the provided lights and defaults the omitted ones (no undefined slot)', () => {
|
|
21
21
|
const point = createPointLight({ intensity: 2 });
|
|
22
|
-
const lights =
|
|
22
|
+
const lights = createScene3DLights({ point: [point] });
|
|
23
23
|
// The omitted directional must be null, not undefined — a literal that dropped it would crash the
|
|
24
24
|
// packer's strict `!== null` check; the constructor makes that unrepresentable.
|
|
25
25
|
expect(lights.directional).toBeNull();
|
|
@@ -31,7 +31,7 @@ describe('createSceneLights', () => {
|
|
|
31
31
|
it('passes through ambient + directional when supplied', () => {
|
|
32
32
|
const ambient = createAmbientLight({ intensity: 0.2 });
|
|
33
33
|
const directional = createDirectionalLight({ intensity: 3 });
|
|
34
|
-
const lights =
|
|
34
|
+
const lights = createScene3DLights({ ambient, directional });
|
|
35
35
|
expect(lights.ambient).toBe(ambient);
|
|
36
36
|
expect(lights.directional).toBe(directional);
|
|
37
37
|
});
|