rayzee 10.0.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +252 -44
- package/dist/ActiveColor-YvuQq44O.js +13 -0
- package/dist/ArchiveImporter-BRQvLggb.js +4300 -0
- package/dist/AssetConfig-DSEntE65.js +30 -0
- package/dist/BidirectionalIntegrator-9lZQxFVH.js +934 -0
- package/dist/BufferLayout-D_IBo2ci.js +150 -0
- package/dist/ColorManagement-oeEk7oSu.js +1488 -0
- package/dist/EngineEvents-Ci8dVWCP.js +73 -0
- package/dist/EngineIssues-CIZnXHsF.js +72 -0
- package/dist/FileFormats-sPGJeCRc.js +102 -0
- package/dist/Logger-dDDGj9Av.js +97 -0
- package/dist/{NeuralRetouch-CYgkQY8Z.js → NeuralRetouch-BCXylThH.js} +8 -6
- package/dist/{NeuralSuperRes-PkgDLQcD.js → NeuralSuperRes-sZAeS142.js} +55 -120
- package/dist/PathTracer-CQPW06Mm.js +29971 -0
- package/dist/PhysicalSky-BvqCw_dy.js +1219 -0
- package/dist/RayzeeRenderer-COpwotpU.js +3551 -0
- package/dist/SolarLimb-CPaeZVwz.js +721 -0
- package/dist/ToneMapGPU-CjU3osDd.js +177 -0
- package/dist/ViewTransforms-CYN7bq2w.js +255 -0
- package/dist/WorkingMatrix-C6y233hT.js +27 -0
- package/dist/ZipReader-gDSWr0I5.js +98 -0
- package/dist/addons/archives.es.js +3 -0
- package/dist/addons/bidirectional.es.js +2 -0
- package/dist/addons/color.es.js +3 -0
- package/dist/addons/formats.es.js +2 -0
- package/dist/addons/physical-sky.es.js +2 -0
- package/dist/addons/storage.es.js +3 -0
- package/dist/archiveFormats-BZw7TiDp.js +75 -0
- package/dist/identity-DrQsGT2o.js +39 -0
- package/dist/openStorage-DwcBRUj7.js +820 -0
- package/dist/rayzee-core.es.js +12 -0
- package/dist/rayzee.es.js +2551 -44024
- package/dist/rayzee.umd.js +528 -487
- package/dist/sceneCachePolicy-BSSsKY98.js +443 -0
- package/dist/shared-BGBcSxBQ.js +17 -0
- package/package.json +23 -2
- package/src/Color/ActiveColor.js +34 -0
- package/src/Color/BasicColor.js +147 -0
- package/src/Color/ColorManagement.js +7 -31
- package/src/Color/ViewTransforms.js +5 -1
- package/src/EngineDefaults.js +62 -1029
- package/src/EngineEvents.js +2 -0
- package/src/EngineIssues.js +2 -0
- package/src/Headless.js +6 -5
- package/src/Passes/AIUpscaler.js +58 -141
- package/src/Passes/OIDNDenoiser.js +92 -65
- package/src/Passes/OIDNTemporalHistory.js +1 -1
- package/src/PathTracerApp.js +620 -4026
- package/src/Pipeline/PipelineContext.js +0 -4
- package/src/Platform.js +36 -0
- package/src/Processor/ArchiveCache.js +1 -1
- package/src/Processor/ArchiveImporter.js +1259 -0
- package/src/Processor/AssetLoader.js +327 -1763
- package/src/Processor/AtmosphereModel.js +1 -2
- package/src/Processor/BVHBuilder.js +14 -126
- package/src/Processor/BVHLeafFold.js +4 -6
- package/src/Processor/BVHRefitter.js +67 -46
- package/src/Processor/BufferLayout.js +291 -0
- package/src/Processor/EmissiveTriangleBuilder.js +1 -1
- package/src/Processor/EnvironmentExactTable.js +187 -0
- package/src/Processor/EquirectHDRInfo.js +30 -223
- package/src/Processor/FileFormats.js +116 -0
- package/src/Processor/GLTFDecoders.js +85 -0
- package/src/Processor/GLTFDiffuseTransmission.js +63 -0
- package/src/Processor/GeometryExtractor.js +15 -5
- package/src/Processor/HostMemory.js +7 -1
- package/src/Processor/IESParser.js +47 -35
- package/src/Processor/InstanceTable.js +1 -1
- package/src/Processor/KernelManager.js +35 -2
- package/src/Processor/MaterialPacking.js +10 -8
- package/src/Processor/PBRT/PBRTMaterials.js +129 -41
- package/src/Processor/PBRT/PBRTParser.js +30 -17
- package/src/Processor/PBRT/PBRTSceneBuilder.js +548 -37
- package/src/Processor/PBRT/PBRTTextureBake.js +154 -0
- package/src/Processor/PBRT/PFM.js +59 -0
- package/src/Processor/PackedRayBuffer.js +116 -9
- package/src/Processor/ParallelBVHBuilder.js +3 -6
- package/src/Processor/PhysicalSky.js +5 -4
- package/src/Processor/PlatformImageLoader.js +50 -6
- package/src/Processor/QueueManager.js +39 -5
- package/src/Processor/ReinsertionOptimizer.js +2 -2
- package/src/Processor/SceneProcessor.js +53 -62
- package/src/Processor/ShaderBuilder.js +6 -16
- package/src/Processor/SimpleSky.js +1 -62
- package/src/Processor/SolarLimb.js +3 -0
- package/src/Processor/SplitBLAS.js +1 -1
- package/src/Processor/StorageTexturePool.js +22 -1
- package/src/Processor/TLASBuilder.js +1 -3
- package/src/Processor/TextureBuckets.js +237 -0
- package/src/Processor/TextureCreator.js +181 -8
- package/src/Processor/ToneMapGPU.js +64 -15
- package/src/Processor/Workers/BVHRefitWorker.js +5 -2
- package/src/Processor/Workers/BVHSubtreeWorker.js +1 -34
- package/src/Processor/Workers/BVHWorker.js +5 -18
- package/src/Processor/Workers/CDFWorker.js +6 -183
- package/src/Processor/Workers/TexturesWorker.js +103 -18
- package/src/Processor/archiveFormats.js +7 -0
- package/src/Processor/utils.js +2 -1
- package/src/RayzeeRenderer.js +3899 -0
- package/src/RenderSettings.js +68 -62
- package/src/Stages/ASVGF.js +13 -14
- package/src/Stages/AutoExposure.js +17 -17
- package/src/Stages/BilateralFilter.js +2 -1
- package/src/Stages/Compositor.js +8 -23
- package/src/Stages/DenoiserSettings.js +182 -0
- package/src/Stages/EdgeFilter.js +2 -1
- package/src/Stages/MotionVector.js +1 -1
- package/src/Stages/NRD.js +11 -5
- package/src/Stages/NormalDepth.js +12 -8
- package/src/Stages/PathTracer.js +338 -43
- package/src/Stages/PathTracerStage.js +69 -66
- package/src/Stages/Variance.js +1 -1
- package/src/Storage/BLASCache.js +1 -1
- package/src/Storage/CDFCache.js +18 -17
- package/src/Storage/DownloadCache.js +1 -1
- package/src/Storage/SceneGraphCodec.js +46 -3
- package/src/Storage/SpillStore.js +1 -1
- package/src/Storage/StorageManager.js +45 -9
- package/src/Storage/areas.js +4 -0
- package/src/TSL/BVHTraversal.js +50 -25
- package/src/TSL/Bidirectional.js +204 -0
- package/src/TSL/BidirectionalLamps.js +132 -0
- package/src/TSL/Clearcoat.js +15 -6
- package/src/TSL/Common.js +20 -15
- package/src/TSL/ConnectKernel.js +147 -0
- package/src/TSL/Debugger.js +1 -1
- package/src/TSL/Displacement.js +4 -3
- package/src/TSL/EmissiveSampling.js +65 -18
- package/src/TSL/Environment.js +77 -106
- package/src/TSL/EnvironmentCDF.js +85 -39
- package/src/TSL/ExtendKernel.js +8 -3
- package/src/TSL/FinalWriteKernel.js +4 -4
- package/src/TSL/GenerateKernel.js +18 -4
- package/src/TSL/HitFacet.js +35 -5
- package/src/TSL/LightBVHSampling.js +40 -9
- package/src/TSL/LightGenerateKernel.js +293 -0
- package/src/TSL/LightGuide.js +198 -0
- package/src/TSL/LightSplatKernel.js +165 -0
- package/src/TSL/LightVisibility.js +111 -0
- package/src/TSL/LightsCore.js +13 -38
- package/src/TSL/LightsDirect.js +28 -29
- package/src/TSL/LightsIndirect.js +3 -1
- package/src/TSL/LightsSampling.js +239 -51
- package/src/TSL/MaterialEvaluation.js +113 -31
- package/src/TSL/MaterialProperties.js +44 -17
- package/src/TSL/MaterialTransmission.js +52 -47
- package/src/TSL/MergeKernel.js +218 -0
- package/src/TSL/PathTracerCore.js +65 -29
- package/src/TSL/Random.js +5 -1
- package/src/TSL/SceneResources.js +51 -0
- package/src/TSL/ShadeKernel.js +964 -101
- package/src/TSL/Struct.js +10 -0
- package/src/TSL/Sun.js +1 -1
- package/src/TSL/TextureSampling.js +66 -61
- package/src/addons/archives.js +14 -0
- package/src/addons/bidirectional.js +13 -0
- package/src/addons/color.js +32 -0
- package/src/addons/formats.js +16 -0
- package/src/addons/physicalSky.js +14 -0
- package/src/addons/storage.js +19 -0
- package/src/core.js +31 -0
- package/src/index.js +13 -23
- package/src/integrators/BidirectionalIntegrator.js +833 -0
- package/src/managers/AnimationManager.js +88 -6
- package/src/managers/CameraManager.js +103 -46
- package/src/managers/DenoisingManager.js +14 -10
- package/src/managers/EnvironmentManager.js +125 -103
- package/src/managers/GoboManager.js +9 -0
- package/src/managers/MaterialDataManager.js +48 -37
- package/src/managers/UniformManager.js +32 -10
- package/dist/ToneMapGPU-B6XIe3DU.js +0 -544
- package/dist/rolldown-runtime-CAFD8bLK.js +0 -11
- 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 {
|
|
2
|
-
import {
|
|
1
|
+
import { n as e } from "./BidirectionalIntegrator-9lZQxFVH.js";
|
|
2
|
+
import { r as t } from "./Logger-dDDGj9Av.js";
|
|
3
|
+
import { n } from "./AssetConfig-DSEntE65.js";
|
|
4
|
+
import { t as r } from "./ToneMapGPU-CjU3osDd.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 } =
|
|
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:
|
|
143
|
-
return await this._packHDR(t,
|
|
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:
|
|
152
|
+
height: n
|
|
151
153
|
};
|
|
152
154
|
}
|
|
153
155
|
async readOutput() {
|
|
@@ -1,87 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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-9lZQxFVH.js";
|
|
2
|
+
import { t } from "./EngineEvents-Ci8dVWCP.js";
|
|
3
|
+
import { r as n } from "./Logger-dDDGj9Av.js";
|
|
4
|
+
import { n as r } from "./AssetConfig-DSEntE65.js";
|
|
5
|
+
import { t as i } from "./ToneMapGPU-CjU3osDd.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: () =>
|
|
77
|
-
readDenoisedHalf: () =>
|
|
78
|
-
releaseDenoisedReader: () =>
|
|
79
|
-
renderUpscaled: () =>
|
|
80
|
-
}),
|
|
81
|
-
function
|
|
82
|
-
if (
|
|
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,
|
|
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
|
-
}),
|
|
27
|
+
}), l) : Promise.reject(/* @__PURE__ */ Error("No neural model location: set neuralAssetBaseUrl with configureAssets()"));
|
|
93
28
|
}
|
|
94
|
-
var
|
|
95
|
-
function
|
|
96
|
-
if (
|
|
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
|
|
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:
|
|
53
|
+
code: d
|
|
119
54
|
}),
|
|
120
55
|
entryPoint: "main"
|
|
121
56
|
}
|
|
122
57
|
})
|
|
123
|
-
},
|
|
58
|
+
}, f;
|
|
124
59
|
}
|
|
125
|
-
function
|
|
126
|
-
|
|
60
|
+
function m() {
|
|
61
|
+
f?.storage.destroy(), f?.map.destroy(), f = null;
|
|
127
62
|
}
|
|
128
|
-
async function
|
|
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 =
|
|
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
|
|
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 ${
|
|
171
|
-
let i = await
|
|
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:
|
|
213
|
-
this._toneMapper ??= new
|
|
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(
|
|
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:
|
|
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
|
-
|
|
169
|
+
s.warn("super resolution teardown:", e);
|
|
235
170
|
}
|
|
236
171
|
}
|
|
237
172
|
}
|
|
238
173
|
};
|
|
239
|
-
function
|
|
240
|
-
return new Promise((
|
|
241
|
-
let o = !1, s = (
|
|
242
|
-
o || (o = !0, e.removeEventListener(
|
|
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) >=
|
|
179
|
+
(e.stages?.pathTracer?.frameCount ?? 0) >= n && (c = !0);
|
|
245
180
|
};
|
|
246
|
-
e.addEventListener(
|
|
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")),
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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:
|
|
281
|
-
return m.upscale = C, m.tonemap = w, o &&
|
|
282
|
-
rgba8:
|
|
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
|
|
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
|
|
298
|
-
return
|
|
232
|
+
function b(e, t, n, r) {
|
|
233
|
+
return y(e, t, n, r);
|
|
299
234
|
}
|
|
300
235
|
//#endregion
|
|
301
|
-
export {
|
|
236
|
+
export { v as i, c as n, o as r, a as t };
|