rayzee 10.0.0 → 11.1.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-Hn35o6Z5.js +5145 -0
- package/dist/AssetConfig-DSEntE65.js +30 -0
- package/dist/BidirectionalIntegrator-CBw8hkeu.js +946 -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-BzNpiVHZ.js} +8 -6
- package/dist/{NeuralSuperRes-PkgDLQcD.js → NeuralSuperRes-Bk7bHg2B.js} +55 -120
- package/dist/PathTracer-72XufKAr.js +29976 -0
- package/dist/PhysicalSky-BgjdV88k.js +1219 -0
- package/dist/RayzeeRenderer-1QRO97eq.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-tnAoUL1j.js +94 -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-C67jbci-.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 +20 -7
- package/src/Processor/ArchiveImporter.js +1265 -0
- package/src/Processor/ArchiveReader.js +22 -4
- 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 +254 -42
- package/src/Processor/PBRT/PBRTParser.js +49 -19
- package/src/Processor/PBRT/PBRTScattering.js +93 -0
- package/src/Processor/PBRT/PBRTSceneBuilder.js +1050 -75
- package/src/Processor/PBRT/PBRTTextureBake.js +179 -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/SceneMetadata.js +30 -5
- 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 +3900 -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 +336 -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 +208 -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 +167 -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 +180 -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 +224 -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 +985 -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 +838 -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
package/src/Platform.js
CHANGED
|
@@ -41,6 +41,14 @@ export function hardwareThreads() {
|
|
|
41
41
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
/** Whether images can be decoded: by the host's `decodeImage`, or the browser's own (a canvas or `createImageBitmap`). */
|
|
45
|
+
export function hasImageDecoder() {
|
|
46
|
+
|
|
47
|
+
return !! platform.decodeImage
|
|
48
|
+
|| ( typeof self !== 'undefined' && ( typeof createImageBitmap !== 'undefined' || typeof document !== 'undefined' ) );
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
44
52
|
/** Whether a worker can be started at all: the browser's or the host's. */
|
|
45
53
|
export function hasWorkers() {
|
|
46
54
|
|
|
@@ -53,6 +61,34 @@ export function hasWorkers() {
|
|
|
53
61
|
* themselves, so the host's class stands in for it while one is constructed.
|
|
54
62
|
* @param {new ( options?: Object ) => Worker} WorkerClass
|
|
55
63
|
*/
|
|
64
|
+
let lent = 0;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Runs `task` with the host's Worker as the global `Worker`, for code outside the engine that starts its
|
|
68
|
+
* own after awaiting — three's DRACOLoader and KTX2Loader, during a glTF parse. Lent only where there is
|
|
69
|
+
* no global one (a browser keeps its own); overlapping tasks share one loan.
|
|
70
|
+
* @template T
|
|
71
|
+
* @param {() => Promise<T>} task
|
|
72
|
+
* @returns {Promise<T>}
|
|
73
|
+
*/
|
|
74
|
+
export async function withHostWorker( task ) {
|
|
75
|
+
|
|
76
|
+
if ( ! platform.Worker || ( lent === 0 && typeof globalThis.Worker !== 'undefined' ) ) return task();
|
|
77
|
+
|
|
78
|
+
if ( lent ++ === 0 ) globalThis.Worker = platform.Worker;
|
|
79
|
+
|
|
80
|
+
try {
|
|
81
|
+
|
|
82
|
+
return await task();
|
|
83
|
+
|
|
84
|
+
} finally {
|
|
85
|
+
|
|
86
|
+
if ( -- lent === 0 && globalThis.Worker === platform.Worker ) delete globalThis.Worker;
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
56
92
|
export function createWorker( WorkerClass, options ) {
|
|
57
93
|
|
|
58
94
|
const Host = platform.Worker;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createTarIndexer } from './ArchiveReader.js';
|
|
2
|
-
import { ENGINE_AREAS } from '../Storage/
|
|
2
|
+
import { ENGINE_AREAS } from '../Storage/areas.js';
|
|
3
3
|
import { fileIdentity, identityKey } from '../Storage/identity.js';
|
|
4
4
|
import { ISSUE_CODES } from '../EngineIssues.js';
|
|
5
5
|
|
|
@@ -16,30 +16,43 @@ export async function archiveKey( kind, file ) {
|
|
|
16
16
|
/**
|
|
17
17
|
* Decompresses a .tar.gz into storage once, indexing it on the way, and hands back the unpacked
|
|
18
18
|
* .tar as a seekable File. A second call for the same file skips the work.
|
|
19
|
+
*
|
|
20
|
+
* With `filter` (and `part`, naming what it keeps) only the entries it keeps are written, end to end, and only they
|
|
21
|
+
* get offsets in the listing: a 31 GB scene archive need not fit to load the part of it chosen. An unpack of the whole
|
|
22
|
+
* archive serves any part.
|
|
19
23
|
* @returns {Promise<?{file: File, index: {v:number, listing:Array}, release: function(): void, cached: boolean}>}
|
|
20
24
|
* null when storage cannot take it — the caller reads the archive the old way.
|
|
21
25
|
*/
|
|
22
|
-
export async function unpackTarGz( file, { storage, label = file.name, onProgress = null } ) {
|
|
26
|
+
export async function unpackTarGz( file, { storage, label = file.name, onProgress = null, filter = null, part = null } ) {
|
|
23
27
|
|
|
24
28
|
if ( ! storage || typeof DecompressionStream === 'undefined' ) return null;
|
|
25
29
|
|
|
26
30
|
const area = storage.area( ENGINE_AREAS.ARCHIVES );
|
|
27
|
-
const
|
|
31
|
+
const whole = await archiveKey( 'gunzip', file );
|
|
32
|
+
let key = whole;
|
|
28
33
|
|
|
29
|
-
let entry = await area.open(
|
|
34
|
+
let entry = await area.open( whole );
|
|
35
|
+
if ( ! entry && filter ) entry = await area.open( key = `${whole}|${part}` );
|
|
30
36
|
const cached = !! entry;
|
|
31
37
|
|
|
32
38
|
if ( ! entry ) {
|
|
33
39
|
|
|
34
|
-
|
|
40
|
+
// A part's size is known only once its headers are read: a write past the quota falls back below.
|
|
41
|
+
const writer = await area.create( key, filter ? { label: `${label} (${part})` } : { label, expectedBytes: file.size * GUESSED_EXPANSION } );
|
|
35
42
|
if ( ! writer ) return null;
|
|
36
43
|
|
|
37
|
-
|
|
44
|
+
let out = null;
|
|
45
|
+
const indexer = createTarIndexer( filter ? { filter, sink: ( bytes ) => out.enqueue( bytes ) } : {} );
|
|
38
46
|
const tap = new TransformStream( {
|
|
47
|
+
start( controller ) {
|
|
48
|
+
|
|
49
|
+
out = controller;
|
|
50
|
+
|
|
51
|
+
},
|
|
39
52
|
transform( chunk, controller ) {
|
|
40
53
|
|
|
41
54
|
indexer.push( chunk );
|
|
42
|
-
controller.enqueue( chunk );
|
|
55
|
+
if ( ! filter ) controller.enqueue( chunk );
|
|
43
56
|
|
|
44
57
|
},
|
|
45
58
|
} );
|