@hology/core 0.0.250 → 0.0.252

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.
Files changed (52) hide show
  1. package/dist/effects/sequence/sequence-data.d.ts +2 -0
  2. package/dist/effects/sequence/sequence-data.js +1 -1
  3. package/dist/effects/sequence/sequence-definitions.js +1 -1
  4. package/dist/effects/sequence/sequence-player.d.ts +4 -0
  5. package/dist/effects/sequence/sequence-player.js +1 -1
  6. package/dist/effects/vfx/gpu-sprite-runtime.js +1 -1
  7. package/dist/effects/vfx/gpu-vfx-world-service.js +1 -1
  8. package/dist/gameplay/actors/actor.js +1 -1
  9. package/dist/gameplay/actors/builtin/components/character/character-animation.js +1 -1
  10. package/dist/gameplay/actors/camera/third-person-camera-component.js +1 -1
  11. package/dist/gameplay/ai/dynamic-tiled-navmesh.js +1 -1
  12. package/dist/gameplay/initiate.d.ts +4 -0
  13. package/dist/gameplay/initiate.js +1 -1
  14. package/dist/gameplay/services/render.d.ts +11 -3
  15. package/dist/gameplay/services/render.js +1 -1
  16. package/dist/rendering/native-dlss-upscaler.d.ts +104 -0
  17. package/dist/rendering/native-dlss-upscaler.js +4 -0
  18. package/dist/rendering/node-material-webgpu-resolver.d.ts +2 -1
  19. package/dist/rendering/node-material-webgpu-resolver.js +1 -1
  20. package/dist/rendering/post-process-effect.d.ts +1 -1
  21. package/dist/rendering/post-process-effect.js +1 -1
  22. package/dist/rendering/rendering-backend.d.ts +9 -0
  23. package/dist/rendering/rendering-backend.js +4 -0
  24. package/dist/rendering/upscaling-pass.d.ts +9 -1
  25. package/dist/rendering/upscaling-pass.js +1 -1
  26. package/dist/rendering/webgl-backend.d.ts +32 -0
  27. package/dist/rendering/webgl-backend.js +4 -0
  28. package/dist/rendering/webgpu-experimental-backend.d.ts +19 -2
  29. package/dist/rendering/webgpu-experimental-backend.js +1 -1
  30. package/dist/rendering/webgpu-runtime-bridge.d.ts +22 -0
  31. package/dist/rendering/webgpu-runtime-bridge.js +4 -0
  32. package/dist/rendering.d.ts +45 -16
  33. package/dist/rendering.js +1 -1
  34. package/dist/scene/asset-resource-loader.d.ts +5 -0
  35. package/dist/scene/asset-resource-loader.js +1 -1
  36. package/dist/scene/materializer.js +1 -1
  37. package/dist/scene/materials/water.js +1 -1
  38. package/dist/scene/runtime-bundled-backend-service.d.ts +7 -0
  39. package/dist/scene/runtime-bundled-backend-service.js +1 -1
  40. package/dist/scene/storage/packed-json.js +1 -1
  41. package/dist/secondary-motion/runtime.d.ts +1 -1
  42. package/dist/secondary-motion/runtime.js +1 -1
  43. package/dist/test/actor-attachment.test.d.ts +2 -0
  44. package/dist/test/actor-attachment.test.js +4 -0
  45. package/dist/test/gpu-sprite-compiler.test.js +1 -1
  46. package/dist/test/native-dlss-upscaler.test.d.ts +2 -0
  47. package/dist/test/native-dlss-upscaler.test.js +4 -0
  48. package/dist/test/node-material-webgpu-resolver.test.js +1 -1
  49. package/dist/test/webgpu-experimental-backend.test.js +1 -1
  50. package/dist/utils/uuid.js +1 -1
  51. package/package.json +1 -1
  52. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,4 @@
1
+ let e=null,n=null;export function configureWebGpuRuntimeBindings(n){e=n}export async function ensureWebGpuRuntimeBindings(){null==e&&(n??(n=import("@hology/webgpu-renderer").then(e=>{configureWebGpuRuntimeBindings({createComputeKernel:(n,i)=>new e.ComputeKernel(n,i),buildParticleLightingShaderHeader:e.buildParticleLightingShaderHeader})}).catch(e=>{throw n=null,e})),await n)}export function createWebGpuComputeKernel(n,i){if(null==e)throw new Error("WebGPU runtime bindings are unavailable. Initialize the WebGPU rendering backend first.");return e.createComputeKernel(n,i)}export function buildWebGpuParticleLightingShaderHeader(n=!0,i){if(null==e)throw new Error("WebGPU runtime bindings are unavailable. Initialize the WebGPU rendering backend first.");return e.buildParticleLightingShaderHeader(n,i)}/*
2
+ * Copyright (©) 2026 Hology Interactive AB. All rights reserved.
3
+ * See the LICENSE.md file for details.
4
+ */
@@ -18,7 +18,9 @@ import type { VfxBackendPreference } from './effects/vfx/gpu-sprite-compiler.js'
18
18
  export type { UpscalingOptions } from "./rendering/upscaling-pass.js";
19
19
  export type { AntiAliasingMode, ExperimentalWebGpuPostProcessingOptions, ExperimentalWebGpuRenderGraphExtension } from './rendering/webgpu-experimental-backend.js';
20
20
  export type { GTAOOptions, GTAOQuality, MotionBlurOptions, MotionBlurOverride, MotionBlurOverrideHandle, VolumetricFogOptions, VolumetricFogQuality } from './rendering/webgpu-experimental-backend.js';
21
- export type RenderingBackend = 'webgl' | 'webgpu-experimental';
21
+ /** Renderer requested by a view. `webgpu-experimental` is a deprecated alias. */
22
+ export type RenderingBackend = 'webgl' | 'webgpu' | 'webgpu-experimental';
23
+ export type ActiveRenderingBackend = 'webgl' | 'webgpu';
22
24
  export interface DirectionalShadowOptions {
23
25
  enabled: boolean;
24
26
  mapSize: number;
@@ -101,6 +103,7 @@ export type RenderingViewOptions = {
101
103
  enabled?: boolean;
102
104
  };
103
105
  shadows?: {
106
+ enabled?: boolean;
104
107
  autoUpdate?: boolean;
105
108
  /**
106
109
  * Array of update intervals (ms) for each CSM cascade. The first value is for the closest shadow, the next for the next cascade, etc.
@@ -115,27 +118,36 @@ export type RenderingViewOptions = {
115
118
  export declare class RenderingView {
116
119
  container: HTMLElement;
117
120
  readonly options: RenderingViewOptions;
121
+ private static readonly webGpuBackendPool;
118
122
  private static activeView;
119
- private static sharedExperimentalWebGpuBackend;
120
- private static sharedExperimentalWebGpuBackendPromise;
121
123
  private static experimentalWebGpuPresentationView;
122
- private _activeBackend;
124
+ private backendHandle;
125
+ private webGlBackend;
123
126
  private experimentalWebGpuBackend;
127
+ private experimentalWebGpuBackendPoolKey;
124
128
  private experimentalWebGpuFailed;
129
+ private webGpuRuntimeErrorReported;
125
130
  private experimentalWebGpuCapabilityReported;
126
131
  private experimentalWebGpuDynamicBatchingEnabled;
132
+ private ambientOcclusionSettings;
127
133
  private experimentalWebGpuSelectedObjectInstances;
134
+ private outlinesEnabled;
135
+ private selectedOutlineObjects;
128
136
  private experimentalStaticDrawSetRegistrations;
129
137
  private experimentalWebGpuRenderGraphExtensions;
130
138
  private worldEnvironment;
131
- get activeBackend(): RenderingBackend;
132
- get requestedBackend(): RenderingBackend;
139
+ get activeBackend(): ActiveRenderingBackend | null;
140
+ get canvas(): HTMLCanvasElement | null;
141
+ get initialized(): boolean;
142
+ get requestedBackend(): ActiveRenderingBackend;
133
143
  get vfxBackendPreference(): VfxBackendPreference;
134
144
  get webgpuVfxInstancesPerTemplate(): number;
135
145
  get webgpuVfxTemplateMemoryBudgetBytes(): number;
136
146
  get webgpuVfxWorldMemoryBudgetBytes(): number;
137
147
  /** @deprecated Retained for source compatibility; GPU VFX no longer performs timed eviction. */
138
148
  get webgpuVfxColdTemplateSeconds(): number;
149
+ get webGpuDevice(): GPUDevice | null;
150
+ /** @deprecated Use webGpuDevice. */
139
151
  get experimentalWebGpuDevice(): GPUDevice | null;
140
152
  /**
141
153
  * Snapshots a materialized static root after the experimental renderer has
@@ -143,14 +155,18 @@ export declare class RenderingView {
143
155
  * so WebGL fallback continues to render the normal Three.js objects.
144
156
  */
145
157
  registerExperimentalStaticDrawSet(root: THREE.Object3D, label: string, allowUnsortedLateDraws?: boolean): () => void;
146
- /** Registers a view-local extension executed by the shared WebGPU backend. */
158
+ /** @deprecated Use registerWebGpuRenderGraphExtension. */
147
159
  registerExperimentalWebGpuRenderGraphExtension(extension: ExperimentalWebGpuRenderGraphExtension): () => void;
148
160
  private isIntersecting;
149
161
  private needsPausedRender;
150
162
  private wakePausedRenderer;
151
163
  camera: THREE.Camera;
152
164
  windowVisible: boolean;
165
+ /** @deprecated WebGL-specific escape hatch. Use webGlRenderer and backend-neutral RenderingView APIs. */
153
166
  renderer: WebGLRenderer;
167
+ /** Returns the WebGL renderer only when the active backend is WebGL. */
168
+ get webGlRenderer(): WebGLRenderer | null;
169
+ registerWebGpuRenderGraphExtension(extension: ExperimentalWebGpuRenderGraphExtension): () => void;
154
170
  rendererDepth: WebGLRenderer;
155
171
  private composer;
156
172
  private bloomComposer;
@@ -193,8 +209,8 @@ export declare class RenderingView {
193
209
  private volumetricFogPass;
194
210
  private postProcessEffectId;
195
211
  private postProcessEffects;
196
- private readonly postProcessEffectResolution;
197
- private readonly postProcessEffectUniformState;
212
+ private postProcessEffectResolution;
213
+ private postProcessEffectUniformState;
198
214
  private fquadCopySceneColor;
199
215
  private fquadCopySceneDepth;
200
216
  private occlusionClusters;
@@ -212,6 +228,7 @@ export declare class RenderingView {
212
228
  * additively combined. Normals as well could simply be overwritten for SSR.
213
229
  */
214
230
  private fquadBlendAO;
231
+ private createAoblendQuad;
215
232
  setPaused(value: boolean): void;
216
233
  resolutionScale: number;
217
234
  maxPixelRatio: number;
@@ -270,6 +287,8 @@ export declare class RenderingView {
270
287
  private outlineEffect;
271
288
  private gRenderTarget;
272
289
  private phasedRenderPass;
290
+ private webGlInitialized;
291
+ private setupWebGlPipeline;
273
292
  constructor(container: HTMLElement, options?: RenderingViewOptions);
274
293
  addCluster(cluster: Cluster): void;
275
294
  /**
@@ -286,6 +305,11 @@ export declare class RenderingView {
286
305
  setMotionBlurOptions(options: MotionBlurOptions): void;
287
306
  setDirectionalShadowOptions(options: DirectionalShadowOptions): void;
288
307
  setGTAOOptions(options: GTAOOptions): void;
308
+ configureAmbientOcclusion(enabled: boolean, blendIntensity?: number, options?: Record<string, unknown>): void;
309
+ invalidateShadows(): void;
310
+ initTexture(texture: Texture): void;
311
+ setBaseToneMapping(mapping: THREE.ToneMapping, exposure: number): void;
312
+ get supportsWebGlDepthTexture(): boolean;
289
313
  setAntiAliasingMode(mode: AntiAliasingMode): void;
290
314
  setGTAOQuality(quality: GTAOQuality): void;
291
315
  setVolumetricFogOptions(options: VolumetricFogOptions): void;
@@ -330,7 +354,8 @@ export declare class RenderingView {
330
354
  private syncWebGpuPassStatsDom;
331
355
  private updateWebGpuPassStats;
332
356
  private getActiveRendererCanvas;
333
- private disableExperimentalWebGpu;
357
+ private requireInitializedBackend;
358
+ private fallbackToWebGlForUnavailableWebGpu;
334
359
  private activateExperimentalStaticDrawSets;
335
360
  private disposeExperimentalStaticDrawSets;
336
361
  private applyEnvMap;
@@ -405,6 +430,12 @@ export declare class RenderingView {
405
430
  private unapplyGBufferMaterials;
406
431
  private applyGBufferShadowUniformUpdater;
407
432
  initTextures(scene?: THREE.Scene): void;
433
+ /**
434
+ * Initializes scene textures without monopolizing the host event loop.
435
+ * Intended for loading boundaries where native hosts must continue pumping
436
+ * their window and presenting a loading UI while uploads are prepared.
437
+ */
438
+ initTexturesAsync(scene?: THREE.Scene): Promise<void>;
408
439
  private _initiatedMaterialTextures;
409
440
  private _initiatedTextures;
410
441
  private _initMaterialTextures;
@@ -412,15 +443,15 @@ export declare class RenderingView {
412
443
  private compileInProgress;
413
444
  compileAsync(scene?: Object3D): Promise<void>;
414
445
  private compileExperimentalWebGpu;
415
- private static acquireSharedExperimentalWebGpuBackend;
446
+ private acquireWebGpuBackend;
447
+ private releaseExperimentalWebGpuBackend;
416
448
  private applyExperimentalWebGpuViewState;
449
+ private syncWebGpuOutlineState;
417
450
  private depthMaterialCachedMaterials;
418
451
  private applyDepthMaterial;
419
452
  private unapplyDepthMaterial;
420
453
  private renderScene;
421
- private pmremGenerator?;
422
- private pmremGeneratorResults;
423
- getEnvTexture(texture: Texture): THREE.Texture;
454
+ getEnvTexture(texture: Texture): Texture;
424
455
  private applyPostProcessSettings;
425
456
  private updatePostProcessEffectUniforms;
426
457
  private insetHeight;
@@ -439,8 +470,6 @@ export declare class RenderingView {
439
470
  private bloomStoredMaterials;
440
471
  private bloomHidden;
441
472
  private hasBloom;
442
- private darkenNonBloomed;
443
- private restoreMaterial;
444
473
  private initSceneColorUniform;
445
474
  private initDepthUniform;
446
475
  private initNormalUniform;