rayzee 9.4.1 → 9.5.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.
Files changed (145) hide show
  1. package/README.md +226 -25
  2. package/dist/ActiveColor-YvuQq44O.js +13 -0
  3. package/dist/ArchiveImporter-xuUJiklP.js +4301 -0
  4. package/dist/AssetConfig-DSEntE65.js +30 -0
  5. package/dist/BidirectionalIntegrator-C5PKjJoT.js +934 -0
  6. package/dist/ColorManagement-CheBCPaW.js +1488 -0
  7. package/dist/EngineDefaults-DH3bI5t-.js +844 -0
  8. package/dist/EngineEvents-Ci8dVWCP.js +73 -0
  9. package/dist/EngineIssues-CIZnXHsF.js +72 -0
  10. package/dist/FileFormats-sPGJeCRc.js +102 -0
  11. package/dist/Logger-BnHghprG.js +97 -0
  12. package/dist/{NeuralRetouch-vkdXXyK2.js → NeuralRetouch-CW11yLZ_.js} +8 -6
  13. package/dist/{NeuralSuperRes-FVqRJKQV.js → NeuralSuperRes-BekaecYg.js} +55 -120
  14. package/dist/PathTracer-Ccl9KOuF.js +29729 -0
  15. package/dist/PhysicalSky-Dv2PMFGW.js +1219 -0
  16. package/dist/RayzeeRenderer-BQxnzCTD.js +3542 -0
  17. package/dist/SolarLimb-ken-JbDK.js +721 -0
  18. package/dist/ToneMapGPU-BHi5JzIq.js +177 -0
  19. package/dist/ViewTransforms-D0rTLBsX.js +255 -0
  20. package/dist/WorkingMatrix-C6y233hT.js +27 -0
  21. package/dist/ZipReader-gDSWr0I5.js +98 -0
  22. package/dist/addons/archives.es.js +3 -0
  23. package/dist/addons/bidirectional.es.js +2 -0
  24. package/dist/addons/color.es.js +3 -0
  25. package/dist/addons/formats.es.js +2 -0
  26. package/dist/addons/physical-sky.es.js +2 -0
  27. package/dist/addons/storage.es.js +3 -0
  28. package/dist/archiveFormats-BZw7TiDp.js +75 -0
  29. package/dist/identity-DrQsGT2o.js +39 -0
  30. package/dist/openStorage-DwcBRUj7.js +820 -0
  31. package/dist/rayzee-core.es.js +12 -0
  32. package/dist/rayzee.es.js +2266 -44125
  33. package/dist/rayzee.umd.js +485 -473
  34. package/dist/sceneCachePolicy-BmwYOYDu.js +183 -0
  35. package/dist/shared-BGBcSxBQ.js +17 -0
  36. package/package.json +23 -2
  37. package/src/Color/ActiveColor.js +34 -0
  38. package/src/Color/BasicColor.js +147 -0
  39. package/src/Color/ColorManagement.js +7 -31
  40. package/src/EngineDefaults.js +23 -14
  41. package/src/EngineEvents.js +2 -0
  42. package/src/EngineIssues.js +1 -0
  43. package/src/PathTracerApp.js +617 -4016
  44. package/src/Pipeline/PipelineContext.js +0 -4
  45. package/src/Platform.js +36 -0
  46. package/src/Processor/ArchiveCache.js +1 -1
  47. package/src/Processor/ArchiveImporter.js +1259 -0
  48. package/src/Processor/AssetLoader.js +322 -1746
  49. package/src/Processor/AtmosphereModel.js +1 -2
  50. package/src/Processor/BVHBuilder.js +4 -95
  51. package/src/Processor/EnvironmentExactTable.js +187 -0
  52. package/src/Processor/EquirectHDRInfo.js +30 -223
  53. package/src/Processor/FileFormats.js +116 -0
  54. package/src/Processor/GLTFDecoders.js +85 -0
  55. package/src/Processor/GLTFDiffuseTransmission.js +63 -0
  56. package/src/Processor/GeometryExtractor.js +12 -1
  57. package/src/Processor/IESParser.js +47 -35
  58. package/src/Processor/KernelManager.js +35 -2
  59. package/src/Processor/MaterialPacking.js +8 -7
  60. package/src/Processor/PBRT/PBRTMaterials.js +129 -41
  61. package/src/Processor/PBRT/PBRTParser.js +30 -17
  62. package/src/Processor/PBRT/PBRTSceneBuilder.js +548 -37
  63. package/src/Processor/PBRT/PBRTTextureBake.js +154 -0
  64. package/src/Processor/PBRT/PFM.js +59 -0
  65. package/src/Processor/PackedRayBuffer.js +116 -9
  66. package/src/Processor/ParallelBVHBuilder.js +3 -6
  67. package/src/Processor/PhysicalSky.js +5 -4
  68. package/src/Processor/PlatformImageLoader.js +50 -6
  69. package/src/Processor/QueueManager.js +12 -3
  70. package/src/Processor/ReinsertionOptimizer.js +2 -2
  71. package/src/Processor/SceneProcessor.js +15 -55
  72. package/src/Processor/ShaderBuilder.js +6 -16
  73. package/src/Processor/SimpleSky.js +1 -62
  74. package/src/Processor/SolarLimb.js +3 -0
  75. package/src/Processor/TextureCreator.js +1 -1
  76. package/src/Processor/Workers/BVHSubtreeWorker.js +1 -34
  77. package/src/Processor/Workers/BVHWorker.js +5 -18
  78. package/src/Processor/Workers/CDFWorker.js +6 -183
  79. package/src/Processor/archiveFormats.js +7 -0
  80. package/src/Processor/utils.js +2 -1
  81. package/src/RayzeeRenderer.js +3902 -0
  82. package/src/RenderSettings.js +49 -41
  83. package/src/Stages/ASVGF.js +5 -7
  84. package/src/Stages/AutoExposure.js +3 -12
  85. package/src/Stages/Compositor.js +8 -23
  86. package/src/Stages/NRD.js +9 -2
  87. package/src/Stages/NormalDepth.js +9 -6
  88. package/src/Stages/PathTracer.js +254 -38
  89. package/src/Stages/PathTracerStage.js +11 -16
  90. package/src/Storage/BLASCache.js +1 -1
  91. package/src/Storage/CDFCache.js +18 -17
  92. package/src/Storage/DownloadCache.js +1 -1
  93. package/src/Storage/SceneGraphCodec.js +46 -3
  94. package/src/Storage/SpillStore.js +1 -1
  95. package/src/Storage/StorageManager.js +2 -4
  96. package/src/Storage/areas.js +4 -0
  97. package/src/TSL/BVHTraversal.js +62 -24
  98. package/src/TSL/Bidirectional.js +204 -0
  99. package/src/TSL/BidirectionalLamps.js +132 -0
  100. package/src/TSL/Clearcoat.js +15 -6
  101. package/src/TSL/Common.js +19 -14
  102. package/src/TSL/ConnectKernel.js +147 -0
  103. package/src/TSL/Debugger.js +1 -1
  104. package/src/TSL/Displacement.js +4 -3
  105. package/src/TSL/EmissiveSampling.js +64 -17
  106. package/src/TSL/Environment.js +77 -106
  107. package/src/TSL/EnvironmentCDF.js +85 -39
  108. package/src/TSL/ExtendKernel.js +8 -3
  109. package/src/TSL/FinalWriteKernel.js +4 -4
  110. package/src/TSL/GenerateKernel.js +18 -4
  111. package/src/TSL/HitFacet.js +35 -5
  112. package/src/TSL/LightBVHSampling.js +40 -9
  113. package/src/TSL/LightGenerateKernel.js +293 -0
  114. package/src/TSL/LightGuide.js +198 -0
  115. package/src/TSL/LightSplatKernel.js +165 -0
  116. package/src/TSL/LightsCore.js +13 -38
  117. package/src/TSL/LightsDirect.js +28 -29
  118. package/src/TSL/LightsIndirect.js +3 -1
  119. package/src/TSL/LightsSampling.js +90 -38
  120. package/src/TSL/MaterialEvaluation.js +113 -31
  121. package/src/TSL/MaterialProperties.js +44 -17
  122. package/src/TSL/MaterialTransmission.js +52 -47
  123. package/src/TSL/MergeKernel.js +218 -0
  124. package/src/TSL/PathTracerCore.js +65 -29
  125. package/src/TSL/Random.js +4 -0
  126. package/src/TSL/SceneResources.js +51 -0
  127. package/src/TSL/ShadeKernel.js +881 -103
  128. package/src/TSL/Struct.js +10 -0
  129. package/src/TSL/Sun.js +1 -1
  130. package/src/TSL/TextureSampling.js +65 -60
  131. package/src/addons/archives.js +14 -0
  132. package/src/addons/bidirectional.js +13 -0
  133. package/src/addons/color.js +32 -0
  134. package/src/addons/formats.js +16 -0
  135. package/src/addons/physicalSky.js +14 -0
  136. package/src/addons/storage.js +19 -0
  137. package/src/core.js +35 -0
  138. package/src/index.js +3 -1
  139. package/src/integrators/BidirectionalIntegrator.js +832 -0
  140. package/src/managers/EnvironmentManager.js +94 -91
  141. package/src/managers/MaterialDataManager.js +42 -0
  142. package/src/managers/UniformManager.js +0 -1
  143. package/dist/ToneMapGPU-DKQM1pMd.js +0 -552
  144. package/dist/rolldown-runtime-CAFD8bLK.js +0 -11
  145. package/src/Processor/TreeletOptimizer.js +0 -574
@@ -0,0 +1,73 @@
1
+ //#region src/EngineEvents.js
2
+ var e = {
3
+ RENDER_COMPLETE: "engine:renderComplete",
4
+ RENDER_RESET: "engine:renderReset",
5
+ FRAME: "engine:frame",
6
+ SHADERS_COMPILING: "engine:shadersCompiling",
7
+ DENOISING_START: "engine:denoisingStart",
8
+ DENOISING_END: "engine:denoisingEnd",
9
+ UPSCALING_START: "engine:upscalingStart",
10
+ UPSCALING_PROGRESS: "engine:upscalingProgress",
11
+ UPSCALING_END: "engine:upscalingEnd",
12
+ LOADING_UPDATE: "engine:loadingUpdate",
13
+ LOADING_RESET: "engine:loadingReset",
14
+ STATS_UPDATE: "engine:statsUpdate",
15
+ OBJECT_SELECTED: "engine:objectSelected",
16
+ OBJECT_DESELECTED: "engine:objectDeselected",
17
+ OBJECT_DOUBLE_CLICKED: "engine:objectDoubleClicked",
18
+ SELECT_MODE_CHANGED: "engine:selectModeChanged",
19
+ OBJECT_TRANSFORM_START: "engine:objectTransformStart",
20
+ OBJECT_TRANSFORM_END: "engine:objectTransformEnd",
21
+ TRANSFORM_MODE_CHANGED: "engine:transformModeChanged",
22
+ CAMERA_SWITCHED: "engine:cameraSwitched",
23
+ CAMERAS_UPDATED: "engine:camerasUpdated",
24
+ FOCUS_CHANGED: "engine:focusChanged",
25
+ AUTO_FOCUS_UPDATED: "engine:autoFocusUpdated",
26
+ ORTHO_HEIGHT_UPDATED: "engine:orthoHeightUpdated",
27
+ AUTO_EXPOSURE_UPDATED: "engine:autoExposureUpdated",
28
+ AF_POINT_PLACED: "engine:afPointPlaced",
29
+ SETTING_CHANGED: "engine:settingChanged",
30
+ ANIMATION_STARTED: "engine:animationStarted",
31
+ ANIMATION_PAUSED: "engine:animationPaused",
32
+ ANIMATION_STOPPED: "engine:animationStopped",
33
+ ANIMATION_FINISHED: "engine:animationFinished",
34
+ TIMELINE_CHANGED: "engine:timelineChanged",
35
+ VIDEO_RENDER_PROGRESS: "engine:videoRenderProgress",
36
+ VIDEO_RENDER_COMPLETE: "engine:videoRenderComplete",
37
+ DISPOSE: "engine:dispose",
38
+ DEVICE_LOST: "engine:deviceLost",
39
+ ISSUE: "engine:issue",
40
+ MODEL_LOADED: "engine:modelLoaded",
41
+ OBJECT3D_LOADED: "engine:object3dLoaded",
42
+ MODEL_ADDED: "engine:modelAdded",
43
+ SCENE_OBJECT_REMOVED: "engine:sceneObjectRemoved",
44
+ SCENE_UNLOADED: "engine:sceneUnloaded",
45
+ SCENE_REBUILD: "engine:sceneRebuild",
46
+ SCENE_SPILLED: "engine:sceneSpilled",
47
+ SCENE_METADATA_APPLIED: "engine:sceneMetadataApplied",
48
+ ENVIRONMENT_LOADED: "engine:environmentLoaded",
49
+ TEXTURES_REPROCESSED: "engine:texturesReprocessed",
50
+ RESOLUTION_CHANGED: "engine:resolutionChanged",
51
+ RESERVED_RENDER_SIZE_CHANGED: "engine:reservedRenderSizeChanged",
52
+ STORAGE_CHANGED: "engine:storageChanged"
53
+ }, t = Object.freeze({
54
+ [e.RENDER_COMPLETE]: "RenderComplete",
55
+ [e.RENDER_RESET]: "RenderReset",
56
+ [e.CAMERA_SWITCHED]: "CameraSwitched",
57
+ [e.CAMERAS_UPDATED]: "CamerasUpdated",
58
+ [e.FOCUS_CHANGED]: "focusChanged",
59
+ [e.MODEL_LOADED]: "ModelLoaded",
60
+ [e.OBJECT3D_LOADED]: "Object3DLoaded",
61
+ [e.MODEL_ADDED]: "ModelAdded",
62
+ [e.SCENE_OBJECT_REMOVED]: "SceneObjectRemoved",
63
+ [e.SCENE_UNLOADED]: "SceneUnloaded",
64
+ [e.SCENE_REBUILD]: "SceneRebuild",
65
+ [e.SCENE_SPILLED]: "SceneSpilled",
66
+ [e.SCENE_METADATA_APPLIED]: "SceneMetadataApplied",
67
+ [e.ENVIRONMENT_LOADED]: "EnvironmentLoaded",
68
+ [e.TEXTURES_REPROCESSED]: "TexturesReprocessed",
69
+ [e.RESOLUTION_CHANGED]: "resolution_changed",
70
+ [e.RESERVED_RENDER_SIZE_CHANGED]: "reserved_render_size_changed"
71
+ });
72
+ //#endregion
73
+ export { t as n, e as t };
@@ -0,0 +1,72 @@
1
+ //#region src/EngineIssues.js
2
+ var e = Object.freeze({
3
+ ADAPTER_SOFTWARE: "adapter.software",
4
+ ASSET_UNREACHABLE: "asset.unreachable",
5
+ ASSET_AMBIGUOUS_ENTRY: "asset.ambiguous_entry",
6
+ ASSET_ARCHIVE_TOO_LARGE: "asset.archive_too_large",
7
+ ASSET_ENTRY_TOO_LARGE: "asset.entry_too_large",
8
+ TEXTURE_BUILD_FAILED: "texture.build_failed",
9
+ TEXTURE_PROCESSING_FALLBACK: "texture.processing_fallback",
10
+ TEXTURE_LIMIT_EXCEEDED: "texture.limit_exceeded",
11
+ ENVIRONMENT_LOAD_FAILED: "environment.load_failed",
12
+ SETTING_UNKNOWN_KEY: "setting.unknown_key",
13
+ RENDER_SIZE_DECLINED: "render.size_declined",
14
+ STAGE_RENDER_FAILED: "stage.render_failed",
15
+ RENDER_RESERVE_CAPPED: "render.reserve_capped",
16
+ SCENE_MEMORY_BUDGET: "scene.memory_budget",
17
+ EMISSIVE_INSTANCES_COLLAPSED: "emissive.instances_collapsed",
18
+ REFIT_SHARED_GEOMETRY: "refit.shared_geometry",
19
+ VIEW_TRANSFORM_DISPLAY_MISMATCH: "viewTransform.display_mismatch",
20
+ VIEW_TRANSFORM_BAKE_FAILED: "viewTransform.bake_failed",
21
+ COLOR_CONFIG_LOAD_FAILED: "color.config_load_failed",
22
+ STORAGE_UNAVAILABLE: "storage.unavailable",
23
+ STORAGE_QUOTA_EXCEEDED: "storage.quota_exceeded",
24
+ STORAGE_WRITE_FAILED: "storage.write_failed",
25
+ STORAGE_READ_FAILED: "storage.read_failed",
26
+ STORAGE_ENTRY_CORRUPT: "storage.entry_corrupt",
27
+ STORAGE_CACHE_MISMATCH: "storage.cache_mismatch",
28
+ DENOISER_UNAVAILABLE: "denoiser.unavailable",
29
+ OUTPUT_SOURCE_FALLBACK: "output.source_fallback",
30
+ OUTPUT_TONEMAP_FALLBACK: "output.tonemap_fallback",
31
+ LIGHT_PLACEHOLDER_SKIPPED: "light.placeholder_skipped",
32
+ CAPABILITY_MISSING: "capability.missing"
33
+ }), t = Object.freeze({
34
+ ERROR: "error",
35
+ WARNING: "warning"
36
+ }), n = class extends Error {
37
+ constructor(e) {
38
+ super(`[${e.code}] ${e.message}`), this.name = "EngineIssueError", this.code = e.code, this.detail = e.detail;
39
+ }
40
+ }, r = class {
41
+ constructor({ strict: e = !1, onIssue: t = null } = {}) {
42
+ this.strict = e === !0, this._onIssue = t, this._entries = [];
43
+ }
44
+ record(e, r, i = {}, a = t.ERROR) {
45
+ let o = Object.freeze({
46
+ code: e,
47
+ message: r,
48
+ detail: i,
49
+ severity: a,
50
+ at: Date.now()
51
+ });
52
+ if (this._entries.push(o), this._onIssue?.(o), this.strict && a === t.ERROR) throw new n(o);
53
+ return o;
54
+ }
55
+ warn(e, n, r) {
56
+ return this.record(e, n, r, t.WARNING);
57
+ }
58
+ get list() {
59
+ return this._entries.slice();
60
+ }
61
+ get errors() {
62
+ return this._entries.filter((e) => e.severity === t.ERROR);
63
+ }
64
+ clear() {
65
+ this._entries.length = 0;
66
+ }
67
+ detach() {
68
+ this._onIssue = null, this.strict = !1;
69
+ }
70
+ };
71
+ //#endregion
72
+ export { r as i, e as n, t as r, n as t };
@@ -0,0 +1,102 @@
1
+ import { FloatType as e, Mesh as t, MeshStandardMaterial as n, Points as r, PointsMaterial as i } from "three";
2
+ //#region src/Processor/FileFormats.js
3
+ var a = {
4
+ name: "FBX",
5
+ label: "FBX",
6
+ type: "model",
7
+ extensions: ["fbx"],
8
+ async parse(e, { cache: t }) {
9
+ return t.fbx ??= new (await (import("three/addons/loaders/FBXLoader.js"))).FBXLoader(), { model: t.fbx.parse(await e.arrayBuffer()) };
10
+ }
11
+ }, o = {
12
+ name: "OBJ",
13
+ label: "OBJ",
14
+ type: "model",
15
+ extensions: ["obj"],
16
+ async parse(e, { filename: t, cache: n }) {
17
+ n.obj ??= new (await (import("three/addons/loaders/OBJLoader.js"))).OBJLoader();
18
+ let r = n.obj.parse(await e.text());
19
+ return r.name = t, { model: r };
20
+ }
21
+ }, s = {
22
+ name: "STL",
23
+ label: "STL",
24
+ type: "model",
25
+ extensions: ["stl"],
26
+ async parse(e, { filename: r, cache: i }) {
27
+ i.stl ??= new (await (import("three/addons/loaders/STLLoader.js"))).STLLoader();
28
+ let a = new t(i.stl.parse(await e.arrayBuffer()), new n());
29
+ return a.name = r, { model: a };
30
+ }
31
+ }, c = {
32
+ name: "PLY (Polygon File Format)",
33
+ label: "PLY",
34
+ type: "model",
35
+ extensions: ["ply"],
36
+ async parse(e, { filename: a, cache: o }) {
37
+ o.ply ??= new (await (import("three/addons/loaders/PLYLoader.js"))).PLYLoader();
38
+ let s = o.ply.parse(await e.arrayBuffer()), c;
39
+ if (s.index !== null) c = new t(s, new n());
40
+ else {
41
+ let e = new i({ size: .01 });
42
+ e.vertexColors = s.hasAttribute("color"), c = new r(s, e);
43
+ }
44
+ return c.name = a, { model: c };
45
+ }
46
+ }, l = {
47
+ name: "Collada",
48
+ label: "Collada",
49
+ type: "model",
50
+ extensions: ["dae"],
51
+ async parse(e, { filename: t, cache: n }) {
52
+ n.collada ??= new (await (import("three/addons/loaders/ColladaLoader.js"))).ColladaLoader();
53
+ let r = n.collada.parse(await e.text());
54
+ return r.scene.name = t, {
55
+ model: r.scene,
56
+ result: r
57
+ };
58
+ }
59
+ }, u = {
60
+ name: "3D Manufacturing Format",
61
+ label: "3MF",
62
+ type: "model",
63
+ extensions: ["3mf"],
64
+ async parse(e, { cache: t }) {
65
+ return t.threemf ??= new (await (import("three/addons/loaders/3MFLoader.js"))).ThreeMFLoader(), { model: t.threemf.parse(await e.arrayBuffer()) };
66
+ }
67
+ }, d = {
68
+ name: "USD (Universal Scene Description)",
69
+ label: "USD",
70
+ type: "model",
71
+ extensions: [
72
+ "usd",
73
+ "usda",
74
+ "usdc",
75
+ "usdz"
76
+ ],
77
+ async parse(e, { filename: t, cache: n }) {
78
+ n.usd ??= new (await (import("three/addons/loaders/USDLoader.js"))).USDLoader();
79
+ let r = await e.arrayBuffer(), i = await new Promise((e, t) => n.usd.parse(r, "", e, t));
80
+ return i.name = t, { model: i };
81
+ }
82
+ }, f = {
83
+ name: "EXR (OpenEXR)",
84
+ label: "EXR",
85
+ type: "environment",
86
+ extensions: ["exr"],
87
+ async createLoader(t) {
88
+ let { EXRLoader: n } = await import("three/addons/loaders/EXRLoader.js");
89
+ return new n(t).setDataType(e);
90
+ }
91
+ }, p = [
92
+ a,
93
+ o,
94
+ s,
95
+ c,
96
+ l,
97
+ u,
98
+ d,
99
+ f
100
+ ];
101
+ //#endregion
102
+ export { o as a, u as c, a as i, d as l, l as n, c as o, f as r, s, p as t };
@@ -0,0 +1,97 @@
1
+ //#region src/utils/Logger.js
2
+ var e = {
3
+ silent: 0,
4
+ error: 1,
5
+ warn: 2,
6
+ info: 3,
7
+ debug: 4
8
+ }, t = "info", n = "rayzeeLogLevel", r = "rayzeeLogNamespaces", i = "color:#7c8494", a = "color:inherit", o = null, s = null;
9
+ function c(e) {
10
+ try {
11
+ return globalThis.localStorage?.getItem(e) ?? null;
12
+ } catch {
13
+ return null;
14
+ }
15
+ }
16
+ function l(e, t) {
17
+ try {
18
+ t === null ? globalThis.localStorage?.removeItem(e) : globalThis.localStorage?.setItem(e, t);
19
+ } catch {}
20
+ }
21
+ function u() {
22
+ if (o !== null) return o;
23
+ let r = globalThis.__RAYZEE_LOG_LEVEL__;
24
+ return r !== void 0 && r in e ? (o = e[r], o) : (o = e[c(n)] ?? e[t], o);
25
+ }
26
+ function d() {
27
+ if (s !== null) return s;
28
+ let e = globalThis.__RAYZEE_LOG_NS__ ?? c(r);
29
+ return s = e ? String(e).split(",").map((e) => e.trim()).filter(Boolean) : [], s;
30
+ }
31
+ function f(t, n) {
32
+ if (n < e.debug) return !0;
33
+ let r = d();
34
+ return r.length === 0 || r.some((e) => t === e || t.startsWith(`${e}:`));
35
+ }
36
+ function p(t, n, r) {
37
+ if (t > u() || !f(n, t)) return;
38
+ let o = t === e.error ? console.error : t === e.warn ? console.warn : console.log, s = `[${n}]`;
39
+ typeof r[0] == "string" ? o(`%c${s}%c ${r[0]}`, i, a, ...r.slice(1)) : o(`%c${s}`, i, ...r);
40
+ }
41
+ var m = {
42
+ n: (e) => Number(e).toLocaleString("en-US"),
43
+ ms: (e) => e < 10 ? `${Number(e).toFixed(1)} ms` : `${Math.round(e)} ms`,
44
+ mb: (e) => {
45
+ let t = e / (1024 * 1024);
46
+ return t < 10 ? `${t.toFixed(1)} MB` : `${Math.round(t)} MB`;
47
+ },
48
+ px: (e, t) => `${e}×${t}`,
49
+ count: (e, t, n = `${t}s`) => `${m.n(e)} ${Number(e) === 1 ? t : n}`,
50
+ list: (e) => e.filter(Boolean).join(" · ")
51
+ }, h = {
52
+ levels: e,
53
+ setLevel(r) {
54
+ return r in e ? (globalThis.__RAYZEE_LOG_LEVEL__ = r, o = e[r], l(n, r === t ? null : r), r) : (console.warn(`[log] unknown level '${r}' — expected one of ${Object.keys(e).join(", ")}`), this.getLevel());
55
+ },
56
+ getLevel() {
57
+ let t = u();
58
+ return Object.keys(e).find((n) => e[n] === t);
59
+ },
60
+ isEnabled(t) {
61
+ return (e[t] ?? e.debug) <= u();
62
+ },
63
+ only(...e) {
64
+ let t = e.flat().filter(Boolean);
65
+ return s = t, globalThis.__RAYZEE_LOG_NS__ = t.join(","), l(r, t.length ? t.join(",") : null), t.length && this.setLevel("debug"), t;
66
+ },
67
+ refresh() {
68
+ return o = null, s = null, this.getLevel();
69
+ }
70
+ };
71
+ function g(t) {
72
+ return {
73
+ namespace: t,
74
+ error: (...n) => p(e.error, t, n),
75
+ warn: (...n) => p(e.warn, t, n),
76
+ info: (...n) => p(e.info, t, n),
77
+ debug: (...n) => p(e.debug, t, n),
78
+ isEnabled: (e) => h.isEnabled(e),
79
+ summary(n, r = []) {
80
+ let o = r.filter(Boolean);
81
+ if (o.length === 0 || !console.groupCollapsed) {
82
+ p(e.info, t, [n]), o.forEach((n) => p(e.debug, t, [n]));
83
+ return;
84
+ }
85
+ e.info > u() || ((u() >= e.debug && console.group ? console.group : console.groupCollapsed)(`%c[${t}]%c ${n}`, i, a), o.forEach((e) => console.log(e)), console.groupEnd());
86
+ }
87
+ };
88
+ }
89
+ var _ = /* @__PURE__ */ new Set();
90
+ function v(e, t, ...n) {
91
+ _.has(t) || (_.add(t), e.warn(...n));
92
+ }
93
+ function y() {
94
+ return h.getLevel();
95
+ }
96
+ //#endregion
97
+ export { v as a, m as i, h as n, y as o, g as r, e as t };
@@ -1,5 +1,7 @@
1
- import { t as e } from "./rolldown-runtime-CAFD8bLK.js";
2
- import { C as t, t as n, y as r } from "./ToneMapGPU-DKQM1pMd.js";
1
+ import { n as e } from "./BidirectionalIntegrator-C5PKjJoT.js";
2
+ import { r as t } from "./Logger-BnHghprG.js";
3
+ import { n } from "./AssetConfig-DSEntE65.js";
4
+ import { t as r } from "./ToneMapGPU-BHi5JzIq.js";
3
5
  //#region src/neural/NeuralRetouch.js
4
6
  var i = /* @__PURE__ */ e({
5
7
  NeuralRetouch: () => m,
@@ -39,7 +41,7 @@ var s = t("neural"), c = 2048 * 2048, l = Object.freeze({
39
41
  }), u = null;
40
42
  function d() {
41
43
  if (u) return u;
42
- let { neuralRuntimeUrl: e, neuralAssetBaseUrl: t } = r();
44
+ let { neuralRuntimeUrl: e, neuralAssetBaseUrl: t } = n();
43
45
  return t ? (globalThis.__NEURAL_ASSET_BASE__ = t, u = new Promise((t, n) => {
44
46
  if (globalThis.NeuralRuntime?.getSrNrChain) return t(globalThis.NeuralRuntime.getSrNrChain());
45
47
  let r = document.createElement("script");
@@ -139,15 +141,15 @@ var f = "\n@group(0) @binding(0) var src: texture_2d<f32>;\n@group(0) @binding(1
139
141
  };
140
142
  }
141
143
  async readOutputToned(e) {
142
- let { validWidth: t, validHeight: r } = this.chain.pipeline.geometry;
143
- return await this._packHDR(t, r), this._toneMapper ??= new n(this.device, "rayzee:retouch-tonemap"), this._toneMapper.ensureSize(t, r), {
144
+ let { validWidth: t, validHeight: n } = this.chain.pipeline.geometry;
145
+ return await this._packHDR(t, n), this._toneMapper ??= new r(this.device, "rayzee:retouch-tonemap"), this._toneMapper.ensureSize(t, n), {
144
146
  rgba8: await this._toneMapper.toRGBA8(this._hdrStorage, {
145
147
  exposure: e.exposure ?? 1,
146
148
  toneMapping: e.toneMapping ?? 0,
147
149
  saturation: e.saturation ?? 1
148
150
  }),
149
151
  width: t,
150
- height: r
152
+ height: n
151
153
  };
152
154
  }
153
155
  async readOutput() {
@@ -1,87 +1,22 @@
1
- import { t as e } from "./rolldown-runtime-CAFD8bLK.js";
2
- import { C as t, t as n, y as r } from "./ToneMapGPU-DKQM1pMd.js";
3
- //#region src/EngineEvents.js
4
- var i = {
5
- RENDER_COMPLETE: "engine:renderComplete",
6
- RENDER_RESET: "engine:renderReset",
7
- FRAME: "engine:frame",
8
- DENOISING_START: "engine:denoisingStart",
9
- DENOISING_END: "engine:denoisingEnd",
10
- UPSCALING_START: "engine:upscalingStart",
11
- UPSCALING_PROGRESS: "engine:upscalingProgress",
12
- UPSCALING_END: "engine:upscalingEnd",
13
- LOADING_UPDATE: "engine:loadingUpdate",
14
- LOADING_RESET: "engine:loadingReset",
15
- STATS_UPDATE: "engine:statsUpdate",
16
- OBJECT_SELECTED: "engine:objectSelected",
17
- OBJECT_DESELECTED: "engine:objectDeselected",
18
- OBJECT_DOUBLE_CLICKED: "engine:objectDoubleClicked",
19
- SELECT_MODE_CHANGED: "engine:selectModeChanged",
20
- OBJECT_TRANSFORM_START: "engine:objectTransformStart",
21
- OBJECT_TRANSFORM_END: "engine:objectTransformEnd",
22
- TRANSFORM_MODE_CHANGED: "engine:transformModeChanged",
23
- CAMERA_SWITCHED: "engine:cameraSwitched",
24
- CAMERAS_UPDATED: "engine:camerasUpdated",
25
- FOCUS_CHANGED: "engine:focusChanged",
26
- AUTO_FOCUS_UPDATED: "engine:autoFocusUpdated",
27
- ORTHO_HEIGHT_UPDATED: "engine:orthoHeightUpdated",
28
- AUTO_EXPOSURE_UPDATED: "engine:autoExposureUpdated",
29
- AF_POINT_PLACED: "engine:afPointPlaced",
30
- SETTING_CHANGED: "engine:settingChanged",
31
- ANIMATION_STARTED: "engine:animationStarted",
32
- ANIMATION_PAUSED: "engine:animationPaused",
33
- ANIMATION_STOPPED: "engine:animationStopped",
34
- ANIMATION_FINISHED: "engine:animationFinished",
35
- TIMELINE_CHANGED: "engine:timelineChanged",
36
- VIDEO_RENDER_PROGRESS: "engine:videoRenderProgress",
37
- VIDEO_RENDER_COMPLETE: "engine:videoRenderComplete",
38
- DISPOSE: "engine:dispose",
39
- DEVICE_LOST: "engine:deviceLost",
40
- ISSUE: "engine:issue",
41
- MODEL_LOADED: "engine:modelLoaded",
42
- OBJECT3D_LOADED: "engine:object3dLoaded",
43
- MODEL_ADDED: "engine:modelAdded",
44
- SCENE_OBJECT_REMOVED: "engine:sceneObjectRemoved",
45
- SCENE_UNLOADED: "engine:sceneUnloaded",
46
- SCENE_REBUILD: "engine:sceneRebuild",
47
- SCENE_SPILLED: "engine:sceneSpilled",
48
- SCENE_METADATA_APPLIED: "engine:sceneMetadataApplied",
49
- ENVIRONMENT_LOADED: "engine:environmentLoaded",
50
- TEXTURES_REPROCESSED: "engine:texturesReprocessed",
51
- RESOLUTION_CHANGED: "engine:resolutionChanged",
52
- RESERVED_RENDER_SIZE_CHANGED: "engine:reservedRenderSizeChanged",
53
- STORAGE_CHANGED: "engine:storageChanged"
54
- }, a = Object.freeze({
55
- [i.RENDER_COMPLETE]: "RenderComplete",
56
- [i.RENDER_RESET]: "RenderReset",
57
- [i.CAMERA_SWITCHED]: "CameraSwitched",
58
- [i.CAMERAS_UPDATED]: "CamerasUpdated",
59
- [i.FOCUS_CHANGED]: "focusChanged",
60
- [i.MODEL_LOADED]: "ModelLoaded",
61
- [i.OBJECT3D_LOADED]: "Object3DLoaded",
62
- [i.MODEL_ADDED]: "ModelAdded",
63
- [i.SCENE_OBJECT_REMOVED]: "SceneObjectRemoved",
64
- [i.SCENE_UNLOADED]: "SceneUnloaded",
65
- [i.SCENE_REBUILD]: "SceneRebuild",
66
- [i.SCENE_SPILLED]: "SceneSpilled",
67
- [i.SCENE_METADATA_APPLIED]: "SceneMetadataApplied",
68
- [i.ENVIRONMENT_LOADED]: "EnvironmentLoaded",
69
- [i.TEXTURES_REPROCESSED]: "TexturesReprocessed",
70
- [i.RESOLUTION_CHANGED]: "resolution_changed",
71
- [i.RESERVED_RENDER_SIZE_CHANGED]: "reserved_render_size_changed"
72
- }), o = /* @__PURE__ */ e({
73
- NeuralSuperRes: () => _,
74
- SR_MAX_INPUT: () => l,
1
+ import { n as e } from "./BidirectionalIntegrator-C5PKjJoT.js";
2
+ import { t } from "./EngineEvents-Ci8dVWCP.js";
3
+ import { r as n } from "./Logger-BnHghprG.js";
4
+ import { n as r } from "./AssetConfig-DSEntE65.js";
5
+ import { t as i } from "./ToneMapGPU-BHi5JzIq.js";
6
+ //#region src/neural/NeuralSuperRes.js
7
+ var a = /* @__PURE__ */ e({
8
+ NeuralSuperRes: () => g,
9
+ SR_MAX_INPUT: () => c,
75
10
  SR_SCALE: () => 2,
76
- presentRGBA8: () => x,
77
- readDenoisedHalf: () => g,
78
- releaseDenoisedReader: () => h,
79
- renderUpscaled: () => y
80
- }), s = 2, c = t("neural"), l = 2048, u = null;
81
- function d() {
82
- if (u) return u;
11
+ presentRGBA8: () => b,
12
+ readDenoisedHalf: () => h,
13
+ releaseDenoisedReader: () => m,
14
+ renderUpscaled: () => v
15
+ }), o = 2, s = n("neural"), c = 2048, l = null;
16
+ function u() {
17
+ if (l) return l;
83
18
  let { neuralRuntimeUrl: e, neuralAssetBaseUrl: t } = r();
84
- return t ? (globalThis.__NEURAL_ASSET_BASE__ = t, u = new Promise((t, n) => {
19
+ return t ? (globalThis.__NEURAL_ASSET_BASE__ = t, l = new Promise((t, n) => {
85
20
  if (globalThis.NeuralRuntime?.getNativeSR) return t(globalThis.NeuralRuntime.getNativeSR());
86
21
  let r = document.createElement("script");
87
22
  r.src = e, r.onload = () => {
@@ -89,13 +24,13 @@ function d() {
89
24
  if (!e) return n(/* @__PURE__ */ Error("Neural runtime loaded but exposed no super-resolution entry"));
90
25
  t(e());
91
26
  }, r.onerror = () => n(/* @__PURE__ */ Error(`Failed to load the neural runtime from ${e}`)), document.head.appendChild(r);
92
- }), u) : Promise.reject(/* @__PURE__ */ Error("No neural model location: set neuralAssetBaseUrl with configureAssets()"));
27
+ }), l) : Promise.reject(/* @__PURE__ */ Error("No neural model location: set neuralAssetBaseUrl with configureAssets()"));
93
28
  }
94
- var f = "\n@group(0) @binding(0) var src: texture_2d<f32>;\n@group(0) @binding(1) var<storage, read_write> dst: array<u32>;\n\n@compute @workgroup_size(8, 8)\nfn main( @builtin(global_invocation_id) gid: vec3<u32> ) {\n let size = textureDimensions( src );\n if ( gid.x >= size.x || gid.y >= size.y ) { return; }\n let c = textureLoad( src, vec2<i32>( gid.xy ), 0 ).rgb;\n let a = ( gid.y * size.x + gid.x ) * 2u;\n dst[ a ] = pack2x16float( c.rg );\n dst[ a + 1u ] = pack2x16float( vec2<f32>( c.b, 1.0 ) );\n}\n", p = null;
95
- function m(e, t, n) {
96
- if (p && (p.device !== e || p.width !== t || p.height !== n) && h(), p) return p;
29
+ var d = "\n@group(0) @binding(0) var src: texture_2d<f32>;\n@group(0) @binding(1) var<storage, read_write> dst: array<u32>;\n\n@compute @workgroup_size(8, 8)\nfn main( @builtin(global_invocation_id) gid: vec3<u32> ) {\n let size = textureDimensions( src );\n if ( gid.x >= size.x || gid.y >= size.y ) { return; }\n let c = textureLoad( src, vec2<i32>( gid.xy ), 0 ).rgb;\n let a = ( gid.y * size.x + gid.x ) * 2u;\n dst[ a ] = pack2x16float( c.rg );\n dst[ a + 1u ] = pack2x16float( vec2<f32>( c.b, 1.0 ) );\n}\n", f = null;
30
+ function p(e, t, n) {
31
+ if (f && (f.device !== e || f.width !== t || f.height !== n) && m(), f) return f;
97
32
  let r = t * n * 8;
98
- return p = {
33
+ return f = {
99
34
  device: e,
100
35
  width: t,
101
36
  height: n,
@@ -115,20 +50,20 @@ function m(e, t, n) {
115
50
  compute: {
116
51
  module: e.createShaderModule({
117
52
  label: "rayzee:neural-sr-pack",
118
- code: f
53
+ code: d
119
54
  }),
120
55
  entryPoint: "main"
121
56
  }
122
57
  })
123
- }, p;
58
+ }, f;
124
59
  }
125
- function h() {
126
- p?.storage.destroy(), p?.map.destroy(), p = null;
60
+ function m() {
61
+ f?.storage.destroy(), f?.map.destroy(), f = null;
127
62
  }
128
- async function g(e) {
63
+ async function h(e) {
129
64
  let t = e?._outGPUTexture;
130
65
  if (!t) throw Error("NeuralSuperRes: no denoised frame — enable OIDN and finish a render first");
131
- let n = e.gpuDevice, { width: r, height: i } = e._outTexSize, a = m(n, r, i), o = n.createBindGroup({
66
+ let n = e.gpuDevice, { width: r, height: i } = e._outTexSize, a = p(n, r, i), o = n.createBindGroup({
132
67
  layout: a.pipeline.getBindGroupLayout(0),
133
68
  entries: [{
134
69
  binding: 0,
@@ -146,7 +81,7 @@ async function g(e) {
146
81
  height: i
147
82
  };
148
83
  }
149
- var _ = class e {
84
+ var g = class e {
150
85
  constructor(e, t) {
151
86
  this.sr = e, this.canvas = t, this.slot = 0, this._color = null, this._depth = null, this._motion = null, this._toneMapper = null, this.disposed = !1;
152
87
  }
@@ -167,8 +102,8 @@ var _ = class e {
167
102
  }
168
103
  static async create({ width: t, height: n, onProgress: r = () => {} } = {}) {
169
104
  if (!Number.isInteger(t) || !Number.isInteger(n) || t < 1 || n < 1) throw Error("NeuralSuperRes.create: width and height must be positive integers");
170
- if (t > 2048 || n > 2048) throw Error(`NeuralSuperRes.create: input capped at ${l}px per side (${l * 2}px output), got ${t}x${n}. Above that the runtime's history plane exceeds maxTextureDimension2D and it fails later with an unrelated bind-group error.`);
171
- let i = await d(), a = document.createElement("canvas");
105
+ if (t > 2048 || n > 2048) throw Error(`NeuralSuperRes.create: input capped at ${c}px per side (${c * 2}px output), got ${t}x${n}. Above that the runtime's history plane exceeds maxTextureDimension2D and it fails later with an unrelated bind-group error.`);
106
+ let i = await u(), a = document.createElement("canvas");
172
107
  a.style.cssText = "position:fixed;left:-10000px;top:0;pointer-events:none", document.body.appendChild(a);
173
108
  let o;
174
109
  try {
@@ -209,11 +144,11 @@ var _ = class e {
209
144
  };
210
145
  }
211
146
  async upscaleToRGBA8(e, t = {}) {
212
- let { result: r, ms: i } = await this._run(e), { outputWidth: a, outputHeight: o } = this.geometry;
213
- this._toneMapper ??= new n(this.sr.device, "rayzee:neural-sr-tonemap"), this._toneMapper.ensureSize(a, o);
147
+ let { result: n, ms: r } = await this._run(e), { outputWidth: a, outputHeight: o } = this.geometry;
148
+ this._toneMapper ??= new i(this.sr.device, "rayzee:neural-sr-tonemap"), this._toneMapper.ensureSize(a, o);
214
149
  let s = performance.now();
215
150
  return {
216
- rgba8: await this._toneMapper.toRGBA8(r.hdr.buffer ?? r.hdr, {
151
+ rgba8: await this._toneMapper.toRGBA8(n.hdr.buffer ?? n.hdr, {
217
152
  exposure: t.exposure ?? 1,
218
153
  toneMapping: t.toneMapping ?? 0,
219
154
  saturation: t.saturation ?? 1,
@@ -221,7 +156,7 @@ var _ = class e {
221
156
  }),
222
157
  width: a,
223
158
  height: o,
224
- ms: i,
159
+ ms: r,
225
160
  toneMs: performance.now() - s
226
161
  };
227
162
  }
@@ -231,25 +166,25 @@ var _ = class e {
231
166
  try {
232
167
  this.sr.destroy();
233
168
  } catch (e) {
234
- c.warn("super resolution teardown:", e);
169
+ s.warn("super resolution teardown:", e);
235
170
  }
236
171
  }
237
172
  }
238
173
  };
239
- function v(e, t, n) {
240
- return new Promise((r, a) => {
241
- let o = !1, s = (t, n) => {
242
- o || (o = !0, e.removeEventListener(i.DENOISING_END, l), clearInterval(u), clearTimeout(d), t ? r() : a(n));
174
+ function _(e, n, r) {
175
+ return new Promise((i, a) => {
176
+ let o = !1, s = (n, r) => {
177
+ o || (o = !0, e.removeEventListener(t.DENOISING_END, l), clearInterval(u), clearTimeout(d), n ? i() : a(r));
243
178
  }, c = !1, l = () => {
244
- (e.stages?.pathTracer?.frameCount ?? 0) >= t && (c = !0);
179
+ (e.stages?.pathTracer?.frameCount ?? 0) >= n && (c = !0);
245
180
  };
246
- e.addEventListener(i.DENOISING_END, l);
181
+ e.addEventListener(t.DENOISING_END, l);
247
182
  let u = setInterval(() => {
248
183
  c && s(!0);
249
- }, 200), d = setTimeout(() => s(!1, /* @__PURE__ */ Error("NeuralSuperRes: timed out waiting for the render to finish")), n);
184
+ }, 200), d = setTimeout(() => s(!1, /* @__PURE__ */ Error("NeuralSuperRes: timed out waiting for the render to finish")), r);
250
185
  });
251
186
  }
252
- async function y(e, { outputWidth: t, outputHeight: n, samples: r = 64, upscaler: i = null, timeoutMs: a = 6e5, present: o = !0, onProgress: s = () => {} } = {}) {
187
+ async function v(e, { outputWidth: t, outputHeight: n, samples: r = 64, upscaler: i = null, timeoutMs: a = 6e5, present: o = !0, onProgress: s = () => {} } = {}) {
253
188
  if (t % 2 || n % 2) throw Error(`renderUpscaled: output must be divisible by 2, got ${t}x${n}`);
254
189
  let c = t / 2, l = n / 2, u = e.stages?.pathTracer, d = {
255
190
  width: u?.width,
@@ -261,7 +196,7 @@ async function y(e, { outputWidth: t, outputHeight: n, samples: r = 64, upscaler
261
196
  try {
262
197
  if (!p) {
263
198
  let e = performance.now();
264
- s("Loading the super-resolution model"), p = await _.create({
199
+ s("Loading the super-resolution model"), p = await g.create({
265
200
  width: c,
266
201
  height: l,
267
202
  onProgress: s
@@ -269,17 +204,17 @@ async function y(e, { outputWidth: t, outputHeight: n, samples: r = 64, upscaler
269
204
  } else if (p.inputWidth !== c || p.inputHeight !== l) throw Error(`renderUpscaled: upscaler is ${p.inputWidth}x${p.inputHeight}, need ${c}x${l}`);
270
205
  let i = performance.now();
271
206
  s(`Tracing ${c}x${l} at ${r} spp`), e.pauseRendering = !1, e.setCanvasSize(c, l), await new Promise((e) => setTimeout(e, 300)), e.denoisingManager.applyOIDNEnabled(!0), e.settings.set("maxSamples", r);
272
- let u = v(e, r, a);
207
+ let u = _(e, r, a);
273
208
  e.reset(), await u, e.pauseRendering = !0, m.render = performance.now() - i, s("Reading the denoised frame");
274
- let d = performance.now(), f = await g(e.denoisingManager?.denoiser);
209
+ let d = performance.now(), f = await h(e.denoisingManager?.denoiser);
275
210
  m.read = performance.now() - d, s(`Upscaling to ${t}x${n}`);
276
- let h = {
211
+ let v = {
277
212
  exposure: e.renderer.toneMappingExposure,
278
213
  toneMapping: e.renderer.toneMapping,
279
214
  saturation: e.settings.get("saturation") ?? 1
280
- }, { rgba8: y, width: x, height: S, ms: C, toneMs: w } = await p.upscaleToRGBA8(f, h);
281
- return m.upscale = C, m.tonemap = w, o && b(e.denoisingManager?.upscalerCanvas, y, x, S), {
282
- rgba8: y,
215
+ }, { rgba8: b, width: x, height: S, ms: C, toneMs: w } = await p.upscaleToRGBA8(f, v);
216
+ return m.upscale = C, m.tonemap = w, o && y(e.denoisingManager?.upscalerCanvas, b, x, S), {
217
+ rgba8: b,
283
218
  width: x,
284
219
  height: S,
285
220
  timings: m,
@@ -291,11 +226,11 @@ async function y(e, { outputWidth: t, outputHeight: n, samples: r = 64, upscaler
291
226
  d.width && d.height && e.setCanvasSize(d.width, d.height), d.maxSamples !== void 0 && e.settings?.set?.("maxSamples", d.maxSamples), d.finalDenoise !== void 0 && e.denoisingManager?.applyOIDNEnabled(d.finalDenoise), e.pauseRendering = d.paused;
292
227
  }
293
228
  }
294
- function b(e, t, n, r) {
229
+ function y(e, t, n, r) {
295
230
  return e ? (e.width = n, e.height = r, e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(t.buffer ?? t), n, r), 0, 0), e.style.display = "block", !0) : !1;
296
231
  }
297
- function x(e, t, n, r) {
298
- return b(e, t, n, r);
232
+ function b(e, t, n, r) {
233
+ return y(e, t, n, r);
299
234
  }
300
235
  //#endregion
301
- export { i as a, y as i, l as n, a as o, s as r, o as t };
236
+ export { v as i, c as n, o as r, a as t };