@navaramap/three-default-plugin 0.1.1 → 0.2.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/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2026 Navara contributors
1
+ Copyright (c) 2026 MapLibre contributors
2
2
 
3
3
  This project is dual-licensed under either of
4
4
 
package/dist/index.d.ts CHANGED
@@ -28,6 +28,8 @@ import { LightProbeConfig } from '@navaramap/three-default-descs';
28
28
  import { MeshHandle } from '@navaramap/three';
29
29
  import { PlaneMeshConfig } from '@navaramap/three-default-descs';
30
30
  import { Plugin as Plugin_2 } from '@navaramap/three';
31
+ import { PolygonMeshConfig } from '@navaramap/three-default-descs';
32
+ import { PolylineMeshConfig } from '@navaramap/three-default-descs';
31
33
  import { RainDropConfig } from '@navaramap/three-default-descs';
32
34
  import { RainMeshConfig } from '@navaramap/three-default-descs';
33
35
  import { SelectiveBloomEffectConfig } from '@navaramap/three-default-descs';
@@ -64,7 +66,7 @@ export declare type DefaultEffectDescription = AerialPerspectiveConfig | CloudsC
64
66
 
65
67
  export declare type DefaultLightDescription = SunLightConfig | SkyLightProbeConfig | AmbientLightConfig | LightProbeConfig;
66
68
 
67
- export declare type DefaultMeshDescription = RainMeshConfig | SnowMeshConfig | SkyMeshConfig | SkyBoxMeshConfig | StarsConfig | BoxMeshConfig | SphereMeshConfig | GlowGlobeMeshConfig | CylinderMeshConfig | TubeMeshConfig | PlaneMeshConfig | GLTFModelConfig | SplatMeshConfig | AxesHelperConfig | ArrowHelperConfig | ArclineMeshConfig | SmoothLineMeshConfig | InstancedBoxMeshConfig | InstancedSphereMeshConfig | InstancedPlaneMeshConfig | InstancedCylinderMeshConfig | InstancedGltfModelMeshConfig;
69
+ export declare type DefaultMeshDescription = PolygonMeshConfig | PolylineMeshConfig | RainMeshConfig | SnowMeshConfig | SkyMeshConfig | SkyBoxMeshConfig | StarsConfig | BoxMeshConfig | SphereMeshConfig | GlowGlobeMeshConfig | CylinderMeshConfig | TubeMeshConfig | PlaneMeshConfig | GLTFModelConfig | SplatMeshConfig | AxesHelperConfig | ArrowHelperConfig | ArclineMeshConfig | SmoothLineMeshConfig | InstancedBoxMeshConfig | InstancedSphereMeshConfig | InstancedPlaneMeshConfig | InstancedCylinderMeshConfig | InstancedGltfModelMeshConfig;
68
70
 
69
71
  export declare class DefaultPlugin extends Plugin_2<default_2<DefaultDescriptions>, ViewContext> {
70
72
  private view?;
@@ -72,8 +74,21 @@ export declare class DefaultPlugin extends Plugin_2<default_2<DefaultDescription
72
74
  /**
73
75
  * Add default descriptors automatically to make the photorealistic scene.
74
76
  * This method must be invoked after `view.init()`.
77
+ *
78
+ * `deferredLighting` lights the scene from the atmosphere in post: it sets
79
+ * `aerialPerspective.irradiance` and `view.lit = false` together, since the
80
+ * forward pass would otherwise apply lighting as well. `shadow` and
81
+ * `specular` enable the sun's shadows and its specular highlight in that
82
+ * lighting through the aerial perspective's options of the same name. Both
83
+ * are off by default because either allocates the shadow G-buffer, and
84
+ * both are inert without `deferredLighting`. Toggle any of them later via
85
+ * the returned handle and `view.lit`.
75
86
  */
76
- addDefaultPhotorealScene(): {
87
+ addDefaultPhotorealScene(options?: {
88
+ deferredLighting?: boolean;
89
+ shadow?: boolean;
90
+ specular?: boolean;
91
+ }): {
77
92
  sky: MeshHandle<SkyMeshDesc>;
78
93
  stars: MeshHandle<StarsDesc>;
79
94
  skyLightProbe: LightHandle<SkyLightProbeDesc>;
package/dist/index.js CHANGED
@@ -1,25 +1,29 @@
1
1
  import { Plugin as e } from "@navaramap/three";
2
- import { AerialPerspectiveEffectDesc as t, AmbientLightDesc as n, ArclineMeshDesc as r, ArrowHelperDesc as i, AxesHelperDesc as a, BoxMeshDesc as o, CloudsEffectDesc as s, ColorGradingLUTEffectDesc as c, CylinderMeshDesc as l, DepthOfFieldEffectDesc as u, FXAAEffectDesc as d, FogLightEffectDesc as f, GLTFModelDesc as p, GlowGlobeMeshDesc as m, InstancedBoxMeshDesc as h, InstancedCylinderMeshDesc as g, InstancedGltfModelMeshDesc as _, InstancedPlaneMeshDesc as v, InstancedSphereMeshDesc as y, LensFlareEffectDesc as b, LightProbeDesc as x, PlaneMeshDesc as S, RainDropEffectDesc as C, RainMeshDesc as w, SMAAEffectDesc as T, SSAOEffectDesc as E, SSREffectDesc as D, SelectiveBloomEffectDesc as O, SelectiveOutlineEffectDesc as k, SkyBoxMeshDesc as A, SkyLightProbeDesc as j, SkyMeshDesc as M, SmoothLineMeshDesc as N, SnowMeshDesc as P, SphereMeshDesc as F, SplatMeshDesc as I, StarsDesc as L, SunLightDesc as R, ToneMappingEffectDesc as z, TubeMeshDesc as B } from "@navaramap/three-default-descs";
2
+ import { AerialPerspectiveEffectDesc as t, AmbientLightDesc as n, ArclineMeshDesc as r, ArrowHelperDesc as i, AxesHelperDesc as a, BoxMeshDesc as o, CloudsEffectDesc as s, ColorGradingLUTEffectDesc as c, CylinderMeshDesc as l, DepthOfFieldEffectDesc as u, FXAAEffectDesc as d, FogLightEffectDesc as f, GLTFModelDesc as p, GlowGlobeMeshDesc as m, InstancedBoxMeshDesc as h, InstancedCylinderMeshDesc as g, InstancedGltfModelMeshDesc as _, InstancedPlaneMeshDesc as v, InstancedSphereMeshDesc as y, LensFlareEffectDesc as b, LightProbeDesc as x, PlaneMeshDesc as S, PolygonMeshDesc as C, PolylineMeshDesc as w, RainDropEffectDesc as T, RainMeshDesc as E, SMAAEffectDesc as D, SSAOEffectDesc as O, SSREffectDesc as k, SelectiveBloomEffectDesc as A, SelectiveOutlineEffectDesc as j, SkyBoxMeshDesc as M, SkyLightProbeDesc as N, SkyMeshDesc as P, SmoothLineMeshDesc as F, SnowMeshDesc as I, SphereMeshDesc as L, SplatMeshDesc as R, StarsDesc as z, SunLightDesc as B, ToneMappingEffectDesc as V, TubeMeshDesc as H } from "@navaramap/three-default-descs";
3
3
  //#region src/index.ts
4
- var V = class extends e {
4
+ var U = class extends e {
5
5
  view;
6
- async init(e, V) {
7
- this.view = e, e.registerMesh("rain", w), e.registerMesh("snow", P), e.registerMesh("sky", M), e.registerMesh("skyBox", A), e.registerMesh("stars", L), e.registerMesh("box", o), e.registerMesh("sphere", F), e.registerMesh("glowGlobe", m), e.registerMesh("cylinder", l), e.registerMesh("tube", B), e.registerMesh("plane", S), e.registerMesh("gltfModel", p), e.registerMesh("splat", I), e.registerMesh("axesHelper", a), e.registerMesh("arrowHelper", i), e.registerMesh("arcLines", r), e.registerMesh("smoothLines", N), e.registerMesh("boxes", h), e.registerMesh("spheres", y), e.registerMesh("planes", v), e.registerMesh("cylinders", g), e.registerMesh("gltfModels", _), e.registerLight("sun", R), e.registerLight("ambient", n), e.registerLight("skyLightProbe", j), e.registerLight("lightProbe", x), e.registerEffect("aerialPerspective", t), e.registerEffect("rainDrop", C), e.registerEffect("selectiveBloom", O), e.registerEffect("selectiveOutline", k), e.registerEffect("clouds", s), e.registerEffect("fogLight", f), e.registerEffect("lensFlare", b), e.registerEffect("ssao", E), e.registerEffect("ssr", D), e.registerEffect("depthOfField", u), e.registerEffect("colorGradingLUT", c), e.registerEffect("toneMapping", z), e.registerEffect("smaa", T), e.registerEffect("fxaa", d);
6
+ async init(e, U) {
7
+ this.view = e, e.registerMesh("rain", E), e.registerMesh("snow", I), e.registerMesh("sky", P), e.registerMesh("skyBox", M), e.registerMesh("stars", z), e.registerMesh("box", o), e.registerMesh("sphere", L), e.registerMesh("glowGlobe", m), e.registerMesh("cylinder", l), e.registerMesh("tube", H), e.registerMesh("plane", S), e.registerMesh("gltfModel", p), e.registerMesh("splat", R), e.registerMesh("axesHelper", a), e.registerMesh("arrowHelper", i), e.registerMesh("arcLines", r), e.registerMesh("polygon", C), e.registerMesh("polyline", w), e.registerMesh("smoothLines", F), e.registerMesh("boxes", h), e.registerMesh("spheres", y), e.registerMesh("planes", v), e.registerMesh("cylinders", g), e.registerMesh("gltfModels", _), e.registerLight("sun", B), e.registerLight("ambient", n), e.registerLight("skyLightProbe", N), e.registerLight("lightProbe", x), e.registerEffect("aerialPerspective", t), e.registerEffect("rainDrop", T), e.registerEffect("selectiveBloom", A), e.registerEffect("selectiveOutline", j), e.registerEffect("clouds", s), e.registerEffect("fogLight", f), e.registerEffect("lensFlare", b), e.registerEffect("ssao", O), e.registerEffect("ssr", k), e.registerEffect("depthOfField", u), e.registerEffect("colorGradingLUT", c), e.registerEffect("toneMapping", V), e.registerEffect("smaa", D), e.registerEffect("fxaa", d);
8
8
  }
9
- addDefaultPhotorealScene() {
9
+ addDefaultPhotorealScene(e) {
10
10
  if (!this.view) throw Error("DefaultPlugin is not initialized. Call view.addPlugin() and view.init() first.");
11
- let e = this.view, t = e.isMobileOptimized();
12
- return {
13
- sky: e.addMesh({ sky: {} }),
14
- stars: e.addMesh({ stars: {} }),
15
- skyLightProbe: e.addLight({ skyLightProbe: {} }),
16
- sun: e.addLight({ sun: {} }),
17
- aerialPerspective: e.addEffect({ aerialPerspective: {} }),
18
- lensFlare: t ? void 0 : e.addEffect({ lensFlare: {} }),
19
- toneMapping: e.addEffect({ toneMapping: {} }),
20
- antialiasing: t ? e.addEffect({ fxaa: {} }) : e.addEffect({ smaa: {} })
11
+ let t = this.view, n = t.isMobileOptimized(), r = t.addMesh({ sky: {} }), i = t.addMesh({ stars: {} }), a = t.addLight({ skyLightProbe: {} }), o = t.addLight({ sun: {} }), s = t.addEffect({ aerialPerspective: {
12
+ ...e?.deferredLighting ? { irradiance: !0 } : {},
13
+ ...e?.shadow ? { shadow: !0 } : {},
14
+ ...e?.specular ? { specular: !0 } : {}
15
+ } });
16
+ return e?.deferredLighting && (t.lit = !1), {
17
+ sky: r,
18
+ stars: i,
19
+ skyLightProbe: a,
20
+ sun: o,
21
+ aerialPerspective: s,
22
+ lensFlare: n ? void 0 : t.addEffect({ lensFlare: {} }),
23
+ toneMapping: t.addEffect({ toneMapping: {} }),
24
+ antialiasing: n ? t.addEffect({ fxaa: {} }) : t.addEffect({ smaa: {} })
21
25
  };
22
26
  }
23
27
  };
24
28
  //#endregion
25
- export { V as DefaultPlugin };
29
+ export { U as DefaultPlugin };
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@navaramap/three"),require("@navaramap/three-default-descs")):typeof define==`function`&&define.amd?define([`exports`,`@navaramap/three`,`@navaramap/three-default-descs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.NavaraDefaultPlugin={},e._navaramap_three,e._navaramap_three_default_descs))})(this,function(e,t,n){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),e.DefaultPlugin=class extends t.Plugin{view;async init(e,t){this.view=e,e.registerMesh(`rain`,n.RainMeshDesc),e.registerMesh(`snow`,n.SnowMeshDesc),e.registerMesh(`sky`,n.SkyMeshDesc),e.registerMesh(`skyBox`,n.SkyBoxMeshDesc),e.registerMesh(`stars`,n.StarsDesc),e.registerMesh(`box`,n.BoxMeshDesc),e.registerMesh(`sphere`,n.SphereMeshDesc),e.registerMesh(`glowGlobe`,n.GlowGlobeMeshDesc),e.registerMesh(`cylinder`,n.CylinderMeshDesc),e.registerMesh(`tube`,n.TubeMeshDesc),e.registerMesh(`plane`,n.PlaneMeshDesc),e.registerMesh(`gltfModel`,n.GLTFModelDesc),e.registerMesh(`splat`,n.SplatMeshDesc),e.registerMesh(`axesHelper`,n.AxesHelperDesc),e.registerMesh(`arrowHelper`,n.ArrowHelperDesc),e.registerMesh(`arcLines`,n.ArclineMeshDesc),e.registerMesh(`smoothLines`,n.SmoothLineMeshDesc),e.registerMesh(`boxes`,n.InstancedBoxMeshDesc),e.registerMesh(`spheres`,n.InstancedSphereMeshDesc),e.registerMesh(`planes`,n.InstancedPlaneMeshDesc),e.registerMesh(`cylinders`,n.InstancedCylinderMeshDesc),e.registerMesh(`gltfModels`,n.InstancedGltfModelMeshDesc),e.registerLight(`sun`,n.SunLightDesc),e.registerLight(`ambient`,n.AmbientLightDesc),e.registerLight(`skyLightProbe`,n.SkyLightProbeDesc),e.registerLight(`lightProbe`,n.LightProbeDesc),e.registerEffect(`aerialPerspective`,n.AerialPerspectiveEffectDesc),e.registerEffect(`rainDrop`,n.RainDropEffectDesc),e.registerEffect(`selectiveBloom`,n.SelectiveBloomEffectDesc),e.registerEffect(`selectiveOutline`,n.SelectiveOutlineEffectDesc),e.registerEffect(`clouds`,n.CloudsEffectDesc),e.registerEffect(`fogLight`,n.FogLightEffectDesc),e.registerEffect(`lensFlare`,n.LensFlareEffectDesc),e.registerEffect(`ssao`,n.SSAOEffectDesc),e.registerEffect(`ssr`,n.SSREffectDesc),e.registerEffect(`depthOfField`,n.DepthOfFieldEffectDesc),e.registerEffect(`colorGradingLUT`,n.ColorGradingLUTEffectDesc),e.registerEffect(`toneMapping`,n.ToneMappingEffectDesc),e.registerEffect(`smaa`,n.SMAAEffectDesc),e.registerEffect(`fxaa`,n.FXAAEffectDesc)}addDefaultPhotorealScene(){if(!this.view)throw Error(`DefaultPlugin is not initialized. Call view.addPlugin() and view.init() first.`);let e=this.view,t=e.isMobileOptimized();return{sky:e.addMesh({sky:{}}),stars:e.addMesh({stars:{}}),skyLightProbe:e.addLight({skyLightProbe:{}}),sun:e.addLight({sun:{}}),aerialPerspective:e.addEffect({aerialPerspective:{}}),lensFlare:t?void 0:e.addEffect({lensFlare:{}}),toneMapping:e.addEffect({toneMapping:{}}),antialiasing:t?e.addEffect({fxaa:{}}):e.addEffect({smaa:{}})}}}});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@navaramap/three"),require("@navaramap/three-default-descs")):typeof define==`function`&&define.amd?define([`exports`,`@navaramap/three`,`@navaramap/three-default-descs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.NavaraDefaultPlugin={},e._navaramap_three,e._navaramap_three_default_descs))})(this,function(e,t,n){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),e.DefaultPlugin=class extends t.Plugin{view;async init(e,t){this.view=e,e.registerMesh(`rain`,n.RainMeshDesc),e.registerMesh(`snow`,n.SnowMeshDesc),e.registerMesh(`sky`,n.SkyMeshDesc),e.registerMesh(`skyBox`,n.SkyBoxMeshDesc),e.registerMesh(`stars`,n.StarsDesc),e.registerMesh(`box`,n.BoxMeshDesc),e.registerMesh(`sphere`,n.SphereMeshDesc),e.registerMesh(`glowGlobe`,n.GlowGlobeMeshDesc),e.registerMesh(`cylinder`,n.CylinderMeshDesc),e.registerMesh(`tube`,n.TubeMeshDesc),e.registerMesh(`plane`,n.PlaneMeshDesc),e.registerMesh(`gltfModel`,n.GLTFModelDesc),e.registerMesh(`splat`,n.SplatMeshDesc),e.registerMesh(`axesHelper`,n.AxesHelperDesc),e.registerMesh(`arrowHelper`,n.ArrowHelperDesc),e.registerMesh(`arcLines`,n.ArclineMeshDesc),e.registerMesh(`polygon`,n.PolygonMeshDesc),e.registerMesh(`polyline`,n.PolylineMeshDesc),e.registerMesh(`smoothLines`,n.SmoothLineMeshDesc),e.registerMesh(`boxes`,n.InstancedBoxMeshDesc),e.registerMesh(`spheres`,n.InstancedSphereMeshDesc),e.registerMesh(`planes`,n.InstancedPlaneMeshDesc),e.registerMesh(`cylinders`,n.InstancedCylinderMeshDesc),e.registerMesh(`gltfModels`,n.InstancedGltfModelMeshDesc),e.registerLight(`sun`,n.SunLightDesc),e.registerLight(`ambient`,n.AmbientLightDesc),e.registerLight(`skyLightProbe`,n.SkyLightProbeDesc),e.registerLight(`lightProbe`,n.LightProbeDesc),e.registerEffect(`aerialPerspective`,n.AerialPerspectiveEffectDesc),e.registerEffect(`rainDrop`,n.RainDropEffectDesc),e.registerEffect(`selectiveBloom`,n.SelectiveBloomEffectDesc),e.registerEffect(`selectiveOutline`,n.SelectiveOutlineEffectDesc),e.registerEffect(`clouds`,n.CloudsEffectDesc),e.registerEffect(`fogLight`,n.FogLightEffectDesc),e.registerEffect(`lensFlare`,n.LensFlareEffectDesc),e.registerEffect(`ssao`,n.SSAOEffectDesc),e.registerEffect(`ssr`,n.SSREffectDesc),e.registerEffect(`depthOfField`,n.DepthOfFieldEffectDesc),e.registerEffect(`colorGradingLUT`,n.ColorGradingLUTEffectDesc),e.registerEffect(`toneMapping`,n.ToneMappingEffectDesc),e.registerEffect(`smaa`,n.SMAAEffectDesc),e.registerEffect(`fxaa`,n.FXAAEffectDesc)}addDefaultPhotorealScene(e){if(!this.view)throw Error(`DefaultPlugin is not initialized. Call view.addPlugin() and view.init() first.`);let t=this.view,n=t.isMobileOptimized(),r=t.addMesh({sky:{}}),i=t.addMesh({stars:{}}),a=t.addLight({skyLightProbe:{}}),o=t.addLight({sun:{}}),s=t.addEffect({aerialPerspective:{...e?.deferredLighting?{irradiance:!0}:{},...e?.shadow?{shadow:!0}:{},...e?.specular?{specular:!0}:{}}});return e?.deferredLighting&&(t.lit=!1),{sky:r,stars:i,skyLightProbe:a,sun:o,aerialPerspective:s,lensFlare:n?void 0:t.addEffect({lensFlare:{}}),toneMapping:t.addEffect({toneMapping:{}}),antialiasing:n?t.addEffect({fxaa:{}}):t.addEffect({smaa:{}})}}}});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@navaramap/three-default-plugin",
3
3
  "type": "module",
4
- "version": "0.1.1",
4
+ "version": "0.2.0",
5
5
  "main": "dist/index.umd.cjs",
6
6
  "module": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -12,20 +12,20 @@
12
12
  "license": "MIT OR Apache-2.0",
13
13
  "repository": {
14
14
  "type": "git",
15
- "url": "git+https://github.com/reearth/navara.git",
15
+ "url": "git+https://github.com/maplibre/navara.git",
16
16
  "directory": "web/navara_three_default_plugin"
17
17
  },
18
18
  "publishConfig": {
19
19
  "access": "public"
20
20
  },
21
21
  "peerDependencies": {
22
- "@navaramap/three": "0.1.1"
22
+ "@navaramap/three": "0.2.0"
23
23
  },
24
24
  "dependencies": {
25
- "@navaramap/three-default-descs": "0.1.1"
25
+ "@navaramap/three-default-descs": "0.2.0"
26
26
  },
27
27
  "devDependencies": {
28
- "@navaramap/three": "0.1.1"
28
+ "@navaramap/three": "0.2.0"
29
29
  },
30
30
  "scripts": {
31
31
  "type-check": "tsc && tsc -p tsconfig.node.json",
package/src/index.ts CHANGED
@@ -24,6 +24,10 @@ import {
24
24
  ArrowHelperDesc,
25
25
  ArclineMeshDesc,
26
26
  SmoothLineMeshDesc,
27
+ PolygonMeshDesc,
28
+ PolylineMeshDesc,
29
+ type PolygonMeshConfig,
30
+ type PolylineMeshConfig,
27
31
  type RainMeshConfig,
28
32
  type SnowMeshConfig,
29
33
  type SkyMeshConfig,
@@ -115,6 +119,8 @@ export class DefaultPlugin extends Plugin<
115
119
  view.registerMesh("axesHelper", AxesHelperDesc);
116
120
  view.registerMesh("arrowHelper", ArrowHelperDesc);
117
121
  view.registerMesh("arcLines", ArclineMeshDesc);
122
+ view.registerMesh("polygon", PolygonMeshDesc);
123
+ view.registerMesh("polyline", PolylineMeshDesc);
118
124
  view.registerMesh("smoothLines", SmoothLineMeshDesc);
119
125
  view.registerMesh("boxes", InstancedBoxMeshDesc);
120
126
  view.registerMesh("spheres", InstancedSphereMeshDesc);
@@ -148,8 +154,21 @@ export class DefaultPlugin extends Plugin<
148
154
  /**
149
155
  * Add default descriptors automatically to make the photorealistic scene.
150
156
  * This method must be invoked after `view.init()`.
157
+ *
158
+ * `deferredLighting` lights the scene from the atmosphere in post: it sets
159
+ * `aerialPerspective.irradiance` and `view.lit = false` together, since the
160
+ * forward pass would otherwise apply lighting as well. `shadow` and
161
+ * `specular` enable the sun's shadows and its specular highlight in that
162
+ * lighting through the aerial perspective's options of the same name. Both
163
+ * are off by default because either allocates the shadow G-buffer, and
164
+ * both are inert without `deferredLighting`. Toggle any of them later via
165
+ * the returned handle and `view.lit`.
151
166
  */
152
- addDefaultPhotorealScene(): {
167
+ addDefaultPhotorealScene(options?: {
168
+ deferredLighting?: boolean;
169
+ shadow?: boolean;
170
+ specular?: boolean;
171
+ }): {
153
172
  sky: MeshHandle<SkyMeshDesc>;
154
173
  stars: MeshHandle<StarsDesc>;
155
174
  skyLightProbe: LightHandle<SkyLightProbeDesc>;
@@ -186,8 +205,15 @@ export class DefaultPlugin extends Plugin<
186
205
 
187
206
  // Effects
188
207
  const aerialPerspective = view.addEffect<AerialPerspectiveEffectDesc>({
189
- aerialPerspective: {},
208
+ aerialPerspective: {
209
+ ...(options?.deferredLighting ? { irradiance: true } : {}),
210
+ ...(options?.shadow ? { shadow: true } : {}),
211
+ ...(options?.specular ? { specular: true } : {}),
212
+ },
190
213
  });
214
+ if (options?.deferredLighting) {
215
+ view.lit = false;
216
+ }
191
217
 
192
218
  // Skip lens flare on mobile - expensive effect with limited benefit
193
219
  const lensFlare = mobile
@@ -248,6 +274,8 @@ export type DefaultEffectDescription =
248
274
  | ToneMappingConfig;
249
275
 
250
276
  export type DefaultMeshDescription =
277
+ | PolygonMeshConfig
278
+ | PolylineMeshConfig
251
279
  | RainMeshConfig
252
280
  | SnowMeshConfig
253
281
  | SkyMeshConfig