@aura3d/rendering 1.4.0 → 1.4.2

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 (308) hide show
  1. package/package.json +38 -4
  2. package/AGENTS.md +0 -46
  3. package/src/ArchitecturalLightingFixtures.ts +0 -241
  4. package/src/ArchitecturalMaterialCatalog.ts +0 -130
  5. package/src/ArchitecturalMeasurementFixtures.ts +0 -155
  6. package/src/BRDFLut.ts +0 -47
  7. package/src/CameraFraming.ts +0 -200
  8. package/src/CanonicalSceneFixtures.ts +0 -95
  9. package/src/CascadedShadowMaps.ts +0 -449
  10. package/src/ColorManagement.ts +0 -127
  11. package/src/CullingFixtures.ts +0 -280
  12. package/src/DecalGeometry.ts +0 -26
  13. package/src/DepthPass.ts +0 -110
  14. package/src/EnvironmentBackgroundPass.ts +0 -194
  15. package/src/EnvironmentBackgroundResources.ts +0 -309
  16. package/src/EnvironmentLighting.ts +0 -96
  17. package/src/EnvironmentMapResources.ts +0 -1026
  18. package/src/EnvironmentPipeline.ts +0 -69
  19. package/src/EnvironmentPlatform.ts +0 -1306
  20. package/src/EnvironmentPreset.ts +0 -155
  21. package/src/Exposure.ts +0 -66
  22. package/src/ExternalParityRenderPreset.ts +0 -725
  23. package/src/ForwardPass.ts +0 -1668
  24. package/src/FrameVisualMetrics.ts +0 -301
  25. package/src/Geometry.ts +0 -461
  26. package/src/GeometryPrimitives.ts +0 -2
  27. package/src/HDRRenderPipeline.ts +0 -94
  28. package/src/IBL.ts +0 -86
  29. package/src/IndexBuffer.ts +0 -57
  30. package/src/InstancedPBRMaterial.ts +0 -186
  31. package/src/InstancedUnlitMaterial.ts +0 -60
  32. package/src/Instancing.ts +0 -19
  33. package/src/LightCollector.ts +0 -82
  34. package/src/LightUniforms.ts +0 -47
  35. package/src/LightingDebug.ts +0 -80
  36. package/src/LightingDefaults.ts +0 -79
  37. package/src/LightingRig.ts +0 -301
  38. package/src/LineGeometry.ts +0 -2
  39. package/src/Material.ts +0 -209
  40. package/src/MaterialBinding.ts +0 -131
  41. package/src/MaterialInstance.ts +0 -59
  42. package/src/MaterialPresets.ts +0 -272
  43. package/src/MorphTarget.ts +0 -124
  44. package/src/MorphTargetPlan.ts +0 -178
  45. package/src/MorphUnlitMaterial.ts +0 -60
  46. package/src/NormalMappedPBRMaterial.ts +0 -188
  47. package/src/OceanFixtures.ts +0 -318
  48. package/src/PBRLightingDefaults.ts +0 -12
  49. package/src/PBRMaterial.ts +0 -442
  50. package/src/PMREM.ts +0 -53
  51. package/src/PbrReference.ts +0 -681
  52. package/src/PostProcessPass.ts +0 -2507
  53. package/src/ProceduralTextureFixtures.ts +0 -393
  54. package/src/ProductTurntableFixtures.ts +0 -815
  55. package/src/Raycaster.ts +0 -21
  56. package/src/ReflectionProbe.ts +0 -13
  57. package/src/ReflectionSurfaces.ts +0 -219
  58. package/src/RenderBackend.ts +0 -43
  59. package/src/RenderDebugViews.ts +0 -138
  60. package/src/RenderDevice.ts +0 -836
  61. package/src/RenderGraph.ts +0 -194
  62. package/src/RenderPass.ts +0 -27
  63. package/src/RenderPipeline.ts +0 -101
  64. package/src/RenderQueue.ts +0 -12
  65. package/src/RenderState.ts +0 -12
  66. package/src/Renderer.ts +0 -2631
  67. package/src/RendererDebugOverlay.ts +0 -80
  68. package/src/RendererFeatureGates.ts +0 -150
  69. package/src/RendererPostprocessPlan.ts +0 -279
  70. package/src/RendererTiming.ts +0 -251
  71. package/src/RendererVisualPipelineReport.ts +0 -836
  72. package/src/ResourceLifecycle.ts +0 -21
  73. package/src/Sampler.ts +0 -37
  74. package/src/SceneOptimization.ts +0 -518
  75. package/src/ShaderChunks.ts +0 -393
  76. package/src/ShaderLibrary.ts +0 -2766
  77. package/src/ShaderModule.ts +0 -36
  78. package/src/ShaderPreprocessor.ts +0 -260
  79. package/src/ShaderReflection.ts +0 -201
  80. package/src/ShadowMap.ts +0 -237
  81. package/src/ShadowPass.ts +0 -198
  82. package/src/ShadowProjection.ts +0 -115
  83. package/src/SkinnedLitMaterial.ts +0 -397
  84. package/src/SkinnedUnlitMaterial.ts +0 -63
  85. package/src/SkinningBounds.ts +0 -131
  86. package/src/SpaceEnvironmentFixtures.ts +0 -200
  87. package/src/SpriteGeometry.ts +0 -21
  88. package/src/StereoCameraRig.ts +0 -127
  89. package/src/StereoEffects.ts +0 -274
  90. package/src/TerrainFixtures.ts +0 -180
  91. package/src/Texture.ts +0 -307
  92. package/src/TextureBinding.ts +0 -91
  93. package/src/TexturedPBRMaterial.ts +0 -1112
  94. package/src/TexturedUnlitMaterial.ts +0 -67
  95. package/src/ToneMapping.ts +0 -105
  96. package/src/UniformBinder.ts +0 -16
  97. package/src/UniformLayout.ts +0 -129
  98. package/src/UnlitMaterial.ts +0 -75
  99. package/src/VegetationFixtures.ts +0 -314
  100. package/src/VertexBuffer.ts +0 -120
  101. package/src/VertexFormat.ts +0 -171
  102. package/src/VoxelWorldFixtures.ts +0 -280
  103. package/src/WeatherFixtures.ts +0 -223
  104. package/src/WebGL2Device.ts +0 -2280
  105. package/src/WebGL2StateCache.ts +0 -330
  106. package/src/WebGPUDevice.ts +0 -2877
  107. package/src/WebGPURenderToTextureProof.ts +0 -139
  108. package/src/advanced-runtime/AdvancedRenderer.ts +0 -73
  109. package/src/advanced-runtime/index.ts +0 -9
  110. package/src/animation/AnimationMaterialStyle.ts +0 -32
  111. package/src/animation/AnimationRenderPreset.ts +0 -45
  112. package/src/animation/AnimationToonMaterial.ts +0 -387
  113. package/src/animation/AnimationVisualQuality.ts +0 -71
  114. package/src/animation/applyAnimationRenderPreset.ts +0 -180
  115. package/src/animation/index.ts +0 -5
  116. package/src/cinematic/BloomPass.ts +0 -26
  117. package/src/cinematic/CinematicDepthComposition.ts +0 -30
  118. package/src/cinematic/CinematicEvidence.ts +0 -123
  119. package/src/cinematic/CinematicLightingRig.ts +0 -144
  120. package/src/cinematic/CinematicMaterialPresets.ts +0 -130
  121. package/src/cinematic/CinematicPostProcess.ts +0 -83
  122. package/src/cinematic/DepthHazePass.ts +0 -30
  123. package/src/cinematic/EmissivePracticalLightSystem.ts +0 -45
  124. package/src/cinematic/FilmGrainPass.ts +0 -24
  125. package/src/cinematic/FogVolumeSystem.ts +0 -30
  126. package/src/cinematic/GlowCardSystem.ts +0 -44
  127. package/src/cinematic/RainParticleSystem.ts +0 -151
  128. package/src/cinematic/VignettePass.ts +0 -25
  129. package/src/cinematic/WetReflectionApproximation.ts +0 -27
  130. package/src/cinematic/index.ts +0 -14
  131. package/src/effects/CollisionModule.ts +0 -64
  132. package/src/effects/ColorModule.ts +0 -60
  133. package/src/effects/ForceModule.ts +0 -25
  134. package/src/effects/GPUParticleBackend.ts +0 -569
  135. package/src/effects/Particle.ts +0 -108
  136. package/src/effects/ParticleDiagnostics.ts +0 -224
  137. package/src/effects/ParticleEffectPresets.ts +0 -147
  138. package/src/effects/ParticleEmitter.ts +0 -326
  139. package/src/effects/ParticleModule.ts +0 -26
  140. package/src/effects/ParticleRenderPass.ts +0 -117
  141. package/src/effects/ParticleRenderer.ts +0 -132
  142. package/src/effects/ParticleSystem.ts +0 -333
  143. package/src/effects/SizeModule.ts +0 -56
  144. package/src/effects/TrailModule.ts +0 -72
  145. package/src/effects/VelocityModule.ts +0 -75
  146. package/src/effects/index.ts +0 -15
  147. package/src/index.ts +0 -925
  148. package/src/materials/AlphaSorting.ts +0 -30
  149. package/src/materials/MaterialExtensions.ts +0 -42
  150. package/src/materials/PhysicalMaterial.ts +0 -133
  151. package/src/materials/TransmissionPass.ts +0 -51
  152. package/src/performance/BVH.ts +0 -18
  153. package/src/performance/Batcher.ts +0 -2
  154. package/src/performance/FrustumCuller.ts +0 -9
  155. package/src/performance/LOD.ts +0 -20
  156. package/src/performance/Octree.ts +0 -10
  157. package/src/performance/RenderItemSorting.ts +0 -170
  158. package/src/performance/RendererStats.ts +0 -43
  159. package/src/performance/ResourceBudget.ts +0 -44
  160. package/src/postprocess/BloomPass.ts +0 -28
  161. package/src/postprocess/CinematicDiagnostics.ts +0 -642
  162. package/src/postprocess/ColorGradingPass.ts +0 -24
  163. package/src/postprocess/DepthOfFieldPass.ts +0 -12
  164. package/src/postprocess/EffectComposer.ts +0 -349
  165. package/src/postprocess/SSAOPass.ts +0 -20
  166. package/src/postprocess/index.ts +0 -34
  167. package/src/production-runtime/AnimationControlsPipeline.ts +0 -77
  168. package/src/production-runtime/PBRHDRPipeline.ts +0 -381
  169. package/src/production-runtime/ProductionEffectsPipeline.ts +0 -85
  170. package/src/production-runtime/ProductionRendererTypes.ts +0 -136
  171. package/src/production-runtime/ProductionRuntimeRenderer.ts +0 -172
  172. package/src/production-runtime/ProductionWebGL2Renderer.ts +0 -313
  173. package/src/production-runtime/ProductionWebGPURenderer.ts +0 -396
  174. package/src/production-runtime/TransmissionBackdropCapture.ts +0 -130
  175. package/src/production-runtime/animation/MorphTargetRenderer.ts +0 -2
  176. package/src/production-runtime/animation/SkinningRenderer.ts +0 -2
  177. package/src/production-runtime/backends/RendererBackend.ts +0 -17
  178. package/src/production-runtime/backends/WebGL2RendererBackend.ts +0 -30
  179. package/src/production-runtime/backends/WebGPURendererBackend.ts +0 -24
  180. package/src/production-runtime/backends/webgl2/WebGL2Buffer.ts +0 -2
  181. package/src/production-runtime/backends/webgl2/WebGL2Capabilities.ts +0 -2
  182. package/src/production-runtime/backends/webgl2/WebGL2RenderTarget.ts +0 -2
  183. package/src/production-runtime/backends/webgl2/WebGL2Shader.ts +0 -2
  184. package/src/production-runtime/backends/webgl2/WebGL2StateCache.ts +0 -1
  185. package/src/production-runtime/backends/webgl2/WebGL2Texture.ts +0 -2
  186. package/src/production-runtime/backends/webgpu/WebGPUBuffer.ts +0 -2
  187. package/src/production-runtime/backends/webgpu/WebGPUCapabilities.ts +0 -2
  188. package/src/production-runtime/backends/webgpu/WebGPURenderTarget.ts +0 -2
  189. package/src/production-runtime/backends/webgpu/WebGPUShader.ts +0 -2
  190. package/src/production-runtime/backends/webgpu/WebGPUTexture.ts +0 -2
  191. package/src/production-runtime/color/ColorManagement.ts +0 -3
  192. package/src/production-runtime/color/ToneMapping.ts +0 -7
  193. package/src/production-runtime/diagnostics/FrameCapture.ts +0 -2
  194. package/src/production-runtime/diagnostics/GPUCapabilities.ts +0 -2
  195. package/src/production-runtime/diagnostics/RendererStats.ts +0 -2
  196. package/src/production-runtime/environment/EnvironmentMap.ts +0 -1
  197. package/src/production-runtime/environment/HDRLoader.ts +0 -57
  198. package/src/production-runtime/environment/PMREMGenerator.ts +0 -713
  199. package/src/production-runtime/framegraph/FrameGraph.ts +0 -18
  200. package/src/production-runtime/framegraph/RenderPass.ts +0 -15
  201. package/src/production-runtime/geometry/ProjectedDecalGeometry.ts +0 -439
  202. package/src/production-runtime/index.ts +0 -127
  203. package/src/production-runtime/lights/LightManager.ts +0 -7
  204. package/src/production-runtime/lights/ShadowMapRenderer.ts +0 -5
  205. package/src/production-runtime/materials/GLTFMaterialAdapter.ts +0 -6
  206. package/src/production-runtime/materials/GLTFPBRMaterialAdapter.ts +0 -2
  207. package/src/production-runtime/materials/MaterialCompiler.ts +0 -7
  208. package/src/production-runtime/materials/MaterialTextureBindings.ts +0 -5
  209. package/src/production-runtime/materials/PBRMaterial.ts +0 -2
  210. package/src/production-runtime/materials/PBRShaderFeatures.ts +0 -2
  211. package/src/production-runtime/passes/ContactShadowPass.ts +0 -184
  212. package/src/production-runtime/passes/DepthPrepass.ts +0 -7
  213. package/src/production-runtime/passes/OpaquePass.ts +0 -7
  214. package/src/production-runtime/passes/ShadowPass.ts +0 -7
  215. package/src/production-runtime/passes/SkyboxPass.ts +0 -7
  216. package/src/production-runtime/passes/ToneMappingPass.ts +0 -7
  217. package/src/production-runtime/passes/TransparentPass.ts +0 -7
  218. package/src/production-runtime/postprocess/BloomPass.ts +0 -51
  219. package/src/production-runtime/postprocess/ColorGradingPass.ts +0 -49
  220. package/src/production-runtime/postprocess/DOFPass.ts +0 -47
  221. package/src/production-runtime/postprocess/FXAAPass.ts +0 -53
  222. package/src/production-runtime/postprocess/ProductionEffectComposer.ts +0 -78
  223. package/src/production-runtime/postprocess/ProductionPostProcessTypes.ts +0 -174
  224. package/src/production-runtime/postprocess/SSAOPass.ts +0 -45
  225. package/src/production-runtime/resources/GPUBuffer.ts +0 -2
  226. package/src/production-runtime/resources/GPUTexture.ts +0 -2
  227. package/src/production-runtime/resources/RenderTarget.ts +0 -3
  228. package/src/production-runtime/resources/ResourceCache.ts +0 -7
  229. package/src/production-runtime/scene/Camera.ts +0 -1
  230. package/src/production-runtime/scene/Lights.ts +0 -2
  231. package/src/production-runtime/scene/RenderableMesh.ts +0 -2
  232. package/src/production-runtime/scene/RenderablePrimitive.ts +0 -1
  233. package/src/production-runtime/scene/RenderableScene.ts +0 -4
  234. package/src/production-runtime/shaders/ShaderProgramLibrary.ts +0 -7
  235. package/src/production-runtime/shaders/chunks/brdf.glsl +0 -2
  236. package/src/production-runtime/shaders/chunks/ibl.glsl +0 -3
  237. package/src/production-runtime/shaders/chunks/pbr.frag.glsl +0 -47
  238. package/src/production-runtime/shaders/chunks/pbr.vert.glsl +0 -8
  239. package/src/production-runtime/shaders/chunks/shadows.glsl +0 -2
  240. package/src/production-runtime/shaders/wgsl/pbr.wgsl +0 -3
  241. package/src/production-runtime/shaders/wgsl/postprocess.wgsl +0 -2
  242. package/src/production-runtime/shaders/wgsl/skybox.wgsl +0 -2
  243. package/src/shaders/depth.frag.glsl +0 -5
  244. package/src/shaders/depth.vert.glsl +0 -8
  245. package/src/shaders/pbr-direct.frag.glsl +0 -687
  246. package/src/shaders/pbr-direct.vert.glsl +0 -18
  247. package/src/shaders/unlit.frag.glsl +0 -18
  248. package/src/shaders/unlit.vert.glsl +0 -13
  249. package/src/shadows/CascadedShadowPipeline.ts +0 -53
  250. package/src/shadows/ContactShadows.ts +0 -106
  251. package/src/shadows/ShadowDebugViews.ts +0 -46
  252. package/src/threejs-compatibility/InstancingSystem.ts +0 -17
  253. package/src/threejs-compatibility/LightingSystem.ts +0 -22
  254. package/src/threejs-compatibility/MaterialSystem.ts +0 -9
  255. package/src/threejs-compatibility/RenderTargetSystem.ts +0 -35
  256. package/src/threejs-compatibility/RendererDiagnostics.ts +0 -61
  257. package/src/threejs-compatibility/SceneRenderer.ts +0 -34
  258. package/src/threejs-compatibility/ShadowSystem.ts +0 -19
  259. package/src/threejs-compatibility/TextureSystem.ts +0 -19
  260. package/src/threejs-compatibility/ThreeCompatRenderer.ts +0 -90
  261. package/src/threejs-compatibility/TransparencySystem.ts +0 -19
  262. package/src/threejs-compatibility/index.ts +0 -29
  263. package/src/threejs-compatibility/performance/BVH.ts +0 -14
  264. package/src/threejs-compatibility/performance/FrustumCulling.ts +0 -10
  265. package/src/threejs-compatibility/performance/Instancing.ts +0 -4
  266. package/src/threejs-compatibility/performance/LODSystem.ts +0 -16
  267. package/src/threejs-compatibility/performance/OcclusionCulling.ts +0 -6
  268. package/src/threejs-compatibility/performance/RaycastAcceleration.ts +0 -12
  269. package/src/threejs-compatibility/performance/RendererProfiler.ts +0 -19
  270. package/src/threejs-compatibility/performance/TextureStreaming.ts +0 -4
  271. package/src/threejs-compatibility/performance/index.ts +0 -12
  272. package/src/threejs-compatibility/postprocess/BloomPass.ts +0 -16
  273. package/src/threejs-compatibility/postprocess/ColorGradingPass.ts +0 -16
  274. package/src/threejs-compatibility/postprocess/DepthOfFieldPass.ts +0 -21
  275. package/src/threejs-compatibility/postprocess/EffectComposer.ts +0 -14
  276. package/src/threejs-compatibility/postprocess/FXAAPass.ts +0 -15
  277. package/src/threejs-compatibility/postprocess/MotionBlurPass.ts +0 -20
  278. package/src/threejs-compatibility/postprocess/OutlinePass.ts +0 -21
  279. package/src/threejs-compatibility/postprocess/PostProcessTypes.ts +0 -169
  280. package/src/threejs-compatibility/postprocess/RenderPass.ts +0 -9
  281. package/src/threejs-compatibility/postprocess/SMAAPass.ts +0 -15
  282. package/src/threejs-compatibility/postprocess/SSAOPass.ts +0 -21
  283. package/src/threejs-compatibility/postprocess/ShaderPass.ts +0 -7
  284. package/src/threejs-compatibility/postprocess/TAAPass.ts +0 -15
  285. package/src/threejs-compatibility/postprocess/VignettePass.ts +0 -16
  286. package/src/threejs-compatibility/postprocess/index.ts +0 -15
  287. package/src/threejs-compatibility/shaders/NodeMaterial.ts +0 -21
  288. package/src/threejs-compatibility/shaders/RawShaderMaterial.ts +0 -6
  289. package/src/threejs-compatibility/shaders/ShaderDiagnostics.ts +0 -17
  290. package/src/threejs-compatibility/shaders/ShaderMaterial.ts +0 -18
  291. package/src/threejs-compatibility/shaders/ThreeCompatShaderChunks.ts +0 -6
  292. package/src/threejs-compatibility/shaders/Uniforms.ts +0 -18
  293. package/src/threejs-compatibility/shaders/index.ts +0 -9
  294. package/src/threejs-compatibility/vfx/GPUPointCloud.ts +0 -7
  295. package/src/threejs-compatibility/vfx/LineRenderer.ts +0 -13
  296. package/src/threejs-compatibility/vfx/ParticleSystem.ts +0 -23
  297. package/src/threejs-compatibility/vfx/SpriteSystem.ts +0 -14
  298. package/src/threejs-compatibility/vfx/TrailRenderer.ts +0 -8
  299. package/src/threejs-compatibility/vfx/VFXDiagnostics.ts +0 -23
  300. package/src/threejs-compatibility/vfx/index.ts +0 -9
  301. package/src/threejs-example-parity/index.ts +0 -205
  302. package/src/webgpu/WebGPUBuffer.ts +0 -1
  303. package/src/webgpu/WebGPUCompute.ts +0 -2
  304. package/src/webgpu/WebGPUPipelineCache.ts +0 -15
  305. package/src/webgpu/WebGPUPostProcess.ts +0 -2
  306. package/src/webgpu/WebGPUTexture.ts +0 -2
  307. package/tsconfig.json +0 -26
  308. package/vitest.config.ts +0 -20
@@ -1,349 +0,0 @@
1
- import {
2
- applyToneMappingPreset,
3
- bloomPixels,
4
- chromaticAberrationPixels,
5
- colorGradePixels,
6
- depthOfFieldPixels,
7
- filmGrainPixels,
8
- fxaaPixels,
9
- motionBlurPixels,
10
- outlinePixels,
11
- ssaoPixels,
12
- ssrPixels,
13
- taaPixels,
14
- toneMapPixels,
15
- writePostProcessPixels,
16
- type BloomOptions,
17
- type ChromaticAberrationOptions,
18
- type ColorGradeOptions,
19
- type DepthOfFieldOptions,
20
- type FXAAOptions,
21
- type FilmGrainOptions,
22
- type MotionBlurOptions,
23
- type OutlineOptions,
24
- type SSAOOptions,
25
- type SSROptions,
26
- type TAAOptions,
27
- type ToneMappingOptions,
28
- type ToneMappingPresetName
29
- } from "../PostProcessPass";
30
- import { RenderDeviceError, type RenderDevice, type RenderTarget } from "../RenderDevice";
31
- import { type TextureFormat } from "../Texture";
32
-
33
- export type PostProcessComposerPass =
34
- | { readonly name: "bloom"; readonly options?: BloomOptions }
35
- | { readonly name: "tone-mapping"; readonly options?: ToneMappingOptions }
36
- | { readonly name: "tone-mapping-preset"; readonly preset: ToneMappingPresetName; readonly options?: { readonly previousExposure?: number; readonly deltaTimeSeconds?: number } & ToneMappingOptions }
37
- | { readonly name: "color-grade"; readonly options?: ColorGradeOptions }
38
- | { readonly name: "chromatic-aberration"; readonly options?: ChromaticAberrationOptions }
39
- | { readonly name: "film-grain"; readonly options?: FilmGrainOptions }
40
- | { readonly name: "depth-of-field"; readonly options: DepthOfFieldOptions }
41
- | { readonly name: "motion-blur"; readonly options: MotionBlurOptions }
42
- | { readonly name: "ssao"; readonly options: SSAOOptions }
43
- | { readonly name: "ssr"; readonly options: SSROptions }
44
- | { readonly name: "taa"; readonly options: TAAOptions }
45
- | { readonly name: "outline"; readonly options?: OutlineOptions }
46
- | { readonly name: "fxaa"; readonly options?: FXAAOptions };
47
-
48
- export interface PostProcessComposerOptions {
49
- readonly device: RenderDevice;
50
- readonly width: number;
51
- readonly height: number;
52
- readonly format?: Extract<TextureFormat, "rgba8">;
53
- readonly label?: string;
54
- }
55
-
56
- export interface PostProcessComposerRenderOptions {
57
- readonly source: RenderTarget;
58
- readonly target?: RenderTarget;
59
- readonly passes?: readonly PostProcessComposerPass[];
60
- }
61
-
62
- export interface PostProcessComposerDiagnostics {
63
- readonly width: number;
64
- readonly height: number;
65
- readonly passCount: number;
66
- readonly pingPongTargets: number;
67
- readonly textureCount: number;
68
- readonly lastPasses: readonly string[];
69
- readonly presentedToBackbuffer: boolean;
70
- readonly outputTargetLabel: string | null;
71
- }
72
-
73
- export interface PostProcessUnsupportedEffect {
74
- readonly name: string;
75
- readonly reason: string;
76
- readonly requiredCapability?: string;
77
- }
78
-
79
- export interface PostProcessCapabilityReport {
80
- readonly backend: string;
81
- readonly supportedEffects: readonly string[];
82
- readonly unsupportedEffects: readonly PostProcessUnsupportedEffect[];
83
- readonly supportsRenderTargets: boolean;
84
- readonly supportsPresentation: boolean;
85
- readonly supportsPixelReadback: boolean;
86
- readonly supportsFloatReadback: boolean;
87
- readonly supportsHdrTargets: boolean;
88
- readonly supportsRendererOwnedDepthEffects: boolean;
89
- }
90
-
91
- export class PostProcessComposer {
92
- private readonly device: RenderDevice;
93
- private readonly label: string;
94
- private width: number;
95
- private height: number;
96
- private passes: PostProcessComposerPass[] = [];
97
- private pingPongTargets: [RenderTarget, RenderTarget];
98
- private disposed = false;
99
- private lastDiagnostics: PostProcessComposerDiagnostics;
100
-
101
- constructor(options: PostProcessComposerOptions) {
102
- this.device = options.device;
103
- this.label = options.label ?? "postprocess-composer";
104
- validateComposerSize(options.width, options.height);
105
- this.width = options.width;
106
- this.height = options.height;
107
- this.pingPongTargets = this.createPingPongTargets(options.format ?? "rgba8");
108
- this.lastDiagnostics = this.createDiagnostics([], false, null);
109
- }
110
-
111
- addPass(pass: PostProcessComposerPass): this {
112
- this.assertAlive();
113
- this.passes.push(pass);
114
- return this;
115
- }
116
-
117
- setPasses(passes: readonly PostProcessComposerPass[]): this {
118
- this.assertAlive();
119
- this.passes = [...passes];
120
- return this;
121
- }
122
-
123
- clearPasses(): this {
124
- this.assertAlive();
125
- this.passes = [];
126
- return this;
127
- }
128
-
129
- resize(width: number, height: number): void {
130
- this.assertAlive();
131
- validateComposerSize(width, height);
132
- if (width === this.width && height === this.height) return;
133
- for (const target of this.pingPongTargets) target.dispose();
134
- this.width = width;
135
- this.height = height;
136
- this.pingPongTargets = this.createPingPongTargets("rgba8");
137
- this.lastDiagnostics = this.createDiagnostics([], false, null);
138
- }
139
-
140
- render(options: PostProcessComposerRenderOptions): PostProcessComposerDiagnostics {
141
- this.assertAlive();
142
- this.validateSource(options.source);
143
- if (options.target) this.validateTarget(options.target);
144
- const passes = options.passes ? [...options.passes] : [...this.passes];
145
- let current = options.source;
146
-
147
- if (passes.length === 0) {
148
- this.device.setRenderTarget(current);
149
- writePostProcessPixels(this.device, current, options.target, this.device.readPixels(0, 0, current.width, current.height));
150
- this.lastDiagnostics = this.createDiagnostics([], !options.target, options.target?.label ?? null);
151
- return this.lastDiagnostics;
152
- }
153
-
154
- for (let index = 0; index < passes.length; index += 1) {
155
- const pass = passes[index]!;
156
- const target = index === passes.length - 1 ? options.target : this.pingPongTargets[index % 2];
157
- this.device.setRenderTarget(current);
158
- const pixels = this.device.readPixels(0, 0, current.width, current.height);
159
- const output = executeComposerPass(pass, pixels, current.width, current.height);
160
- writePostProcessPixels(this.device, current, target, output);
161
- if (target) current = target;
162
- }
163
-
164
- this.lastDiagnostics = this.createDiagnostics(passes.map((pass) => pass.name), !options.target, options.target?.label ?? null);
165
- return this.lastDiagnostics;
166
- }
167
-
168
- getDiagnostics(): PostProcessComposerDiagnostics {
169
- return this.lastDiagnostics;
170
- }
171
-
172
- dispose(): void {
173
- if (this.disposed) return;
174
- for (const target of this.pingPongTargets) target.dispose();
175
- this.disposed = true;
176
- }
177
-
178
- private createPingPongTargets(format: Extract<TextureFormat, "rgba8">): [RenderTarget, RenderTarget] {
179
- return [
180
- this.device.createRenderTarget({ width: this.width, height: this.height, label: `${this.label}-ping`, format, depth: false }),
181
- this.device.createRenderTarget({ width: this.width, height: this.height, label: `${this.label}-pong`, format, depth: false })
182
- ];
183
- }
184
-
185
- private validateSource(source: RenderTarget): void {
186
- if (source.width !== this.width || source.height !== this.height) {
187
- throw new RenderDeviceError("PostProcessComposer source dimensions must match composer dimensions.", "POSTPROCESS_COMPOSER_SIZE_MISMATCH", {
188
- source: source.label,
189
- sourceWidth: source.width,
190
- sourceHeight: source.height,
191
- width: this.width,
192
- height: this.height
193
- });
194
- }
195
- }
196
-
197
- private validateTarget(target: RenderTarget): void {
198
- if (target.width !== this.width || target.height !== this.height) {
199
- throw new RenderDeviceError("PostProcessComposer target dimensions must match composer dimensions.", "POSTPROCESS_COMPOSER_SIZE_MISMATCH", {
200
- target: target.label,
201
- targetWidth: target.width,
202
- targetHeight: target.height,
203
- width: this.width,
204
- height: this.height
205
- });
206
- }
207
- }
208
-
209
- private createDiagnostics(lastPasses: readonly string[], presentedToBackbuffer: boolean, outputTargetLabel: string | null): PostProcessComposerDiagnostics {
210
- return {
211
- width: this.width,
212
- height: this.height,
213
- passCount: lastPasses.length,
214
- pingPongTargets: this.disposed ? 0 : 2,
215
- textureCount: this.disposed ? 0 : 2,
216
- lastPasses,
217
- presentedToBackbuffer,
218
- outputTargetLabel
219
- };
220
- }
221
-
222
- private assertAlive(): void {
223
- if (this.disposed) {
224
- throw new RenderDeviceError("PostProcessComposer is disposed.", "DISPOSED_RESOURCE", { label: this.label });
225
- }
226
- }
227
- }
228
-
229
- export function createPostProcessCapabilityReport(device: RenderDevice): PostProcessCapabilityReport {
230
- const capabilities = new Set(device.info.capabilities ?? []);
231
- const supportsRenderTargets = capabilities.has("render-targets");
232
- const supportsPresentation = capabilities.has("postprocess-presentation");
233
- const supportsPixelReadback = capabilities.has("pixel-readback");
234
- const supportsFloatReadback = capabilities.has("float-readback");
235
- const supportsHdrTargets = capabilities.has("hdr-render-targets");
236
- const supportsRendererOwnedDepthEffects = capabilities.has("depth-textures");
237
- const unsupportedEffects: PostProcessUnsupportedEffect[] = [];
238
- if (!supportsRenderTargets) {
239
- unsupportedEffects.push({
240
- name: "composer-render-target-chain",
241
- reason: "Postprocess composer requires backend render-target support.",
242
- requiredCapability: "render-targets"
243
- });
244
- }
245
- if (!supportsPresentation) {
246
- unsupportedEffects.push({
247
- name: "backbuffer-presentation",
248
- reason: "Final postprocess presentation requires a backend presentation path.",
249
- requiredCapability: "postprocess-presentation"
250
- });
251
- }
252
- if (!supportsPixelReadback) {
253
- unsupportedEffects.push({
254
- name: "cpu-pixel-postprocess",
255
- reason: "Current public composer kernels require byte pixel readback.",
256
- requiredCapability: "pixel-readback"
257
- });
258
- }
259
- if (!supportsRendererOwnedDepthEffects) {
260
- unsupportedEffects.push({
261
- name: "renderer-owned-depth-postprocess",
262
- reason: "Renderer-owned depth of field, SSAO, contact shadow, and SSR require sampleable depth render targets.",
263
- requiredCapability: "depth-textures"
264
- });
265
- }
266
- if (!supportsHdrTargets) {
267
- unsupportedEffects.push({
268
- name: "hdr-render-target-postprocess",
269
- reason: "HDR postprocess targets require backend HDR render-target support.",
270
- requiredCapability: "hdr-render-targets"
271
- });
272
- }
273
- if (!supportsFloatReadback) {
274
- unsupportedEffects.push({
275
- name: "hdr-float-readback-postprocess",
276
- reason: "HDR bloom and tone-map readback require float render-target readback.",
277
- requiredCapability: "float-readback"
278
- });
279
- }
280
- unsupportedEffects.push({
281
- name: "smaa",
282
- reason: "SMAA is not implemented in the public A3D postprocess pass catalog; use FXAA or TAA."
283
- });
284
-
285
- return {
286
- backend: device.info.backend,
287
- supportedEffects: [
288
- "bloom",
289
- "tone-mapping",
290
- "tone-mapping-preset",
291
- "color-grade",
292
- "chromatic-aberration",
293
- "film-grain",
294
- "depth-of-field-with-depth-binding",
295
- "motion-blur",
296
- "ssao-with-depth-binding",
297
- "ssr-with-depth-binding",
298
- "taa",
299
- "outline",
300
- "fxaa",
301
- "stereo-anaglyph",
302
- "stereo-parallax-barrier"
303
- ],
304
- unsupportedEffects,
305
- supportsRenderTargets,
306
- supportsPresentation,
307
- supportsPixelReadback,
308
- supportsFloatReadback,
309
- supportsHdrTargets,
310
- supportsRendererOwnedDepthEffects
311
- };
312
- }
313
-
314
- function executeComposerPass(pass: PostProcessComposerPass, pixels: Uint8Array, width: number, height: number): Uint8Array {
315
- switch (pass.name) {
316
- case "bloom":
317
- return bloomPixels(pixels, width, height, pass.options).pixels;
318
- case "tone-mapping":
319
- return toneMapPixels(pixels, width, height, pass.options).pixels;
320
- case "tone-mapping-preset":
321
- return applyToneMappingPreset(pixels, width, height, pass.preset, pass.options).pixels;
322
- case "color-grade":
323
- return colorGradePixels(pixels, width, height, pass.options).pixels;
324
- case "chromatic-aberration":
325
- return chromaticAberrationPixels(pixels, width, height, pass.options).pixels;
326
- case "film-grain":
327
- return filmGrainPixels(pixels, width, height, pass.options).pixels;
328
- case "depth-of-field":
329
- return depthOfFieldPixels(pixels, width, height, pass.options).pixels;
330
- case "motion-blur":
331
- return motionBlurPixels(pixels, width, height, pass.options).pixels;
332
- case "ssao":
333
- return ssaoPixels(pixels, width, height, pass.options).pixels;
334
- case "ssr":
335
- return ssrPixels(pixels, width, height, pass.options).pixels;
336
- case "taa":
337
- return taaPixels(pixels, width, height, pass.options).pixels;
338
- case "outline":
339
- return outlinePixels(pixels, width, height, pass.options).pixels;
340
- case "fxaa":
341
- return fxaaPixels(pixels, width, height, pass.options).pixels;
342
- }
343
- }
344
-
345
- function validateComposerSize(width: number, height: number): void {
346
- if (!Number.isInteger(width) || width <= 0 || !Number.isInteger(height) || height <= 0) {
347
- throw new RenderDeviceError("PostProcessComposer dimensions must be positive integers.", "INVALID_RENDER_TARGET_SIZE", { width, height });
348
- }
349
- }
@@ -1,20 +0,0 @@
1
- import { createDepthTextureBinding, ssaoPixels, type DepthTextureBinding, type SSAOOptions, type SSAOResult } from "../PostProcessPass";
2
-
3
- export function createExternalParityDepthBinding(width: number, height: number, data?: Float32Array): DepthTextureBinding {
4
- const depth = data ?? defaultDepth(width, height);
5
- return createDepthTextureBinding({ label: "external-parity-depth", width, height, data: depth });
6
- }
7
-
8
- export function runExternalParitySSAO(pixels: Uint8Array, width: number, height: number, options: Omit<SSAOOptions, "depth"> & { readonly depth?: DepthTextureBinding } = {}): SSAOResult {
9
- return ssaoPixels(pixels, width, height, { ...options, depth: options.depth ?? createExternalParityDepthBinding(width, height) });
10
- }
11
-
12
- function defaultDepth(width: number, height: number): Float32Array {
13
- const depth = new Float32Array(width * height);
14
- for (let y = 0; y < height; y += 1) {
15
- for (let x = 0; x < width; x += 1) {
16
- depth[y * width + x] = x > width * 0.35 && x < width * 0.65 && y > height * 0.35 && y < height * 0.65 ? 0.35 : 0.72;
17
- }
18
- }
19
- return depth;
20
- }
@@ -1,34 +0,0 @@
1
- export { PostProcessComposer, createPostProcessCapabilityReport } from "./EffectComposer";
2
- export type {
3
- PostProcessCapabilityReport,
4
- PostProcessComposerDiagnostics,
5
- PostProcessComposerOptions,
6
- PostProcessComposerPass,
7
- PostProcessComposerRenderOptions,
8
- PostProcessUnsupportedEffect
9
- } from "./EffectComposer";
10
- export { CINEMATIC_POSTPROCESS_EFFECT_IDS, analyzeCinematicPostprocessClarity, createCinematicDiagnosticsReport } from "./CinematicDiagnostics";
11
- export type {
12
- CinematicCapabilityArea,
13
- CinematicCapabilityEntry,
14
- CinematicCapabilityStatus,
15
- CinematicDiagnosticId,
16
- CinematicDiagnosticsBackendInfo,
17
- CinematicDiagnosticsReport,
18
- CinematicPostprocessClarityFinding,
19
- CinematicPostprocessClarityFindingId,
20
- CinematicPostprocessClarityInput,
21
- CinematicPostprocessClarityReport,
22
- CinematicPostprocessClaritySeverity,
23
- CinematicPostprocessClarityStatus,
24
- CinematicPostprocessFrameMetrics,
25
- CinematicPostprocessPipelineDescriptor,
26
- CinematicPostProcessEffectId
27
- } from "./CinematicDiagnostics";
28
-
29
- export { createExternalParityBloomEvidence, runExternalParityBloom } from "./BloomPass";
30
- export type { ExternalParityBloomEvidence } from "./BloomPass";
31
- export { runExternalParityColorGrade } from "./ColorGradingPass";
32
- export type { ExternalParityColorGradePreset } from "./ColorGradingPass";
33
- export { runExternalParityDepthOfField } from "./DepthOfFieldPass";
34
- export { createExternalParityDepthBinding, runExternalParitySSAO } from "./SSAOPass";
@@ -1,77 +0,0 @@
1
- import { computePerspectiveCameraFrame, type CameraFrameBounds, type PerspectiveCameraFrame } from "../CameraFraming";
2
-
3
- export interface ProductionAnimationMetadataInput {
4
- readonly assetId: string;
5
- readonly animationCount: number;
6
- readonly skinCount: number;
7
- readonly morphTargetCount: number;
8
- readonly primitiveCount: number;
9
- readonly materialCount: number;
10
- }
11
-
12
- export interface ProductionAnimationWorkflowSummary {
13
- readonly assetId: string;
14
- readonly importedAnimation: boolean;
15
- readonly skinningReady: boolean;
16
- readonly morphTargetsReady: boolean;
17
- readonly renderable: boolean;
18
- readonly warnings: readonly string[];
19
- }
20
-
21
- export interface ProductionOrbitControlPreset {
22
- readonly target: readonly [number, number, number];
23
- readonly distance: number;
24
- readonly yawRadians: number;
25
- readonly pitchRadians: number;
26
- readonly minDistance: number;
27
- readonly maxDistance: number;
28
- }
29
-
30
- export function summarizeProductionAnimationWorkflow(input: ProductionAnimationMetadataInput): ProductionAnimationWorkflowSummary {
31
- const importedAnimation = input.animationCount > 0;
32
- const skinningReady = input.skinCount > 0;
33
- const morphTargetsReady = input.morphTargetCount > 0;
34
- const renderable = input.primitiveCount > 0 && input.materialCount > 0;
35
- return {
36
- assetId: input.assetId,
37
- importedAnimation,
38
- skinningReady,
39
- morphTargetsReady,
40
- renderable,
41
- warnings: [
42
- ...(!importedAnimation ? ["No imported animation clips were detected."] : []),
43
- ...(!skinningReady && !morphTargetsReady ? ["No skinning or morph target deformation metadata was detected."] : []),
44
- ...(!renderable ? ["Asset is not renderable through the Production glTF render pipeline."] : [])
45
- ]
46
- };
47
- }
48
-
49
- export function createProductionOrbitControlPreset(
50
- bounds: CameraFrameBounds,
51
- viewport: { readonly width: number; readonly height: number },
52
- options: { readonly yawRadians?: number; readonly pitchRadians?: number; readonly paddingRatio?: number } = {}
53
- ): ProductionOrbitControlPreset & { readonly frame: PerspectiveCameraFrame } {
54
- const yawRadians = options.yawRadians ?? -0.42;
55
- const pitchRadians = options.pitchRadians ?? -0.18;
56
- const frame = computePerspectiveCameraFrame(bounds, viewport, {
57
- paddingRatio: options.paddingRatio ?? 0.18,
58
- yawRadians,
59
- pitchRadians,
60
- nearPadding: 0.18,
61
- farPadding: 2.4
62
- });
63
- const distance = Math.hypot(
64
- frame.cameraPosition[0] - frame.center[0],
65
- frame.cameraPosition[1] - frame.center[1],
66
- frame.cameraPosition[2] - frame.center[2]
67
- );
68
- return {
69
- target: [frame.center[0], frame.center[1], frame.center[2]],
70
- distance,
71
- yawRadians,
72
- pitchRadians,
73
- minDistance: Math.max(0.1, distance * 0.2),
74
- maxDistance: Math.max(2, distance * 4),
75
- frame
76
- };
77
- }