rayzee 6.4.0 → 7.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.
Files changed (58) hide show
  1. package/README.md +24 -5
  2. package/dist/rayzee.es.js +4953 -4225
  3. package/dist/rayzee.es.js.map +1 -1
  4. package/dist/rayzee.umd.js +157 -236
  5. package/dist/rayzee.umd.js.map +1 -1
  6. package/package.json +1 -1
  7. package/src/EngineDefaults.js +29 -13
  8. package/src/PathTracerApp.js +119 -26
  9. package/src/Pipeline/PipelineContext.js +1 -2
  10. package/src/Pipeline/RenderPipeline.js +1 -1
  11. package/src/Pipeline/RenderStage.js +1 -1
  12. package/src/Processor/CameraOptimizer.js +0 -5
  13. package/src/Processor/GeometryExtractor.js +22 -1
  14. package/src/Processor/KernelManager.js +277 -0
  15. package/src/Processor/PackedRayBuffer.js +265 -0
  16. package/src/Processor/QueueManager.js +173 -0
  17. package/src/Processor/SceneProcessor.js +1 -0
  18. package/src/Processor/ShaderBuilder.js +11 -316
  19. package/src/Processor/StorageTexturePool.js +29 -15
  20. package/src/Processor/TextureCreator.js +6 -0
  21. package/src/Processor/VRAMTracker.js +169 -0
  22. package/src/Processor/utils.js +11 -110
  23. package/src/RenderSettings.js +1 -3
  24. package/src/Stages/ASVGF.js +76 -20
  25. package/src/Stages/BilateralFilter.js +34 -10
  26. package/src/Stages/EdgeFilter.js +2 -3
  27. package/src/Stages/MotionVector.js +16 -9
  28. package/src/Stages/NormalDepth.js +17 -5
  29. package/src/Stages/PathTracer.js +671 -1456
  30. package/src/Stages/PathTracerStage.js +1451 -0
  31. package/src/Stages/SSRC.js +32 -15
  32. package/src/Stages/Variance.js +35 -12
  33. package/src/TSL/BVHTraversal.js +7 -1
  34. package/src/TSL/Common.js +12 -2
  35. package/src/TSL/CompactKernel.js +110 -0
  36. package/src/TSL/DebugKernel.js +98 -0
  37. package/src/TSL/Environment.js +13 -11
  38. package/src/TSL/ExtendKernel.js +75 -0
  39. package/src/TSL/FinalWriteKernel.js +121 -0
  40. package/src/TSL/GenerateKernel.js +109 -0
  41. package/src/TSL/LightsSampling.js +2 -2
  42. package/src/TSL/MaterialTransmission.js +32 -2
  43. package/src/TSL/PathTracerCore.js +43 -912
  44. package/src/TSL/ShadeKernel.js +873 -0
  45. package/src/TSL/Struct.js +5 -0
  46. package/src/TSL/Subsurface.js +232 -0
  47. package/src/TSL/patches.js +81 -4
  48. package/src/index.js +3 -0
  49. package/src/managers/CameraManager.js +1 -1
  50. package/src/managers/DenoisingManager.js +40 -75
  51. package/src/managers/EnvironmentManager.js +30 -39
  52. package/src/managers/MaterialDataManager.js +60 -1
  53. package/src/managers/OverlayManager.js +7 -22
  54. package/src/managers/UniformManager.js +1 -3
  55. package/src/managers/helpers/TileHelper.js +2 -2
  56. package/src/Stages/AdaptiveSampling.js +0 -483
  57. package/src/TSL/PathTracer.js +0 -384
  58. package/src/managers/TileManager.js +0 -298
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Rayzee Engine
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/rayzee?label=npm)](https://www.npmjs.com/package/rayzee)
4
- [![minzipped size](https://img.shields.io/badge/minzipped-148.8%20KB-blue)](https://www.npmjs.com/package/rayzee)
4
+ [![minzipped size](https://img.shields.io/badge/minzipped-155.1%20KB-blue)](https://www.npmjs.com/package/rayzee)
5
5
  [![downloads](https://img.shields.io/npm/dw/rayzee?label=downloads)](https://www.npmjs.com/package/rayzee)
6
6
  [![jsDelivr](https://img.shields.io/jsdelivr/npm/hm/rayzee?label=jsDelivr)](https://www.jsdelivr.com/package/npm/rayzee)
7
7
 
@@ -327,7 +327,6 @@ Key settings:
327
327
  | `focusDistance` | `number` | 0.8 | DOF focus distance |
328
328
  | `aperture` | `number` | 5.6 | DOF aperture (f-stop) |
329
329
  | `focalLength` | `number` | 50 | DOF focal length (mm) |
330
- | `adaptiveSampling` | `boolean` | false | Variance-guided sample distribution |
331
330
  | `transparentBackground` | `boolean` | false | Transparent canvas background |
332
331
  | `interactionModeEnabled` | `boolean` | true | Lower quality during camera movement for smoother navigation |
333
332
  | `debugMode` | `number` | 0 | Debug visualization mode (0 = off) |
@@ -429,7 +428,7 @@ engine.environmentManager.markDirty() // Flag environment for GPU re-uplo
429
428
 
430
429
  ### engine.denoisingManager
431
430
 
432
- Denoiser strategy, ASVGF, OIDN, upscaler, adaptive sampling, and auto-exposure.
431
+ Denoiser strategy, ASVGF, OIDN, upscaler, and auto-exposure.
433
432
 
434
433
  ```js
435
434
  // Strategy
@@ -437,14 +436,12 @@ engine.denoisingManager.setStrategy('asvgf', 'medium') // 'none' | 'asvgf' | 's
437
436
  engine.denoisingManager.setASVGFEnabled(true, 'medium')
438
437
  engine.denoisingManager.applyASVGFPreset('high') // 'low' | 'medium' | 'high'
439
438
  engine.denoisingManager.setAutoExposure(true)
440
- engine.denoisingManager.setAdaptiveSampling(true)
441
439
 
442
440
  // Fine-grained parameters
443
441
  engine.denoisingManager.setASVGFParams({ temporalAlpha: 0.1, phiColor: 10 })
444
442
  engine.denoisingManager.setSSRCParams({ temporalAlpha: 0.1, spatialRadius: 3 })
445
443
  engine.denoisingManager.setEdgeAwareParams({ pixelEdgeSharpness: 1.0 })
446
444
  engine.denoisingManager.setAutoExposureParams({ keyValue: 0.18 })
447
- engine.denoisingManager.setAdaptiveSamplingParams({ varianceThreshold: 0.01 })
448
445
 
449
446
  // OIDN & Upscaler
450
447
  engine.denoisingManager.setOIDNEnabled(true)
@@ -490,6 +487,7 @@ engine.setCanvasSize(1920, 1080) // Set explicit canvas dimensions
490
487
  engine.onResize() // Trigger manual resize recalculation
491
488
  engine.isComplete() // Check if rendering has converged
492
489
  engine.getFrameCount() // Get the current accumulated frame count
490
+ engine.getMemoryInfo() // GPU memory snapshot: { current, peak, byCategory } in bytes
493
491
  ```
494
492
 
495
493
  `screenshot()` returns a `Blob` for the host to save, upload, or display. To trigger a browser download:
@@ -504,6 +502,24 @@ URL.revokeObjectURL(url);
504
502
 
505
503
  ---
506
504
 
505
+ ### Memory Monitoring
506
+
507
+ Track GPU (VRAM) usage across the whole pipeline. Sizes are measured from live GPU resources (buffer `byteLength` + texture dimensions × format), so they are exact, not estimated.
508
+
509
+ ```js
510
+ const { current, peak, byCategory } = engine.getMemoryInfo(); // bytes
511
+ // byCategory: { rays, queues, gbuffer, accum, geometry, materials, environment, stages }
512
+
513
+ engine.vram.resetPeak(); // reset the high-water mark to the current value
514
+ engine.vram.getReport(); // formatted one-line summary string
515
+ ```
516
+
517
+ `peak` is a high-water mark, reset when a final render begins (`configureForMode('production')`). The engine's VRAM is largely monotonic — the ray pool only grows and the per-stage storage textures are fixed-size — so `peak` equals `current` during a steady render and only exceeds it after memory is released (lower resolution, a smaller scene, or removing the HDRI). The `stages` + `accum` categories (fixed 2048² storage textures) dominate the baseline.
518
+
519
+ The React app surfaces this as a `Memory: … | Peak: …` readout in the on-canvas stats overlay.
520
+
521
+ ---
522
+
507
523
  ### Events
508
524
 
509
525
  Subscribe to engine lifecycle events via `addEventListener`:
@@ -601,6 +617,9 @@ import {
601
617
  StageExecutionMode,
602
618
  PipelineContext,
603
619
  } from 'rayzee';
620
+
621
+ // VRAM accounting (VRAMTracker is also reachable as engine.vram)
622
+ import { VRAMTracker, bufferBytes, textureBytes } from 'rayzee';
604
623
  ```
605
624
 
606
625
  ## Browser Requirements