@ifc-lite/renderer 1.26.0 → 1.27.0
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/environment.d.ts +76 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +135 -0
- package/dist/environment.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -1
- package/dist/pipeline.d.ts +12 -0
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +45 -2
- package/dist/pipeline.js.map +1 -1
- package/dist/shaders/main.wgsl.d.ts +1 -1
- package/dist/shaders/main.wgsl.d.ts.map +1 -1
- package/dist/shaders/main.wgsl.js +32 -12
- package/dist/shaders/main.wgsl.js.map +1 -1
- package/dist/shaders/sky.wgsl.d.ts +12 -0
- package/dist/shaders/sky.wgsl.d.ts.map +1 -0
- package/dist/shaders/sky.wgsl.js +110 -0
- package/dist/shaders/sky.wgsl.js.map +1 -0
- package/dist/sky-pass.d.ts +49 -0
- package/dist/sky-pass.d.ts.map +1 -0
- package/dist/sky-pass.js +106 -0
- package/dist/sky-pass.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -3
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lighting environment for the main shading pipelines and the procedural
|
|
3
|
+
* sky pass.
|
|
4
|
+
*
|
|
5
|
+
* Every field is optional; the defaults reproduce the renderer's historical
|
|
6
|
+
* hardcoded look exactly (sun at normalize(0.5, 1, 0.3), hemisphere ambient,
|
|
7
|
+
* 0.85 exposure), so callers that never pass `RenderOptions.environment`
|
|
8
|
+
* see no visual change.
|
|
9
|
+
*
|
|
10
|
+
* Directions are in viewer/world space (Y-up). `sunDirection` points TOWARD
|
|
11
|
+
* the sun, matching the shader's `dot(N, sunDirection)` convention.
|
|
12
|
+
*/
|
|
13
|
+
export type Vec3Color = [number, number, number];
|
|
14
|
+
export interface SkyGradient {
|
|
15
|
+
/** Colour straight up. */
|
|
16
|
+
zenith: Vec3Color;
|
|
17
|
+
/** Colour at the horizon band. */
|
|
18
|
+
horizon: Vec3Color;
|
|
19
|
+
/** Colour below the horizon. */
|
|
20
|
+
ground: Vec3Color;
|
|
21
|
+
}
|
|
22
|
+
export interface LightingEnvironment {
|
|
23
|
+
/** Unit vector toward the sun (Y-up viewer space). Normalized defensively. */
|
|
24
|
+
sunDirection?: [number, number, number];
|
|
25
|
+
sunColor?: Vec3Color;
|
|
26
|
+
/** Diffuse strength of the sun term (historic default 0.55). */
|
|
27
|
+
sunIntensity?: number;
|
|
28
|
+
/** Hemisphere-ambient sky colour (historic default [0.3, 0.35, 0.4]). */
|
|
29
|
+
skyColor?: Vec3Color;
|
|
30
|
+
/** Hemisphere-ambient ground colour (historic default [0.15, 0.1, 0.08]). */
|
|
31
|
+
groundColor?: Vec3Color;
|
|
32
|
+
/** Hemisphere ambient strength (historic default 0.25). */
|
|
33
|
+
ambientIntensity?: number;
|
|
34
|
+
/** Fixed fill-light strength (historic default 0.15). */
|
|
35
|
+
fillIntensity?: number;
|
|
36
|
+
/** Rim-light strength (historic default 0.15). */
|
|
37
|
+
rimIntensity?: number;
|
|
38
|
+
/** Pre-tonemap exposure multiplier (historic default 0.85). */
|
|
39
|
+
exposure?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Draw the procedural sky background. When false (default) the frame
|
|
42
|
+
* clears to `RenderOptions.clearColor` exactly as before.
|
|
43
|
+
*/
|
|
44
|
+
skyEnabled?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Optional explicit sky gradient for the sky pass. When omitted, a
|
|
47
|
+
* palette is derived from the sun's altitude (day → golden hour →
|
|
48
|
+
* twilight → night).
|
|
49
|
+
*/
|
|
50
|
+
sky?: Partial<SkyGradient>;
|
|
51
|
+
}
|
|
52
|
+
/** `LightingEnvironment` with every field populated. */
|
|
53
|
+
export type ResolvedEnvironment = Required<Omit<LightingEnvironment, 'sky'>> & {
|
|
54
|
+
sky: SkyGradient;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Derive a sky gradient from the sun's elevation (the Y component of the
|
|
58
|
+
* unit sun direction = sin(altitude)). Four keyed palettes blended smoothly:
|
|
59
|
+
* night → twilight → golden hour → day.
|
|
60
|
+
*/
|
|
61
|
+
export declare function deriveSkyGradient(sunElevation: number): SkyGradient;
|
|
62
|
+
/** Fill in defaults; the result always renders identically to the legacy look when `env` is undefined/empty. */
|
|
63
|
+
export declare function resolveEnvironment(env?: LightingEnvironment): ResolvedEnvironment;
|
|
64
|
+
/** Byte size of the packed environment UBO (must match the WGSL struct). */
|
|
65
|
+
export declare const ENVIRONMENT_UNIFORM_SIZE = 80;
|
|
66
|
+
/**
|
|
67
|
+
* Pack the resolved environment into the `Environment` WGSL struct layout:
|
|
68
|
+
*
|
|
69
|
+
* sunDirection: vec3 + sunIntensity: f32 → floats 0..3
|
|
70
|
+
* sunColor: vec3 + ambientIntensity: f32 → floats 4..7
|
|
71
|
+
* skyColor: vec3 + exposure: f32 → floats 8..11
|
|
72
|
+
* groundColor: vec3 + fillIntensity: f32 → floats 12..15
|
|
73
|
+
* rimIntensity: f32 + 3 pad floats → floats 16..19
|
|
74
|
+
*/
|
|
75
|
+
export declare function packEnvironmentUniforms(env: ResolvedEnvironment, out?: Float32Array): Float32Array;
|
|
76
|
+
//# sourceMappingURL=environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,kCAAkC;IAClC,OAAO,EAAE,SAAS,CAAC;IACnB,gCAAgC;IAChC,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5B;AAED,wDAAwD;AACxD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,GAAG;IAC7E,GAAG,EAAE,WAAW,CAAC;CAClB,CAAC;AA4BF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAgDnE;AAED,gHAAgH;AAChH,wBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAoBjF;AAED,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,mBAAmB,EACxB,GAAG,CAAC,EAAE,YAAY,GACjB,YAAY,CAuBd"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/** Historic hardcoded sun direction, normalized: (0.5, 1, 0.3) / |…|. */
|
|
5
|
+
const DEFAULT_SUN_DIR = (() => {
|
|
6
|
+
const len = Math.hypot(0.5, 1.0, 0.3);
|
|
7
|
+
return [0.5 / len, 1.0 / len, 0.3 / len];
|
|
8
|
+
})();
|
|
9
|
+
function normalized(v) {
|
|
10
|
+
const len = Math.hypot(v[0], v[1], v[2]);
|
|
11
|
+
if (!(len > 1e-6))
|
|
12
|
+
return [...DEFAULT_SUN_DIR];
|
|
13
|
+
return [v[0] / len, v[1] / len, v[2] / len];
|
|
14
|
+
}
|
|
15
|
+
function lerp(a, b, t) {
|
|
16
|
+
return a + (b - a) * t;
|
|
17
|
+
}
|
|
18
|
+
function lerp3(a, b, t) {
|
|
19
|
+
return [lerp(a[0], b[0], t), lerp(a[1], b[1], t), lerp(a[2], b[2], t)];
|
|
20
|
+
}
|
|
21
|
+
/** Clamped 0..1 smooth interpolation parameter between two stops. */
|
|
22
|
+
function band(x, lo, hi) {
|
|
23
|
+
const t = Math.min(1, Math.max(0, (x - lo) / (hi - lo)));
|
|
24
|
+
return t * t * (3 - 2 * t);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Derive a sky gradient from the sun's elevation (the Y component of the
|
|
28
|
+
* unit sun direction = sin(altitude)). Four keyed palettes blended smoothly:
|
|
29
|
+
* night → twilight → golden hour → day.
|
|
30
|
+
*/
|
|
31
|
+
export function deriveSkyGradient(sunElevation) {
|
|
32
|
+
const night = {
|
|
33
|
+
zenith: [0.012, 0.016, 0.035],
|
|
34
|
+
horizon: [0.03, 0.04, 0.07],
|
|
35
|
+
ground: [0.015, 0.015, 0.02],
|
|
36
|
+
};
|
|
37
|
+
const twilight = {
|
|
38
|
+
zenith: [0.07, 0.08, 0.18],
|
|
39
|
+
horizon: [0.45, 0.22, 0.18],
|
|
40
|
+
ground: [0.05, 0.04, 0.05],
|
|
41
|
+
};
|
|
42
|
+
// Ground tones stay near-neutral grey: BIM cameras spend most of their
|
|
43
|
+
// time looking DOWN, so the below-horizon colour fills the screen — a
|
|
44
|
+
// warm "earth" tone reads as a mud-brown background there.
|
|
45
|
+
const golden = {
|
|
46
|
+
zenith: [0.18, 0.32, 0.56],
|
|
47
|
+
horizon: [0.95, 0.55, 0.28],
|
|
48
|
+
ground: [0.11, 0.105, 0.105],
|
|
49
|
+
};
|
|
50
|
+
const day = {
|
|
51
|
+
zenith: [0.18, 0.40, 0.78],
|
|
52
|
+
horizon: [0.66, 0.78, 0.90],
|
|
53
|
+
ground: [0.14, 0.145, 0.15],
|
|
54
|
+
};
|
|
55
|
+
// sin(altitude) stops: night below -0.21 (~-12°), twilight to ~0,
|
|
56
|
+
// golden to ~0.17 (~10°), full day above ~0.35 (~20°).
|
|
57
|
+
const tTwilight = band(sunElevation, -0.21, -0.02);
|
|
58
|
+
const tGolden = band(sunElevation, -0.02, 0.17);
|
|
59
|
+
const tDay = band(sunElevation, 0.17, 0.35);
|
|
60
|
+
let g = night;
|
|
61
|
+
g = {
|
|
62
|
+
zenith: lerp3(g.zenith, twilight.zenith, tTwilight),
|
|
63
|
+
horizon: lerp3(g.horizon, twilight.horizon, tTwilight),
|
|
64
|
+
ground: lerp3(g.ground, twilight.ground, tTwilight),
|
|
65
|
+
};
|
|
66
|
+
g = {
|
|
67
|
+
zenith: lerp3(g.zenith, golden.zenith, tGolden),
|
|
68
|
+
horizon: lerp3(g.horizon, golden.horizon, tGolden),
|
|
69
|
+
ground: lerp3(g.ground, golden.ground, tGolden),
|
|
70
|
+
};
|
|
71
|
+
g = {
|
|
72
|
+
zenith: lerp3(g.zenith, day.zenith, tDay),
|
|
73
|
+
horizon: lerp3(g.horizon, day.horizon, tDay),
|
|
74
|
+
ground: lerp3(g.ground, day.ground, tDay),
|
|
75
|
+
};
|
|
76
|
+
return g;
|
|
77
|
+
}
|
|
78
|
+
/** Fill in defaults; the result always renders identically to the legacy look when `env` is undefined/empty. */
|
|
79
|
+
export function resolveEnvironment(env) {
|
|
80
|
+
const sunDirection = normalized(env?.sunDirection ?? DEFAULT_SUN_DIR);
|
|
81
|
+
const derived = deriveSkyGradient(sunDirection[1]);
|
|
82
|
+
return {
|
|
83
|
+
sunDirection,
|
|
84
|
+
sunColor: env?.sunColor ?? [1, 1, 1],
|
|
85
|
+
sunIntensity: env?.sunIntensity ?? 0.55,
|
|
86
|
+
skyColor: env?.skyColor ?? [0.3, 0.35, 0.4],
|
|
87
|
+
groundColor: env?.groundColor ?? [0.15, 0.1, 0.08],
|
|
88
|
+
ambientIntensity: env?.ambientIntensity ?? 0.25,
|
|
89
|
+
fillIntensity: env?.fillIntensity ?? 0.15,
|
|
90
|
+
rimIntensity: env?.rimIntensity ?? 0.15,
|
|
91
|
+
exposure: env?.exposure ?? 0.85,
|
|
92
|
+
skyEnabled: env?.skyEnabled ?? false,
|
|
93
|
+
sky: {
|
|
94
|
+
zenith: env?.sky?.zenith ?? derived.zenith,
|
|
95
|
+
horizon: env?.sky?.horizon ?? derived.horizon,
|
|
96
|
+
ground: env?.sky?.ground ?? derived.ground,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/** Byte size of the packed environment UBO (must match the WGSL struct). */
|
|
101
|
+
export const ENVIRONMENT_UNIFORM_SIZE = 80;
|
|
102
|
+
/**
|
|
103
|
+
* Pack the resolved environment into the `Environment` WGSL struct layout:
|
|
104
|
+
*
|
|
105
|
+
* sunDirection: vec3 + sunIntensity: f32 → floats 0..3
|
|
106
|
+
* sunColor: vec3 + ambientIntensity: f32 → floats 4..7
|
|
107
|
+
* skyColor: vec3 + exposure: f32 → floats 8..11
|
|
108
|
+
* groundColor: vec3 + fillIntensity: f32 → floats 12..15
|
|
109
|
+
* rimIntensity: f32 + 3 pad floats → floats 16..19
|
|
110
|
+
*/
|
|
111
|
+
export function packEnvironmentUniforms(env, out) {
|
|
112
|
+
const buf = out ?? new Float32Array(ENVIRONMENT_UNIFORM_SIZE / 4);
|
|
113
|
+
buf[0] = env.sunDirection[0];
|
|
114
|
+
buf[1] = env.sunDirection[1];
|
|
115
|
+
buf[2] = env.sunDirection[2];
|
|
116
|
+
buf[3] = env.sunIntensity;
|
|
117
|
+
buf[4] = env.sunColor[0];
|
|
118
|
+
buf[5] = env.sunColor[1];
|
|
119
|
+
buf[6] = env.sunColor[2];
|
|
120
|
+
buf[7] = env.ambientIntensity;
|
|
121
|
+
buf[8] = env.skyColor[0];
|
|
122
|
+
buf[9] = env.skyColor[1];
|
|
123
|
+
buf[10] = env.skyColor[2];
|
|
124
|
+
buf[11] = env.exposure;
|
|
125
|
+
buf[12] = env.groundColor[0];
|
|
126
|
+
buf[13] = env.groundColor[1];
|
|
127
|
+
buf[14] = env.groundColor[2];
|
|
128
|
+
buf[15] = env.fillIntensity;
|
|
129
|
+
buf[16] = env.rimIntensity;
|
|
130
|
+
buf[17] = 0;
|
|
131
|
+
buf[18] = 0;
|
|
132
|
+
buf[19] = 0;
|
|
133
|
+
return buf;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export { BVH } from './bvh.js';
|
|
|
25
25
|
export { FederationRegistry, federationRegistry } from './federation-registry.js';
|
|
26
26
|
export type { ModelRange, GlobalIdLookup } from './federation-registry.js';
|
|
27
27
|
export * from './types.js';
|
|
28
|
+
export { resolveEnvironment, deriveSkyGradient, packEnvironmentUniforms, ENVIRONMENT_UNIFORM_SIZE, } from './environment.js';
|
|
29
|
+
export type { LightingEnvironment, ResolvedEnvironment, SkyGradient, Vec3Color } from './environment.js';
|
|
28
30
|
export type { Ray, Vec3, Intersection } from './raycaster.js';
|
|
29
31
|
export type { SnapTarget, SnapOptions, EdgeLockInput, MagneticSnapResult } from './snap-detector.js';
|
|
30
32
|
export { PickingManager } from './picking-manager.js';
|
|
@@ -64,6 +66,7 @@ export declare class Renderer {
|
|
|
64
66
|
private postProcessor;
|
|
65
67
|
private readonly interactionEffects;
|
|
66
68
|
private edlPass;
|
|
69
|
+
private skyPass;
|
|
67
70
|
private edlOptions;
|
|
68
71
|
private pointCloudRenderer;
|
|
69
72
|
private deviationPipeline;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -28,6 +28,7 @@ export { SnapDetector, SnapType } from './snap-detector.js';
|
|
|
28
28
|
export { BVH } from './bvh.js';
|
|
29
29
|
export { FederationRegistry, federationRegistry } from './federation-registry.js';
|
|
30
30
|
export * from './types.js';
|
|
31
|
+
export { resolveEnvironment, deriveSkyGradient, packEnvironmentUniforms, ENVIRONMENT_UNIFORM_SIZE, } from './environment.js';
|
|
31
32
|
// Extracted manager classes
|
|
32
33
|
export { PickingManager } from './picking-manager.js';
|
|
33
34
|
export { RaycastEngine } from './raycast-engine.js';
|
|
@@ -51,6 +52,9 @@ import { RaycastEngine } from './raycast-engine.js';
|
|
|
51
52
|
import { PostProcessor } from './post-processor.js';
|
|
52
53
|
import { InteractionEffectsGovernor } from './interaction-effects-governor.js';
|
|
53
54
|
import { EdlPass } from './edl-pass.js';
|
|
55
|
+
import { SkyPass } from './sky-pass.js';
|
|
56
|
+
import { skyShaderSource } from './shaders/sky.wgsl.js';
|
|
57
|
+
import { resolveEnvironment } from './environment.js';
|
|
54
58
|
import { shouldRouteMeshTransparent, shouldRouteBatchTransparent, splitVisibleIdsByPromotion } from './overlay-routing.js';
|
|
55
59
|
import { PointCloudRenderer } from './pointcloud/point-cloud-renderer.js';
|
|
56
60
|
import { DeviationPipeline } from './deviation/deviation-pipeline.js';
|
|
@@ -95,6 +99,9 @@ export class Renderer {
|
|
|
95
99
|
postProcessor = null;
|
|
96
100
|
interactionEffects = new InteractionEffectsGovernor();
|
|
97
101
|
edlPass = null;
|
|
102
|
+
// Procedural sky background — created lazily on the first frame that
|
|
103
|
+
// enables it (most sessions never do).
|
|
104
|
+
skyPass = null;
|
|
98
105
|
edlOptions = {
|
|
99
106
|
enabled: false,
|
|
100
107
|
strength: 1,
|
|
@@ -1258,6 +1265,56 @@ export class Renderer {
|
|
|
1258
1265
|
stencilStoreOp: 'store',
|
|
1259
1266
|
},
|
|
1260
1267
|
});
|
|
1268
|
+
// Global lighting environment: write the uniform once per frame
|
|
1269
|
+
// and bind at group(1) — every pipeline derived from the main
|
|
1270
|
+
// shader shares this layout, and bind groups persist across
|
|
1271
|
+
// setPipeline calls within the pass.
|
|
1272
|
+
const environment = resolveEnvironment(options.environment);
|
|
1273
|
+
this.pipeline.updateEnvironment(options.environment);
|
|
1274
|
+
pass.setBindGroup(1, this.pipeline.getEnvironmentBindGroup());
|
|
1275
|
+
// Procedural sky background — replaces the flat clear colour.
|
|
1276
|
+
// Drawn before any geometry at the reverse-Z far plane with depth
|
|
1277
|
+
// writes off, so it never occludes anything and transparent
|
|
1278
|
+
// surfaces blend over it. (The viewer keeps this disabled while
|
|
1279
|
+
// the Cesium overlay composites underneath a transparent clear.)
|
|
1280
|
+
if (environment.skyEnabled) {
|
|
1281
|
+
if (!this.skyPass) {
|
|
1282
|
+
this.skyPass = new SkyPass(device, {
|
|
1283
|
+
colorFormat: this.device.getFormat(),
|
|
1284
|
+
objectIdFormat: 'rgba8unorm',
|
|
1285
|
+
depthFormat: this.pipeline.getDepthFormat(),
|
|
1286
|
+
sampleCount: this.pipeline.getSampleCount(),
|
|
1287
|
+
}, skyShaderSource);
|
|
1288
|
+
}
|
|
1289
|
+
const camPos = this.camera.getPosition();
|
|
1290
|
+
const camTgt = this.camera.getTarget();
|
|
1291
|
+
const camUp = this.camera.getUp();
|
|
1292
|
+
let fx = camTgt.x - camPos.x;
|
|
1293
|
+
let fy = camTgt.y - camPos.y;
|
|
1294
|
+
let fz = camTgt.z - camPos.z;
|
|
1295
|
+
const flen = Math.hypot(fx, fy, fz) || 1;
|
|
1296
|
+
fx /= flen;
|
|
1297
|
+
fy /= flen;
|
|
1298
|
+
fz /= flen;
|
|
1299
|
+
// Right = normalize(cross(forward, up)); true up = cross(right, forward).
|
|
1300
|
+
let rx = fy * camUp.z - fz * camUp.y;
|
|
1301
|
+
let ry = fz * camUp.x - fx * camUp.z;
|
|
1302
|
+
let rz = fx * camUp.y - fy * camUp.x;
|
|
1303
|
+
const rlen = Math.hypot(rx, ry, rz) || 1;
|
|
1304
|
+
rx /= rlen;
|
|
1305
|
+
ry /= rlen;
|
|
1306
|
+
rz /= rlen;
|
|
1307
|
+
const ux = ry * fz - rz * fy;
|
|
1308
|
+
const uy = rz * fx - rx * fz;
|
|
1309
|
+
const uz = rx * fy - ry * fx;
|
|
1310
|
+
this.skyPass.draw(pass, {
|
|
1311
|
+
forward: [fx, fy, fz],
|
|
1312
|
+
right: [rx, ry, rz],
|
|
1313
|
+
up: [ux, uy, uz],
|
|
1314
|
+
fovY: this.camera.getFOV(),
|
|
1315
|
+
aspect: this.canvas.height > 0 ? this.canvas.width / this.canvas.height : 1,
|
|
1316
|
+
}, environment);
|
|
1317
|
+
}
|
|
1261
1318
|
pass.setPipeline(this.pipeline.getPipeline());
|
|
1262
1319
|
// Check if we have batched meshes (preferred for performance)
|
|
1263
1320
|
const allBatchedMeshes = this.scene.getBatchedMeshes();
|
|
@@ -2366,6 +2423,8 @@ export class Renderer {
|
|
|
2366
2423
|
this.postProcessor = null;
|
|
2367
2424
|
this.edlPass?.destroy();
|
|
2368
2425
|
this.edlPass = null;
|
|
2426
|
+
this.skyPass?.destroy();
|
|
2427
|
+
this.skyPass = null;
|
|
2369
2428
|
// Section-plane renderers
|
|
2370
2429
|
this.sectionPlaneRenderer?.destroy();
|
|
2371
2430
|
this.sectionPlaneRenderer = null;
|