angular-three-soba 4.0.2 → 4.0.4

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/misc/README.md CHANGED
@@ -8,6 +8,7 @@ This secondary entry point includes miscellaneous utilities and components for a
8
8
  - [fbo](#fbo)
9
9
  - [NgtsFBO](#ngtsfbo)
10
10
  - [NgtsBakeShadows](#ngtsbakeshadows)
11
+ - [NgtsSoftShadows](#ngtssoftshadows)
11
12
  - [depthBuffer](#depthbuffer)
12
13
  - [NgtsSampler](#ngtssampler)
13
14
  - [surfaceSampler](#surfacesampler)
@@ -133,6 +134,24 @@ A directive that bakes shadows in your scene. It sets `gl.shadowMap.autoUpdate`
133
134
  <ngts-bake-shadows />
134
135
  ```
135
136
 
137
+ ## NgtsSoftShadows
138
+
139
+ A directive that injects Percentage-Closer Soft Shadows (PCSS) into the scene. PCSS produces contact-hardening soft shadows where shadows are sharper near the contact point and softer further away, creating more realistic shadow effects.
140
+
141
+ This works by patching Three.js's shadow shader chunk at runtime. When the directive is destroyed or options change, it restores the original shader and recompiles affected materials.
142
+
143
+ ```html
144
+ <ngts-soft-shadows [options]="{ size: 25, samples: 10, focus: 0 }" />
145
+ ```
146
+
147
+ ### Options (NgtsSoftShadowsOptions)
148
+
149
+ | Property | Description | Default |
150
+ | --------- | -------------------------------------------------------------------------------------------- | ------- |
151
+ | `size` | Size of the light source. The larger the value, the softer the shadows. | `25` |
152
+ | `samples` | Number of samples for shadow calculation. More samples = less noise but more expensive. | `10` |
153
+ | `focus` | Depth focus to shift the focal point where the shadow is sharpest. 0 means at the beginning. | `0` |
154
+
136
155
  ## `depthBuffer`
137
156
 
138
157
  ```ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-three-soba",
3
- "version": "4.0.2",
3
+ "version": "4.0.4",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -121,7 +121,7 @@ declare class NgtsLine {
121
121
  * Configuration options for the line appearance and behavior.
122
122
  */
123
123
  options: _angular_core.InputSignalWithTransform<NgtsLineOptions, "" | Partial<NgtsLineOptions>>;
124
- protected parameters: _angular_core.Signal<Omit<NgtsLineOptions, "color" | "dashed" | "linewidth" | "vertexColors" | "lineWidth" | "segments">>;
124
+ protected parameters: _angular_core.Signal<Omit<NgtsLineOptions, "vertexColors" | "color" | "dashed" | "linewidth" | "lineWidth" | "segments">>;
125
125
  /**
126
126
  * Reference to the underlying Line2 or LineSegments2 Three.js object.
127
127
  */
@@ -313,43 +313,10 @@ declare class NgtsCatmullRomLine {
313
313
  }[T]) => void)>)) | undefined;
314
314
  dispose?: (((() => void) | Readonly<() => void> | null) & (((() => void) & (() => void)) | Readonly<(() => void) & (() => void)>)) | undefined;
315
315
  parameters?: ((Partial<three_stdlib.Line2> | Readonly<Partial<three_stdlib.Line2>>) & (Partial<three_stdlib.LineMaterial> | Readonly<Partial<three_stdlib.LineMaterial>>)) | undefined;
316
- geometry?: three_stdlib.LineGeometry | Readonly<three_stdlib.LineGeometry | undefined>;
317
- material?: three_stdlib.LineMaterial | Readonly<three_stdlib.LineMaterial | undefined>;
318
- isLine2?: true | undefined;
319
- isLineSegments2?: true | undefined;
320
- computeLineDistances?: (() => three_stdlib.Line2) | Readonly<(() => three_stdlib.Line2) | undefined>;
321
- isMesh?: true | undefined;
322
- morphTargetInfluences?: number[] | Readonly<number[] | undefined>;
323
- morphTargetDictionary?: {
324
- [key: string]: number;
325
- } | Readonly<{
326
- [key: string]: number;
327
- } | undefined>;
328
- count?: Readonly<number | undefined>;
329
- updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
330
- getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
331
316
  color?: THREE.ColorRepresentation | undefined;
332
- dashed?: boolean | undefined | undefined;
333
- dashScale?: number | undefined | undefined;
334
- dashSize?: number | undefined | undefined;
335
- dashOffset?: number | undefined | undefined;
336
- gapSize?: number | undefined | undefined;
337
- opacity?: number | undefined;
338
- isLineMaterial?: true | undefined;
339
- linewidth?: number | undefined | undefined;
340
- resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
341
- alphaToCoverage?: boolean | undefined | undefined;
342
- worldUnits?: boolean | undefined | undefined;
343
- isShaderMaterial?: Readonly<boolean | undefined>;
344
- setValues?: ((values?: THREE.ShaderMaterialParameters) => void) | Readonly<((values?: THREE.ShaderMaterialParameters) => void) | undefined>;
345
- defines?: Record<string, unknown> | Readonly<Record<string, unknown> | undefined>;
346
- isMaterial?: Readonly<boolean | undefined>;
347
- version?: Readonly<number | undefined>;
348
- onBeforeCompile?: ((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
349
- customProgramCacheKey?: (() => string) | Readonly<(() => string) | undefined>;
350
- needsUpdate?: Readonly<boolean | undefined>;
351
317
  blending?: 0 | 1 | 2 | 3 | 4 | 5 | undefined;
352
318
  side?: 0 | 1 | 2 | undefined;
319
+ opacity?: number | undefined;
353
320
  transparent?: boolean | undefined;
354
321
  alphaHash?: boolean | undefined;
355
322
  blendSrc?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | undefined;
@@ -381,11 +348,45 @@ declare class NgtsCatmullRomLine {
381
348
  polygonOffsetFactor?: number | undefined;
382
349
  polygonOffsetUnits?: number | undefined;
383
350
  dithering?: boolean | undefined;
351
+ alphaToCoverage?: boolean | undefined | undefined;
384
352
  premultipliedAlpha?: boolean | undefined;
385
353
  forceSinglePass?: boolean | undefined;
386
354
  allowOverride?: boolean | undefined;
387
355
  toneMapped?: boolean | undefined;
388
356
  alphaTest?: number | undefined;
357
+ dashed?: boolean | undefined | undefined;
358
+ dashScale?: number | undefined | undefined;
359
+ dashSize?: number | undefined | undefined;
360
+ dashOffset?: number | undefined | undefined;
361
+ gapSize?: number | undefined | undefined;
362
+ linewidth?: number | undefined | undefined;
363
+ resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
364
+ wireframe?: boolean | undefined | undefined;
365
+ worldUnits?: boolean | undefined | undefined;
366
+ geometry?: three_stdlib.LineGeometry | Readonly<three_stdlib.LineGeometry | undefined>;
367
+ material?: three_stdlib.LineMaterial | Readonly<three_stdlib.LineMaterial | undefined>;
368
+ isLine2?: true | undefined;
369
+ isLineSegments2?: true | undefined;
370
+ computeLineDistances?: (() => three_stdlib.Line2) | Readonly<(() => three_stdlib.Line2) | undefined>;
371
+ isMesh?: true | undefined;
372
+ morphTargetInfluences?: number[] | Readonly<number[] | undefined>;
373
+ morphTargetDictionary?: {
374
+ [key: string]: number;
375
+ } | Readonly<{
376
+ [key: string]: number;
377
+ } | undefined>;
378
+ count?: Readonly<number | undefined>;
379
+ updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
380
+ getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
381
+ isLineMaterial?: true | undefined;
382
+ isShaderMaterial?: Readonly<boolean | undefined>;
383
+ setValues?: ((values?: THREE.ShaderMaterialParameters) => void) | Readonly<((values?: THREE.ShaderMaterialParameters) => void) | undefined>;
384
+ defines?: Record<string, unknown> | Readonly<Record<string, unknown> | undefined>;
385
+ isMaterial?: Readonly<boolean | undefined>;
386
+ version?: Readonly<number | undefined>;
387
+ onBeforeCompile?: ((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
388
+ customProgramCacheKey?: (() => string) | Readonly<(() => string) | undefined>;
389
+ needsUpdate?: Readonly<boolean | undefined>;
389
390
  uniforms?: {
390
391
  [uniform: string]: THREE.IUniform<any>;
391
392
  } | Readonly<{
@@ -394,7 +395,6 @@ declare class NgtsCatmullRomLine {
394
395
  uniformsGroups?: THREE.UniformsGroup[] | Readonly<THREE.UniformsGroup[] | undefined>;
395
396
  vertexShader?: Readonly<string | undefined>;
396
397
  fragmentShader?: Readonly<string | undefined>;
397
- wireframe?: boolean | undefined | undefined;
398
398
  wireframeLinewidth?: Readonly<number | undefined>;
399
399
  fog?: Readonly<boolean | undefined>;
400
400
  lights?: Readonly<boolean | undefined>;
@@ -610,42 +610,10 @@ declare class NgtsEdges {
610
610
  dispose?: (((() => void) | Readonly<() => void> | null) & (((() => void) & (() => void)) | Readonly<(() => void) & (() => void)>)) | undefined;
611
611
  parameters?: ((Partial<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>> | Readonly<Partial<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>>) & ((Partial<three_stdlib.Line2> | Readonly<Partial<three_stdlib.Line2>>) & (Partial<three_stdlib.LineMaterial> | Readonly<Partial<three_stdlib.LineMaterial>>))) | undefined;
612
612
  __ngt_args__?: (([geometry?: THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap> | undefined, material?: THREE.Material | THREE.Material[] | undefined] | readonly [geometry?: THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap> | undefined, material?: THREE.Material | THREE.Material[] | undefined]) & (([geometry?: three_stdlib.LineGeometry | undefined, material?: three_stdlib.LineMaterial | undefined] | readonly [geometry?: three_stdlib.LineGeometry | undefined, material?: three_stdlib.LineMaterial | undefined]) & ([parameters?: LineMaterialParameters | undefined] | readonly [parameters?: LineMaterialParameters | undefined]))) | undefined;
613
- material?: ((THREE.Material | THREE.Material[] | Readonly<THREE.Material> | readonly THREE.Material[]) & (three_stdlib.LineMaterial | Readonly<three_stdlib.LineMaterial>)) | undefined;
614
- isLine2?: true | undefined;
615
- isLineSegments2?: true | undefined;
616
- computeLineDistances?: (() => three_stdlib.Line2) | Readonly<(() => three_stdlib.Line2) | undefined>;
617
- isMesh?: true | undefined;
618
- morphTargetInfluences?: number[] | Readonly<number[] | undefined>;
619
- morphTargetDictionary?: {
620
- [key: string]: number;
621
- } | Readonly<{
622
- [key: string]: number;
623
- } | undefined>;
624
- count?: Readonly<number | undefined>;
625
- updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
626
- getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
627
613
  color?: THREE.ColorRepresentation | undefined;
628
- dashed?: boolean | undefined | undefined;
629
- dashScale?: number | undefined | undefined;
630
- dashSize?: number | undefined | undefined;
631
- dashOffset?: number | undefined | undefined;
632
- gapSize?: number | undefined | undefined;
633
- opacity?: number | undefined;
634
- isLineMaterial?: true | undefined;
635
- linewidth?: number | undefined | undefined;
636
- resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
637
- alphaToCoverage?: boolean | undefined | undefined;
638
- worldUnits?: boolean | undefined | undefined;
639
- isShaderMaterial?: Readonly<boolean | undefined>;
640
- setValues?: ((values?: THREE.ShaderMaterialParameters) => void) | Readonly<((values?: THREE.ShaderMaterialParameters) => void) | undefined>;
641
- defines?: Record<string, unknown> | Readonly<Record<string, unknown> | undefined>;
642
- isMaterial?: Readonly<boolean | undefined>;
643
- version?: Readonly<number | undefined>;
644
- onBeforeCompile?: ((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
645
- customProgramCacheKey?: (() => string) | Readonly<(() => string) | undefined>;
646
- needsUpdate?: Readonly<boolean | undefined>;
647
614
  blending?: 0 | 1 | 2 | 3 | 4 | 5 | undefined;
648
615
  side?: 0 | 1 | 2 | undefined;
616
+ opacity?: number | undefined;
649
617
  transparent?: boolean | undefined;
650
618
  alphaHash?: boolean | undefined;
651
619
  blendSrc?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | undefined;
@@ -677,11 +645,44 @@ declare class NgtsEdges {
677
645
  polygonOffsetFactor?: number | undefined;
678
646
  polygonOffsetUnits?: number | undefined;
679
647
  dithering?: boolean | undefined;
648
+ alphaToCoverage?: boolean | undefined | undefined;
680
649
  premultipliedAlpha?: boolean | undefined;
681
650
  forceSinglePass?: boolean | undefined;
682
651
  allowOverride?: boolean | undefined;
683
652
  toneMapped?: boolean | undefined;
684
653
  alphaTest?: number | undefined;
654
+ dashed?: boolean | undefined | undefined;
655
+ dashScale?: number | undefined | undefined;
656
+ dashSize?: number | undefined | undefined;
657
+ dashOffset?: number | undefined | undefined;
658
+ gapSize?: number | undefined | undefined;
659
+ linewidth?: number | undefined | undefined;
660
+ resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
661
+ wireframe?: boolean | undefined | undefined;
662
+ worldUnits?: boolean | undefined | undefined;
663
+ material?: ((THREE.Material | THREE.Material[] | Readonly<THREE.Material> | readonly THREE.Material[]) & (three_stdlib.LineMaterial | Readonly<three_stdlib.LineMaterial>)) | undefined;
664
+ isLine2?: true | undefined;
665
+ isLineSegments2?: true | undefined;
666
+ computeLineDistances?: (() => three_stdlib.Line2) | Readonly<(() => three_stdlib.Line2) | undefined>;
667
+ isMesh?: true | undefined;
668
+ morphTargetInfluences?: number[] | Readonly<number[] | undefined>;
669
+ morphTargetDictionary?: {
670
+ [key: string]: number;
671
+ } | Readonly<{
672
+ [key: string]: number;
673
+ } | undefined>;
674
+ count?: Readonly<number | undefined>;
675
+ updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
676
+ getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
677
+ isLineMaterial?: true | undefined;
678
+ isShaderMaterial?: Readonly<boolean | undefined>;
679
+ setValues?: ((values?: THREE.ShaderMaterialParameters) => void) | Readonly<((values?: THREE.ShaderMaterialParameters) => void) | undefined>;
680
+ defines?: Record<string, unknown> | Readonly<Record<string, unknown> | undefined>;
681
+ isMaterial?: Readonly<boolean | undefined>;
682
+ version?: Readonly<number | undefined>;
683
+ onBeforeCompile?: ((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
684
+ customProgramCacheKey?: (() => string) | Readonly<(() => string) | undefined>;
685
+ needsUpdate?: Readonly<boolean | undefined>;
685
686
  uniforms?: {
686
687
  [uniform: string]: THREE.IUniform<any>;
687
688
  } | Readonly<{
@@ -690,7 +691,6 @@ declare class NgtsEdges {
690
691
  uniformsGroups?: THREE.UniformsGroup[] | Readonly<THREE.UniformsGroup[] | undefined>;
691
692
  vertexShader?: Readonly<string | undefined>;
692
693
  fragmentShader?: Readonly<string | undefined>;
693
- wireframe?: boolean | undefined | undefined;
694
694
  wireframeLinewidth?: Readonly<number | undefined>;
695
695
  fog?: Readonly<boolean | undefined>;
696
696
  lights?: Readonly<boolean | undefined>;
@@ -1338,7 +1338,7 @@ declare class NgtsText {
1338
1338
  * Configuration options for text appearance and behavior.
1339
1339
  */
1340
1340
  options: _angular_core.InputSignalWithTransform<NgtsTextOptions, "" | Partial<NgtsTextOptions>>;
1341
- protected parameters: _angular_core.Signal<Omit<NgtsTextOptions, "characters" | "fontSize" | "font" | "anchorX" | "anchorY" | "sdfGlyphSize">>;
1341
+ protected parameters: _angular_core.Signal<Omit<NgtsTextOptions, "font" | "fontSize" | "sdfGlyphSize" | "anchorX" | "anchorY" | "characters">>;
1342
1342
  /**
1343
1343
  * Emitted when the text has been synced and is ready for rendering.
1344
1344
  * Returns the Troika Text mesh instance.
@@ -141,7 +141,7 @@ type NgtsCubeCameraOptions = Partial<NgtThreeElements['ngt-group']> & CubeCamera
141
141
  */
142
142
  declare class NgtsCubeCamera {
143
143
  options: _angular_core.InputSignalWithTransform<NgtsCubeCameraOptions, "" | Partial<NgtsCubeCameraOptions>>;
144
- protected parameters: _angular_core.Signal<Omit<NgtsCubeCameraOptions, "resolution" | "near" | "far" | "envMap" | "fog" | "frames">>;
144
+ protected parameters: _angular_core.Signal<Omit<NgtsCubeCameraOptions, "near" | "far" | "envMap" | "frames" | "resolution" | "fog">>;
145
145
  private cubeCamera;
146
146
  protected camera: _angular_core.Signal<THREE.CubeCamera>;
147
147
  protected texture: _angular_core.Signal<THREE.CubeTexture<unknown>>;
@@ -217,7 +217,7 @@ interface NgtsOrthographicCameraOptions extends Partial<NgtThreeElements['ngt-or
217
217
  */
218
218
  declare class NgtsOrthographicCamera {
219
219
  options: _angular_core.InputSignalWithTransform<NgtsOrthographicCameraOptions, "" | Partial<NgtsOrthographicCameraOptions>>;
220
- protected parameters: _angular_core.Signal<Omit<NgtsOrthographicCameraOptions, "resolution" | "envMap" | "frames" | "left" | "right" | "top" | "bottom" | "makeDefault">>;
220
+ protected parameters: _angular_core.Signal<Omit<NgtsOrthographicCameraOptions, "envMap" | "makeDefault" | "frames" | "resolution" | "left" | "right" | "top" | "bottom">>;
221
221
  protected content: _angular_core.Signal<TemplateRef<any> | undefined>;
222
222
  protected cameraContent: _angular_core.Signal<TemplateRef<any> | undefined>;
223
223
  /**
@@ -310,7 +310,7 @@ interface NgtsPerspectiveCameraOptions extends Partial<NgtThreeElements['ngt-per
310
310
  */
311
311
  declare class NgtsPerspectiveCamera {
312
312
  options: _angular_core.InputSignalWithTransform<NgtsPerspectiveCameraOptions, "" | Partial<NgtsPerspectiveCameraOptions>>;
313
- protected parameters: _angular_core.Signal<Omit<NgtsPerspectiveCameraOptions, "resolution" | "envMap" | "frames" | "makeDefault">>;
313
+ protected parameters: _angular_core.Signal<Omit<NgtsPerspectiveCameraOptions, "envMap" | "makeDefault" | "frames" | "resolution">>;
314
314
  protected content: _angular_core.Signal<TemplateRef<any> | undefined>;
315
315
  protected cameraContent: _angular_core.Signal<TemplateRef<any> | undefined>;
316
316
  /**
@@ -277,7 +277,7 @@ interface NgtsGizmoViewportOptions extends Partial<NgtThreeElements['ngt-group']
277
277
  declare class NgtsGizmoViewport {
278
278
  protected readonly Math: Math;
279
279
  options: _angular_core.InputSignalWithTransform<NgtsGizmoViewportOptions, "" | Partial<NgtsGizmoViewportOptions>>;
280
- protected parameters: _angular_core.Signal<Omit<NgtsGizmoViewportOptions, "font" | "axisColors" | "axisScale" | "labels" | "axisHeadScale" | "labelColor" | "hideNegativeAxes" | "hideAxisHeads" | "disabled">>;
280
+ protected parameters: _angular_core.Signal<Omit<NgtsGizmoViewportOptions, "axisColors" | "font" | "axisScale" | "labels" | "axisHeadScale" | "labelColor" | "hideNegativeAxes" | "hideAxisHeads" | "disabled">>;
281
281
  click: _angular_core.OutputEmitterRef<NgtThreeEvent<MouseEvent>>;
282
282
  protected axisColors: _angular_core.Signal<[string, string, string]>;
283
283
  protected axisScale: _angular_core.Signal<[number, number, number] | undefined>;
@@ -502,7 +502,7 @@ interface NgtsPivotControlsOptions {
502
502
  */
503
503
  declare class NgtsPivotControls {
504
504
  options: _angular_core.InputSignalWithTransform<NgtsPivotControlsOptions, "" | Partial<NgtsPivotControlsOptions>>;
505
- protected parameters: _angular_core.Signal<Omit<NgtsPivotControlsOptions, "rotation" | "scale" | "matrix" | "visible" | "renderOrder" | "userData" | "opacity" | "anchor" | "fixed" | "axisColors" | "hoveredColor" | "enabled" | "lineWidth" | "offset" | "autoTransform" | "activeAxes" | "disableAxes" | "disableSliders" | "disableRotations" | "disableScaling" | "translationLimits" | "rotationLimits" | "scaleLimits" | "annotations" | "annotationsClass" | "depthTest">>;
505
+ protected parameters: _angular_core.Signal<Omit<NgtsPivotControlsOptions, "rotation" | "scale" | "matrix" | "visible" | "renderOrder" | "userData" | "enabled" | "autoTransform" | "anchor" | "disableAxes" | "disableSliders" | "disableRotations" | "disableScaling" | "activeAxes" | "offset" | "lineWidth" | "fixed" | "translationLimits" | "rotationLimits" | "scaleLimits" | "depthTest" | "axisColors" | "hoveredColor" | "annotations" | "annotationsClass" | "opacity">>;
506
506
  dragStarted: _angular_core.OutputEmitterRef<OnDragStartParameters>;
507
507
  dragEnded: _angular_core.OutputEmitterRef<void>;
508
508
  dragged: _angular_core.OutputEmitterRef<OnDragParameters>;
@@ -670,7 +670,7 @@ type NgtsTransformControlsOptions = Partial<NgtsTransformControlsObject> & Parti
670
670
  declare class NgtsTransformControls {
671
671
  object: _angular_core.InputSignal<THREE.Object3D<THREE.Object3DEventMap> | ElementRef<THREE.Object3D<THREE.Object3DEventMap>> | null | undefined>;
672
672
  options: _angular_core.InputSignal<Partial<NgtsTransformControlsOptions>>;
673
- protected parameters: _angular_core.Signal<Omit<Partial<NgtsTransformControlsOptions>, "camera" | "size" | "domElement" | "enabled" | "axis" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "space" | "showX" | "showY" | "showZ" | "makeDefault">>;
673
+ protected parameters: _angular_core.Signal<Omit<Partial<NgtsTransformControlsOptions>, "camera" | "size" | "enabled" | "axis" | "domElement" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "space" | "showX" | "showY" | "showZ" | "makeDefault">>;
674
674
  protected controlsOptions: _angular_core.Signal<Pick<Partial<NgtsTransformControlsOptions>, "size" | "enabled" | "axis" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "space" | "showX" | "showY" | "showZ">>;
675
675
  private camera;
676
676
  private domElement;
@@ -29,7 +29,7 @@ declare class NgtsCustomShaderMaterial {
29
29
  /**
30
30
  * The base Three.js material to extend. Can be a material instance, material class, or ElementRef to a material.
31
31
  */
32
- baseMaterial: _angular_core.InputSignal<THREE.Material | typeof THREE.Material | ElementRef<THREE.Material>>;
32
+ baseMaterial: _angular_core.InputSignal<typeof THREE.Material | THREE.Material | ElementRef<THREE.Material>>;
33
33
  /**
34
34
  * How to attach the material to its parent object.
35
35
  * @default 'material'
@@ -41,7 +41,7 @@ declare class NgtsCustomShaderMaterial {
41
41
  */
42
42
  options: _angular_core.InputSignal<Omit<any, "baseMaterial">>;
43
43
  /** Material parameters excluding shader-specific options. */
44
- parameters: _angular_core.Signal<Omit<Omit<any, "baseMaterial">, "fragmentShader" | "vertexShader" | "uniforms" | "cacheKey">>;
44
+ parameters: _angular_core.Signal<Omit<Omit<any, "baseMaterial">, "uniforms" | "vertexShader" | "fragmentShader" | "cacheKey">>;
45
45
  private base;
46
46
  private fragmentShader;
47
47
  private vertexShader;
@@ -195,7 +195,7 @@ declare class NgtsMeshPortalMaterial {
195
195
  * Configuration options for the portal material.
196
196
  */
197
197
  options: _angular_core.InputSignalWithTransform<NgtsMeshPortalMaterialOptions, "" | Partial<NgtsMeshPortalMaterialOptions>>;
198
- protected parameters: _angular_core.Signal<Omit<NgtsMeshPortalMaterialOptions, "resolution" | "blur" | "events" | "worldUnits" | "eventPriority" | "renderPriority">>;
198
+ protected parameters: _angular_core.Signal<Omit<NgtsMeshPortalMaterialOptions, "resolution" | "blur" | "worldUnits" | "eventPriority" | "renderPriority" | "events">>;
199
199
  protected blur: _angular_core.Signal<number>;
200
200
  protected eventPriority: _angular_core.Signal<number>;
201
201
  protected renderPriority: _angular_core.Signal<number>;
@@ -418,7 +418,7 @@ declare class NgtsMeshRefractionMaterial {
418
418
  * Configuration options for the refraction material.
419
419
  */
420
420
  options: _angular_core.InputSignalWithTransform<NgtsMeshRefractionMaterialOptions, "" | Partial<NgtsMeshRefractionMaterialOptions>>;
421
- protected parameters: _angular_core.Signal<Omit<NgtsMeshRefractionMaterialOptions, "aberrationStrength" | "fastChroma">>;
421
+ protected parameters: _angular_core.Signal<Omit<NgtsMeshRefractionMaterialOptions, "fastChroma" | "aberrationStrength">>;
422
422
  private fastChroma;
423
423
  protected aberrationStrength: _angular_core.Signal<number>;
424
424
  /** Reference to the underlying MeshRefractionMaterial element. */
@@ -525,7 +525,7 @@ declare class NgtsMeshTransmissionMaterial {
525
525
  * Configuration options for the transmission material.
526
526
  */
527
527
  options: _angular_core.InputSignalWithTransform<NgtsMeshTransmissionMaterialOptions, "" | Partial<NgtsMeshTransmissionMaterialOptions>>;
528
- protected parameters: _angular_core.Signal<Omit<NgtsMeshTransmissionMaterialOptions, "thickness" | "anisotropy" | "transmission" | "side" | "resolution" | "background" | "buffer" | "anisotropicBlur" | "samples" | "transmissionSampler" | "backside" | "backsideThickness" | "backsideEnvMapIntensity" | "backsideResolution">>;
528
+ protected parameters: _angular_core.Signal<Omit<NgtsMeshTransmissionMaterialOptions, "thickness" | "anisotropy" | "transmission" | "side" | "buffer" | "anisotropicBlur" | "samples" | "transmissionSampler" | "backside" | "backsideThickness" | "backsideEnvMapIntensity" | "resolution" | "backsideResolution" | "background">>;
529
529
  private resolution;
530
530
  private backsideResolution;
531
531
  private samples;
@@ -694,7 +694,7 @@ declare class NgtsHTMLImpl {
694
694
  * HTML anchor configuration including position, occlusion, and transform settings.
695
695
  */
696
696
  options: _angular_core.InputSignalWithTransform<NgtsHTMLOptions, "" | Partial<NgtsHTMLOptions>>;
697
- protected parameters: _angular_core.Signal<Omit<NgtsHTMLOptions, "castShadow" | "receiveShadow" | "transform" | "occlude">>;
697
+ protected parameters: _angular_core.Signal<Omit<NgtsHTMLOptions, "transform" | "castShadow" | "receiveShadow" | "occlude">>;
698
698
  /** Reference to the THREE.Group that serves as the 3D anchor point */
699
699
  groupRef: _angular_core.Signal<ElementRef<THREE.Group<THREE.Object3DEventMap>>>;
700
700
  /** Reference to the occlusion mesh (when using blending occlusion mode) */
@@ -704,7 +704,7 @@ declare class NgtsHTMLImpl {
704
704
  protected castShadow: _angular_core.Signal<boolean>;
705
705
  protected receiveShadow: _angular_core.Signal<boolean>;
706
706
  /** Current occlusion mode setting */
707
- occlude: _angular_core.Signal<boolean | "raycast" | THREE.Object3D<THREE.Object3DEventMap>[] | "blending" | ElementRef<THREE.Object3D<THREE.Object3DEventMap>>[]>;
707
+ occlude: _angular_core.Signal<boolean | THREE.Object3D<THREE.Object3DEventMap>[] | "raycast" | "blending" | ElementRef<THREE.Object3D<THREE.Object3DEventMap>>[]>;
708
708
  /** Whether CSS 3D transform mode is enabled */
709
709
  transform: _angular_core.Signal<boolean>;
710
710
  isRaycastOcclusion: _angular_core.Signal<boolean | 0>;
@@ -980,7 +980,7 @@ declare class NgtsSampler {
980
980
  * Sampler configuration including count, weight attribute, and transform function.
981
981
  */
982
982
  options: _angular_core.InputSignalWithTransform<NgtsSamplerOptions, "" | Partial<NgtsSamplerOptions>>;
983
- protected parameters: _angular_core.Signal<Omit<NgtsSamplerOptions, "count" | "transform" | "weight">>;
983
+ protected parameters: _angular_core.Signal<Omit<NgtsSamplerOptions, "transform" | "count" | "weight">>;
984
984
  groupRef: _angular_core.Signal<ElementRef<THREE.Group<THREE.Object3DEventMap>>>;
985
985
  private count;
986
986
  private weight;
@@ -1013,5 +1013,34 @@ declare class NgtsSampler {
1013
1013
  */
1014
1014
  declare function calculateScaleFactor(point3: THREE.Vector3, radiusPx: number, camera: THREE.Camera, size: NgtSize): number;
1015
1015
 
1016
- export { NgtsBakeShadows, NgtsComputedAttribute, NgtsDecal, NgtsFBO, NgtsHTML, NgtsHTMLContent, NgtsHTMLImpl, NgtsIntersect, NgtsPreload, NgtsSampler, animations, calculateScaleFactor, depthBuffer, fbo, getVersion, injectAnimations, injectDepthBuffer, injectFBO, injectIntersect, intersect, setUpdateRange, surfaceSampler };
1017
- export type { NgtsAnimation, NgtsAnimationApi, NgtsAnimationClip, NgtsAnimationClips, NgtsDecalOptions, NgtsFBOParams, NgtsHTMLContentOptions, NgtsHTMLOptions, NgtsSamplerOptions, TransformFn };
1016
+ /**
1017
+ * Options for configuring soft shadows using PCSS (Percentage-Closer Soft Shadows).
1018
+ */
1019
+ interface NgtsSoftShadowsOptions {
1020
+ /** Size of the light source (the larger the softer the light), default: 25 */
1021
+ size: number;
1022
+ /** Number of samples (more samples less noise but more expensive), default: 10 */
1023
+ samples: number;
1024
+ /** Depth focus, use it to shift the focal point (where the shadow is the sharpest), default: 0 (the beginning) */
1025
+ focus: number;
1026
+ }
1027
+ /**
1028
+ * A directive that injects Percentage-Closer Soft Shadows (PCSS) into the scene.
1029
+ *
1030
+ * PCSS produces contact-hardening soft shadows where shadows are sharper near the
1031
+ * contact point and softer further away, creating more realistic shadow effects.
1032
+ *
1033
+ * @example
1034
+ * ```html
1035
+ * <ngts-soft-shadows [options]="{ size: 25, samples: 10, focus: 0 }" />
1036
+ * ```
1037
+ */
1038
+ declare class NgtsSoftShadows {
1039
+ options: _angular_core.InputSignalWithTransform<NgtsSoftShadowsOptions, "" | Partial<NgtsSoftShadowsOptions>>;
1040
+ constructor();
1041
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgtsSoftShadows, never>;
1042
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgtsSoftShadows, "ngts-soft-shadows", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1043
+ }
1044
+
1045
+ export { NgtsBakeShadows, NgtsComputedAttribute, NgtsDecal, NgtsFBO, NgtsHTML, NgtsHTMLContent, NgtsHTMLImpl, NgtsIntersect, NgtsPreload, NgtsSampler, NgtsSoftShadows, animations, calculateScaleFactor, depthBuffer, fbo, getVersion, injectAnimations, injectDepthBuffer, injectFBO, injectIntersect, intersect, setUpdateRange, surfaceSampler };
1046
+ export type { NgtsAnimation, NgtsAnimationApi, NgtsAnimationClip, NgtsAnimationClips, NgtsDecalOptions, NgtsFBOParams, NgtsHTMLContentOptions, NgtsHTMLOptions, NgtsSamplerOptions, NgtsSoftShadowsOptions, TransformFn };
@@ -133,7 +133,7 @@ declare class NgtsBVH {
133
133
  */
134
134
  options: _angular_core.InputSignalWithTransform<NgtsBVHOptions, "" | Partial<NgtsBVHOptions>>;
135
135
  /** @internal */
136
- protected parameters: _angular_core.Signal<Omit<NgtsBVHOptions, "enabled" | "firstHitOnly" | "strategy" | "verbose" | "setBoundingBox" | "maxDepth" | "maxLeafTris" | "indirect">>;
136
+ protected parameters: _angular_core.Signal<Omit<NgtsBVHOptions, "indirect" | "enabled" | "firstHitOnly" | "strategy" | "verbose" | "setBoundingBox" | "maxDepth" | "maxLeafTris">>;
137
137
  /**
138
138
  * Reference to the underlying THREE.Group element.
139
139
  */
@@ -340,7 +340,7 @@ declare class NgtsInstances {
340
340
  */
341
341
  options: _angular_core.InputSignalWithTransform<NgtsInstancesOptions, "" | Partial<NgtsInstancesOptions>>;
342
342
  /** @internal */
343
- protected parameters: _angular_core.Signal<Omit<NgtsInstancesOptions, "range" | "limit" | "frames">>;
343
+ protected parameters: _angular_core.Signal<Omit<NgtsInstancesOptions, "limit" | "frames" | "range">>;
344
344
  /**
345
345
  * Reference to the underlying THREE.InstancedMesh element.
346
346
  */
@@ -544,7 +544,7 @@ declare class NgtsPointsInstances {
544
544
  /**
545
545
  * Computed parameters passed to the underlying Points object.
546
546
  */
547
- parameters: _angular_core.Signal<Omit<NgtsPointsInstancesOptions, "range" | "limit">>;
547
+ parameters: _angular_core.Signal<Omit<NgtsPointsInstancesOptions, "limit" | "range">>;
548
548
  /**
549
549
  * Reference to the underlying THREE.Points element.
550
550
  */
@@ -717,10 +717,9 @@ declare class NgtsSegments {
717
717
  /** @internal */
718
718
  protected materialParameters: _angular_core.Signal<{
719
719
  name?: string | undefined;
720
+ color?: number | undefined | undefined;
720
721
  visible?: boolean | undefined;
721
722
  userData?: Record<string, any> | undefined;
722
- color?: number | undefined | undefined;
723
- wireframe?: boolean | undefined | undefined;
724
723
  blending?: THREE.Blending | undefined;
725
724
  side?: THREE.Side | undefined;
726
725
  vertexColors: boolean;
@@ -762,6 +761,7 @@ declare class NgtsSegments {
762
761
  allowOverride?: boolean | undefined;
763
762
  toneMapped?: boolean | undefined;
764
763
  alphaTest?: number | undefined;
764
+ wireframe?: boolean | undefined | undefined;
765
765
  dashed?: boolean | undefined | undefined;
766
766
  dashScale?: number | undefined | undefined;
767
767
  dashSize?: number | undefined | undefined;
@@ -209,9 +209,9 @@ interface MeshRefractionMaterialOptions {
209
209
  * ```
210
210
  */
211
211
  declare const MeshRefractionMaterial: (new (parameters?: (THREE.ShaderMaterialParameters & Partial<{
212
- [name: string]: number | boolean | any[] | THREE.Color | THREE.CubeTexture<unknown> | THREE.Texture<unknown> | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | null;
212
+ [name: string]: number | boolean | any[] | THREE.CubeTexture<unknown> | THREE.Texture<unknown> | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | THREE.Color | null;
213
213
  }>) | undefined) => THREE.ShaderMaterial & {
214
- [name: string]: number | boolean | any[] | THREE.Color | THREE.CubeTexture<unknown> | THREE.Texture<unknown> | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | null;
214
+ [name: string]: number | boolean | any[] | THREE.CubeTexture<unknown> | THREE.Texture<unknown> | Int32Array<ArrayBufferLike> | Float32Array<ArrayBufferLike> | THREE.Matrix4 | THREE.Matrix3 | THREE.Quaternion | THREE.Vector4 | THREE.Vector3 | THREE.Vector2 | THREE.Color | null;
215
215
  }) & {
216
216
  key: string;
217
217
  };
@@ -88,7 +88,7 @@ declare class NgtsAccumulativeShadows {
88
88
  protected readonly nullTraversal: () => null;
89
89
  protected readonly Math: Math;
90
90
  options: _angular_core.InputSignalWithTransform<NgtsAccumulativeShadowsOptions, "" | Partial<NgtsAccumulativeShadowsOptions>>;
91
- parameters: _angular_core.Signal<Omit<NgtsAccumulativeShadowsOptions, "scale" | "frames" | "blend" | "limit" | "temporal" | "opacity" | "alphaTest" | "color" | "colorBlend" | "resolution" | "toneMapped">>;
91
+ parameters: _angular_core.Signal<Omit<NgtsAccumulativeShadowsOptions, "scale" | "temporal" | "frames" | "limit" | "blend" | "opacity" | "alphaTest" | "color" | "colorBlend" | "resolution" | "toneMapped">>;
92
92
  lightsRef: _angular_core.Signal<ElementRef<three.Group<three.Object3DEventMap>>>;
93
93
  planeRef: _angular_core.Signal<ElementRef<three.Mesh<three.PlaneGeometry, three.ShaderMaterial & {
94
94
  map: three.Texture | null;
@@ -653,7 +653,7 @@ interface NgtsCenterOptions {
653
653
  declare class NgtsCenter {
654
654
  /** Configuration options for centering behavior. */
655
655
  options: _angular_core.InputSignalWithTransform<Partial<angular_three.NgtThreeElement<typeof three.Group>> & NgtsCenterOptions, "" | Partial<Partial<angular_three.NgtThreeElement<typeof three.Group>> & NgtsCenterOptions>>;
656
- protected parameters: _angular_core.Signal<Omit<Partial<angular_three.NgtThreeElement<typeof three.Group>> & NgtsCenterOptions, "object" | "disable" | "top" | "left" | "right" | "bottom" | "precise" | "cacheKey" | "front" | "back" | "disableX" | "disableY" | "disableZ">>;
656
+ protected parameters: _angular_core.Signal<Omit<Partial<angular_three.NgtThreeElement<typeof three.Group>> & NgtsCenterOptions, "object" | "disable" | "top" | "left" | "right" | "bottom" | "front" | "back" | "disableX" | "disableY" | "disableZ" | "precise" | "cacheKey">>;
657
657
  /** Emits when centering calculation completes with dimension and alignment info. */
658
658
  centered: _angular_core.OutputEmitterRef<NgtsCenterState>;
659
659
  /** Reference to the outer group element containing the centered content. */
@@ -797,7 +797,7 @@ declare class NgtsClouds {
797
797
  protected readonly DynamicDrawUsage: 35048;
798
798
  /** Configuration options for the clouds container. */
799
799
  options: _angular_core.InputSignalWithTransform<NgtsCloudsOptions, "" | Partial<NgtsCloudsOptions>>;
800
- protected parameters: _angular_core.Signal<Omit<NgtsCloudsOptions, "frustumCulled" | "limit" | "texture" | "range" | "material">>;
800
+ protected parameters: _angular_core.Signal<Omit<NgtsCloudsOptions, "frustumCulled" | "limit" | "material" | "texture" | "range">>;
801
801
  private texture;
802
802
  private material;
803
803
  private range;
@@ -985,7 +985,7 @@ interface NgtsCloudOptions extends Partial<NgtThreeElements['ngt-group']> {
985
985
  declare class NgtsCloudInstance {
986
986
  /** Configuration options for this cloud formation. */
987
987
  options: _angular_core.InputSignalWithTransform<NgtsCloudOptions, "" | Partial<NgtsCloudOptions>>;
988
- protected parameters: _angular_core.Signal<Omit<NgtsCloudOptions, "opacity" | "color" | "segments" | "seed" | "bounds" | "concentrate" | "distribute" | "growth" | "volume" | "smallestVolume" | "speed" | "fade">>;
988
+ protected parameters: _angular_core.Signal<Omit<NgtsCloudOptions, "opacity" | "color" | "segments" | "bounds" | "seed" | "concentrate" | "distribute" | "growth" | "volume" | "smallestVolume" | "speed" | "fade">>;
989
989
  private cloudInstanceRef;
990
990
  private uuid;
991
991
  private segments;
@@ -2295,7 +2295,7 @@ interface NgtsSkyOptions extends Partial<Omit<NgtThreeElements['ngt-mesh'], 'sca
2295
2295
  declare class NgtsSky {
2296
2296
  /** Configuration options for the sky appearance. */
2297
2297
  options: _angular_core.InputSignalWithTransform<NgtsSkyOptions, "" | Partial<NgtsSkyOptions>>;
2298
- protected parameters: _angular_core.Signal<Omit<NgtsSkyOptions, "distance" | "inclination" | "azimuth" | "mieCoefficient" | "mieDirectionalG" | "turbidity" | "sunPosition">>;
2298
+ protected parameters: _angular_core.Signal<Omit<NgtsSkyOptions, "distance" | "inclination" | "azimuth" | "sunPosition" | "turbidity" | "mieCoefficient" | "mieDirectionalG">>;
2299
2299
  private distance;
2300
2300
  protected turbidity: _angular_core.Signal<number>;
2301
2301
  protected mieCoefficient: _angular_core.Signal<number>;
@@ -2468,7 +2468,7 @@ declare class NgtsSpotLight {
2468
2468
  protected readonly SpotLightHelper: typeof three.SpotLightHelper;
2469
2469
  /** Configuration options for the spot light. */
2470
2470
  options: _angular_core.InputSignalWithTransform<NgtsSpotLightOptions, "" | Partial<NgtsSpotLightOptions>>;
2471
- protected parameters: _angular_core.Signal<Omit<NgtsSpotLightOptions, "opacity" | "color" | "debug" | "distance" | "depthBuffer" | "angle" | "attenuation" | "anglePower" | "radiusTop" | "radiusBottom" | "volumetric">>;
2471
+ protected parameters: _angular_core.Signal<Omit<NgtsSpotLightOptions, "opacity" | "color" | "debug" | "distance" | "depthBuffer" | "volumetric" | "angle" | "attenuation" | "anglePower" | "radiusTop" | "radiusBottom">>;
2472
2472
  protected volumetricOptions: _angular_core.Signal<Pick<NgtsSpotLightOptions, "opacity" | "color" | "debug" | "distance" | "depthBuffer" | "angle" | "attenuation" | "anglePower" | "radiusTop" | "radiusBottom">>;
2473
2473
  /** Reference to the underlying spot light element. */
2474
2474
  spotLightRef: _angular_core.Signal<ElementRef<three.SpotLight>>;
@@ -2613,6 +2613,9 @@ declare class NgtsStage {
2613
2613
  protected environment: _angular_core.Signal<"apartment" | "city" | "dawn" | "forest" | "lobby" | "night" | "park" | "studio" | "sunset" | "warehouse" | Partial<NgtsEnvironmentOptions> | null>;
2614
2614
  private preset;
2615
2615
  protected config: _angular_core.Signal<{
2616
+ main: [x: number, y: number, z: number];
2617
+ fill: [x: number, y: number, z: number];
2618
+ } | {
2616
2619
  readonly main: readonly [1, 2, 1];
2617
2620
  readonly fill: readonly [-2, -0.5, -2];
2618
2621
  } | {
@@ -2624,9 +2627,6 @@ declare class NgtsStage {
2624
2627
  } | {
2625
2628
  readonly main: readonly [-2, 4, 4];
2626
2629
  readonly fill: readonly [-1, 0.5, -1.5];
2627
- } | {
2628
- main: [x: number, y: number, z: number];
2629
- fill: [x: number, y: number, z: number];
2630
2630
  }>;
2631
2631
  protected shadowBias: _angular_core.Signal<number>;
2632
2632
  protected normalBias: _angular_core.Signal<number>;