@carbonenginejs/runtime 0.1.0-alpha.6 → 0.1.0-alpha.7

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.

Potentially problematic release.


This version of @carbonenginejs/runtime might be problematic. Click here for more details.

Files changed (92) hide show
  1. package/dist/global/consts/effectPaths.js +4 -1
  2. package/dist/global/consts/effectPaths.js.map +1 -1
  3. package/dist/global/consts/index.js +1 -1
  4. package/dist/global/index.js +1 -1
  5. package/dist/index.js +3 -3
  6. package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +19 -2
  7. package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
  8. package/dist/resource/format/index.js +1 -1
  9. package/dist/resource/formats/hlsl/core/carbonTypedViews.js +121 -65
  10. package/dist/resource/formats/hlsl/core/carbonTypedViews.js.map +1 -1
  11. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +10 -7
  12. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  13. package/dist/resource/formats/webgpu/core/effectBackendBodySet.js +3 -1
  14. package/dist/resource/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
  15. package/dist/resource/formats/webgpu/core/packageEffect.js +5 -0
  16. package/dist/resource/formats/webgpu/core/packageEffect.js.map +1 -1
  17. package/dist/resource/formats/webgpu/core/wgsl/emitWgsl.js +20 -0
  18. package/dist/resource/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -1
  19. package/dist/resource/formats/webgpu/core/wgsl/emulatedAddressing.js +93 -4
  20. package/dist/resource/formats/webgpu/core/wgsl/emulatedAddressing.js.map +1 -1
  21. package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +74 -64
  22. package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
  23. package/dist/resource/formats/webgpu/core/wgsl/lowerFragmentProgram.js +16 -7
  24. package/dist/resource/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -1
  25. package/dist/resource/formats/webgpu/core/wgsl/wgslTypedViews.js +69 -27
  26. package/dist/resource/formats/webgpu/core/wgsl/wgslTypedViews.js.map +1 -1
  27. package/dist/resource/geometry/registerGeometryResources.js +10 -1
  28. package/dist/resource/geometry/registerGeometryResources.js.map +1 -1
  29. package/dist/sof/EveSOFDNA.js +4 -2
  30. package/dist/sof/EveSOFDNA.js.map +1 -1
  31. package/dist/sof/EveSOFDataMgr.js +83 -69
  32. package/dist/sof/EveSOFDataMgr.js.map +1 -1
  33. package/dist/trinity/core/Tr2Denoiser.js +6 -1
  34. package/dist/trinity/core/Tr2Denoiser.js.map +1 -1
  35. package/dist/trinity/core/Tr2ShadowMap.js +7 -2
  36. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  37. package/dist/trinity/core/context/Tr2RenderContext.js +43 -0
  38. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  39. package/dist/trinity/core/device/Tr2GpuStructuredBuffer.js +134 -0
  40. package/dist/trinity/core/device/Tr2GpuStructuredBuffer.js.map +1 -0
  41. package/dist/trinity/core/index.js +1 -0
  42. package/dist/trinity/core/index.js.map +1 -1
  43. package/dist/trinity/core/lighting/Tr2LightManager.js +410 -124
  44. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  45. package/dist/trinity/eve/effect/lensflare/EveLensflare.js +303 -312
  46. package/dist/trinity/eve/effect/lensflare/EveLensflare.js.map +1 -1
  47. package/dist/trinity/eve/effect/lensflare/EveOccluder.js +117 -0
  48. package/dist/trinity/eve/effect/lensflare/EveOccluder.js.map +1 -0
  49. package/dist/trinity/eve/index.js +1 -0
  50. package/dist/trinity/eve/index.js.map +1 -1
  51. package/dist/trinity/eve/scene/EveSpaceScene.js +286 -6
  52. package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
  53. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +212 -32
  54. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
  55. package/dist/trinity/generated/eve/effect/index.js +0 -1
  56. package/dist/trinity/generated/eve/effect/index.js.map +1 -1
  57. package/dist/trinity/generated/eve/index.js +0 -1
  58. package/dist/trinity/generated/eve/index.js.map +1 -1
  59. package/dist/trinity/generated/index.js +0 -2
  60. package/dist/trinity/generated/index.js.map +1 -1
  61. package/dist/trinity/generated/trinityCore/index.js +0 -1
  62. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  63. package/dist/trinity/index.js +2 -2
  64. package/dist/trinity/postProcess/Tr2PostProcessRenderer.js +4 -1
  65. package/dist/trinity/postProcess/Tr2PostProcessRenderer.js.map +1 -1
  66. package/dist/trinity/postProcess/Tr2SSAO.js +282 -21
  67. package/dist/trinity/postProcess/Tr2SSAO.js.map +1 -1
  68. package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js +71 -53
  69. package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
  70. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +81 -18
  71. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  72. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +46 -4
  73. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  74. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +32 -1
  75. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
  76. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +27 -0
  77. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -1
  78. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +29 -4
  79. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  80. package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js +32 -2
  81. package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -1
  82. package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +57 -5
  83. package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -1
  84. package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js +111 -5
  85. package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -1
  86. package/docs/trinity/reference/classes/generated.md +20 -20
  87. package/docs/trinity/reference/classes/post-process.md +1 -1
  88. package/package.json +1 -1
  89. package/dist/trinity/generated/eve/effect/EveOccluder.js +0 -38
  90. package/dist/trinity/generated/eve/effect/EveOccluder.js.map +0 -1
  91. package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js +0 -48
  92. package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EveSpaceScene.js","sources":["../../../../../src/trinity/eve/scene/EveSpaceScene.js"],"sourcesContent":["// Source: trinity/trinity/Eve/EveSpaceScene.h\n// Source: trinity/trinity/Eve/EveSpaceScene.cpp\n//\n// Hand-maintained (promoted from src/trinity/generated/eve/scene; the generator skips it\n// while this file exists). Fields mirror the generated schema shell; the\n// additions are the per-frame update driver ported from Carbon\n// EveSpaceScene::Update and the scene-owned EveUpdateContext member (Carbon\n// m_updateContext - protected, so absent from the Blue schema scan).\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { EveEntity } from \"../EveEntity.js\";\nimport { EveComponentRegistry } from \"./components/EveComponentRegistry.js\";\nimport { Tr2PostProcess2 } from \"../../postProcess/Tr2PostProcess2.js\";\nimport { Tr2PostProcessAttributes } from \"../../postProcess/Tr2PostProcessAttributes.js\";\nimport { Tr2DataTextureManager } from \"../../shader/Tr2DataTextureManager.js\";\nimport { EveComponentType } from \"../EveComponentTypes.js\";\nimport { EveUpdateContext } from \"../EveUpdateContext.js\";\nimport { EveEffectRoot2 } from \"../spaceObject/EveEffectRoot2.js\";\nimport { EveCamera } from \"../camera/EveCamera.js\";\nimport { CjsPerFrameLayouts } from \"../../core/rawData/CjsPerFrameLayouts.js\";\nimport { PixelFormat, ShaderType, TextureType, Tr2GpuUsage } from \"#consts/render-context\";\nimport { Tr2SubresourceData } from \"#trinityal\";\nimport { RenderingMode, TriBatchType } from \"#consts/graphics\";\nimport { EffectKeyGenerator, TriRenderBatchAccumulator } from \"../../core/batch/TriRenderBatch/index.js\";\nimport { FillAndSetConstants } from \"../../core/Tr2RenderUtils.js\";\nimport { PER_FRAME_PS, PER_FRAME_VS, Tr2Renderer } from \"../../core/Tr2Renderer.js\";\nimport { Tr2OcclusionBuffer } from \"../effect/lensflare/Tr2OcclusionBuffer.js\";\nimport { Tr2VariableStore } from \"../../core/variable/Tr2VariableStore.js\";\nimport { Tr2TextureReference } from \"../../core/Tr2TextureReference.js\";\nimport { Tr2RingBuffer } from \"../../core/device/Tr2RingBuffer/Tr2RingBuffer.js\";\nimport { ResourceRequirement } from \"#resource\";\nimport { RawData } from \"../../core/rawData/RawData.js\";\nimport { Tr2ShadowMap } from \"../../core/Tr2ShadowMap.js\";\nimport { Tr2VolumetricsRenderer } from \"../../core/volumetrics/Tr2VolumetricsRenderer.js\";\nimport { convertProjectionCoordToWorldPickRay, screenToProjection } from \"../../core/view/pickRay.js\";\nimport { EveVisualizeMethod } from \"../../generated/eve/enums.js\";\nimport { ShadowQuality } from \"../../generated/trinityCore/enums.js\";\nimport { blue, EnumRegistrationType } from \"#blue\";\nimport \"./EveSpaceSceneRenderDriver.js\";\n\n\n// Module scratch for the per-frame sun-direction read (assume-dirty).\nconst sunDirectionScratch = vec3.create();\n\n// Module scratch for the per-frame constant fills. Two are needed because the\n// composed result and one operand are live at the same time; neither survives\n// the call that wrote it.\nconst perFrameMatrixScratch = mat4.create();\nconst perFrameLastProjectionScratch = mat4.create();\n\nconst ZERO_JITTER = vec4.create();\n\n/** Jitter's TAA sampling pattern, in pixels (EveSpaceScene.cpp:1269-1272). */\nconst JITTER_SAMPLING_PATTERNS = Object.freeze([\n Object.freeze([ 0.125, -0.375 ]),\n Object.freeze([ -0.125, 0.375 ]),\n Object.freeze([ 0.375, 0.125 ]),\n Object.freeze([ -0.375, -0.125 ])\n]);\n\n// EveSpaceScene.cpp:3196-3199 - the four froxel-fog slice distances, constant\n// every frame.\nconst VOLUMETRIC_SLICES = Object.freeze([1000, 10000, 100000, 1000000]);\n\n// Flip y and change the range from (-1, +1) to (0, 1): Carbon's\n// `ScalingMatrix(0.5, -0.5, 1) * TranslationMatrix(0.5, 0.5, 0)`\n// (EveSpaceScene.cpp:3179), pre-built because it never changes.\nconst SHADOW_CLIP_TO_UV = mat4.fromValues(\n 0.5, 0, 0, 0,\n 0, -0.5, 0, 0,\n 0, 0, 1, 0,\n 0.5, 0.5, 0, 1\n);\n\n// The scene-root parent transform for the visibility pass (Carbon\n// EveSpaceScene.cpp:1441 `const Matrix& identity = IdentityMatrix()`). Module\n// const, NEVER mutated - objects in m_objects are scene roots.\nconst IDENTITY = mat4.create();\n\n// ---------------------------------------------------------------------------\n// DRIVER-ORDER CONTRACT (per frame) - the CPU visibility/gather drive.\n// Carbon runs steps 5-12 inside EveSpaceScene::BeginRender/GatherBatches\n// (EveSpaceScene.cpp:1295-1427/1433-1525); CarbonEngineJS splits them into\n// scene-owned methods that an engine driver calls in this exact order:\n//\n// 1. Host stamps `updateContext.renderContext` (view -> derived inverse-view\n// + viewPos) and `updateContext.device`.\n// 2. Driver derives the frustum:\n// `frustum.DeriveFrustum(view, viewPos, projection, viewport)` from that\n// same renderContext state (Carbon cpp:476).\n// 3. `scene.StampFrameContext({ frustum, thresholds..., lodFactor,\n// raytracingEnabled })`.\n// 4. `scene.Update(realTime, simTime)` - internally ends with\n// `UpdatePostProcessAttributes()` then the sun-direction read (Carbon\n// cpp:584 -> 589).\n// 5. `scene.BlendLightingOverrides()` - BeginRender phase, before any gather\n// (Carbon cpp:1333, before GatherBatches cpp:1387).\n// 6. `scene.UpdateFogSettings()` - portable Trinity state production over\n// \"FroxelFogSettings\" (cpp:1365-1370). An engine realizes the later render\n// intent; it does not own this blend/update method.\n// 7. `scene.UpdateVisibility(updateContext.renderContext\n// .GetInverseViewTransform())` - the cpp:1443-1467 block.\n// 8. `const renderables = scene.GetRenderables([])` - pre-culled\n// (cpp:1470-1507 minus impostors).\n// 9. `batchManager.Collect(renderables, reason, updateContext.renderContext)`\n// - with engine-registered collectors covering Carbon's [QUADS]\n// (cpp:1509-1511) and [INSTANCED] (cpp:1516-1520; the instanced collector\n// reads \"InstancedMeshProvider\" from `scene.componentRegistry`);\n// `Finalize` inside Collect = Carbon FinalizeBatches cpp:1522.\n// 10. `scene.GatherLights(lightManager)` - AFTER step 9 (Carbon cpp:1396-1416\n// runs after GatherBatches cpp:1387).\n// 10b. `scene.UpdateShLighting(objects)` - the LAST thing Carbon's gather does\n// (cpp:1524), so every receiver's secondary-lighting coefficients are\n// current for the frame being submitted. Skipped entirely when the scene\n// carries no shLightingManager.\n// 10c. `scene.PopulatePerFramePSData(renderContext, frame, shadowMap)` then\n// `scene.PopulatePerFrameVSData(renderContext, frame)` - Carbon's order at\n// cpp:1424-1425, PS first, because the pixel fill is what resolves\n// m_upscalingAmount that the vertex fill then reads. Runs after GatherLights\n// so the blended sun colour is current. The engine binds the two records at\n// Tr2Renderer::GetPerFrame{VS,PS}StartRegister; their layouts are published\n// on the `/perframe` subpath.\n// 11. (driver) `for (const lf of scene.lensflares)\n// lf.PrepareRender(frustum)` (cpp:1419-1422). EveLensflare still needs that\n// Carbon method ported; its absence is an explicit driver-readiness gap,\n// not an optional capability to hide with a guarded call.\n// 12. (engine) reads registry collections directly: \"ShadowCaster\" (cascade\n// gate cpp:614-621, RT push cpp:1544-1547), \"VolumetricRenderable\",\n// \"FroxelFogSettings\", \"MeshMorph\" (engine may call\n// `scene.componentRegistry.Clear(\"MeshMorph\")` after bake),\n// \"ReflectionRenderable\" (secondary gather cpp:1886-1895).\n//\n// One-shot registration trigger: after graph build/mutation call\n// `scene.ReregisterEntities()` - covers objects + backgroundObjects + planets\n// (entity-guarded) + cameraAttachmentParent (cpp:4064-4089, matching what\n// OnListModified registers incrementally, cpp:3435-3491). uiObjects are\n// intentionally excluded everywhere (cpp:3462 gate) - Carbon never registers\n// or culls them.\n// ---------------------------------------------------------------------------\n\n/** Owns and updates an Eve space scene's entities, component registry, lighting, fog, post-process state, culling, and per-frame shader data. */\n@type.define({ className: \"EveSpaceScene\", family: \"eve/scene\" })\nexport class EveSpaceScene extends CjsModel\n{\n\n /** m_visualizeMethod (EveVisualizeMethod - enum EveVisualizeMethod) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.EveSpaceScene.EveVisualizeMethod\")\n visualizeMethod = 0;\n\n /** m_envMap1ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n envMap1ResPath = \"\";\n\n /** m_envMap2ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n envMap2ResPath = \"\";\n\n /** m_envMap3ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n envMap3ResPath = \"\";\n\n /** m_lowQualityNebulaResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n lowQualityNebulaResPath = \"\";\n\n /** m_lowQualityNebulaMixResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n lowQualityNebulaMixResPath = \"\";\n\n /** m_envMapResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n envMapResPath = \"\";\n\n /** m_fogColor (Color) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.color\n fogColor = vec4.fromValues(0.25, 0.25, 0.25, 1);\n\n /** m_sunData.DirWorld (Vector3) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.vec3\n sunDirection = vec3.fromValues(0, -1, 0);\n\n /** m_ambientColor (Color) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.color\n ambientColor = vec4.fromValues(0.25, 0.25, 0.25, 1);\n\n /** m_shLightingManager (Tr2ShLightingManagerPtr) [PERSISTONLY] */\n @edit.readwrite\n @edit.persistOnly\n @type.model(\"Tr2ShLightingManager\")\n shLightingManager = null;\n\n /** m_combinedPostProcessAttributes (Tr2PostProcessAttributesPtr) [READ] -\n * default-constructed like Carbon's ctor CreateInstance (cpp:297); refreshed\n * by UpdatePostProcessAttributes' re-export at MEDIUM_PRIORITY (cpp:407). */\n @edit.read\n @type.objectRef(\"Tr2PostProcessAttributes\")\n combinedPostProcessAttributes = new Tr2PostProcessAttributes();\n\n /** m_dataTextureMgr (Tr2DataTextureManagerPtr) [READ] */\n @edit.read\n @type.objectRef(\"Tr2DataTextureManager\")\n dataTextureMgr = new Tr2DataTextureManager();\n\n /** m_dynamicObjectReflectionEnabled (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n dynamicObjectReflectionEnabled = true;\n\n /** m_componentRegistry (EveComponentRegistryPtr) [READ] */\n @edit.read\n @type.objectRef(\"EveComponentRegistry\")\n componentRegistry = new EveComponentRegistry();\n\n /** m_cameraAttachmentParent (EveEffectRoot2Ptr) - protected Carbon scene\n * entity, default-constructed like Carbon's ctor CreateInstance (cpp:287, no\n * further setup applied). Consumers still optional-chain - deserialization\n * may null it. */\n @type.model(\"EveEffectRoot2\")\n cameraAttachmentParent = new EveEffectRoot2();\n\n /** m_postProcessDebug (BluePy) - protected Carbon debug payload. */\n @type.rawStruct(\"BluePy\")\n postProcessDebug = null;\n\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"TriCurveSet\")\n curveSets = [];\n\n /** m_defaultDiffuseRoughness (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n defaultDiffuseRoughness = 1;\n\n /** m_fogStart (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n fogStart = 0;\n\n /** m_fogEnd (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n fogEnd = 0;\n\n /** m_reflectionIntensity (float) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.float32\n reflectionIntensity = 1;\n\n /** m_distanceFields (PEveDistanceFieldVector) [READ] */\n @edit.read\n @type.list(\"EveDistanceField\")\n distanceFields = [];\n\n /** m_backgroundEffect (Tr2EffectPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"Tr2Effect\")\n backgroundEffect = null;\n\n /** m_backgroundReflectionIntensity (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n backgroundReflectionIntensity = 1;\n\n /** m_nebulaIntensity (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n nebulaIntensity = 1;\n\n /** m_display (bool) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.boolean\n display = true;\n\n /** m_backgroundRenderingEnabled (bool) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.boolean\n backgroundRenderingEnabled = false;\n\n /** m_update (bool) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.boolean\n update = true;\n\n /** m_impostorManager (Tr2ImpostorManagerPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"Tr2ImpostorManager\")\n impostorManager = null;\n\n /** m_lensflares (PEveLensflareVector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"EveLensflare\")\n lensflares = [];\n\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"Tr2ExternalParameter\")\n externalParameters = [];\n\n /** m_fogMax (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n fogMax = 0;\n\n /** m_staticParticles (PEveSceneStaticParticlesVector) [READ] */\n @edit.read\n @type.list(\"EveSceneStaticParticles\")\n staticParticles = [];\n\n /** m_debugRenderer (Tr2DebugRendererPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"Tr2DebugRenderer\")\n debugRenderer = null;\n\n /** m_objects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"IEveSpaceObject2\")\n objects = [];\n\n /** m_uiObjects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"IEveSpaceObject2\")\n uiObjects = [];\n\n /** m_backgroundObjects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"IEveSpaceObject2\")\n backgroundObjects = [];\n\n /** m_planets (PEvePlanetVector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"EvePlanet\")\n planets = [];\n\n /** m_rtManager (Tr2RaytracingManagerPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"Tr2RaytracingManager\")\n raytracingManager = null;\n\n /** m_reflectionBackLightingColor (Color) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.color\n reflectionBackLightingColor = vec4.fromValues(2, 2, 2, 2);\n\n /** m_reflectionBackLightingContrast (float) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.float32\n reflectionBackLightingContrast = 8;\n\n /** m_reflectionProbe (Tr2ReflectionProbePtr) [READWRITE, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @type.objectRef(\"Tr2ReflectionProbe\")\n reflectionProbe = null;\n\n /** m_volumetricsRenderer (Tr2VolumetricsRendererPtr) [READ] */\n @edit.read\n @type.objectRef(\"Tr2VolumetricsRenderer\")\n volumetricsRenderer = new Tr2VolumetricsRenderer();\n\n /** m_starfield (EveStarfieldPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"EveStarfield\")\n starfield = null;\n\n /** m_planetScale (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n planetScale = 1000000;\n\n /** m_planetCameraScale (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n planetCameraScale = 1000000;\n\n /** m_sssss (Tr2SSSSSPtr) [READ] */\n @edit.read\n @type.objectRef(\"Tr2SSSSS\")\n subSurfaceScattering = null;\n\n /** m_shadowQuality (ShadowQuality - enum ShadowQuality) [READWRITE, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.ShadowQuality\")\n shadowQualitySetting = 3;\n\n /** m_sunColor (Color) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.color\n sunDiffuseColor = vec4.fromValues(1, 1, 1, 1);\n\n /** m_sunColorWithDynamicLights (Color) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.color\n sunDiffuseColorWithDynamicLights = vec4.fromValues(1, 1, 1, 1);\n\n /** m_envMapRotation (Quaternion) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.quat\n envMapRotation = quat.create();\n\n /** m_ballpark (IEveBallparkPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"IEveBallpark\")\n ballpark = null;\n\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.string\n name = \"\";\n\n /** m_sunBall (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"ITriVectorFunction\")\n sunBall = null;\n\n /** m_sceneDefaultPostProcess (Tr2PostProcess2Ptr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"Tr2PostProcess2\")\n postprocess = null;\n\n /** m_virtualCameraSystem (EveVirtualCameraSystemPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"EveVirtualCameraSystem\")\n virtualCameraSystem = null;\n\n /** m_warpTunnel (IEveSpaceObject2Ptr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"IEveSpaceObject2\")\n warpTunnel = null;\n\n /** m_perFrameDebug (float) [READWRITE] */\n @edit.readwrite\n @type.float32\n perFrameDebug = 0;\n\n /** m_cascadedShadowMap (Tr2ShadowMapPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"Tr2ShadowMap\")\n cascadedShadowMap = null;\n\n /** m_updateTime (Be::Time) [READ] */\n @edit.read\n @type.float64\n updateTime = 0;\n\n /** m_useSunColorWithDynamicLights (bool) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.boolean\n useSunDiffuseColorWithDynamicLights = false;\n\n /** m_envMap1 (ITr2TextureProviderPtr) [READ] */\n @edit.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap1 = null;\n\n /** m_envMap2 (ITr2TextureProviderPtr) [READ] */\n @edit.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap2 = null;\n\n /** m_envMap3 (ITr2TextureProviderPtr) [READ] */\n @edit.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap3 = null;\n\n // Carbon m_updateContext (protected, absent from the Blue scan): the scene\n // owns ONE frame context, constructed once and re-stamped each Update. The\n // host/driver stamps updateContext.renderContext (camera view) + .device per\n // pass before calling Update - our explicit replacement for Carbon's\n // Tr2Renderer view statics.\n updateContext = new EveUpdateContext();\n\n // Carbon m_sceneDefaultPostProcessAttributes (EveSpaceScene.h:640, ctor\n // CreateInstance cpp:296): the scene default's attribute snapshot, refreshed\n // by UpdatePostProcessAttributes each frame.\n #sceneDefaultPostProcessAttributes = new Tr2PostProcessAttributes();\n\n // Carbon m_combinedPostProcess (EveSpaceScene.h:636): the merged output\n // post-process, lazily constructed on first combine (cpp:367-370).\n #combinedPostProcess = null;\n\n // Carbon m_currentSunColor / m_currentNebulaIntensity /\n // m_currentReflectionIntensity (EveSpaceScene.h:492-493/650, protected):\n // outputs of the BeginRender lighting-override blend (cpp:1360-1362).\n currentSunColor = vec4.fromValues(1, 1, 1, 1);\n\n currentNebulaIntensity = 1;\n\n currentReflectionIntensity = 1;\n\n // Carbon m_viewLast / m_projectionLast / m_jitterMatrix\n // (EveSpaceScene.h:296-297, protected): the previous frame's camera, which\n // the per-frame vertex block hands to the shader for motion vectors.\n viewLast = mat4.create();\n\n projectionLast = mat4.create();\n\n jitterMatrix = mat4.create();\n\n // Carbon m_jitter (EveSpaceScene.h:624) - xy: projection offset, zw: pixel\n // offset. The per-frame pixel block reports only whether it is non-zero.\n jitter = vec4.create();\n\n // Jitter writes jitterMatrix and jitter each frame, EndRender stores\n // viewLast and projectionLast, and EveSpaceSceneRenderDriver hands the\n // last-frame pair in and out around them (cpp:431-432, 597-598).\n\n // Carbon m_projection (the camera's unjittered projection, which EndRender\n // stores as next frame's projectionLast) and m_jitteredProjection (what the\n // frame draws with), both written by Jitter.\n projection = mat4.create();\n\n jitteredProjection = mat4.create();\n\n // Carbon m_upscalingAmount (EveSpaceScene.h:623, =1 by default at cpp:221).\n // Reset by the per-frame pixel fill and raised by an upscaler, if any.\n upscalingAmount = 1;\n\n // Carbon g_eveSpaceSceneDynamicLighting (registered setting\n // \"eveSpaceSceneDynamicLighting\", cpp:109-110, default false) - scoped to\n // the scene instead of a module global.\n dynamicLightingEnabled = false;\n\n // Carbon g_enablePostProcessDebugging (registered setting\n // \"enablePostProcessDebugging\", cpp:118-119, default false) - scoped to the\n // scene instead of a module global.\n enablePostProcessDebugging = false;\n\n /**\n * Stamps the per-frame frustum/threshold/LOD state onto the scene-owned\n * update context (Carbon EveSpaceScene::Update cpp:475-484, identical to the\n * already-updated fast path cpp:448-457). Carbon derives the frustum from\n * the Tr2Renderer view statics and reads the thresholds from console vars\n * divided by m_upscalingAmount (=1 by default, cpp:221); in CarbonEngineJS\n * the driver derives the frustum from the same renderContext state it\n * stamped and supplies the thresholds explicitly (pre-divided if it ever\n * upscales). Defaults are the Carbon console-var defaults (cpp:75-84).\n * The raytracing flag is Carbon's `m_shadowQuality == SHADOW_RAYTRACED &&\n * m_enableShadows` (cpp:457/484) - the driver computes it; the scene does\n * not. Stamps unconditionally: Carbon's same-frame fast path restamps\n * regardless of m_update (cpp:444-462); only the cold path skips stamping\n * when !m_update (cpp:466 precedes 475) - benign divergence.\n * @param {Object} [options]\n * @param {Object|null} [options.frustum] - a ready TriFrustum, held by reference\n * @param {Number} [options.visibilityThreshold]\n * @param {Number} [options.lowDetailThreshold]\n * @param {Number} [options.mediumDetailThreshold]\n * @param {Number} [options.highDetailThreshold]\n * @param {Number} [options.lodFactor]\n * @param {Boolean} [options.raytracingEnabled]\n */\n StampFrameContext({\n frustum = null,\n visibilityThreshold = 5,\n lowDetailThreshold = 100,\n mediumDetailThreshold = 400,\n highDetailThreshold = 800,\n lodFactor = 1,\n raytracingEnabled = false\n } = {})\n {\n const context = this.updateContext;\n context.SetFrustum(frustum);\n context.SetHighDetailThreshold(highDetailThreshold);\n context.SetMediumDetailThreshold(mediumDetailThreshold);\n context.SetLowDetailThreshold(lowDetailThreshold);\n context.SetVisibilityThreshold(visibilityThreshold);\n context.SetLodFactor(lodFactor);\n context.raytracingEnabled = !!raytracingEnabled;\n }\n\n /**\n * Per-frame scene update, ported from Carbon EveSpaceScene::Update: stamps the\n * scene-owned frame context (time, origin, data-texture manager), then drives\n * every collection in Carbon's order - background objects, warp tunnel,\n * starfield, static particles, data textures, distance fields, lensflares,\n * virtual camera system, curve sets, then all space/UI objects synchronous\n * first and asynchronous second (Carbon parallelizes the async pass on a task\n * group; JS runs it sequentially). Then combines the post-process attributes\n * (cpp:584) and finally reads the sun direction from the sun ball\n * (cpp:589-596).\n *\n * Adapted - deferred vs Carbon: the recording-frame dedup fast path,\n * frustum/threshold/LOD/raytracing stamping (now the driver's job via\n * StampFrameContext, called BEFORE Update), planet update (planet\n * view-matrix swap unported), and main-thread action flush (N/A).\n * @param {Number} realTime\n * @param {Number} simTime\n */\n @carbon.method\n @impl.adapted\n Update(realTime, simTime)\n {\n if (!this.update)\n {\n return;\n }\n\n const context = this.updateContext;\n context.SetTime(simTime);\n context.UpdateOrigin(this.ballpark);\n context.SetDataTextureManager(this.dataTextureMgr);\n\n for (const object of this.backgroundObjects)\n {\n object?.UpdateSyncronous(context);\n }\n for (const object of this.backgroundObjects)\n {\n object?.UpdateAsyncronous(context);\n }\n\n if (this.warpTunnel)\n {\n this.warpTunnel.UpdateSyncronous(context);\n this.warpTunnel.UpdateAsyncronous(context);\n }\n\n this.starfield?.Update?.(simTime);\n\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.Update(context);\n }\n\n this.dataTextureMgr?.Update(context);\n\n for (const distanceField of this.distanceFields)\n {\n distanceField?.Update(context);\n }\n\n for (const lensflare of this.lensflares)\n {\n lensflare?.Update(realTime, simTime);\n }\n\n this.virtualCameraSystem?.Update(realTime);\n\n for (const curveSet of this.curveSets)\n {\n curveSet.Update(realTime, simTime, context.renderContext);\n }\n\n for (const object of this.objects)\n {\n object?.UpdateSyncronous(context);\n }\n for (const object of this.uiObjects)\n {\n object?.UpdateSyncronous(context);\n }\n\n for (const object of this.objects)\n {\n object?.UpdateAsyncronous(context);\n }\n for (const object of this.uiObjects)\n {\n object?.UpdateAsyncronous(context);\n }\n\n // Combine the post-process attributes (Carbon cpp:584, after the async\n // pass + ExecuteMainThreadActions cpp:581 and before the sun read).\n this.UpdatePostProcessAttributes();\n\n // Sun direction from the sun ball: the normalized sun position, negated\n // (Carbon: m_sunData.DirWorld = -Normalize(sunDirection)).\n if (this.sunBall?.Update)\n {\n this.sunBall.Update(simTime, sunDirectionScratch);\n vec3.normalize(sunDirectionScratch, sunDirectionScratch);\n vec3.negate(this.sunDirection, sunDirectionScratch);\n }\n\n this.updateTime = simTime;\n }\n\n /** Carbon method PickObject (MAP_METHOD_AND_WRAP_OPTIONAL_ARGS). */\n @carbon.method\n @impl.notImplemented\n PickObject(...args)\n {\n throw new Error(\"EveSpaceScene.PickObject is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon method PickAsyncObject (MAP_METHOD_AND_WRAP_OPTIONAL_ARGS). */\n @carbon.method\n @impl.notImplemented\n PickAsyncObject(...args)\n {\n throw new Error(\"EveSpaceScene.PickAsyncObject is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon method PickObjectAndAreaID -> PyPickObjectAndAreaID (MAP_METHOD). */\n @carbon.method\n @impl.notImplemented\n PickObjectAndAreaID(...args)\n {\n throw new Error(\"EveSpaceScene.PickObjectAndAreaID is not implemented in CarbonEngineJS.\");\n }\n\n /**\n * Carbon EveSpaceScene::PickInfinity (cpp:4039-4050): the world-space\n * DIRECTION a screen pixel points along - the pick ray with nothing to hit,\n * which is what a click on empty space resolves to. Pure math, no readback.\n *\n * @param {Number} x - screen x, in pixels\n * @param {Number} y - screen y, in pixels\n * @param {Float32Array} projection - the projection matrix\n * @param {Float32Array} view - the view matrix\n * @param {Object} [viewport] - { x, y, width, height }; the frame's render\n * context supplies one when this is omitted\n * @param {Float32Array} [out] - caller-owned direction\n * @returns {Float32Array|null} the normalized world direction, or null when\n * either matrix cannot be inverted\n */\n @carbon.method\n @impl.implemented\n PickInfinity(x, y, projection, view, viewport = null, out = vec3.create())\n {\n const resolved = viewport ?? this.updateContext?.renderContext?.GetViewport?.();\n const projected = screenToProjection(x, y, resolved);\n const ray = convertProjectionCoordToWorldPickRay(projected.x, projected.y, projection, view);\n\n return ray ? vec3.copy(out, ray.direction) : null;\n }\n\n /**\n * The per-frame CPU visibility pass, ported from the [VISIBILITY] block of\n * Carbon EveSpaceScene::GatherBatches (EveSpaceScene.cpp:1443-1467; the\n * enclosing display gate is BeginRender cpp:1299-1302). Carbon's\n * Tr2ParallelDo loops (objects cpp:1445-1447, staticParticles cpp:1454-1456,\n * planets cpp:1458-1460) run sequentially in the same order; the lensflare\n * loop is sequential in Carbon too (cpp:1462-1466). LOD stamping (lodLevel,\n * isVisible, pixel diameters) happens INSIDE each object's UpdateVisibility;\n * per-object display gates live there too - the scene does not pre-filter.\n * uiObjects are never visited (Carbon never culls them). The camera parent's\n * SetTransform is pure decomposition (EveEffectRoot2.cpp:677-680 Decompose)\n * - no composition, so no row-vector operand swap here; this per-gather\n * Sync/Async pair is the camera parent's ONLY update, so its world transform\n * is the camera pose of the frame being gathered (cpp:1449-1452).\n * @param {Float32Array} inverseView - the inverse view matrix\n * (updateContext.renderContext.GetInverseViewTransform(); Carbon reads the\n * Tr2Renderer static at cpp:1449)\n */\n UpdateVisibility(inverseView)\n {\n if (!this.display)\n {\n return;\n }\n\n for (const object of this.objects)\n {\n object?.UpdateVisibility(this.updateContext, IDENTITY);\n }\n\n this.cameraAttachmentParent?.SetTransform?.(inverseView);\n this.cameraAttachmentParent?.UpdateSyncronous(this.updateContext);\n this.cameraAttachmentParent?.UpdateAsyncronous(this.updateContext);\n this.cameraAttachmentParent?.UpdateVisibility(this.updateContext, IDENTITY);\n\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.UpdateVisibility(this.updateContext);\n }\n\n for (const planet of this.planets)\n {\n planet?.UpdateZOnlyVisibility?.(this.updateContext);\n }\n\n // Sequential in Carbon too: \"until we have proper support for multiple\n // lensflares we just do it in a list\" (cpp:1462-1466).\n for (const lensflare of this.lensflares)\n {\n lensflare?.UpdateVisibility(this.updateContext);\n }\n }\n\n /** Gathers batchable renderables from the scene's objects for the batch\n * collection pass - the [GATHER] block of Carbon\n * EveSpaceScene::GatherBatches (EveSpaceScene.cpp:1470-1507): m_objects in\n * list order (cpp:1470-1475), then cameraAttachmentParent pushed LAST\n * (cpp:1476), then the staticParticles leg (cpp:1504-1507; Carbon signature\n * `GetRenderables(frustum, renderables)`, EveSceneStaticParticles.h - kept\n * with the out-parameter last per convention). Objects self-filter on the\n * visibility flags stamped by UpdateVisibility, so the array handed to\n * CjsBatchManager.Collect is pre-culled and this aggregation stays GPU-free.\n * The impostor-manager argument (cpp:1478-1502) is dropped - engine-owned.\n * Gather order matters downstream: the opaque accumulator receives batches\n * in gather order before Finalize sorts. */\n GetRenderables(out = [])\n {\n if (!this.display)\n {\n return out;\n }\n\n for (const object of this.objects) object?.GetRenderables(out);\n this.cameraAttachmentParent?.GetRenderables(out);\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.GetRenderables(this.updateContext.GetFrustum(), out);\n }\n return out;\n }\n\n /**\n * Refreshes the scene default's attribute snapshot, gathers every registered\n * PostProcessOwner's attributes, priority-blends them into the combined\n * post-process, copies the six engine effects through from the scene\n * default, and re-exports the result (Carbon\n * EveSpaceScene::UpdatePostProcessAttributes, EveSpaceScene.cpp:346-413).\n * Sort is descending by priority (cpp:372-377); Carbon's std::sort is\n * unstable while JS sort is stable - equal-priority ties keep registry\n * insertion order, which is blend-order-independent for every Sum-accumulated\n * attribute (the whole tie group is normalized together); only MaxWeight\n * ties at exactly equal weight (string paths / bools / DoF shape) could\n * differ from C++.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's g_enablePostProcessDebugging global becomes the scene-scoped enablePostProcessDebugging field; the debug payload is a plain object, null when off.\")\n UpdatePostProcessAttributes()\n {\n if (!this.display)\n {\n return;\n }\n\n // Scene default refreshed BEFORE the gather (cpp:354); FromPostProcess\n // handles a null postprocess (reset + return).\n this.#sceneDefaultPostProcessAttributes.FromPostProcess(\n this.postprocess, Tr2PostProcessAttributes.SCENE_DEFAULT_PRIORITY, 1.0);\n\n const sources = [];\n for (const owner of this.componentRegistry?.GetComponents(EveComponentType.PostProcessOwner) ?? [])\n {\n // Carbon pushes unguarded (cpp:358-361); JS ducks may return null.\n const attributes = owner?.GetPostProcessAttributes?.();\n if (attributes)\n {\n sources.push(attributes);\n }\n }\n\n // Scene default appended LAST (cpp:363).\n sources.push(this.#sceneDefaultPostProcessAttributes);\n\n // The list is never empty (default always pushed) so Carbon's else-branch\n // (cpp:411) is unreachable; the guard is kept for shape fidelity.\n if (sources.length)\n {\n this.#combinedPostProcess ??= new Tr2PostProcess2();\n\n sources.sort((a, b) => b.priority - a.priority);\n\n if (this.enablePostProcessDebugging)\n {\n const observer = Tr2PostProcessAttributes.CreateDebugObserver();\n Tr2PostProcessAttributes.MergeInto(this.#combinedPostProcess, sources, observer);\n this.postProcessDebug = observer.GetDict();\n }\n else\n {\n Tr2PostProcessAttributes.MergeInto(this.#combinedPostProcess, sources);\n this.postProcessDebug = null;\n }\n\n // Engine-effect copy-through from the scene default only - NOT blended\n // (cpp:389-406).\n if (this.postprocess)\n {\n this.#combinedPostProcess.SetDynamicExposure(this.postprocess.GetDynamicExposureIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetTaa(this.postprocess.GetTaaIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetTonemapping(this.postprocess.GetTonemappingIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetFog(this.postprocess.GetFogIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetGodRays(this.postprocess.GetGodRaysIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetGenericEffect(this.postprocess.GetGenericEffectIfAvailable?.() ?? null);\n }\n else\n {\n this.#combinedPostProcess.SetDynamicExposure(null);\n this.#combinedPostProcess.SetTaa(null);\n this.#combinedPostProcess.SetTonemapping(null);\n this.#combinedPostProcess.SetFog(null);\n this.#combinedPostProcess.SetGodRays(null);\n this.#combinedPostProcess.SetGenericEffect(null);\n }\n\n // Re-export the combined result as an attributes object at\n // MEDIUM_PRIORITY - consumed by nested-scene composition (cpp:407).\n (this.combinedPostProcessAttributes ??= new Tr2PostProcessAttributes())\n .FromPostProcess(this.#combinedPostProcess, Tr2PostProcessAttributes.MEDIUM_PRIORITY, 1.0);\n }\n else\n {\n this.#combinedPostProcess = null;\n }\n }\n\n /** Carbon method GetPostProcess (EveSpaceScene.cpp:420-427): the combined\n * post-process, or null while the scene is not displayed. */\n @carbon.method\n @impl.implemented\n GetPostProcess()\n {\n if (!this.display)\n {\n return null;\n }\n return this.#combinedPostProcess;\n }\n\n /**\n * Blends every registered EveLightingOverride against the scene baseline and\n * stamps currentSunColor / currentNebulaIntensity /\n * currentReflectionIntensity - the lighting-override block of Carbon\n * EveSpaceScene::BeginRender (EveSpaceScene.cpp:1333-1363). The baseline is\n * appended AFTER the sort at raw priority -1 - one below\n * SCENE_DEFAULT_PRIORITY=0, outside the legal enum range (Carbon casts -1,\n * cpp:1343) - so it always sits last. Scalar/color math only - no matrix\n * compositions, no row-vector swaps anywhere in this method. Same\n * stable-sort note as UpdatePostProcessAttributes - here fully benign, the\n * blend is symmetric within a tie group.\n */\n BlendLightingOverrides()\n {\n if (!this.display)\n {\n return;\n }\n\n const overrides = [];\n for (const component of this.componentRegistry?.GetComponents(EveComponentType.EveLightingOverride) ?? [])\n {\n overrides.push(component.GetOverrides());\n }\n overrides.sort((a, b) => b.priority - a.priority);\n\n // Baseline (cpp:1342-1357): the scene's own sun/nebula/reflection state,\n // sun color normalized by its max channel (all four components scaled).\n const sunColorSource = this.useSunDiffuseColorWithDynamicLights && this.dynamicLightingEnabled\n ? this.sunDiffuseColorWithDynamicLights\n : this.sunDiffuseColor;\n const sunIntensity = Math.max(sunColorSource[0], sunColorSource[1], sunColorSource[2]);\n const baselineSunColor = vec4.create();\n if (sunIntensity !== 0)\n {\n vec4.scale(baselineSunColor, sunColorSource, 1 / sunIntensity);\n }\n else\n {\n vec4.copy(baselineSunColor, sunColorSource);\n }\n overrides.push({\n priority: -1,\n intensity: 1,\n value: {\n sunColor: baselineSunColor,\n sunIntensity,\n backgroundIntensity: this.nebulaIntensity,\n reflectionIntensity: this.reflectionIntensity\n }\n });\n\n const over = EveSpaceScene.#SimplePriorityBlend(overrides);\n vec4.scale(this.currentSunColor, over.sunColor, over.sunIntensity);\n this.currentNebulaIntensity = over.backgroundIntensity;\n this.currentReflectionIntensity = over.reflectionIntensity;\n }\n\n /**\n * Runs Carbon's portable froxel-fog blend against the scene-owned registry\n * and update context. The frame driver calls this immediately after lighting\n * overrides and before visibility/gather.\n */\n @impl.custom\n @impl.reason(\"Carbon performs this inside BeginRender; CarbonEngineJS exposes the scene-owned CPU phase because the engine driver owns the surrounding frame order.\")\n UpdateFogSettings()\n {\n this.volumetricsRenderer.UpdateFogSettings(this.componentRegistry, this.updateContext);\n }\n\n /**\n * Drives the injected light manager through Carbon's dynamic-light gather\n * (EveSpaceScene::BeginRender, EveSpaceScene.cpp:1396-1416, AFTER\n * GatherBatches cpp:1387): shadow quality, clear (runs even with zero owners\n * - stale lights must drop), frustum, LOD cutoff, then every registered\n * LightOwner's GetLights (Carbon Tr2ParallelFor chunk-20 cpp:1405-1413; JS\n * sequential in collection order), then ResolveLightData. No JS\n * Tr2LightManager class exists - the manager is a duck and every manager\n * call is optional-chained so a partial duck still gets the owner loop.\n * Carbon runs the block only when a manager instance exists (dynamic\n * lighting on) - a null manager is a no-op. The recording frame number\n * Carbon passes to SetShadowQuality and the renderContext it passes to Clear\n * are engine recording state - the JS Clear receives the frame's\n * renderContext for ducks that want it.\n * @param {Object|null} lightManager\n */\n GatherLights(lightManager)\n {\n // Kept for the PS fill's shadow-atlas settings: Carbon reads them from the\n // Tr2LightManager singleton (cpp:3126-3137), which is not ported; the\n // manager this scene last gathered with is the same one.\n this.#lightManager = lightManager ?? null;\n\n if (!lightManager || !this.display)\n {\n return;\n }\n\n lightManager.SetShadowQuality(this.shadowQualitySetting);\n lightManager.Clear(this.updateContext.renderContext);\n lightManager.SetFrustum(this.updateContext.GetFrustum());\n lightManager.AdjustLightCutoff(this.updateContext.GetLodFactor());\n\n for (const owner of this.componentRegistry?.GetComponents(EveComponentType.LightOwner) ?? [])\n {\n owner?.GetLights?.(lightManager);\n }\n\n lightManager.ResolveLightData();\n }\n\n /**\n * Carbon EveSpaceScene::UpdateShLighting (cpp:1685-1703): hands every\n * secondary-lighting receiver the scene's SH manager, so each one samples the\n * bounce light at its own position. A scene with no manager does nothing, as\n * Carbon does.\n *\n * Carbon runs this at the very END of the gather (cpp:1524, after\n * FinalizeBatches), and over a parallel range; the JS pass is sequential\n * because the receivers write only their own records and share no state.\n *\n * @param {Array} objects - the frame's visible objects\n * @returns {Number} how many receivers were updated\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's Tr2ParallelFor becomes a sequential pass; the receivers touch only their own per-object records.\")\n UpdateShLighting(objects = [])\n {\n if (!this.shLightingManager)\n {\n return 0;\n }\n\n let updated = 0;\n\n for (const object of objects)\n {\n if (typeof object?.UpdateShLighting !== \"function\")\n {\n continue;\n }\n object.UpdateShLighting(this.shLightingManager, this.updateContext);\n updated++;\n }\n\n return updated;\n }\n\n /**\n * The scene's own per-frame vertex record (Carbon m_perFrameVS,\n * EveSpaceScene.h:300). Persistent, not arena-leased: it is rewritten each\n * frame and bound once, and the PS fill reads m_upscalingAmount back out of\n * the same pass.\n */\n #perFrameVS = RawData.create(\"EveSpaceScenePerFrameVSData\");\n\n /** Carbon m_perFramePS (EveSpaceScene.h:240). */\n #perFramePS = RawData.create(\"EveSpaceScenePerFramePSData\");\n\n /** The record PopulatePerFrameVSData fills. */\n GetPerFrameVSData()\n {\n return this.#perFrameVS;\n }\n\n /** The record PopulatePerFramePSData fills. */\n GetPerFramePSData()\n {\n return this.#perFramePS;\n }\n\n /**\n * Carbon RunLensflareOcclusionQueries (cpp:2782-2789): every lensflare's\n * foreground occlusion queries, then the occlusion buffer's per-frame\n * compute - unconditionally, as Carbon runs it with no lensflares too.\n *\n * @param {object} _depthMap The scene depth; unused by Carbon's body too.\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n RunLensflareOcclusionQueries(_depthMap, renderContext)\n {\n for (const lensflare of this.lensflares) lensflare.RunOcclusionQueries(renderContext, this.updateContext);\n Tr2OcclusionBuffer.getInstance().ProcessBuffer(renderContext);\n }\n\n // THE SCENE'S GLOBAL TEXTURES (EveSpaceScene.cpp:252-261). Carbon registers\n // each with a TYPED null - `(ITr2TextureProvider*)nullptr` - so the name is a\n // texture variable before anything fills it; a JS null has no type, so an\n // empty Tr2TextureReference stands for it (as the blitter's BlitSource).\n // Effects bind these by name when their materials map, so they exist from\n // construction.\n\n /** m_envMapHandle: \"EveSpaceSceneEnvMap\", the reflection (probe or nebula). */\n #envMapHandle = Tr2VariableStore.GlobalStore().RegisterVariable(\"EveSpaceSceneEnvMap\", new Tr2TextureReference());\n\n /** m_staticEnvMapHandle: \"EveSpaceSceneStaticEnvMap\", the nebula itself. */\n #staticEnvMapHandle = Tr2VariableStore.GlobalStore().RegisterVariable(\"EveSpaceSceneStaticEnvMap\", new Tr2TextureReference());\n\n /** \"SSAOMap\", registered empty (cpp:256); the driver fills it when SSAO runs. */\n #ssaoMapHandle = Tr2VariableStore.GlobalStore().RegisterVariable(\"SSAOMap\", new Tr2TextureReference());\n\n /**\n * Carbon's free function RegisterWithVariableStore (EveSpaceScene.cpp:4253-4266,\n * declared EveSpaceScene.h:725): publishes the shadow pass's four textures as\n * globals. Where a pass produced no screen-space shadow, a persistent white\n * 1x1 R8 \"EmptyShadow\" stands in, and a white R8_UINT \"EmptyShadowUint\" for\n * the point-light indices, so an unshadowed frame samples \"fully lit\"\n * rather than the backend's zero dummy. The two depth atlases go in as they\n * are, empty included.\n *\n * A texture variable holds a provider here, not a bare AL texture, so each\n * name is published through its own Tr2TextureReference, as the driver\n * publishes DepthMap.\n *\n * @param {object} shadowResources Carbon's EveSpaceScene::ShadowResources:\n * `shadowMap`, `cascadedShadowDepth`, `pointLightShadowMap` and\n * `pointLightShadowDepth`, each a GpuResourceHandle, empty when absent.\n * @param {Tr2GpuResourcePool} gpuResourcePool The driver's pool.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n static registerWithVariableStore(shadowResources, gpuResourcePool)\n {\n const store = Tr2VariableStore.GlobalStore();\n const references = EveSpaceScene.#shadowReferences;\n\n const publish = (name, texture) =>\n {\n references[name].SetTexture(texture);\n store.RegisterVariable(name, references[name]);\n };\n\n const emptyShadow = (name, format) =>\n {\n const handle = gpuResourcePool.GetPersistentTexture(name, {\n type: TextureType.TEX_TYPE_2D,\n width: 1,\n height: 1,\n depth: 1,\n mipCount: 1,\n format,\n gpuUsage: Tr2GpuUsage.SHADER_RESOURCE,\n initialData: [ new Tr2SubresourceData(new Uint8Array([ 255 ]), 1, 1) ]\n });\n const texture = handle.Get();\n gpuResourcePool.Free(handle);\n return texture;\n };\n\n publish(\"EveSpaceSceneShadowMap\", shadowResources.shadowMap.IsValid()\n ? shadowResources.shadowMap.Get()\n : emptyShadow(\"EmptyShadow\", PixelFormat.PIXEL_FORMAT_R8_UNORM));\n publish(\"EveSpaceSceneCascadedShadowMap\", shadowResources.cascadedShadowDepth.Get());\n publish(\"EveSpaceSceneDynamicShadowMap\", shadowResources.pointLightShadowMap.IsValid()\n ? shadowResources.pointLightShadowMap.Get()\n : emptyShadow(\"EmptyShadowUint\", PixelFormat.PIXEL_FORMAT_R8_UINT));\n publish(\"ShadowMapAtlas\", shadowResources.pointLightShadowDepth.Get());\n }\n\n /** The providers registerWithVariableStore publishes through, one per name. */\n static #shadowReferences = {\n EveSpaceSceneShadowMap: new Tr2TextureReference(),\n EveSpaceSceneCascadedShadowMap: new Tr2TextureReference(),\n EveSpaceSceneDynamicShadowMap: new Tr2TextureReference(),\n ShadowMapAtlas: new Tr2TextureReference()\n };\n\n /** m_envMapTextureRes / m_staticEnvMapTextureRes, set by Initialize. */\n #envMapTextureRes = null;\n\n #staticEnvMapTextureRes = null;\n\n /**\n * Carbon Initialize (cpp:3207-3226), with the constructor's ring-buffer\n * registrations (cpp:257-258) moved here. The nebula loads from\n * envMapResPath; the reflection is the probe's cube when the scene has a\n * valid probe, else the nebula.\n *\n * The render context is an ADDED argument: Carbon's constructor reaches the\n * BoneTransforms ring through the process-wide context, and a JS scene is\n * constructed before any context exists, so the ring is registered here.\n *\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {boolean} True.\n */\n @carbon.method\n @impl.adapted\n Initialize(renderContext)\n {\n const bones = Tr2RingBuffer.GetInstance(\"Float4x3\", 48, renderContext);\n bones.SetName(\"BoneTransformsBuffer\");\n Tr2VariableStore.GlobalStore().RegisterVariable(\"BoneTransforms\", bones);\n\n this.#staticEnvMapTextureRes = this.envMapResPath\n ? blue.resMan.GetResource(this.envMapResPath, { requirement: ResourceRequirement.TEXTURE })\n : null;\n\n if (this.reflectionProbe && this.reflectionProbe.IsValid(renderContext))\n {\n this.#envMapTextureRes = this.reflectionProbe.GetReflection();\n this.reflectionProbe.SetBackLightColor(this.reflectionBackLightingColor);\n this.reflectionProbe.SetBackLightContrast(this.reflectionBackLightingContrast);\n }\n else\n {\n this.#envMapTextureRes = this.#staticEnvMapTextureRes;\n }\n\n return true;\n }\n\n /**\n * Carbon UpdateVariableStore's environment-map half (cpp:2984-2993): the\n * nebula and the reflection go through the global store each frame.\n *\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n UpdateVariableStore()\n {\n this.#staticEnvMapHandle.SetValue(this.#staticEnvMapTextureRes);\n this.#envMapHandle.SetValue(this.#envMapTextureRes);\n }\n\n /** The Tr2LightManager GatherLights last ran with; see #EngineFrameState. */\n #lightManager = null;\n\n /**\n * The engine state Carbon's per-frame fills read from Tr2Renderer statics\n * and the effect state manager (EveSpaceScene.cpp:3018-3205): render-target\n * size and device viewport (3045-3046, 3060), animation time (3066, 3118),\n * frame counter (3121), gamma (3099), the non-reversed projection and\n * aspect ratio for FovXY (3049-3050; s_aspectRatio is _22/_11,\n * Tr2Renderer.cpp:80), the scene post process's mip bias (3161-3164) and\n * the light manager's shadow atlas (3126-3137).\n *\n * The fills keep a `frame` argument whose fields OVERRIDE these, for\n * callers that drive a frame without a live device; with none passed, every\n * value is the engine's, as Carbon's is. Until 2026-09-26 the driver passed\n * nothing and every field fell to zero: Time and FrameIndex frozen,\n * GammaBrightness 0, FovXY and TargetResolution 0.\n *\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {object} The frame fields.\n */\n #EngineFrameState(renderContext)\n {\n const esm = renderContext.GetEffectStateManager();\n const projection = renderContext.GetProjection();\n const atlas = this.#lightManager ? this.#lightManager.GetShadowMapAtlasSettings() : null;\n\n return {\n renderTargetWidth: esm.renderTargetWidth,\n renderTargetHeight: esm.renderTargetHeight,\n deviceViewport: esm.GetDeviceViewport(),\n animationTime: Tr2Renderer.GetAnimationTime(),\n frameIndex: Number(Tr2Renderer.GetCurrentFrameCounter()) >>> 0,\n gammaBrightness: EveSpaceScene.eveSpaceSceneGammaBrightness,\n projectionTransform: projection,\n aspectRatio: projection && projection[0] ? projection[5] / projection[0] : 1,\n sceneMipLodBias: this.postprocess ? this.postprocess.GetMipLodBias() : 0,\n inverseShadowMapAtlasSize: atlas && atlas.actualTextureSize > 0 ? 1 / atlas.actualTextureSize : 0,\n shadowMapAtlasEntryMinSizeLog2: atlas ? atlas.entryMinSizeLog2 : 0\n };\n }\n\n /** Carbon m_perFrameVSBuffer / m_perFramePSBuffer: created empty on first apply, sized by FillAndSetConstants. */\n #perFrameVSBuffer = null;\n\n #perFramePSBuffer = null;\n\n /**\n * Carbon EveSpaceScene::Jitter (cpp:1253-1291), called from BeginRender\n * (cpp:1329): the frame's sub-pixel projection offset for TAA.\n *\n * With TAA on the scene's default post process, a FIXED 4-SAMPLE PATTERN\n * (not Halton) indexed by the recording frame number, scaled to clip space\n * by the bound target's size; otherwise identity. Carbon's\n * `m_projection * m_jitterMatrix` is row-vector, so gl-matrix multiplies the\n * other way round: the offset is applied after the projection.\n *\n * Adapted: Carbon's first branch takes a temporal upscaler's jitter\n * (cpp:1257-1264). No upscaler is ported, so it is absent.\n *\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n Jitter(renderContext)\n {\n mat4.copy(this.projection, renderContext.GetProjection());\n\n if (this.postprocess && this.postprocess.GetTaaIfAvailable() !== null)\n {\n const esm = renderContext.GetEffectStateManager();\n const sample = JITTER_SAMPLING_PATTERNS[renderContext.GetRecordingFrameNumber() % JITTER_SAMPLING_PATTERNS.length];\n\n this.jitter[0] = Math.fround(2 * sample[0] / esm.renderTargetWidth);\n this.jitter[1] = Math.fround(2 * sample[1] / esm.renderTargetHeight);\n mat4.fromTranslation(this.jitterMatrix, [ this.jitter[0], this.jitter[1], 0 ]);\n mat4.multiply(this.jitteredProjection, this.jitterMatrix, this.projection);\n return;\n }\n\n mat4.identity(this.jitterMatrix);\n mat4.copy(this.jitteredProjection, this.projection);\n this.jitter[0] = 0;\n this.jitter[1] = 0;\n }\n\n /**\n * Carbon's EveSpaceScene::EndRender, two parts of it:\n * - the lens flares (cpp:2839-2859): each flare's renderables drawn\n * additively into the scene target, with depth read-only, after the main\n * pass - so after TAA's opaque copy, which excludes them as Carbon's does;\n * - the last-frame store (cpp:2866-2868): this frame's view, and its\n * UNJITTERED projection, become next frame's viewLast and projectionLast,\n * which the per-frame vertex block hands the velocity shaders.\n *\n * Adapted: the rest of Carbon's EndRender (the secondary transparent and\n * additive gathers, batch clearing, the variable store) belongs to passes\n * this runtime's driver does not run yet.\n *\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n EndRender(renderContext)\n {\n if (this.lensflares.length)\n {\n const visible = [];\n\n for (const lensflare of this.lensflares) lensflare.GetRenderables(this.updateContext.GetFrustum(), visible);\n\n if (visible.length)\n {\n renderContext.SetReadOnlyDepth(true);\n this.RenderRenderables(visible, this.#secondaryAdditiveBatches, TriBatchType.TRIBATCHTYPE_ADDITIVE, RenderingMode.RM_ALPHA_ADDITIVE, renderContext);\n renderContext.SetReadOnlyDepth(false);\n }\n }\n\n mat4.copy(this.viewLast, renderContext.GetViewTransform());\n mat4.copy(this.projectionLast, this.projection);\n }\n\n /** m_secondaryBatches[TRIBATCHTYPE_ADDITIVE]: the accumulator EndRender's\n * lens flares are gathered into (effect-sorted, as every non-transparent\n * batch type is). */\n #secondaryAdditiveBatches = new TriRenderBatchAccumulator(EffectKeyGenerator);\n\n /**\n * Carbon EveSpaceScene::RenderRenderables (cpp:1065-1085): each renderable's\n * per-object data and batches into the accumulator, then RenderBatch. No\n * pool allocator, no draw, as in Carbon.\n *\n * @param {Array} renderables The renderables to draw.\n * @param {object} batch The accumulator to gather into.\n * @param {number} batchType The TriBatchType to gather.\n * @param {number} rm The RenderingMode to draw with.\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @param {number} [reason] The render reason.\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n RenderRenderables(renderables, batch, batchType, rm, renderContext, reason = undefined)\n {\n const allocator = renderContext.GetTriPoolAllocator();\n\n if (!allocator) return;\n\n batch.SetTriPoolAllocator(allocator);\n\n for (const renderable of renderables)\n {\n const objectData = renderable.GetPerObjectData(batch);\n renderable.GetBatches(batch, batchType, objectData, reason);\n }\n\n this.RenderBatch(batch, rm, renderContext);\n }\n\n /**\n * Carbon EveSpaceScene::RenderBatch (cpp:1095-1115): finalize, apply the\n * rendering mode's standard states, draw, clear.\n *\n * Adapted: Carbon draws through the scene's visualizer effect (a pixel-shader\n * replacement, or none for the ordinary view); visualizer effects are not\n * ported, so this always draws the ordinary view.\n *\n * @param {object} batch The accumulator to draw.\n * @param {number} rm The RenderingMode.\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderBatch(batch, rm, renderContext)\n {\n batch.Finalize();\n renderContext.GetEffectStateManager().ApplyStandardStates(rm);\n renderContext.RenderBatches(batch);\n batch.Clear();\n }\n\n /**\n * Carbon EveSpaceScene::ApplyPerFrameData (cpp:818-828): uploads and binds\n * both per-frame blocks. The VERTEX block is bound for every non-pixel\n * stage the backend has - vertex always, compute, geometry, hull and domain\n * where SHADER_TYPE_EXISTS - because compute passes read it too: dynamic\n * exposure's measure pass reads Time (register 45.x) to advance its\n * adaptation, and with the block bound for vertex only it read zero and\n * exposure never left its initial 0.\n *\n * The buffers come from the render context on first use, as Carbon's\n * default-constructed members are sized by FillAndSetConstants.\n *\n * @param {Tr2RenderContext} renderContext The context to bind on.\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n ApplyPerFrameData(renderContext)\n {\n const shaderTypeMask = renderContext.GetRenderContextAL().constructor.SHADER_TYPE_MASK;\n const perFrameVsMask = (1 << ShaderType.VERTEX_SHADER) | (shaderTypeMask & (\n (1 << ShaderType.COMPUTE_SHADER)\n | (1 << ShaderType.GEOMETRY_SHADER)\n | (1 << ShaderType.HULL_SHADER)\n | (1 << ShaderType.DOMAIN_SHADER)\n ));\n\n this.#perFrameVSBuffer ??= renderContext.CreateConstantBuffer();\n this.#perFramePSBuffer ??= renderContext.CreateConstantBuffer();\n\n const vs = this.#perFrameVS.GetData();\n const ps = this.#perFramePS.GetData();\n\n FillAndSetConstants(this.#perFrameVSBuffer, vs, vs.byteLength, perFrameVsMask, PER_FRAME_VS, renderContext);\n FillAndSetConstants(this.#perFramePSBuffer, ps, ps.byteLength, 1 << ShaderType.PIXEL_SHADER, PER_FRAME_PS, renderContext);\n }\n\n /**\n * Fills the per-frame VERTEX constants (Carbon\n * EveSpaceScene::PopulatePerFrameVSData, cpp:3015-3068).\n *\n * Adapted in one respect, the same way StampFrameContext is: Carbon reads\n * the camera off `Tr2Renderer` statics and the render-target/viewport sizes\n * off `renderContext.m_esm`, neither of which exists GPU-free here. The\n * driver passes them in `frame` instead. Everything the scene itself owns -\n * sun, fog, env-map rotation, the previous frame's view/projection - is read\n * from the scene, as Carbon does.\n *\n * Matrices are stored TRANSPOSED because the shaders are column_major, with\n * one deliberate exception Carbon calls out at cpp:3023: the value wanted for\n * `ViewInverseTransposeMat` is already a transpose, so transposing it again\n * cancels and the inverse view goes in as-is.\n *\n * @param {Object} renderContext - the frame's Tr2RenderContext\n * @param {Object} [frame] - the engine-supplied state Carbon reads statically\n * @param {Number} [frame.renderTargetWidth]\n * @param {Number} [frame.renderTargetHeight]\n * @param {Number} [frame.aspectRatio]\n * @param {Number} [frame.animationTime] - Tr2Renderer::GetAnimationTime\n * @param {Object|null} [frame.deviceViewport] - {width, height}\n * @param {Object|null} [frame.projectionTransform] - the NON reversed-depth\n * projection, which Carbon uses only to recover the field of view\n * @param {Object} [out] - the record to fill; defaults to the scene's own\n * @returns {Object} the filled record\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Tr2Renderer view statics and the ESM's render-target/viewport sizes are engine state; the driver supplies them in `frame`.\")\n PopulatePerFrameVSData(renderContext, frame = {}, out = this.#perFrameVS)\n {\n frame = { ...this.#EngineFrameState(renderContext), ...frame };\n const view = renderContext.GetViewTransform();\n // Carbon's frame is reverse-Z: the shaders get the REVERSED-depth\n // projection (cpp:3022), matching the inverted depth test and the clear to\n // 0 the driver sets. The forward one here put depth the other way round.\n const projection = renderContext.GetReversedDepthProjectionTransform();\n\n // column_major for shaders\n out.SetAndTranspose(\"ViewMat\", view);\n out.SetAndTranspose(\"ProjectionMat\", projection);\n\n // Carbon `view * proj` (row-vector); gl-matrix swaps the operands.\n mat4.multiply(perFrameMatrixScratch, projection, view);\n out.SetAndTranspose(\"ViewProjectionMat\", perFrameMatrixScratch);\n\n // Needs the transposed, but the shader also wants column_major, so it is\n // transpose(transpose(m)) == m (cpp:3023-3024).\n mat4.transpose(perFrameMatrixScratch, renderContext.GetInverseViewTransform());\n out.SetAndTranspose(\"ViewInverseTransposeMat\", perFrameMatrixScratch);\n\n // Carbon `m_projectionLast * m_jitterMatrix` then `m_viewLast * that`.\n mat4.multiply(perFrameLastProjectionScratch, this.jitterMatrix, this.projectionLast);\n out.SetAndTranspose(\"ProjLast\", perFrameLastProjectionScratch);\n out.SetAndTranspose(\"ViewLast\", this.viewLast);\n mat4.multiply(perFrameMatrixScratch, perFrameLastProjectionScratch, this.viewLast);\n out.SetAndTranspose(\"ViewProjectionLast\", perFrameMatrixScratch);\n\n // Each scene has a nebula, and that can be rotated and inverted by scaling.\n mat4.fromQuat(perFrameMatrixScratch, this.envMapRotation);\n out.SetAndTranspose(\"EnvMapRotationMat\", perFrameMatrixScratch);\n\n this.#FillSunData(out);\n\n out.Set(\"TargetResolution\", [\n frame.renderTargetWidth ?? 0,\n frame.renderTargetHeight ?? 0\n ]);\n\n this.#FillFovXY(out, frame);\n\n // Guarded so a zero-width fog band cannot divide by zero (cpp:3049-3054).\n let distance = this.fogEnd - this.fogStart;\n if (Math.abs(distance) < 1e-5)\n {\n distance = 1e-5;\n }\n out.Set(\"FogFactors\", [ this.fogEnd / distance, 1 / distance, this.fogMax ]);\n\n // Derived from SetupViewport in Tr2Renderer.cpp (cpp:3056-3062).\n const viewport = renderContext.GetViewport();\n const device = frame.deviceViewport ?? viewport;\n\n if (viewport && device)\n {\n out.Set(\"ViewportAdjustment\", [\n viewport.x < 0 ? -1 : 1,\n viewport.y + viewport.height > (frame.renderTargetHeight ?? 0) ? -1 : 1,\n device.width / viewport.width,\n device.height / viewport.height\n ]);\n }\n\n out.Set(\"Time\", frame.animationTime ?? 0);\n out.Set(\"Upscaling\", this.upscalingAmount);\n out.Set(\"ViewportSize\", device ? [ device.width, device.height ] : [ 0, 0 ]);\n\n return out;\n }\n\n /**\n * Fills the per-frame PIXEL constants (Carbon\n * EveSpaceScene::PopulatePerFramePSData, cpp:3075-3202). Same `frame`\n * adaptation as the vertex fill.\n *\n * The cascaded-shadow block (ShadowMapValues / CascadeRanges /\n * ShadowMatrixVal / SplitInfo) is filled only when a shadow map is passed,\n * exactly as Carbon's `if( shadowMap )` gate does; without one the record\n * leaves the persistent cascade bytes untouched. `ShadowCameraRange` remains\n * disabled, so stale cascade bytes are not consumed until a map is supplied\n * again.\n *\n * @param {Object} renderContext - the frame's Tr2RenderContext\n * @param {Object} [frame] - as PopulatePerFrameVSData, plus:\n * @param {Number} [frame.frameIndex] - Tr2Renderer::GetCurrentFrameCounter\n * @param {Number} [frame.gammaBrightness]\n * @param {Number} [frame.sceneMipLodBias] - the upscaler's bias, plus the\n * scene post-process's own; the upscaling info is engine state\n * @param {Number} [frame.inverseShadowMapAtlasSize] - 0 with no light manager\n * @param {Number} [frame.shadowMapAtlasEntryMinSizeLog2]\n * @param {Tr2ShadowMap|null} [shadowMap=this.cascadedShadowMap] - the owned\n * cascaded shadow map; explicit null disables cascade packing\n * @param {Object} [out] - the record to fill; defaults to the scene's own\n * @returns {Object} the filled record\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Tr2Renderer statics, the ESM viewport, Tr2LightManager's atlas settings and the upscaler's mip bias are engine state; the driver supplies them in `frame`.\")\n PopulatePerFramePSData(renderContext, frame = {}, shadowMap = this.cascadedShadowMap, out = this.#perFramePS)\n {\n frame = { ...this.#EngineFrameState(renderContext), ...frame };\n if (shadowMap !== null && !(shadowMap instanceof Tr2ShadowMap))\n {\n throw new TypeError(\"EveSpaceScene.PopulatePerFramePSData requires a Tr2ShadowMap or null.\");\n }\n // The reversed-depth projection, as the vertex fill (cpp:3140).\n const projection = renderContext.GetReversedDepthProjectionTransform();\n\n out.SetAndTranspose(\"ViewMat\", renderContext.GetViewTransform());\n\n // transpose(transpose(m)) == m, as in the vertex fill (cpp:3079-3080).\n mat4.transpose(perFrameMatrixScratch, renderContext.GetInverseViewTransform());\n out.SetAndTranspose(\"ViewInverseTransposeMat\", perFrameMatrixScratch);\n\n mat4.fromQuat(perFrameMatrixScratch, this.envMapRotation);\n out.SetAndTranspose(\"EnvMapRotationMat\", perFrameMatrixScratch);\n\n this.#FillSunData(out);\n\n // The pixel fill alone overrides the sun's alpha with the roughness\n // (cpp:3087) - the vertex fill leaves the blended colour's own alpha.\n out.Set(\"Sun.DiffuseColor\", [\n this.currentSunColor[0],\n this.currentSunColor[1],\n this.currentSunColor[2],\n this.defaultDiffuseRoughness\n ]);\n\n out.Set(\"AmbientColor\", [ this.ambientColor[0], this.ambientColor[1], this.ambientColor[2] ]);\n out.Set(\"ReflectionIntensity\", this.currentReflectionIntensity);\n out.Set(\"FogColor\", [ this.fogColor[0], this.fogColor[1], this.fogColor[2], this.fogMax ]);\n\n out.Set(\"GammaBrightness\", frame.gammaBrightness ?? 0);\n\n out.Set(\"TargetResolution\", [\n frame.renderTargetWidth ?? 0,\n frame.renderTargetHeight ?? 0\n ]);\n\n this.#FillFovXY(out, frame);\n\n // Shadows are disabled by default (cpp:3107).\n out.Set(\"ShadowCameraRange\", [ 1, 0 ]);\n\n const viewport = renderContext.GetViewport();\n const device = frame.deviceViewport ?? viewport;\n\n out.Set(\"ViewportOffset\", viewport ? [ viewport.x, viewport.y ] : [ 0, 0 ]);\n out.Set(\"ViewportSize\", device ? [ device.width, device.height ] : [ 0, 0 ]);\n\n out.Set(\"Time\", frame.animationTime ?? 0);\n\n out.Set(\"FrameIndex\", frame.frameIndex ?? 0);\n out.Set(\"Jittering\", vec4.exactEquals(this.jitter, ZERO_JITTER) ? 0 : 1);\n\n // Carbon stores 1 << m_shadowQuality, not the enum value.\n out.Set(\"ShadowQuality\", 1 << this.shadowQualitySetting);\n\n out.Set(\"InverseShadowMapAtlasSize\", frame.inverseShadowMapAtlasSize ?? 0);\n out.Set(\"ShadowMapAtlasEntryMinSizeLog2\", frame.shadowMapAtlasEntryMinSizeLog2 ?? 0);\n\n out.Set(\"ShadowMapSettings\", [ 1, 1, 0, 0 ]);\n out.Set(\"ShadowLightness\", 0);\n out.Set(\"DepthMapSampleCount\", 1); // legacy\n\n // The reversed-depth projection's _43/_33, which the shader uses to turn a\n // depth sample back into a view-space distance (cpp:3140-3142).\n out.Set(\"ProjectionToView\", [ projection[14], projection[10] ]);\n\n // Carbon resets m_upscalingAmount here and lets the upscaler raise it; with\n // no upscaler the scene stays at 1 and only the post-process bias applies.\n this.upscalingAmount = frame.upscalingAmount ?? 1;\n out.Set(\"Upscaling\", this.upscalingAmount);\n out.Set(\"SceneMipLodBias\", frame.sceneMipLodBias ?? 0);\n\n if (shadowMap)\n {\n this.#FillShadowCascades(out, shadowMap, renderContext);\n }\n\n // Carbon writes Inverse(Transpose(P)). RawData supplies that terminal\n // transpose, so derive only the logical inverse here.\n mat4.invert(perFrameMatrixScratch, projection);\n out.SetAndTranspose(\"ProjectionInverseMat\", perFrameMatrixScratch);\n\n out.Set(\"Debug\", this.perFrameDebug);\n\n out.Set(\"VolumetricSlices\", VOLUMETRIC_SLICES);\n\n this.volumetricsRenderer.PopulatePerFrameData(out);\n\n return out;\n }\n\n /**\n * The SunData block both fills share (cpp:3035-3039 / 3085-3089). The\n * direction is normalized AND negated: shaders work with the direction TO\n * the light, not the direction it travels.\n */\n #FillSunData(out)\n {\n vec3.normalize(sunDirectionScratch, this.sunDirection);\n out.Set(\"Sun.DirWorld\", [\n -sunDirectionScratch[0],\n -sunDirectionScratch[1],\n -sunDirectionScratch[2]\n ]);\n out.Set(\"Sun.DiffuseColor\", this.currentSunColor);\n }\n\n /**\n * FOV both ways - width in x, height in y (cpp:3046-3047 / 3103-3104).\n * Carbon recovers it from the NON reversed-depth projection, so a driver\n * that reverses depth must pass the original in `frame.projectionTransform`.\n */\n #FillFovXY(out, frame)\n {\n const source = frame.projectionTransform;\n const fovY = source ? EveCamera.CalculateFovFromProjection(source) : 0;\n\n out.Set(\"FovXY\", [ fovY * (frame.aspectRatio ?? 1), fovY ]);\n }\n\n /**\n * The cascaded-shadow block (cpp:3163-3190). Each cascade's shadow matrix is\n * rebased into the current view, flipped in y, remapped from (-1,+1) to\n * (0,1), then scaled and offset into its cell of the 8x2 atlas.\n */\n #FillShadowCascades(out, shadowMap, renderContext)\n {\n const split = shadowMap.GetPerSplitData();\n\n for (let index = 0; index < 4; index++)\n {\n out.SetIndex(\"ShadowMapValues\", index, split.ShadowMapValues[index]);\n }\n\n for (let index = 0; index < 16; index++)\n {\n out.SetIndex(\"CascadeRanges\", index, split.CascadeRanges[index]);\n }\n\n const inverseView = renderContext.GetInverseViewTransform();\n const cellsX = 8;\n const cellsY = 2;\n\n for (let index = 0; index < CjsPerFrameLayouts.SHADOW_FRUSTUM_COUNT; index++)\n {\n const stored = split.ShadowMatrixVal[index];\n\n // Carbon stores Transpose(LVP), then computes inverseView * LVP. The JS\n // producer keeps logical LVP, so gl-matrix reverses only that product.\n mat4.multiply(perFrameMatrixScratch, stored, inverseView);\n\n // Flip y and change the range from (-1, +1) to (0, 1).\n mat4.multiply(perFrameMatrixScratch, SHADOW_CLIP_TO_UV, perFrameMatrixScratch);\n\n // Then into this cascade's cell of the 8x2 atlas.\n mat4.identity(perFrameLastProjectionScratch);\n mat4.translate(perFrameLastProjectionScratch, perFrameLastProjectionScratch, [\n (index % cellsX) / cellsX,\n Math.floor(index / cellsX) / cellsY,\n 0\n ]);\n mat4.scale(perFrameLastProjectionScratch, perFrameLastProjectionScratch, [\n 1 / cellsX,\n 1 / cellsY,\n 1\n ]);\n mat4.multiply(perFrameMatrixScratch, perFrameLastProjectionScratch, perFrameMatrixScratch);\n\n out.SetAndTransposeIndex(\"ShadowMatrixVal\", index, perFrameMatrixScratch);\n }\n\n out.Set(\"SplitInfo\", split.SplitInfo);\n }\n\n /** Carbon method ReregisterEntities (MAP_METHOD_AND_WRAP, cpp:4064-4089).\n * Guarded no-op after ClearComponentRegistry has nulled the registry\n * (destroy-only path; Carbon would never call this afterwards). */\n @carbon.method\n @impl.implemented\n ReregisterEntities()\n {\n if (!this.componentRegistry)\n {\n return;\n }\n\n for (const collection of [this.objects, this.backgroundObjects, this.planets])\n {\n for (const object of collection)\n {\n if (object instanceof EveEntity)\n {\n this.componentRegistry.ReRegister(object);\n }\n }\n }\n if (this.cameraAttachmentParent instanceof EveEntity)\n {\n this.componentRegistry.ReRegister(this.cameraAttachmentParent);\n }\n }\n\n /** Carbon method ClearComponentRegistry (EveSpaceScene.cpp:4091-4099, called\n * from the destructor cpp:322). Entity component-state is deliberately NOT\n * cleared beyond what Clear() does - either the scene is being destroyed\n * (entities go too) or entities move to another scene and re-register there.\n * The JS registry Clear() additionally detaches entity.registry when it\n * points at this registry - strictly more hygienic than Carbon; kept. */\n @carbon.method\n @impl.implemented\n ClearComponentRegistry()\n {\n this.componentRegistry?.Clear();\n this.componentRegistry = null;\n }\n\n /** Carbon method GetPostProcessDebug (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n GetPostProcessDebug()\n {\n return this.postProcessDebug;\n }\n\n /** Carbon method UpdateScene -> UpdateSceneFromScript (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n UpdateScene(time)\n {\n return this.Update(time, time);\n }\n\n static EveVisualizeMethod = EveVisualizeMethod;\n\n /** g_eveSpaceSceneGammaBrightness (TRI_REGISTER_SETTING \"eveSpaceSceneGammaBrightness\",\n * cpp:102-103): the tonemapper's OutputGamma and the per-frame GammaBrightness. */\n static eveSpaceSceneGammaBrightness = 1;\n\n static ShadowQuality = ShadowQuality;\n\n /**\n * Carbon SimplePriorityBlend (PriorityBlend.h:371-413) specialized to the\n * IEveLightingOverride::Overrides value type\n * { sunColor: vec4, sunIntensity, backgroundIntensity, reflectionIntensity }\n * (EveChildLightingOverride.h:15-32) - `+` and `* weight` componentwise.\n * Walks the (already priority-desc-sorted) list in equal-priority groups:\n * factor = (1 / max(groupTotal, 1)) * remainingWeight\n * then subtracts the UNCLAMPED group total from remainingWeight. Two quirks\n * preserved exactly: (a) a group with total intensity 0.3 contributes at\n * weight 0.3*remaining and leaves 0.7 for lower priorities; (b) a group with\n * total 2 is normalized to consume exactly remainingWeight and terminates\n * (remaining goes to -1).\n * @param {Array} sources - [{ priority, intensity, value }] sorted high->low\n * @returns {{ sunColor: Float32Array, sunIntensity: Number,\n * backgroundIntensity: Number, reflectionIntensity: Number }}\n */\n static #SimplePriorityBlend(sources)\n {\n const result = {\n sunColor: vec4.create(),\n sunIntensity: 0,\n backgroundIntensity: 0,\n reflectionIntensity: 0\n };\n let remainingWeight = 1;\n\n for (let first = 0; first < sources.length;)\n {\n // The range of sources sharing the current priority.\n let last = first + 1;\n while (last < sources.length && sources[last].priority === sources[first].priority)\n {\n last++;\n }\n\n let totalPriorityIntensity = 0;\n for (let index = first; index < last; index++)\n {\n totalPriorityIntensity += sources[index].intensity;\n }\n if (totalPriorityIntensity === 0)\n {\n first = last;\n continue;\n }\n\n const normalizationFactor = 1 / Math.max(totalPriorityIntensity, 1) * remainingWeight;\n\n for (let index = first; index < last; index++)\n {\n const weight = sources[index].intensity * normalizationFactor;\n const value = sources[index].value;\n vec4.scaleAndAdd(result.sunColor, result.sunColor, value.sunColor, weight);\n result.sunIntensity += value.sunIntensity * weight;\n result.backgroundIntensity += value.backgroundIntensity * weight;\n result.reflectionIntensity += value.reflectionIntensity * weight;\n }\n\n // Subtracts the UNCLAMPED total (PriorityBlend.h:405).\n remainingWeight -= totalPriorityIntensity;\n first = last;\n if (remainingWeight <= 0)\n {\n break;\n }\n }\n return result;\n }\n\n}\n\n// Registered as Carbon registers it (trinity/trinity/Eve/EveSpaceScene_Blue.cpp:44).\nblue.enums.RegisterEnum(\"trinity.EveSpaceScene.EveVisualizeMethod\", EveSpaceScene.EveVisualizeMethod, {\n source: \"trinity/trinity/Eve/EveSpaceScene.h\", family: \"eve/scene\", line: 176,\n exposedName: \"EveVisualizeMethod\", exposure: EnumRegistrationType.ENUM_REG_ENUM_OBJECT_ON_MODULE,\n chooserSource: \"trinity/trinity/Eve/EveSpaceScene_Blue.cpp:20\",\n chooser: [\n { name: \"None\", value: EveSpaceScene.EveVisualizeMethod.VM_NONE, description: \"No visualizer - use normal rendering\" },\n { name: \"TexCoord0\", value: EveSpaceScene.EveVisualizeMethod.VM_TEXCOORD0, description: \"\" },\n { name: \"TexCoord1\", value: EveSpaceScene.EveVisualizeMethod.VM_TEXCOORD1, description: \"\" },\n { name: \"White\", value: EveSpaceScene.EveVisualizeMethod.VM_WHITE, description: \"\" },\n { name: \"Overdraw\", value: EveSpaceScene.EveVisualizeMethod.VM_OVERDRAW, description: \"\" },\n { name: \"Wireframe\", value: EveSpaceScene.EveVisualizeMethod.VW_WIREFRAME, description: \"\" },\n { name: \"LightCount\", value: EveSpaceScene.EveVisualizeMethod.VW_LIGHT_COUNT, description: \"\" }\n ]\n});\n"],"names":["sunDirectionScratch","vec3","create","perFrameMatrixScratch","mat4","perFrameLastProjectionScratch","ZERO_JITTER","vec4","JITTER_SAMPLING_PATTERNS","Object","freeze","VOLUMETRIC_SLICES","SHADOW_CLIP_TO_UV","fromValues","IDENTITY","_EveSpaceScene","_identity","EveSpaceScene","CjsModel","e","_init_visualizeMethod","_init_extra_visualizeMethod","_init_envMap1ResPath","_init_extra_envMap1ResPath","_init_envMap2ResPath","_init_extra_envMap2ResPath","_init_envMap3ResPath","_init_extra_envMap3ResPath","_init_lowQualityNebulaResPath","_init_extra_lowQualityNebulaResPath","_init_lowQualityNebulaMixResPath","_init_extra_lowQualityNebulaMixResPath","_init_envMapResPath","_init_extra_envMapResPath","_init_fogColor","_init_extra_fogColor","_init_sunDirection","_init_extra_sunDirection","_init_ambientColor","_init_extra_ambientColor","_init_shLightingManager","_init_extra_shLightingManager","_init_combinedPostProcessAttributes","_init_extra_combinedPostProcessAttributes","_init_dataTextureMgr","_init_extra_dataTextureMgr","_init_dynamicObjectReflectionEnabled","_init_extra_dynamicObjectReflectionEnabled","_init_componentRegistry","_init_extra_componentRegistry","_init_cameraAttachmentParent","_init_extra_cameraAttachmentParent","_init_postProcessDebug","_init_extra_postProcessDebug","_init_curveSets","_init_extra_curveSets","_init_defaultDiffuseRoughness","_init_extra_defaultDiffuseRoughness","_init_fogStart","_init_extra_fogStart","_init_fogEnd","_init_extra_fogEnd","_init_reflectionIntensity","_init_extra_reflectionIntensity","_init_distanceFields","_init_extra_distanceFields","_init_backgroundEffect","_init_extra_backgroundEffect","_init_backgroundReflectionIntensity","_init_extra_backgroundReflectionIntensity","_init_nebulaIntensity","_init_extra_nebulaIntensity","_init_display","_init_extra_display","_init_backgroundRenderingEnabled","_init_extra_backgroundRenderingEnabled","_init_update","_init_extra_update","_init_impostorManager","_init_extra_impostorManager","_init_lensflares","_init_extra_lensflares","_init_externalParameters","_init_extra_externalParameters","_init_fogMax","_init_extra_fogMax","_init_staticParticles","_init_extra_staticParticles","_init_debugRenderer","_init_extra_debugRenderer","_init_objects","_init_extra_objects","_init_uiObjects","_init_extra_uiObjects","_init_backgroundObjects","_init_extra_backgroundObjects","_init_planets","_init_extra_planets","_init_raytracingManager","_init_extra_raytracingManager","_init_reflectionBackLightingColor","_init_extra_reflectionBackLightingColor","_init_reflectionBackLightingContrast","_init_extra_reflectionBackLightingContrast","_init_reflectionProbe","_init_extra_reflectionProbe","_init_volumetricsRenderer","_init_extra_volumetricsRenderer","_init_starfield","_init_extra_starfield","_init_planetScale","_init_extra_planetScale","_init_planetCameraScale","_init_extra_planetCameraScale","_init_subSurfaceScattering","_init_extra_subSurfaceScattering","_init_shadowQualitySetting","_init_extra_shadowQualitySetting","_init_sunDiffuseColor","_init_extra_sunDiffuseColor","_init_sunDiffuseColorWithDynamicLights","_init_extra_sunDiffuseColorWithDynamicLights","_init_envMapRotation","_init_extra_envMapRotation","_init_ballpark","_init_extra_ballpark","_init_name","_init_extra_name","_init_sunBall","_init_extra_sunBall","_init_postprocess","_init_extra_postprocess","_init_virtualCameraSystem","_init_extra_virtualCameraSystem","_init_warpTunnel","_init_extra_warpTunnel","_init_perFrameDebug","_init_extra_perFrameDebug","_init_cascadedShadowMap","_init_extra_cascadedShadowMap","_init_updateTime","_init_extra_updateTime","_init_useSunDiffuseColorWithDynamicLights","_init_extra_useSunDiffuseColorWithDynamicLights","_init_envMap","_init_extra_envMap","_init_envMap2","_init_extra_envMap2","_init_envMap3","_init_extra_envMap3","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","edit","readwrite","int32","enum","notify","persist","string","color","persistOnly","model","read","objectRef","boolean","rawStruct","list","float32","quat","float64","carbon","method","impl","adapted","notImplemented","implemented","reason","custom","visualizeMethod","envMap1ResPath","envMap2ResPath","envMap3ResPath","lowQualityNebulaResPath","lowQualityNebulaMixResPath","envMapResPath","fogColor","sunDirection","ambientColor","shLightingManager","combinedPostProcessAttributes","Tr2PostProcessAttributes","dataTextureMgr","Tr2DataTextureManager","dynamicObjectReflectionEnabled","componentRegistry","EveComponentRegistry","cameraAttachmentParent","EveEffectRoot2","postProcessDebug","curveSets","defaultDiffuseRoughness","fogStart","fogEnd","reflectionIntensity","distanceFields","backgroundEffect","backgroundReflectionIntensity","nebulaIntensity","display","backgroundRenderingEnabled","update","impostorManager","lensflares","externalParameters","fogMax","staticParticles","debugRenderer","objects","uiObjects","backgroundObjects","planets","raytracingManager","reflectionBackLightingColor","reflectionBackLightingContrast","reflectionProbe","volumetricsRenderer","Tr2VolumetricsRenderer","starfield","planetScale","planetCameraScale","subSurfaceScattering","shadowQualitySetting","sunDiffuseColor","sunDiffuseColorWithDynamicLights","envMapRotation","ballpark","name","sunBall","postprocess","virtualCameraSystem","warpTunnel","perFrameDebug","cascadedShadowMap","updateTime","useSunDiffuseColorWithDynamicLights","envMap1","envMap2","envMap3","updateContext","EveUpdateContext","currentSunColor","currentNebulaIntensity","currentReflectionIntensity","viewLast","projectionLast","jitterMatrix","jitter","projection","jitteredProjection","upscalingAmount","dynamicLightingEnabled","enablePostProcessDebugging","StampFrameContext","frustum","visibilityThreshold","lowDetailThreshold","mediumDetailThreshold","highDetailThreshold","lodFactor","raytracingEnabled","context","SetFrustum","SetHighDetailThreshold","SetMediumDetailThreshold","SetLowDetailThreshold","SetVisibilityThreshold","SetLodFactor","Update","realTime","simTime","SetTime","UpdateOrigin","SetDataTextureManager","object","UpdateSyncronous","UpdateAsyncronous","distanceField","lensflare","curveSet","renderContext","UpdatePostProcessAttributes","normalize","negate","PickObject","args","Error","PickAsyncObject","PickObjectAndAreaID","PickInfinity","x","y","view","viewport","out","resolved","GetViewport","projected","screenToProjection","ray","convertProjectionCoordToWorldPickRay","copy","direction","UpdateVisibility","inverseView","SetTransform","planet","UpdateZOnlyVisibility","GetRenderables","GetFrustum","FromPostProcess","SCENE_DEFAULT_PRIORITY","sources","owner","GetComponents","EveComponentType","PostProcessOwner","attributes","GetPostProcessAttributes","push","length","Tr2PostProcess2","sort","a","b","priority","observer","CreateDebugObserver","MergeInto","GetDict","SetDynamicExposure","GetDynamicExposureIfAvailable","SetTaa","GetTaaIfAvailable","SetTonemapping","GetTonemappingIfAvailable","SetFog","GetFogIfAvailable","SetGodRays","GetGodRaysIfAvailable","SetGenericEffect","GetGenericEffectIfAvailable","MEDIUM_PRIORITY","GetPostProcess","BlendLightingOverrides","overrides","component","EveLightingOverride","GetOverrides","sunColorSource","sunIntensity","Math","max","baselineSunColor","scale","intensity","value","sunColor","backgroundIntensity","over","UpdateFogSettings","GatherLights","lightManager","SetShadowQuality","Clear","AdjustLightCutoff","GetLodFactor","LightOwner","GetLights","ResolveLightData","UpdateShLighting","updated","RawData","GetPerFrameVSData","GetPerFramePSData","RunLensflareOcclusionQueries","_depthMap","RunOcclusionQueries","Tr2OcclusionBuffer","getInstance","ProcessBuffer","Tr2VariableStore","GlobalStore","RegisterVariable","Tr2TextureReference","registerWithVariableStore","shadowResources","gpuResourcePool","store","references","publish","texture","SetTexture","emptyShadow","format","handle","GetPersistentTexture","TextureType","TEX_TYPE_2D","width","height","depth","mipCount","gpuUsage","Tr2GpuUsage","SHADER_RESOURCE","initialData","Tr2SubresourceData","Uint8Array","Get","Free","shadowMap","IsValid","PixelFormat","PIXEL_FORMAT_R8_UNORM","cascadedShadowDepth","pointLightShadowMap","PIXEL_FORMAT_R8_UINT","pointLightShadowDepth","Initialize","bones","Tr2RingBuffer","GetInstance","SetName","blue","resMan","GetResource","requirement","ResourceRequirement","TEXTURE","GetReflection","SetBackLightColor","SetBackLightContrast","UpdateVariableStore","SetValue","#EngineFrameState","esm","GetEffectStateManager","GetProjection","atlas","GetShadowMapAtlasSettings","renderTargetWidth","renderTargetHeight","deviceViewport","GetDeviceViewport","animationTime","Tr2Renderer","GetAnimationTime","frameIndex","Number","GetCurrentFrameCounter","gammaBrightness","eveSpaceSceneGammaBrightness","projectionTransform","aspectRatio","sceneMipLodBias","GetMipLodBias","inverseShadowMapAtlasSize","actualTextureSize","shadowMapAtlasEntryMinSizeLog2","entryMinSizeLog2","Jitter","sample","GetRecordingFrameNumber","fround","fromTranslation","multiply","identity","EndRender","visible","SetReadOnlyDepth","RenderRenderables","TriBatchType","TRIBATCHTYPE_ADDITIVE","RenderingMode","RM_ALPHA_ADDITIVE","GetViewTransform","TriRenderBatchAccumulator","EffectKeyGenerator","renderables","batch","batchType","rm","undefined","allocator","GetTriPoolAllocator","SetTriPoolAllocator","renderable","objectData","GetPerObjectData","GetBatches","RenderBatch","Finalize","ApplyStandardStates","RenderBatches","ApplyPerFrameData","shaderTypeMask","GetRenderContextAL","constructor","SHADER_TYPE_MASK","perFrameVsMask","ShaderType","VERTEX_SHADER","COMPUTE_SHADER","GEOMETRY_SHADER","HULL_SHADER","DOMAIN_SHADER","CreateConstantBuffer","vs","GetData","ps","FillAndSetConstants","byteLength","PER_FRAME_VS","PIXEL_SHADER","PER_FRAME_PS","PopulatePerFrameVSData","frame","GetReversedDepthProjectionTransform","SetAndTranspose","transpose","GetInverseViewTransform","fromQuat","Set","distance","abs","device","PopulatePerFramePSData","Tr2ShadowMap","TypeError","exactEquals","invert","PopulatePerFrameData","#FillSunData","#FillFovXY","source","fovY","EveCamera","CalculateFovFromProjection","#FillShadowCascades","split","GetPerSplitData","index","SetIndex","ShadowMapValues","CascadeRanges","cellsX","cellsY","CjsPerFrameLayouts","SHADOW_FRUSTUM_COUNT","stored","ShadowMatrixVal","translate","floor","SetAndTransposeIndex","SplitInfo","ReregisterEntities","collection","EveEntity","ReRegister","ClearComponentRegistry","GetPostProcessDebug","UpdateScene","time","EveSpaceSceneShadowMap","EveSpaceSceneCascadedShadowMap","EveSpaceSceneDynamicShadowMap","ShadowMapAtlas","EveVisualizeMethod","ShadowQuality","#SimplePriorityBlend","result","remainingWeight","first","last","totalPriorityIntensity","normalizationFactor","weight","scaleAndAdd","enums","RegisterEnum","line","exposedName","exposure","EnumRegistrationType","ENUM_REG_ENUM_OBJECT_ON_MODULE","chooserSource","chooser","VM_NONE","description","VM_TEXCOORD0","VM_TEXCOORD1","VM_WHITE","VM_OVERDRAW","VW_WIREFRAME","VW_LIGHT_COUNT"],"mappings":"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"}
1
+ {"version":3,"file":"EveSpaceScene.js","sources":["../../../../../src/trinity/eve/scene/EveSpaceScene.js"],"sourcesContent":["// Source: trinity/trinity/Eve/EveSpaceScene.h\n// Source: trinity/trinity/Eve/EveSpaceScene.cpp\n//\n// Hand-maintained (promoted from src/trinity/generated/eve/scene; the generator skips it\n// while this file exists). Fields mirror the generated schema shell; the\n// additions are the per-frame update driver ported from Carbon\n// EveSpaceScene::Update and the scene-owned EveUpdateContext member (Carbon\n// m_updateContext - protected, so absent from the Blue schema scan).\nimport { CjsSchema, carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { mat4 } from \"#math/mat4\";\nimport { quat } from \"#math/quat\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { EveEntity } from \"../EveEntity.js\";\nimport { EveComponentRegistry } from \"./components/EveComponentRegistry.js\";\nimport { Tr2PostProcess2 } from \"../../postProcess/Tr2PostProcess2.js\";\nimport { Tr2PostProcessAttributes } from \"../../postProcess/Tr2PostProcessAttributes.js\";\nimport { Tr2DataTextureManager } from \"../../shader/Tr2DataTextureManager.js\";\nimport { EveComponentType } from \"../EveComponentTypes.js\";\nimport { EveUpdateContext } from \"../EveUpdateContext.js\";\nimport { EveEffectRoot2 } from \"../spaceObject/EveEffectRoot2.js\";\nimport { EveCamera } from \"../camera/EveCamera.js\";\nimport { CjsPerFrameLayouts } from \"../../core/rawData/CjsPerFrameLayouts.js\";\nimport { PixelFormat, RenderState, ShaderType, TextureType, Tr2GpuUsage, Tr2LoadAction, Tr2StoreAction } from \"#consts/render-context\";\nimport { Tr2ColorAttachment, Tr2DepthAttachment, Tr2SubresourceData } from \"#trinityal\";\nimport { RenderingMode, TriBatchType } from \"#consts/graphics\";\nimport { EffectKeyGenerator, TriRenderBatchAccumulator } from \"../../core/batch/TriRenderBatch/index.js\";\nimport { FillAndSetConstants } from \"../../core/Tr2RenderUtils.js\";\nimport { PER_FRAME_PS, PER_FRAME_VS, Tr2Renderer } from \"../../core/Tr2Renderer.js\";\nimport { Tr2OcclusionBuffer } from \"../effect/lensflare/Tr2OcclusionBuffer.js\";\nimport { Tr2VariableStore } from \"../../core/variable/Tr2VariableStore.js\";\nimport { Tr2TextureReference } from \"../../core/Tr2TextureReference.js\";\nimport { Tr2RingBuffer } from \"../../core/device/Tr2RingBuffer/Tr2RingBuffer.js\";\nimport { ResourceRequirement } from \"#resource\";\nimport { RawData } from \"../../core/rawData/RawData.js\";\nimport { Tr2ShadowMap } from \"../../core/Tr2ShadowMap.js\";\nimport { Tr2VolumetricsRenderer } from \"../../core/volumetrics/Tr2VolumetricsRenderer.js\";\nimport { convertProjectionCoordToWorldPickRay, screenToProjection } from \"../../core/view/pickRay.js\";\nimport { EveVisualizeMethod } from \"../../generated/eve/enums.js\";\nimport { ShadowQuality, Tr2RenderReason } from \"../../generated/trinityCore/enums.js\";\nimport { TriFrustum } from \"../../core/view/TriFrustum.js\";\nimport { TriShadowOrthoFrustum } from \"./shadows/TriShadowOrthoFrustum.js\";\nimport { GpuResourceHandle } from \"../../core/Tr2GpuResourcePool/GpuResourceHandle.js\";\nimport { blue, EnumRegistrationType } from \"#blue\";\nimport \"./EveSpaceSceneRenderDriver.js\";\n\n\n// Module scratch for the per-frame sun-direction read (assume-dirty).\nconst sunDirectionScratch = vec3.create();\n\n// Module scratch for the per-frame constant fills. Two are needed because the\n// composed result and one operand are live at the same time; neither survives\n// the call that wrote it.\nconst perFrameMatrixScratch = mat4.create();\nconst perFrameLastProjectionScratch = mat4.create();\n\nconst ZERO_JITTER = vec4.create();\n\n/** Jitter's TAA sampling pattern, in pixels (EveSpaceScene.cpp:1269-1272). */\nconst JITTER_SAMPLING_PATTERNS = Object.freeze([\n Object.freeze([ 0.125, -0.375 ]),\n Object.freeze([ -0.125, 0.375 ]),\n Object.freeze([ 0.375, 0.125 ]),\n Object.freeze([ -0.375, -0.125 ])\n]);\n\n// EveSpaceScene.cpp:3196-3199 - the four froxel-fog slice distances, constant\n// every frame.\nconst VOLUMETRIC_SLICES = Object.freeze([1000, 10000, 100000, 1000000]);\n\n// Flip y and change the range from (-1, +1) to (0, 1): Carbon's\n// `ScalingMatrix(0.5, -0.5, 1) * TranslationMatrix(0.5, 0.5, 0)`\n// (EveSpaceScene.cpp:3179), pre-built because it never changes.\nconst SHADOW_CLIP_TO_UV = mat4.fromValues(\n 0.5, 0, 0, 0,\n 0, -0.5, 0, 0,\n 0, 0, 1, 0,\n 0.5, 0.5, 0, 1\n);\n\n// The scene-root parent transform for the visibility pass (Carbon\n// EveSpaceScene.cpp:1441 `const Matrix& identity = IdentityMatrix()`). Module\n// const, NEVER mutated - objects in m_objects are scene roots.\nconst IDENTITY = mat4.create();\n\n/** Carbon's default-constructed EveSpaceScene::ShadowResources: every texture empty. */\nfunction EmptyShadowResources()\n{\n return {\n shadowMap: new GpuResourceHandle(),\n cascadedShadowDepth: new GpuResourceHandle(),\n pointLightShadowMap: new GpuResourceHandle(),\n pointLightShadowDepth: new GpuResourceHandle()\n };\n}\n\n// ---------------------------------------------------------------------------\n// DRIVER-ORDER CONTRACT (per frame) - the CPU visibility/gather drive.\n// Carbon runs steps 5-12 inside EveSpaceScene::BeginRender/GatherBatches\n// (EveSpaceScene.cpp:1295-1427/1433-1525); CarbonEngineJS splits them into\n// scene-owned methods that an engine driver calls in this exact order:\n//\n// 1. Host stamps `updateContext.renderContext` (view -> derived inverse-view\n// + viewPos) and `updateContext.device`.\n// 2. Driver derives the frustum:\n// `frustum.DeriveFrustum(view, viewPos, projection, viewport)` from that\n// same renderContext state (Carbon cpp:476).\n// 3. `scene.StampFrameContext({ frustum, thresholds..., lodFactor,\n// raytracingEnabled })`.\n// 4. `scene.Update(realTime, simTime)` - internally ends with\n// `UpdatePostProcessAttributes()` then the sun-direction read (Carbon\n// cpp:584 -> 589).\n// 5. `scene.BlendLightingOverrides()` - BeginRender phase, before any gather\n// (Carbon cpp:1333, before GatherBatches cpp:1387).\n// 6. `scene.UpdateFogSettings()` - portable Trinity state production over\n// \"FroxelFogSettings\" (cpp:1365-1370). An engine realizes the later render\n// intent; it does not own this blend/update method.\n// 7. `scene.UpdateVisibility(updateContext.renderContext\n// .GetInverseViewTransform())` - the cpp:1443-1467 block.\n// 8. `const renderables = scene.GetRenderables([])` - pre-culled\n// (cpp:1470-1507 minus impostors).\n// 9. `batchManager.Collect(renderables, reason, updateContext.renderContext)`\n// - with engine-registered collectors covering Carbon's [QUADS]\n// (cpp:1509-1511) and [INSTANCED] (cpp:1516-1520; the instanced collector\n// reads \"InstancedMeshProvider\" from `scene.componentRegistry`);\n// `Finalize` inside Collect = Carbon FinalizeBatches cpp:1522.\n// 10. `scene.GatherLights(lightManager)` - AFTER step 9 (Carbon cpp:1396-1416\n// runs after GatherBatches cpp:1387).\n// 10b. `scene.UpdateShLighting(objects)` - the LAST thing Carbon's gather does\n// (cpp:1524), so every receiver's secondary-lighting coefficients are\n// current for the frame being submitted. Skipped entirely when the scene\n// carries no shLightingManager.\n// 10c. `scene.PopulatePerFramePSData(renderContext, frame, shadowMap)` then\n// `scene.PopulatePerFrameVSData(renderContext, frame)` - Carbon's order at\n// cpp:1424-1425, PS first, because the pixel fill is what resolves\n// m_upscalingAmount that the vertex fill then reads. Runs after GatherLights\n// so the blended sun colour is current. The engine binds the two records at\n// Tr2Renderer::GetPerFrame{VS,PS}StartRegister; their layouts are published\n// on the `/perframe` subpath.\n// 11. (driver) `for (const lf of scene.lensflares)\n// lf.PrepareRender(frustum)` (cpp:1419-1422). EveLensflare still needs that\n// Carbon method ported; its absence is an explicit driver-readiness gap,\n// not an optional capability to hide with a guarded call.\n// 12. (engine) reads registry collections directly: \"ShadowCaster\" (cascade\n// gate cpp:614-621, RT push cpp:1544-1547), \"VolumetricRenderable\",\n// \"FroxelFogSettings\", \"MeshMorph\" (engine may call\n// `scene.componentRegistry.Clear(\"MeshMorph\")` after bake),\n// \"ReflectionRenderable\" (secondary gather cpp:1886-1895).\n//\n// One-shot registration trigger: after graph build/mutation call\n// `scene.ReregisterEntities()` - covers objects + backgroundObjects + planets\n// (entity-guarded) + cameraAttachmentParent (cpp:4064-4089, matching what\n// OnListModified registers incrementally, cpp:3435-3491). uiObjects are\n// intentionally excluded everywhere (cpp:3462 gate) - Carbon never registers\n// or culls them.\n// ---------------------------------------------------------------------------\n\n/** Owns and updates an Eve space scene's entities, component registry, lighting, fog, post-process state, culling, and per-frame shader data. */\n@type.define({ className: \"EveSpaceScene\", family: \"eve/scene\" })\nexport class EveSpaceScene extends CjsModel\n{\n\n /** m_visualizeMethod (EveVisualizeMethod - enum EveVisualizeMethod) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.EveSpaceScene.EveVisualizeMethod\")\n visualizeMethod = 0;\n\n /** m_envMap1ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n envMap1ResPath = \"\";\n\n /** m_envMap2ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n envMap2ResPath = \"\";\n\n /** m_envMap3ResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n envMap3ResPath = \"\";\n\n /** m_lowQualityNebulaResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n lowQualityNebulaResPath = \"\";\n\n /** m_lowQualityNebulaMixResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n lowQualityNebulaMixResPath = \"\";\n\n /** m_envMapResPath (std::string) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.string\n envMapResPath = \"\";\n\n /** m_fogColor (Color) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.color\n fogColor = vec4.fromValues(0.25, 0.25, 0.25, 1);\n\n /** m_sunData.DirWorld (Vector3) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.vec3\n sunDirection = vec3.fromValues(0, -1, 0);\n\n /** m_ambientColor (Color) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.color\n ambientColor = vec4.fromValues(0.25, 0.25, 0.25, 1);\n\n /** m_shLightingManager (Tr2ShLightingManagerPtr) [PERSISTONLY] */\n @edit.readwrite\n @edit.persistOnly\n @type.model(\"Tr2ShLightingManager\")\n shLightingManager = null;\n\n /** m_combinedPostProcessAttributes (Tr2PostProcessAttributesPtr) [READ] -\n * default-constructed like Carbon's ctor CreateInstance (cpp:297); refreshed\n * by UpdatePostProcessAttributes' re-export at MEDIUM_PRIORITY (cpp:407). */\n @edit.read\n @type.objectRef(\"Tr2PostProcessAttributes\")\n combinedPostProcessAttributes = new Tr2PostProcessAttributes();\n\n /** m_dataTextureMgr (Tr2DataTextureManagerPtr) [READ] */\n @edit.read\n @type.objectRef(\"Tr2DataTextureManager\")\n dataTextureMgr = new Tr2DataTextureManager();\n\n /** m_dynamicObjectReflectionEnabled (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n dynamicObjectReflectionEnabled = true;\n\n /** m_componentRegistry (EveComponentRegistryPtr) [READ] */\n @edit.read\n @type.objectRef(\"EveComponentRegistry\")\n componentRegistry = new EveComponentRegistry();\n\n /** m_cameraAttachmentParent (EveEffectRoot2Ptr) - protected Carbon scene\n * entity, default-constructed like Carbon's ctor CreateInstance (cpp:287, no\n * further setup applied). Consumers still optional-chain - deserialization\n * may null it. */\n @type.model(\"EveEffectRoot2\")\n cameraAttachmentParent = new EveEffectRoot2();\n\n /** m_postProcessDebug (BluePy) - protected Carbon debug payload. */\n @type.rawStruct(\"BluePy\")\n postProcessDebug = null;\n\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"TriCurveSet\")\n curveSets = [];\n\n /** m_defaultDiffuseRoughness (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n defaultDiffuseRoughness = 1;\n\n /** m_fogStart (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n fogStart = 0;\n\n /** m_fogEnd (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n fogEnd = 0;\n\n /** m_reflectionIntensity (float) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.float32\n reflectionIntensity = 1;\n\n /** m_distanceFields (PEveDistanceFieldVector) [READ] */\n @edit.read\n @type.list(\"EveDistanceField\")\n distanceFields = [];\n\n /** m_backgroundEffect (Tr2EffectPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"Tr2Effect\")\n backgroundEffect = null;\n\n /** m_backgroundReflectionIntensity (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n backgroundReflectionIntensity = 1;\n\n /** m_nebulaIntensity (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n nebulaIntensity = 1;\n\n /** m_display (bool) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.boolean\n display = true;\n\n /** m_backgroundRenderingEnabled (bool) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.boolean\n backgroundRenderingEnabled = false;\n\n /** m_update (bool) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.boolean\n update = true;\n\n /** m_impostorManager (Tr2ImpostorManagerPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"Tr2ImpostorManager\")\n impostorManager = null;\n\n /** m_lensflares (PEveLensflareVector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"EveLensflare\")\n lensflares = [];\n\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"Tr2ExternalParameter\")\n externalParameters = [];\n\n /** m_fogMax (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n fogMax = 0;\n\n /** m_staticParticles (PEveSceneStaticParticlesVector) [READ] */\n @edit.read\n @type.list(\"EveSceneStaticParticles\")\n staticParticles = [];\n\n /** m_debugRenderer (Tr2DebugRendererPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"Tr2DebugRenderer\")\n debugRenderer = null;\n\n /** m_objects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"IEveSpaceObject2\")\n objects = [];\n\n /** m_uiObjects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"IEveSpaceObject2\")\n uiObjects = [];\n\n /** m_backgroundObjects (PIEveSpaceObject2Vector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"IEveSpaceObject2\")\n backgroundObjects = [];\n\n /** m_planets (PEvePlanetVector) [READ, PERSIST] */\n @edit.read\n @edit.persist\n @type.list(\"EvePlanet\")\n planets = [];\n\n /** m_rtManager (Tr2RaytracingManagerPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"Tr2RaytracingManager\")\n raytracingManager = null;\n\n /** m_reflectionBackLightingColor (Color) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.color\n reflectionBackLightingColor = vec4.fromValues(2, 2, 2, 2);\n\n /** m_reflectionBackLightingContrast (float) [READWRITE, PERSIST, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @edit.persist\n @type.float32\n reflectionBackLightingContrast = 8;\n\n /** m_reflectionProbe (Tr2ReflectionProbePtr) [READWRITE, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @type.objectRef(\"Tr2ReflectionProbe\")\n reflectionProbe = null;\n\n /** m_volumetricsRenderer (Tr2VolumetricsRendererPtr) [READ] */\n @edit.read\n @type.objectRef(\"Tr2VolumetricsRenderer\")\n volumetricsRenderer = new Tr2VolumetricsRenderer();\n\n /** m_starfield (EveStarfieldPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"EveStarfield\")\n starfield = null;\n\n /** m_planetScale (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n planetScale = 1000000;\n\n /** m_planetCameraScale (float) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.float32\n planetCameraScale = 1000000;\n\n /** m_sssss (Tr2SSSSSPtr) [READ] */\n @edit.read\n @type.objectRef(\"Tr2SSSSS\")\n subSurfaceScattering = null;\n\n /** m_shadowQuality (ShadowQuality - enum ShadowQuality) [READWRITE, NOTIFY] */\n @edit.notify\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.ShadowQuality\")\n shadowQualitySetting = 3;\n\n /** m_sunColor (Color) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.color\n sunDiffuseColor = vec4.fromValues(1, 1, 1, 1);\n\n /** m_sunColorWithDynamicLights (Color) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.color\n sunDiffuseColorWithDynamicLights = vec4.fromValues(1, 1, 1, 1);\n\n /** m_envMapRotation (Quaternion) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.quat\n envMapRotation = quat.create();\n\n /** m_ballpark (IEveBallparkPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"IEveBallpark\")\n ballpark = null;\n\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.string\n name = \"\";\n\n /** m_sunBall (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"ITriVectorFunction\")\n sunBall = null;\n\n /** m_sceneDefaultPostProcess (Tr2PostProcess2Ptr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"Tr2PostProcess2\")\n postprocess = null;\n\n /** m_virtualCameraSystem (EveVirtualCameraSystemPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"EveVirtualCameraSystem\")\n virtualCameraSystem = null;\n\n /** m_warpTunnel (IEveSpaceObject2Ptr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"IEveSpaceObject2\")\n warpTunnel = null;\n\n /** m_perFrameDebug (float) [READWRITE] */\n @edit.readwrite\n @type.float32\n perFrameDebug = 0;\n\n /** m_cascadedShadowMap (Tr2ShadowMapPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"Tr2ShadowMap\")\n cascadedShadowMap = null;\n\n /** m_updateTime (Be::Time) [READ] */\n @edit.read\n @type.float64\n updateTime = 0;\n\n /** m_useSunColorWithDynamicLights (bool) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.boolean\n useSunDiffuseColorWithDynamicLights = false;\n\n /** m_envMap1 (ITr2TextureProviderPtr) [READ] */\n @edit.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap1 = null;\n\n /** m_envMap2 (ITr2TextureProviderPtr) [READ] */\n @edit.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap2 = null;\n\n /** m_envMap3 (ITr2TextureProviderPtr) [READ] */\n @edit.read\n @type.objectRef(\"ITr2TextureProvider\")\n envMap3 = null;\n\n // Carbon m_updateContext (protected, absent from the Blue scan): the scene\n // owns ONE frame context, constructed once and re-stamped each Update. The\n // host/driver stamps updateContext.renderContext (camera view) + .device per\n // pass before calling Update - our explicit replacement for Carbon's\n // Tr2Renderer view statics.\n updateContext = new EveUpdateContext();\n\n // Carbon m_sceneDefaultPostProcessAttributes (EveSpaceScene.h:640, ctor\n // CreateInstance cpp:296): the scene default's attribute snapshot, refreshed\n // by UpdatePostProcessAttributes each frame.\n #sceneDefaultPostProcessAttributes = new Tr2PostProcessAttributes();\n\n // Carbon m_combinedPostProcess (EveSpaceScene.h:636): the merged output\n // post-process, lazily constructed on first combine (cpp:367-370).\n #combinedPostProcess = null;\n\n // Carbon m_currentSunColor / m_currentNebulaIntensity /\n // m_currentReflectionIntensity (EveSpaceScene.h:492-493/650, protected):\n // outputs of the BeginRender lighting-override blend (cpp:1360-1362).\n currentSunColor = vec4.fromValues(1, 1, 1, 1);\n\n currentNebulaIntensity = 1;\n\n currentReflectionIntensity = 1;\n\n // Carbon m_viewLast / m_projectionLast / m_jitterMatrix\n // (EveSpaceScene.h:296-297, protected): the previous frame's camera, which\n // the per-frame vertex block hands to the shader for motion vectors.\n viewLast = mat4.create();\n\n projectionLast = mat4.create();\n\n jitterMatrix = mat4.create();\n\n // Carbon m_jitter (EveSpaceScene.h:624) - xy: projection offset, zw: pixel\n // offset. The per-frame pixel block reports only whether it is non-zero.\n jitter = vec4.create();\n\n // Jitter writes jitterMatrix and jitter each frame, EndRender stores\n // viewLast and projectionLast, and EveSpaceSceneRenderDriver hands the\n // last-frame pair in and out around them (cpp:431-432, 597-598).\n\n // Carbon m_projection (the camera's unjittered projection, which EndRender\n // stores as next frame's projectionLast) and m_jitteredProjection (what the\n // frame draws with), both written by Jitter.\n projection = mat4.create();\n\n jitteredProjection = mat4.create();\n\n // Carbon m_upscalingAmount (EveSpaceScene.h:623, =1 by default at cpp:221).\n // Reset by the per-frame pixel fill and raised by an upscaler, if any.\n upscalingAmount = 1;\n\n // Carbon g_eveSpaceSceneDynamicLighting (registered setting\n // \"eveSpaceSceneDynamicLighting\", cpp:109-110, default false) - scoped to\n // the scene instead of a module global.\n dynamicLightingEnabled = false;\n\n // Carbon g_enablePostProcessDebugging (registered setting\n // \"enablePostProcessDebugging\", cpp:118-119, default false) - scoped to the\n // scene instead of a module global.\n enablePostProcessDebugging = false;\n\n /**\n * Stamps the per-frame frustum/threshold/LOD state onto the scene-owned\n * update context (Carbon EveSpaceScene::Update cpp:475-484, identical to the\n * already-updated fast path cpp:448-457). Carbon derives the frustum from\n * the Tr2Renderer view statics and reads the thresholds from console vars\n * divided by m_upscalingAmount (=1 by default, cpp:221); in CarbonEngineJS\n * the driver derives the frustum from the same renderContext state it\n * stamped and supplies the thresholds explicitly (pre-divided if it ever\n * upscales). Defaults are the Carbon console-var defaults (cpp:75-84).\n * The raytracing flag is Carbon's `m_shadowQuality == SHADOW_RAYTRACED &&\n * m_enableShadows` (cpp:457/484) - the driver computes it; the scene does\n * not. Stamps unconditionally: Carbon's same-frame fast path restamps\n * regardless of m_update (cpp:444-462); only the cold path skips stamping\n * when !m_update (cpp:466 precedes 475) - benign divergence.\n * @param {Object} [options]\n * @param {Object|null} [options.frustum] - a ready TriFrustum, held by reference\n * @param {Number} [options.visibilityThreshold]\n * @param {Number} [options.lowDetailThreshold]\n * @param {Number} [options.mediumDetailThreshold]\n * @param {Number} [options.highDetailThreshold]\n * @param {Number} [options.lodFactor]\n * @param {Boolean} [options.raytracingEnabled]\n */\n StampFrameContext({\n frustum = null,\n visibilityThreshold = 5,\n lowDetailThreshold = 100,\n mediumDetailThreshold = 400,\n highDetailThreshold = 800,\n lodFactor = 1,\n raytracingEnabled = false\n } = {})\n {\n const context = this.updateContext;\n context.SetFrustum(frustum);\n context.SetHighDetailThreshold(highDetailThreshold);\n context.SetMediumDetailThreshold(mediumDetailThreshold);\n context.SetLowDetailThreshold(lowDetailThreshold);\n context.SetVisibilityThreshold(visibilityThreshold);\n context.SetLodFactor(lodFactor);\n context.raytracingEnabled = !!raytracingEnabled;\n }\n\n /**\n * Per-frame scene update, ported from Carbon EveSpaceScene::Update: stamps the\n * scene-owned frame context (time, origin, data-texture manager), then drives\n * every collection in Carbon's order - background objects, warp tunnel,\n * starfield, static particles, data textures, distance fields, lensflares,\n * virtual camera system, curve sets, then all space/UI objects synchronous\n * first and asynchronous second (Carbon parallelizes the async pass on a task\n * group; JS runs it sequentially). Then combines the post-process attributes\n * (cpp:584) and finally reads the sun direction from the sun ball\n * (cpp:589-596).\n *\n * Adapted - deferred vs Carbon: the recording-frame dedup fast path,\n * frustum/threshold/LOD/raytracing stamping (now the driver's job via\n * StampFrameContext, called BEFORE Update), planet update (planet\n * view-matrix swap unported), and main-thread action flush (N/A).\n * @param {Number} realTime\n * @param {Number} simTime\n */\n @carbon.method\n @impl.adapted\n Update(realTime, simTime)\n {\n if (!this.update)\n {\n return;\n }\n\n const context = this.updateContext;\n context.SetTime(simTime);\n context.UpdateOrigin(this.ballpark);\n context.SetDataTextureManager(this.dataTextureMgr);\n\n for (const object of this.backgroundObjects)\n {\n object?.UpdateSyncronous(context);\n }\n for (const object of this.backgroundObjects)\n {\n object?.UpdateAsyncronous(context);\n }\n\n if (this.warpTunnel)\n {\n this.warpTunnel.UpdateSyncronous(context);\n this.warpTunnel.UpdateAsyncronous(context);\n }\n\n this.starfield?.Update?.(simTime);\n\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.Update(context);\n }\n\n this.dataTextureMgr?.Update(context);\n\n for (const distanceField of this.distanceFields)\n {\n distanceField?.Update(context);\n }\n\n for (const lensflare of this.lensflares)\n {\n lensflare?.Update(realTime, simTime);\n }\n\n this.virtualCameraSystem?.Update(realTime);\n\n for (const curveSet of this.curveSets)\n {\n curveSet.Update(realTime, simTime, context.renderContext);\n }\n\n for (const object of this.objects)\n {\n object?.UpdateSyncronous(context);\n }\n for (const object of this.uiObjects)\n {\n object?.UpdateSyncronous(context);\n }\n\n for (const object of this.objects)\n {\n object?.UpdateAsyncronous(context);\n }\n for (const object of this.uiObjects)\n {\n object?.UpdateAsyncronous(context);\n }\n\n // Combine the post-process attributes (Carbon cpp:584, after the async\n // pass + ExecuteMainThreadActions cpp:581 and before the sun read).\n this.UpdatePostProcessAttributes();\n\n // Sun direction from the sun ball: the normalized sun position, negated\n // (Carbon: m_sunData.DirWorld = -Normalize(sunDirection)).\n if (this.sunBall?.Update)\n {\n this.sunBall.Update(simTime, sunDirectionScratch);\n vec3.normalize(sunDirectionScratch, sunDirectionScratch);\n vec3.negate(this.sunDirection, sunDirectionScratch);\n }\n\n this.updateTime = simTime;\n }\n\n /** Carbon method PickObject (MAP_METHOD_AND_WRAP_OPTIONAL_ARGS). */\n @carbon.method\n @impl.notImplemented\n PickObject(...args)\n {\n throw new Error(\"EveSpaceScene.PickObject is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon method PickAsyncObject (MAP_METHOD_AND_WRAP_OPTIONAL_ARGS). */\n @carbon.method\n @impl.notImplemented\n PickAsyncObject(...args)\n {\n throw new Error(\"EveSpaceScene.PickAsyncObject is not implemented in CarbonEngineJS.\");\n }\n\n /** Carbon method PickObjectAndAreaID -> PyPickObjectAndAreaID (MAP_METHOD). */\n @carbon.method\n @impl.notImplemented\n PickObjectAndAreaID(...args)\n {\n throw new Error(\"EveSpaceScene.PickObjectAndAreaID is not implemented in CarbonEngineJS.\");\n }\n\n /**\n * Carbon EveSpaceScene::PickInfinity (cpp:4039-4050): the world-space\n * DIRECTION a screen pixel points along - the pick ray with nothing to hit,\n * which is what a click on empty space resolves to. Pure math, no readback.\n *\n * @param {Number} x - screen x, in pixels\n * @param {Number} y - screen y, in pixels\n * @param {Float32Array} projection - the projection matrix\n * @param {Float32Array} view - the view matrix\n * @param {Object} [viewport] - { x, y, width, height }; the frame's render\n * context supplies one when this is omitted\n * @param {Float32Array} [out] - caller-owned direction\n * @returns {Float32Array|null} the normalized world direction, or null when\n * either matrix cannot be inverted\n */\n @carbon.method\n @impl.implemented\n PickInfinity(x, y, projection, view, viewport = null, out = vec3.create())\n {\n const resolved = viewport ?? this.updateContext?.renderContext?.GetViewport?.();\n const projected = screenToProjection(x, y, resolved);\n const ray = convertProjectionCoordToWorldPickRay(projected.x, projected.y, projection, view);\n\n return ray ? vec3.copy(out, ray.direction) : null;\n }\n\n /**\n * The per-frame CPU visibility pass, ported from the [VISIBILITY] block of\n * Carbon EveSpaceScene::GatherBatches (EveSpaceScene.cpp:1443-1467; the\n * enclosing display gate is BeginRender cpp:1299-1302). Carbon's\n * Tr2ParallelDo loops (objects cpp:1445-1447, staticParticles cpp:1454-1456,\n * planets cpp:1458-1460) run sequentially in the same order; the lensflare\n * loop is sequential in Carbon too (cpp:1462-1466). LOD stamping (lodLevel,\n * isVisible, pixel diameters) happens INSIDE each object's UpdateVisibility;\n * per-object display gates live there too - the scene does not pre-filter.\n * uiObjects are never visited (Carbon never culls them). The camera parent's\n * SetTransform is pure decomposition (EveEffectRoot2.cpp:677-680 Decompose)\n * - no composition, so no row-vector operand swap here; this per-gather\n * Sync/Async pair is the camera parent's ONLY update, so its world transform\n * is the camera pose of the frame being gathered (cpp:1449-1452).\n * @param {Float32Array} inverseView - the inverse view matrix\n * (updateContext.renderContext.GetInverseViewTransform(); Carbon reads the\n * Tr2Renderer static at cpp:1449)\n */\n UpdateVisibility(inverseView)\n {\n if (!this.display)\n {\n return;\n }\n\n for (const object of this.objects)\n {\n object?.UpdateVisibility(this.updateContext, IDENTITY);\n }\n\n this.cameraAttachmentParent?.SetTransform?.(inverseView);\n this.cameraAttachmentParent?.UpdateSyncronous(this.updateContext);\n this.cameraAttachmentParent?.UpdateAsyncronous(this.updateContext);\n this.cameraAttachmentParent?.UpdateVisibility(this.updateContext, IDENTITY);\n\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.UpdateVisibility(this.updateContext);\n }\n\n for (const planet of this.planets)\n {\n planet?.UpdateZOnlyVisibility?.(this.updateContext);\n }\n\n // Sequential in Carbon too: \"until we have proper support for multiple\n // lensflares we just do it in a list\" (cpp:1462-1466).\n for (const lensflare of this.lensflares)\n {\n lensflare?.UpdateVisibility(this.updateContext);\n }\n }\n\n /** Gathers batchable renderables from the scene's objects for the batch\n * collection pass - the [GATHER] block of Carbon\n * EveSpaceScene::GatherBatches (EveSpaceScene.cpp:1470-1507): m_objects in\n * list order (cpp:1470-1475), then cameraAttachmentParent pushed LAST\n * (cpp:1476), then the staticParticles leg (cpp:1504-1507; Carbon signature\n * `GetRenderables(frustum, renderables)`, EveSceneStaticParticles.h - kept\n * with the out-parameter last per convention). Objects self-filter on the\n * visibility flags stamped by UpdateVisibility, so the array handed to\n * CjsBatchManager.Collect is pre-culled and this aggregation stays GPU-free.\n * The impostor-manager argument (cpp:1478-1502) is dropped - engine-owned.\n * Gather order matters downstream: the opaque accumulator receives batches\n * in gather order before Finalize sorts. */\n GetRenderables(out = [])\n {\n if (!this.display)\n {\n return out;\n }\n\n for (const object of this.objects) object?.GetRenderables(out);\n this.cameraAttachmentParent?.GetRenderables(out);\n for (const staticParticles of this.staticParticles)\n {\n staticParticles?.GetRenderables(this.updateContext.GetFrustum(), out);\n }\n return out;\n }\n\n /**\n * Refreshes the scene default's attribute snapshot, gathers every registered\n * PostProcessOwner's attributes, priority-blends them into the combined\n * post-process, copies the six engine effects through from the scene\n * default, and re-exports the result (Carbon\n * EveSpaceScene::UpdatePostProcessAttributes, EveSpaceScene.cpp:346-413).\n * Sort is descending by priority (cpp:372-377); Carbon's std::sort is\n * unstable while JS sort is stable - equal-priority ties keep registry\n * insertion order, which is blend-order-independent for every Sum-accumulated\n * attribute (the whole tie group is normalized together); only MaxWeight\n * ties at exactly equal weight (string paths / bools / DoF shape) could\n * differ from C++.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's g_enablePostProcessDebugging global becomes the scene-scoped enablePostProcessDebugging field; the debug payload is a plain object, null when off.\")\n UpdatePostProcessAttributes()\n {\n if (!this.display)\n {\n return;\n }\n\n // Scene default refreshed BEFORE the gather (cpp:354); FromPostProcess\n // handles a null postprocess (reset + return).\n this.#sceneDefaultPostProcessAttributes.FromPostProcess(\n this.postprocess, Tr2PostProcessAttributes.SCENE_DEFAULT_PRIORITY, 1.0);\n\n const sources = [];\n for (const owner of this.componentRegistry?.GetComponents(EveComponentType.PostProcessOwner) ?? [])\n {\n // Carbon pushes unguarded (cpp:358-361); JS ducks may return null.\n const attributes = owner?.GetPostProcessAttributes?.();\n if (attributes)\n {\n sources.push(attributes);\n }\n }\n\n // Scene default appended LAST (cpp:363).\n sources.push(this.#sceneDefaultPostProcessAttributes);\n\n // The list is never empty (default always pushed) so Carbon's else-branch\n // (cpp:411) is unreachable; the guard is kept for shape fidelity.\n if (sources.length)\n {\n this.#combinedPostProcess ??= new Tr2PostProcess2();\n\n sources.sort((a, b) => b.priority - a.priority);\n\n if (this.enablePostProcessDebugging)\n {\n const observer = Tr2PostProcessAttributes.CreateDebugObserver();\n Tr2PostProcessAttributes.MergeInto(this.#combinedPostProcess, sources, observer);\n this.postProcessDebug = observer.GetDict();\n }\n else\n {\n Tr2PostProcessAttributes.MergeInto(this.#combinedPostProcess, sources);\n this.postProcessDebug = null;\n }\n\n // Engine-effect copy-through from the scene default only - NOT blended\n // (cpp:389-406).\n if (this.postprocess)\n {\n this.#combinedPostProcess.SetDynamicExposure(this.postprocess.GetDynamicExposureIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetTaa(this.postprocess.GetTaaIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetTonemapping(this.postprocess.GetTonemappingIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetFog(this.postprocess.GetFogIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetGodRays(this.postprocess.GetGodRaysIfAvailable?.() ?? null);\n this.#combinedPostProcess.SetGenericEffect(this.postprocess.GetGenericEffectIfAvailable?.() ?? null);\n }\n else\n {\n this.#combinedPostProcess.SetDynamicExposure(null);\n this.#combinedPostProcess.SetTaa(null);\n this.#combinedPostProcess.SetTonemapping(null);\n this.#combinedPostProcess.SetFog(null);\n this.#combinedPostProcess.SetGodRays(null);\n this.#combinedPostProcess.SetGenericEffect(null);\n }\n\n // Re-export the combined result as an attributes object at\n // MEDIUM_PRIORITY - consumed by nested-scene composition (cpp:407).\n (this.combinedPostProcessAttributes ??= new Tr2PostProcessAttributes())\n .FromPostProcess(this.#combinedPostProcess, Tr2PostProcessAttributes.MEDIUM_PRIORITY, 1.0);\n }\n else\n {\n this.#combinedPostProcess = null;\n }\n }\n\n /** Carbon method GetPostProcess (EveSpaceScene.cpp:420-427): the combined\n * post-process, or null while the scene is not displayed. */\n @carbon.method\n @impl.implemented\n GetPostProcess()\n {\n if (!this.display)\n {\n return null;\n }\n return this.#combinedPostProcess;\n }\n\n /**\n * Blends every registered EveLightingOverride against the scene baseline and\n * stamps currentSunColor / currentNebulaIntensity /\n * currentReflectionIntensity - the lighting-override block of Carbon\n * EveSpaceScene::BeginRender (EveSpaceScene.cpp:1333-1363). The baseline is\n * appended AFTER the sort at raw priority -1 - one below\n * SCENE_DEFAULT_PRIORITY=0, outside the legal enum range (Carbon casts -1,\n * cpp:1343) - so it always sits last. Scalar/color math only - no matrix\n * compositions, no row-vector swaps anywhere in this method. Same\n * stable-sort note as UpdatePostProcessAttributes - here fully benign, the\n * blend is symmetric within a tie group.\n */\n BlendLightingOverrides()\n {\n if (!this.display)\n {\n return;\n }\n\n const overrides = [];\n for (const component of this.componentRegistry?.GetComponents(EveComponentType.EveLightingOverride) ?? [])\n {\n overrides.push(component.GetOverrides());\n }\n overrides.sort((a, b) => b.priority - a.priority);\n\n // Baseline (cpp:1342-1357): the scene's own sun/nebula/reflection state,\n // sun color normalized by its max channel (all four components scaled).\n const sunColorSource = this.useSunDiffuseColorWithDynamicLights && this.dynamicLightingEnabled\n ? this.sunDiffuseColorWithDynamicLights\n : this.sunDiffuseColor;\n const sunIntensity = Math.max(sunColorSource[0], sunColorSource[1], sunColorSource[2]);\n const baselineSunColor = vec4.create();\n if (sunIntensity !== 0)\n {\n vec4.scale(baselineSunColor, sunColorSource, 1 / sunIntensity);\n }\n else\n {\n vec4.copy(baselineSunColor, sunColorSource);\n }\n overrides.push({\n priority: -1,\n intensity: 1,\n value: {\n sunColor: baselineSunColor,\n sunIntensity,\n backgroundIntensity: this.nebulaIntensity,\n reflectionIntensity: this.reflectionIntensity\n }\n });\n\n const over = EveSpaceScene.#SimplePriorityBlend(overrides);\n vec4.scale(this.currentSunColor, over.sunColor, over.sunIntensity);\n this.currentNebulaIntensity = over.backgroundIntensity;\n this.currentReflectionIntensity = over.reflectionIntensity;\n }\n\n /**\n * Runs Carbon's portable froxel-fog blend against the scene-owned registry\n * and update context. The frame driver calls this immediately after lighting\n * overrides and before visibility/gather.\n */\n @impl.custom\n @impl.reason(\"Carbon performs this inside BeginRender; CarbonEngineJS exposes the scene-owned CPU phase because the engine driver owns the surrounding frame order.\")\n UpdateFogSettings()\n {\n this.volumetricsRenderer.UpdateFogSettings(this.componentRegistry, this.updateContext);\n }\n\n /**\n * Drives the injected light manager through Carbon's dynamic-light gather\n * (EveSpaceScene::BeginRender, EveSpaceScene.cpp:1396-1416, AFTER\n * GatherBatches cpp:1387): shadow quality, clear (runs even with zero owners\n * - stale lights must drop), frustum, LOD cutoff, then every registered\n * LightOwner's GetLights (Carbon Tr2ParallelFor chunk-20 cpp:1405-1413; JS\n * sequential in collection order), then ResolveLightData. No JS\n * Tr2LightManager class exists - the manager is a duck and every manager\n * call is optional-chained so a partial duck still gets the owner loop.\n * Carbon runs the block only when a manager instance exists (dynamic\n * lighting on) - a null manager is a no-op. The recording frame number\n * Carbon passes to SetShadowQuality and the renderContext it passes to Clear\n * are engine recording state - the JS Clear receives the frame's\n * renderContext for ducks that want it.\n * @param {Object|null} lightManager\n */\n GatherLights(lightManager)\n {\n // Kept for the PS fill's shadow-atlas settings: Carbon reads them from the\n // Tr2LightManager singleton (cpp:3126-3137), which is not ported; the\n // manager this scene last gathered with is the same one.\n this.#lightManager = lightManager ?? null;\n\n if (!lightManager || !this.display)\n {\n return;\n }\n\n lightManager.SetShadowQuality(this.shadowQualitySetting, this.updateContext.renderContext.GetRecordingFrameNumber());\n lightManager.Clear(this.updateContext.renderContext);\n lightManager.SetFrustum(this.updateContext.GetFrustum());\n lightManager.AdjustLightCutoff(this.updateContext.GetLodFactor());\n\n for (const owner of this.componentRegistry?.GetComponents(EveComponentType.LightOwner) ?? [])\n {\n owner?.GetLights?.(lightManager);\n }\n\n lightManager.ResolveLightData();\n }\n\n /**\n * Carbon EveSpaceScene::UpdateShLighting (cpp:1685-1703): hands every\n * secondary-lighting receiver the scene's SH manager, so each one samples the\n * bounce light at its own position. A scene with no manager does nothing, as\n * Carbon does.\n *\n * Carbon runs this at the very END of the gather (cpp:1524, after\n * FinalizeBatches), and over a parallel range; the JS pass is sequential\n * because the receivers write only their own records and share no state.\n *\n * @param {Array} objects - the frame's visible objects\n * @returns {Number} how many receivers were updated\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Carbon's Tr2ParallelFor becomes a sequential pass; the receivers touch only their own per-object records.\")\n UpdateShLighting(objects = [])\n {\n if (!this.shLightingManager)\n {\n return 0;\n }\n\n let updated = 0;\n\n for (const object of objects)\n {\n if (typeof object?.UpdateShLighting !== \"function\")\n {\n continue;\n }\n object.UpdateShLighting(this.shLightingManager, this.updateContext);\n updated++;\n }\n\n return updated;\n }\n\n /**\n * The scene's own per-frame vertex record (Carbon m_perFrameVS,\n * EveSpaceScene.h:300). Persistent, not arena-leased: it is rewritten each\n * frame and bound once, and the PS fill reads m_upscalingAmount back out of\n * the same pass.\n */\n #perFrameVS = RawData.create(\"EveSpaceScenePerFrameVSData\");\n\n /** Carbon m_perFramePS (EveSpaceScene.h:240). */\n #perFramePS = RawData.create(\"EveSpaceScenePerFramePSData\");\n\n /** The record PopulatePerFrameVSData fills. */\n GetPerFrameVSData()\n {\n return this.#perFrameVS;\n }\n\n /** The record PopulatePerFramePSData fills. */\n GetPerFramePSData()\n {\n return this.#perFramePS;\n }\n\n /**\n * Carbon RunLensflareOcclusionQueries (cpp:2782-2789): every lensflare's\n * foreground occlusion queries, then the occlusion buffer's per-frame\n * compute - unconditionally, as Carbon runs it with no lensflares too.\n *\n * @param {object} _depthMap The scene depth; unused by Carbon's body too.\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n RunLensflareOcclusionQueries(_depthMap, renderContext)\n {\n for (const lensflare of this.lensflares) lensflare.RunOcclusionQueries(renderContext, this.updateContext);\n Tr2OcclusionBuffer.getInstance().ProcessBuffer(renderContext);\n }\n\n // THE SCENE'S GLOBAL TEXTURES (EveSpaceScene.cpp:252-261). Carbon registers\n // each with a TYPED null - `(ITr2TextureProvider*)nullptr` - so the name is a\n // texture variable before anything fills it; a JS null has no type, so an\n // empty Tr2TextureReference stands for it (as the blitter's BlitSource).\n // Effects bind these by name when their materials map, so they exist from\n // construction.\n\n /** m_envMapHandle: \"EveSpaceSceneEnvMap\", the reflection (probe or nebula). */\n #envMapHandle = Tr2VariableStore.GlobalStore().RegisterVariable(\"EveSpaceSceneEnvMap\", new Tr2TextureReference());\n\n /** m_staticEnvMapHandle: \"EveSpaceSceneStaticEnvMap\", the nebula itself. */\n #staticEnvMapHandle = Tr2VariableStore.GlobalStore().RegisterVariable(\"EveSpaceSceneStaticEnvMap\", new Tr2TextureReference());\n\n /** \"SSAOMap\", registered empty (cpp:256); the driver fills it when SSAO runs. */\n #ssaoMapHandle = Tr2VariableStore.GlobalStore().RegisterVariable(\"SSAOMap\", new Tr2TextureReference());\n\n /**\n * Carbon's free function RegisterWithVariableStore (EveSpaceScene.cpp:4253-4266,\n * declared EveSpaceScene.h:725): publishes the shadow pass's four textures as\n * globals. Where a pass produced no screen-space shadow, a persistent white\n * 1x1 R8 \"EmptyShadow\" stands in, and a white R8_UINT \"EmptyShadowUint\" for\n * the point-light indices, so an unshadowed frame samples \"fully lit\"\n * rather than the backend's zero dummy. The two depth atlases go in as they\n * are, empty included.\n *\n * A texture variable holds a provider here, not a bare AL texture, so each\n * name is published through its own Tr2TextureReference, as the driver\n * publishes DepthMap.\n *\n * @param {object} shadowResources Carbon's EveSpaceScene::ShadowResources:\n * `shadowMap`, `cascadedShadowDepth`, `pointLightShadowMap` and\n * `pointLightShadowDepth`, each a GpuResourceHandle, empty when absent.\n * @param {Tr2GpuResourcePool} gpuResourcePool The driver's pool.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n static registerWithVariableStore(shadowResources, gpuResourcePool)\n {\n const store = Tr2VariableStore.GlobalStore();\n const references = EveSpaceScene.#shadowReferences;\n\n const publish = (name, texture) =>\n {\n references[name].SetTexture(texture);\n store.RegisterVariable(name, references[name]);\n };\n\n const emptyShadow = (name, format) =>\n {\n const handle = gpuResourcePool.GetPersistentTexture(name, {\n type: TextureType.TEX_TYPE_2D,\n width: 1,\n height: 1,\n depth: 1,\n mipCount: 1,\n format,\n gpuUsage: Tr2GpuUsage.SHADER_RESOURCE,\n initialData: [ new Tr2SubresourceData(new Uint8Array([ 255 ]), 1, 1) ]\n });\n const texture = handle.Get();\n gpuResourcePool.Free(handle);\n return texture;\n };\n\n publish(\"EveSpaceSceneShadowMap\", shadowResources.shadowMap.IsValid()\n ? shadowResources.shadowMap.Get()\n : emptyShadow(\"EmptyShadow\", PixelFormat.PIXEL_FORMAT_R8_UNORM));\n publish(\"EveSpaceSceneCascadedShadowMap\", shadowResources.cascadedShadowDepth.Get());\n publish(\"EveSpaceSceneDynamicShadowMap\", shadowResources.pointLightShadowMap.IsValid()\n ? shadowResources.pointLightShadowMap.Get()\n : emptyShadow(\"EmptyShadowUint\", PixelFormat.PIXEL_FORMAT_R8_UINT));\n publish(\"ShadowMapAtlas\", shadowResources.pointLightShadowDepth.Get());\n }\n\n /** The providers registerWithVariableStore publishes through, one per name. */\n static #shadowReferences = {\n EveSpaceSceneShadowMap: new Tr2TextureReference(),\n EveSpaceSceneCascadedShadowMap: new Tr2TextureReference(),\n EveSpaceSceneDynamicShadowMap: new Tr2TextureReference(),\n ShadowMapAtlas: new Tr2TextureReference()\n };\n\n /** m_envMapTextureRes / m_staticEnvMapTextureRes, set by Initialize. */\n #envMapTextureRes = null;\n\n #staticEnvMapTextureRes = null;\n\n /**\n * Carbon Initialize (cpp:3207-3226), with the constructor's ring-buffer\n * registrations (cpp:257-258) moved here. The nebula loads from\n * envMapResPath; the reflection is the probe's cube when the scene has a\n * valid probe, else the nebula.\n *\n * The render context is an ADDED argument: Carbon's constructor reaches the\n * BoneTransforms ring through the process-wide context, and a JS scene is\n * constructed before any context exists, so the ring is registered here.\n *\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {boolean} True.\n */\n @carbon.method\n @impl.adapted\n Initialize(renderContext)\n {\n const bones = Tr2RingBuffer.GetInstance(\"Float4x3\", 48, renderContext);\n bones.SetName(\"BoneTransformsBuffer\");\n Tr2VariableStore.GlobalStore().RegisterVariable(\"BoneTransforms\", bones);\n\n this.#staticEnvMapTextureRes = this.envMapResPath\n ? blue.resMan.GetResource(this.envMapResPath, { requirement: ResourceRequirement.TEXTURE })\n : null;\n\n if (this.reflectionProbe && this.reflectionProbe.IsValid(renderContext))\n {\n this.#envMapTextureRes = this.reflectionProbe.GetReflection();\n this.reflectionProbe.SetBackLightColor(this.reflectionBackLightingColor);\n this.reflectionProbe.SetBackLightContrast(this.reflectionBackLightingContrast);\n }\n else\n {\n this.#envMapTextureRes = this.#staticEnvMapTextureRes;\n }\n\n // cpp:3247-3257: every object entity joins the scene's component registry\n // - its light owners, post-process owners, shadow casters - and so does\n // the camera attachment parent. Without it GatherLights finds no owners\n // and no attachment light reaches a shader. The quad-renderer\n // registration beside it is not ported, nor is the list-insert\n // registration (OnListChanged, cpp:3465-3470): objects pushed after\n // Initialize join through ReregisterEntities.\n // Carbon's BlueCastPtr<EveEntity> is CjsSchema.cast.\n for (const object of this.objects)\n {\n CjsSchema.cast(object, EveEntity)?.Register(this.componentRegistry);\n }\n CjsSchema.cast(this.cameraAttachmentParent, EveEntity)?.Register(this.componentRegistry);\n\n return true;\n }\n\n /**\n * Carbon UpdateVariableStore's environment-map half (cpp:2984-2993): the\n * nebula and the reflection go through the global store each frame.\n *\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n UpdateVariableStore()\n {\n this.#staticEnvMapHandle.SetValue(this.#staticEnvMapTextureRes);\n this.#envMapHandle.SetValue(this.#envMapTextureRes);\n }\n\n /** The Tr2LightManager GatherLights last ran with; see #EngineFrameState. */\n #lightManager = null;\n\n /**\n * The engine state Carbon's per-frame fills read from Tr2Renderer statics\n * and the effect state manager (EveSpaceScene.cpp:3018-3205): render-target\n * size and device viewport (3045-3046, 3060), animation time (3066, 3118),\n * frame counter (3121), gamma (3099), the non-reversed projection and\n * aspect ratio for FovXY (3049-3050; s_aspectRatio is _22/_11,\n * Tr2Renderer.cpp:80), the scene post process's mip bias (3161-3164) and\n * the light manager's shadow atlas (3126-3137).\n *\n * The fills keep a `frame` argument whose fields OVERRIDE these, for\n * callers that drive a frame without a live device; with none passed, every\n * value is the engine's, as Carbon's is. Until 2026-09-26 the driver passed\n * nothing and every field fell to zero: Time and FrameIndex frozen,\n * GammaBrightness 0, FovXY and TargetResolution 0.\n *\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {object} The frame fields.\n */\n #EngineFrameState(renderContext)\n {\n const esm = renderContext.GetEffectStateManager();\n const projection = renderContext.GetProjection();\n const atlas = this.#lightManager ? this.#lightManager.GetShadowMapAtlasSettings() : null;\n\n return {\n renderTargetWidth: esm.renderTargetWidth,\n renderTargetHeight: esm.renderTargetHeight,\n deviceViewport: esm.GetDeviceViewport(),\n animationTime: Tr2Renderer.GetAnimationTime(),\n frameIndex: Number(Tr2Renderer.GetCurrentFrameCounter()) >>> 0,\n gammaBrightness: EveSpaceScene.eveSpaceSceneGammaBrightness,\n projectionTransform: projection,\n aspectRatio: projection && projection[0] ? projection[5] / projection[0] : 1,\n sceneMipLodBias: this.postprocess ? this.postprocess.GetMipLodBias() : 0,\n inverseShadowMapAtlasSize: atlas && atlas.actualTextureSize > 0 ? 1 / atlas.actualTextureSize : 0,\n shadowMapAtlasEntryMinSizeLog2: atlas ? atlas.entryMinSizeLog2 : 0\n };\n }\n\n /** Carbon m_perFrameVSBuffer / m_perFramePSBuffer: created empty on first apply, sized by FillAndSetConstants. */\n #perFrameVSBuffer = null;\n\n #perFramePSBuffer = null;\n\n /**\n * Carbon EveSpaceScene::Jitter (cpp:1253-1291), called from BeginRender\n * (cpp:1329): the frame's sub-pixel projection offset for TAA.\n *\n * With TAA on the scene's default post process, a FIXED 4-SAMPLE PATTERN\n * (not Halton) indexed by the recording frame number, scaled to clip space\n * by the bound target's size; otherwise identity. Carbon's\n * `m_projection * m_jitterMatrix` is row-vector, so gl-matrix multiplies the\n * other way round: the offset is applied after the projection.\n *\n * Adapted: Carbon's first branch takes a temporal upscaler's jitter\n * (cpp:1257-1264). No upscaler is ported, so it is absent.\n *\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n Jitter(renderContext)\n {\n mat4.copy(this.projection, renderContext.GetProjection());\n\n if (this.postprocess && this.postprocess.GetTaaIfAvailable() !== null)\n {\n const esm = renderContext.GetEffectStateManager();\n const sample = JITTER_SAMPLING_PATTERNS[renderContext.GetRecordingFrameNumber() % JITTER_SAMPLING_PATTERNS.length];\n\n this.jitter[0] = Math.fround(2 * sample[0] / esm.renderTargetWidth);\n this.jitter[1] = Math.fround(2 * sample[1] / esm.renderTargetHeight);\n mat4.fromTranslation(this.jitterMatrix, [ this.jitter[0], this.jitter[1], 0 ]);\n mat4.multiply(this.jitteredProjection, this.jitterMatrix, this.projection);\n return;\n }\n\n mat4.identity(this.jitterMatrix);\n mat4.copy(this.jitteredProjection, this.projection);\n this.jitter[0] = 0;\n this.jitter[1] = 0;\n }\n\n /**\n * Carbon's EveSpaceScene::EndRender, two parts of it:\n * - the lens flares (cpp:2839-2859): each flare's renderables drawn\n * additively into the scene target, with depth read-only, after the main\n * pass - so after TAA's opaque copy, which excludes them as Carbon's does;\n * - the last-frame store (cpp:2866-2868): this frame's view, and its\n * UNJITTERED projection, become next frame's viewLast and projectionLast,\n * which the per-frame vertex block hands the velocity shaders.\n *\n * Adapted: the rest of Carbon's EndRender (the secondary transparent and\n * additive gathers, batch clearing, the variable store) belongs to passes\n * this runtime's driver does not run yet.\n *\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n EndRender(renderContext)\n {\n if (this.lensflares.length)\n {\n const visible = [];\n\n for (const lensflare of this.lensflares) lensflare.GetRenderables(this.updateContext.GetFrustum(), visible);\n\n if (visible.length)\n {\n renderContext.SetReadOnlyDepth(true);\n this.RenderRenderables(visible, this.#secondaryAdditiveBatches, TriBatchType.TRIBATCHTYPE_ADDITIVE, RenderingMode.RM_ALPHA_ADDITIVE, renderContext);\n renderContext.SetReadOnlyDepth(false);\n }\n }\n\n mat4.copy(this.viewLast, renderContext.GetViewTransform());\n mat4.copy(this.projectionLast, this.projection);\n }\n\n /** m_secondaryBatches[TRIBATCHTYPE_ADDITIVE]: the accumulator EndRender's\n * lens flares are gathered into (effect-sorted, as every non-transparent\n * batch type is). */\n #secondaryAdditiveBatches = new TriRenderBatchAccumulator(EffectKeyGenerator);\n\n /**\n * Carbon EveSpaceScene::RenderRenderables (cpp:1065-1085): each renderable's\n * per-object data and batches into the accumulator, then RenderBatch. No\n * pool allocator, no draw, as in Carbon.\n *\n * @param {Array} renderables The renderables to draw.\n * @param {object} batch The accumulator to gather into.\n * @param {number} batchType The TriBatchType to gather.\n * @param {number} rm The RenderingMode to draw with.\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @param {number} [reason] The render reason.\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n RenderRenderables(renderables, batch, batchType, rm, renderContext, reason = undefined)\n {\n const allocator = renderContext.GetTriPoolAllocator();\n\n if (!allocator) return;\n\n batch.SetTriPoolAllocator(allocator);\n\n for (const renderable of renderables)\n {\n const objectData = renderable.GetPerObjectData(batch);\n renderable.GetBatches(batch, batchType, objectData, reason);\n }\n\n this.RenderBatch(batch, rm, renderContext);\n }\n\n /**\n * Carbon EveSpaceScene::RenderBatch (cpp:1095-1115): finalize, apply the\n * rendering mode's standard states, draw, clear.\n *\n * Adapted: Carbon draws through the scene's visualizer effect (a pixel-shader\n * replacement, or none for the ordinary view); visualizer effects are not\n * ported, so this always draws the ordinary view.\n *\n * @param {object} batch The accumulator to draw.\n * @param {number} rm The RenderingMode.\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderBatch(batch, rm, renderContext)\n {\n batch.Finalize();\n renderContext.GetEffectStateManager().ApplyStandardStates(rm);\n renderContext.RenderBatches(batch);\n batch.Clear();\n }\n\n /**\n * Carbon EveSpaceScene::RenderDepthPass (cpp:2201-2356): the opaque, decal\n * and depth batches drawn with the depth technique into the bound depth\n * buffer, and into the normal map and custom stencil when they are given.\n * Both targets and the depth are cleared to zero, reverse-Z's far.\n *\n * Carbon's Metal branch is the one taken (cpp:2255-2259, 2319-2321): with\n * no normal map, colour slot 0 is unbound for the pass rather than left on\n * the scene colour.\n *\n * Adapted. The batches come in as `batchMap`: Carbon draws its own\n * m_primaryBatches, and the gather that fills them is the driver's here.\n * Not ported, each a later insertion at its place in this order: the\n * mesh-morph update before the pass (cpp:2212-2228; nothing registers an\n * ITr2MeshMorph), the planets' z-only areas (cpp:2285-2308; EvePlanet has no\n * GetZOnlyRenderables), and the volumetrics sun angle and planet shadow\n * casters after it (cpp:2328-2355).\n *\n * @param {object} depthMap The scene depth; the caller has bound it.\n * @param {object|null} normalMap The normal map, or null.\n * @param {object|null} customStencil The custom stencil target, or null.\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @param {string} techniqueName The depth technique (\"Depth\" from the driver).\n * @param {object} batchMap The frame's batch map.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderDepthPass(depthMap, normalMap, customStencil, renderContext, techniqueName, batchMap)\n {\n if (!this.display) return;\n\n const esm = renderContext.GetEffectStateManager();\n const clearAndStore = () => new Tr2ColorAttachment(Tr2LoadAction.CLEAR, Tr2StoreAction.STORE);\n const clearDepth = new Tr2DepthAttachment(Tr2LoadAction.CLEAR, Tr2StoreAction.STORE, 0);\n let renderingMode;\n\n esm.BeginManagedRendering();\n esm.SetRenderTarget(1, customStencil);\n esm.PushRenderTarget();\n\n if (normalMap)\n {\n esm.SetRenderTarget(0, normalMap);\n if (customStencil)\n {\n renderContext.RenderPassHint(clearAndStore(), clearAndStore(), clearDepth);\n renderContext.Clear({ clearColor: true, color: [ 0, 0, 0, 0 ], slot: 1 });\n }\n else\n {\n renderContext.RenderPassHint(clearAndStore(), clearDepth);\n }\n renderContext.Clear({ clearColor: true, clearDepth: true, color: [ 0, 0, 0, 0 ], depth: 0 });\n renderingMode = RenderingMode.RM_OPAQUE;\n }\n else\n {\n esm.SetRenderTarget(0, null);\n if (customStencil)\n {\n renderContext.RenderPassHint(new Tr2ColorAttachment(), clearAndStore(), clearDepth);\n renderContext.Clear({ clearColor: true, color: [ 0, 0, 0, 0 ], slot: 1 });\n renderingMode = RenderingMode.RM_OPAQUE;\n }\n else\n {\n renderContext.RenderPassHint(new Tr2ColorAttachment(), clearDepth);\n renderingMode = RenderingMode.RM_DEPTH_ONLY;\n }\n renderContext.Clear({ clearDepth: true, depth: 0 });\n }\n\n this.ApplyPerFrameData(renderContext);\n\n for (const batchType of [ TriBatchType.TRIBATCHTYPE_OPAQUE, TriBatchType.TRIBATCHTYPE_DECAL, TriBatchType.TRIBATCHTYPE_DEPTH ])\n {\n esm.ApplyStandardStates(renderingMode);\n\n const accumulator = batchMap.GetAccumulator(batchType);\n\n if (accumulator) renderContext.RenderBatches(accumulator, techniqueName);\n }\n\n // Metal supports render-pass hints, so the hinted pass ends here\n // (cpp:2310-2314); without a normal map Carbon's Metal branch only pops.\n if (normalMap) renderContext.EndRenderPassHint();\n\n esm.PopRenderTarget();\n esm.SetRenderTarget(1, null);\n esm.EndManagedRendering();\n }\n\n /** m_enableShadows: C++-only, set in the constructor and never cleared (EveSpaceScene.cpp:180). */\n _enableShadows = true;\n\n /**\n * m_shadowBatches: one accumulator per cascade split (cpp:245-250). Carbon\n * gives each its own pool allocator; ours draw from the context's.\n */\n _shadowBatches = Array.from({ length: CjsPerFrameLayouts.SHADOW_FRUSTUM_COUNT }, () => new TriRenderBatchAccumulator(EffectKeyGenerator));\n\n /** The shadow pass's per-frame vertex block, of which only ViewProjectionMat is set (cpp:764-765). */\n _shadowPerFrameVS = RawData.create(\"EveSpaceScenePerFrameVSData\");\n\n /** m_shadowPerFrameVSBuffer */\n _shadowPerFrameVSBuffer = null;\n\n /**\n * Carbon EveSpaceScene::RenderShadows (cpp:2618-2676): the cascaded shadow\n * map at LOW or HIGH shadow quality.\n *\n * Adapted: the renderer is passed in for the resolve's blitter, as\n * `Tr2ShadowMap.DrawToShadowMapResult` takes it. Not ported, each a later\n * insertion here: the raytraced branch (no Tr2RaytracingManager), and the\n * point and spot light shadow atlas (the light manager's shadow maps).\n *\n * @param {object} depthMap The scene depth.\n * @param {object|null} normalMap The depth pass's normal map (the raytraced branch reads it).\n * @param {object} gpuResourcePool The driver's pool.\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @param {object} renderer The renderer owning the blitter.\n * @returns {object} ShadowResources: `shadowMap`, `cascadedShadowDepth`,\n * `pointLightShadowMap`, `pointLightShadowDepth`, each a GpuResourceHandle,\n * empty when absent.\n */\n @carbon.method\n @impl.adapted\n RenderShadows(depthMap, normalMap, gpuResourcePool, renderContext, renderer)\n {\n if (!this.display || !this._enableShadows) return EmptyShadowResources();\n\n if (this.cascadedShadowMap\n && (this.shadowQualitySetting === ShadowQuality.SHADOW_LOW || this.shadowQualitySetting === ShadowQuality.SHADOW_HIGH))\n {\n return this.SetupCascadedShadows(Tr2RenderReason.TR2RENDERREASON_NORMAL, this.cascadedShadowMap, this.updateContext.GetFrustum(), depthMap, gpuResourcePool, renderContext, renderer);\n }\n\n return EmptyShadowResources();\n }\n\n /**\n * Carbon EveSpaceScene::SetupCascadedShadows (cpp:608-798): splits the view\n * into cascades, finds each one's shadow casters, draws them with their\n * \"Shadow\" technique into the cascade's cell of the depth atlas, then\n * resolves the atlas against the scene depth into a screen-space shadow\n * factor.\n *\n * Adapted: Carbon reads the camera off Tr2Renderer's statics, which the\n * render context holds here, and finds casters and gathers batches in\n * parallel, which runs in order here. Not ported, each a later insertion:\n * the instanced mesh manager's shadow batches, the planets as shadow\n * casters, and the volumetrics' shadows.\n *\n * @param {number} renderReason A `Tr2RenderReason`.\n * @param {Tr2ShadowMap} shadowMap The scene's cascaded shadow map.\n * @param {TriFrustum} viewFrustum The camera frustum.\n * @param {object} depthMap The scene depth.\n * @param {object} gpuResourcePool The driver's pool.\n * @param {Tr2RenderContext} renderContext The frame's context.\n * @param {object} renderer The renderer owning the blitter.\n * @returns {object} ShadowResources, as RenderShadows.\n */\n @carbon.method\n @impl.adapted\n SetupCascadedShadows(renderReason, shadowMap, viewFrustum, depthMap, gpuResourcePool, renderContext, renderer)\n {\n if (!this.componentRegistry) return EmptyShadowResources();\n\n const shadowCasters = this.componentRegistry.GetComponents(EveComponentType.ShadowCaster);\n const volumetricCount = this.componentRegistry.ComponentCount(EveComponentType.VolumetricRenderable);\n const fogCount = this.componentRegistry.ComponentCount(EveComponentType.FroxelFogSettings);\n\n if (shadowCasters.length + volumetricCount + fogCount === 0) return EmptyShadowResources();\n\n shadowMap.UpdateSplitValues(renderContext.GetFrontClip(), renderContext.GetBackClip());\n\n const shadowMapSize = shadowMap.GetShadowMapSize();\n const splitCount = CjsPerFrameLayouts.SHADOW_FRUSTUM_COUNT;\n\n // The frustum's left, right, top and bottom over the near plane, from the\n // projection (cpp:633-644); Carbon's _11, _22, _31 and _32 are 0, 5, 8, 9.\n const projection = renderContext.GetProjection();\n const rightMinusLeft = 2 / projection[0];\n const bottomMinusTop = 2 / -projection[5];\n const left = (projection[8] - 1) / 2 * rightMinusLeft;\n const top = (-projection[9] - 1) / 2 * bottomMinusTop;\n const right = rightMinusLeft + left;\n const bottom = bottomMinusTop + top;\n const sunDir = this.sunDirection;\n const cameraFrustums = [];\n const shadowFrustums = [];\n const splitSetups = [];\n\n for (let splitIndex = 0; splitIndex < splitCount; ++splitIndex)\n {\n const splitSetup = shadowMap.SetupShadowSplit(splitIndex, renderContext.GetInverseViewTransform(), sunDir, viewFrustum.zNear, left, right, top, bottom);\n\n // The split's slice of the camera frustum, for half-space culling of\n // casters. Only the planes are read, so they are all that is made.\n const cameraFrustum = new TriFrustum();\n\n cameraFrustum.ExtractFrustum(mat4.invert(mat4.create(), splitSetup.invViewProj));\n cameraFrustums.push(cameraFrustum);\n shadowFrustums.push(new TriShadowOrthoFrustum(splitSetup.shadowFrustum, shadowMapSize, sunDir));\n splitSetups.push(splitSetup);\n }\n\n // Without the atlas there is nothing to draw into (cpp:661-665).\n const cascadedShadowDepth = shadowMap.PrepareShadowRendering(gpuResourcePool, renderContext);\n\n if (!cascadedShadowDepth || !cascadedShadowDepth.IsValid()) return EmptyShadowResources();\n\n const allocator = renderContext.GetTriPoolAllocator();\n\n for (let frustumIndex = 0; frustumIndex < splitCount; ++frustumIndex)\n {\n const batches = this._shadowBatches[frustumIndex];\n const shadowCasterInfo = [];\n\n if (allocator) batches.SetTriPoolAllocator(allocator);\n\n for (const caster of shadowCasters)\n {\n const radius = [ 0 ];\n\n if (caster.IsCastingShadow(cameraFrustums[frustumIndex], shadowFrustums[frustumIndex], renderReason, radius))\n {\n shadowCasterInfo.push({ radius: radius[0], caster, perObjectData: null });\n }\n }\n\n for (const info of shadowCasterInfo) info.perObjectData = info.caster.GetShadowPerObjectData(batches);\n for (const info of shadowCasterInfo) info.caster.GetShadowBatches(batches, info.perObjectData, info.radius);\n\n batches.Finalize();\n }\n\n const esm = renderContext.GetEffectStateManager();\n const shaderTypeMask = renderContext.GetRenderContextAL().constructor.SHADER_TYPE_MASK;\n const perFrameVsMask = (1 << ShaderType.VERTEX_SHADER) | (shaderTypeMask & (\n (1 << ShaderType.COMPUTE_SHADER)\n | (1 << ShaderType.GEOMETRY_SHADER)\n | (1 << ShaderType.HULL_SHADER)\n | (1 << ShaderType.DOMAIN_SHADER)\n ));\n\n renderContext.SetRenderState(RenderState.RS_DEPTH_CLIP_ENABLE, 0);\n\n try\n {\n for (let splitIndex = 0; splitIndex < splitCount; ++splitIndex)\n {\n const batches = this._shadowBatches[splitIndex];\n\n if (batches.GetBatchCount() === 0)\n {\n batches.Clear();\n continue;\n }\n\n shadowMap.BeginShadowRendering(renderContext, splitIndex);\n\n // column_major for shaders: Carbon stores Transpose(lightViewProjection).\n this._shadowPerFrameVS.SetAndTranspose(\"ViewProjectionMat\", splitSetups[splitIndex].lightViewProjection);\n this._shadowPerFrameVSBuffer ??= renderContext.CreateConstantBuffer();\n\n const data = this._shadowPerFrameVS.GetData();\n\n FillAndSetConstants(this._shadowPerFrameVSBuffer, data, data.byteLength, perFrameVsMask, PER_FRAME_VS, renderContext);\n\n // The atlas is a forward-depth surface cleared to 1 (PrepareShadowRendering).\n esm.SetInvertedDepthTest(false);\n\n try\n {\n esm.ApplyStandardStates(RenderingMode.RM_OPAQUE);\n renderContext.RenderBatches(batches, \"Shadow\");\n }\n finally\n {\n esm.SetInvertedDepthTest(true);\n }\n\n batches.Clear();\n }\n\n shadowMap.EndShadowRendering(renderContext);\n }\n finally\n {\n renderContext.SetRenderState(RenderState.RS_DEPTH_CLIP_ENABLE, 1);\n }\n\n this.PopulatePerFramePSData(renderContext, {}, shadowMap);\n this.ApplyPerFrameData(renderContext);\n\n const result = shadowMap.DrawToShadowMapResult(renderContext, gpuResourcePool, depthMap, cascadedShadowDepth.Get(), this.upscalingAmount, renderer);\n\n return {\n shadowMap: result ?? new GpuResourceHandle(),\n cascadedShadowDepth,\n pointLightShadowMap: new GpuResourceHandle(),\n pointLightShadowDepth: new GpuResourceHandle()\n };\n }\n\n /**\n * Carbon EveSpaceScene::ApplyPerFrameData (cpp:818-828): uploads and binds\n * both per-frame blocks. The VERTEX block is bound for every non-pixel\n * stage the backend has - vertex always, compute, geometry, hull and domain\n * where SHADER_TYPE_EXISTS - because compute passes read it too: dynamic\n * exposure's measure pass reads Time (register 45.x) to advance its\n * adaptation, and with the block bound for vertex only it read zero and\n * exposure never left its initial 0.\n *\n * The buffers come from the render context on first use, as Carbon's\n * default-constructed members are sized by FillAndSetConstants.\n *\n * @param {Tr2RenderContext} renderContext The context to bind on.\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n ApplyPerFrameData(renderContext)\n {\n const shaderTypeMask = renderContext.GetRenderContextAL().constructor.SHADER_TYPE_MASK;\n const perFrameVsMask = (1 << ShaderType.VERTEX_SHADER) | (shaderTypeMask & (\n (1 << ShaderType.COMPUTE_SHADER)\n | (1 << ShaderType.GEOMETRY_SHADER)\n | (1 << ShaderType.HULL_SHADER)\n | (1 << ShaderType.DOMAIN_SHADER)\n ));\n\n this.#perFrameVSBuffer ??= renderContext.CreateConstantBuffer();\n this.#perFramePSBuffer ??= renderContext.CreateConstantBuffer();\n\n const vs = this.#perFrameVS.GetData();\n const ps = this.#perFramePS.GetData();\n\n FillAndSetConstants(this.#perFrameVSBuffer, vs, vs.byteLength, perFrameVsMask, PER_FRAME_VS, renderContext);\n FillAndSetConstants(this.#perFramePSBuffer, ps, ps.byteLength, 1 << ShaderType.PIXEL_SHADER, PER_FRAME_PS, renderContext);\n }\n\n /**\n * Fills the per-frame VERTEX constants (Carbon\n * EveSpaceScene::PopulatePerFrameVSData, cpp:3015-3068).\n *\n * Adapted in one respect, the same way StampFrameContext is: Carbon reads\n * the camera off `Tr2Renderer` statics and the render-target/viewport sizes\n * off `renderContext.m_esm`, neither of which exists GPU-free here. The\n * driver passes them in `frame` instead. Everything the scene itself owns -\n * sun, fog, env-map rotation, the previous frame's view/projection - is read\n * from the scene, as Carbon does.\n *\n * Matrices are stored TRANSPOSED because the shaders are column_major, with\n * one deliberate exception Carbon calls out at cpp:3023: the value wanted for\n * `ViewInverseTransposeMat` is already a transpose, so transposing it again\n * cancels and the inverse view goes in as-is.\n *\n * @param {Object} renderContext - the frame's Tr2RenderContext\n * @param {Object} [frame] - the engine-supplied state Carbon reads statically\n * @param {Number} [frame.renderTargetWidth]\n * @param {Number} [frame.renderTargetHeight]\n * @param {Number} [frame.aspectRatio]\n * @param {Number} [frame.animationTime] - Tr2Renderer::GetAnimationTime\n * @param {Object|null} [frame.deviceViewport] - {width, height}\n * @param {Object|null} [frame.projectionTransform] - the NON reversed-depth\n * projection, which Carbon uses only to recover the field of view\n * @param {Object} [out] - the record to fill; defaults to the scene's own\n * @returns {Object} the filled record\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Tr2Renderer view statics and the ESM's render-target/viewport sizes are engine state; the driver supplies them in `frame`.\")\n PopulatePerFrameVSData(renderContext, frame = {}, out = this.#perFrameVS)\n {\n frame = { ...this.#EngineFrameState(renderContext), ...frame };\n const view = renderContext.GetViewTransform();\n // Carbon's frame is reverse-Z: the shaders get the REVERSED-depth\n // projection (cpp:3022), matching the inverted depth test and the clear to\n // 0 the driver sets. The forward one here put depth the other way round.\n const projection = renderContext.GetReversedDepthProjectionTransform();\n\n // column_major for shaders\n out.SetAndTranspose(\"ViewMat\", view);\n out.SetAndTranspose(\"ProjectionMat\", projection);\n\n // Carbon `view * proj` (row-vector); gl-matrix swaps the operands.\n mat4.multiply(perFrameMatrixScratch, projection, view);\n out.SetAndTranspose(\"ViewProjectionMat\", perFrameMatrixScratch);\n\n // Needs the transposed, but the shader also wants column_major, so it is\n // transpose(transpose(m)) == m (cpp:3023-3024).\n mat4.transpose(perFrameMatrixScratch, renderContext.GetInverseViewTransform());\n out.SetAndTranspose(\"ViewInverseTransposeMat\", perFrameMatrixScratch);\n\n // Carbon `m_projectionLast * m_jitterMatrix` then `m_viewLast * that`.\n mat4.multiply(perFrameLastProjectionScratch, this.jitterMatrix, this.projectionLast);\n out.SetAndTranspose(\"ProjLast\", perFrameLastProjectionScratch);\n out.SetAndTranspose(\"ViewLast\", this.viewLast);\n mat4.multiply(perFrameMatrixScratch, perFrameLastProjectionScratch, this.viewLast);\n out.SetAndTranspose(\"ViewProjectionLast\", perFrameMatrixScratch);\n\n // Each scene has a nebula, and that can be rotated and inverted by scaling.\n mat4.fromQuat(perFrameMatrixScratch, this.envMapRotation);\n out.SetAndTranspose(\"EnvMapRotationMat\", perFrameMatrixScratch);\n\n this.#FillSunData(out);\n\n out.Set(\"TargetResolution\", [\n frame.renderTargetWidth ?? 0,\n frame.renderTargetHeight ?? 0\n ]);\n\n this.#FillFovXY(out, frame);\n\n // Guarded so a zero-width fog band cannot divide by zero (cpp:3049-3054).\n let distance = this.fogEnd - this.fogStart;\n if (Math.abs(distance) < 1e-5)\n {\n distance = 1e-5;\n }\n out.Set(\"FogFactors\", [ this.fogEnd / distance, 1 / distance, this.fogMax ]);\n\n // Derived from SetupViewport in Tr2Renderer.cpp (cpp:3056-3062).\n const viewport = renderContext.GetViewport();\n const device = frame.deviceViewport ?? viewport;\n\n if (viewport && device)\n {\n out.Set(\"ViewportAdjustment\", [\n viewport.x < 0 ? -1 : 1,\n viewport.y + viewport.height > (frame.renderTargetHeight ?? 0) ? -1 : 1,\n device.width / viewport.width,\n device.height / viewport.height\n ]);\n }\n\n out.Set(\"Time\", frame.animationTime ?? 0);\n out.Set(\"Upscaling\", this.upscalingAmount);\n out.Set(\"ViewportSize\", device ? [ device.width, device.height ] : [ 0, 0 ]);\n\n return out;\n }\n\n /**\n * Fills the per-frame PIXEL constants (Carbon\n * EveSpaceScene::PopulatePerFramePSData, cpp:3075-3202). Same `frame`\n * adaptation as the vertex fill.\n *\n * The cascaded-shadow block (ShadowMapValues / CascadeRanges /\n * ShadowMatrixVal / SplitInfo) is filled only when a shadow map is passed,\n * exactly as Carbon's `if( shadowMap )` gate does; without one the record\n * leaves the persistent cascade bytes untouched. `ShadowCameraRange` remains\n * disabled, so stale cascade bytes are not consumed until a map is supplied\n * again.\n *\n * @param {Object} renderContext - the frame's Tr2RenderContext\n * @param {Object} [frame] - as PopulatePerFrameVSData, plus:\n * @param {Number} [frame.frameIndex] - Tr2Renderer::GetCurrentFrameCounter\n * @param {Number} [frame.gammaBrightness]\n * @param {Number} [frame.sceneMipLodBias] - the upscaler's bias, plus the\n * scene post-process's own; the upscaling info is engine state\n * @param {Number} [frame.inverseShadowMapAtlasSize] - 0 with no light manager\n * @param {Number} [frame.shadowMapAtlasEntryMinSizeLog2]\n * @param {Tr2ShadowMap|null} [shadowMap=this.cascadedShadowMap] - the owned\n * cascaded shadow map; explicit null disables cascade packing\n * @param {Object} [out] - the record to fill; defaults to the scene's own\n * @returns {Object} the filled record\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Tr2Renderer statics, the ESM viewport, Tr2LightManager's atlas settings and the upscaler's mip bias are engine state; the driver supplies them in `frame`.\")\n PopulatePerFramePSData(renderContext, frame = {}, shadowMap = this.cascadedShadowMap, out = this.#perFramePS)\n {\n frame = { ...this.#EngineFrameState(renderContext), ...frame };\n if (shadowMap !== null && !(shadowMap instanceof Tr2ShadowMap))\n {\n throw new TypeError(\"EveSpaceScene.PopulatePerFramePSData requires a Tr2ShadowMap or null.\");\n }\n // The reversed-depth projection, as the vertex fill (cpp:3140).\n const projection = renderContext.GetReversedDepthProjectionTransform();\n\n out.SetAndTranspose(\"ViewMat\", renderContext.GetViewTransform());\n\n // transpose(transpose(m)) == m, as in the vertex fill (cpp:3079-3080).\n mat4.transpose(perFrameMatrixScratch, renderContext.GetInverseViewTransform());\n out.SetAndTranspose(\"ViewInverseTransposeMat\", perFrameMatrixScratch);\n\n mat4.fromQuat(perFrameMatrixScratch, this.envMapRotation);\n out.SetAndTranspose(\"EnvMapRotationMat\", perFrameMatrixScratch);\n\n this.#FillSunData(out);\n\n // The pixel fill alone overrides the sun's alpha with the roughness\n // (cpp:3087) - the vertex fill leaves the blended colour's own alpha.\n out.Set(\"Sun.DiffuseColor\", [\n this.currentSunColor[0],\n this.currentSunColor[1],\n this.currentSunColor[2],\n this.defaultDiffuseRoughness\n ]);\n\n out.Set(\"AmbientColor\", [ this.ambientColor[0], this.ambientColor[1], this.ambientColor[2] ]);\n out.Set(\"ReflectionIntensity\", this.currentReflectionIntensity);\n out.Set(\"FogColor\", [ this.fogColor[0], this.fogColor[1], this.fogColor[2], this.fogMax ]);\n\n out.Set(\"GammaBrightness\", frame.gammaBrightness ?? 0);\n\n out.Set(\"TargetResolution\", [\n frame.renderTargetWidth ?? 0,\n frame.renderTargetHeight ?? 0\n ]);\n\n this.#FillFovXY(out, frame);\n\n // Shadows are disabled by default (cpp:3107).\n out.Set(\"ShadowCameraRange\", [ 1, 0 ]);\n\n const viewport = renderContext.GetViewport();\n const device = frame.deviceViewport ?? viewport;\n\n out.Set(\"ViewportOffset\", viewport ? [ viewport.x, viewport.y ] : [ 0, 0 ]);\n out.Set(\"ViewportSize\", device ? [ device.width, device.height ] : [ 0, 0 ]);\n\n out.Set(\"Time\", frame.animationTime ?? 0);\n\n out.Set(\"FrameIndex\", frame.frameIndex ?? 0);\n out.Set(\"Jittering\", vec4.exactEquals(this.jitter, ZERO_JITTER) ? 0 : 1);\n\n // Carbon stores 1 << m_shadowQuality, not the enum value.\n out.Set(\"ShadowQuality\", 1 << this.shadowQualitySetting);\n\n out.Set(\"InverseShadowMapAtlasSize\", frame.inverseShadowMapAtlasSize ?? 0);\n out.Set(\"ShadowMapAtlasEntryMinSizeLog2\", frame.shadowMapAtlasEntryMinSizeLog2 ?? 0);\n\n out.Set(\"ShadowMapSettings\", [ 1, 1, 0, 0 ]);\n out.Set(\"ShadowLightness\", 0);\n out.Set(\"DepthMapSampleCount\", 1); // legacy\n\n // The reversed-depth projection's _43/_33, which the shader uses to turn a\n // depth sample back into a view-space distance (cpp:3140-3142).\n out.Set(\"ProjectionToView\", [ projection[14], projection[10] ]);\n\n // Carbon resets m_upscalingAmount here and lets the upscaler raise it; with\n // no upscaler the scene stays at 1 and only the post-process bias applies.\n this.upscalingAmount = frame.upscalingAmount ?? 1;\n out.Set(\"Upscaling\", this.upscalingAmount);\n out.Set(\"SceneMipLodBias\", frame.sceneMipLodBias ?? 0);\n\n if (shadowMap)\n {\n this.#FillShadowCascades(out, shadowMap, renderContext);\n }\n\n // Carbon writes Inverse(Transpose(P)). RawData supplies that terminal\n // transpose, so derive only the logical inverse here.\n mat4.invert(perFrameMatrixScratch, projection);\n out.SetAndTranspose(\"ProjectionInverseMat\", perFrameMatrixScratch);\n\n out.Set(\"Debug\", this.perFrameDebug);\n\n out.Set(\"VolumetricSlices\", VOLUMETRIC_SLICES);\n\n this.volumetricsRenderer.PopulatePerFrameData(out);\n\n return out;\n }\n\n /**\n * The SunData block both fills share (cpp:3035-3039 / 3085-3089). The\n * direction is normalized AND negated: shaders work with the direction TO\n * the light, not the direction it travels.\n */\n #FillSunData(out)\n {\n vec3.normalize(sunDirectionScratch, this.sunDirection);\n out.Set(\"Sun.DirWorld\", [\n -sunDirectionScratch[0],\n -sunDirectionScratch[1],\n -sunDirectionScratch[2]\n ]);\n out.Set(\"Sun.DiffuseColor\", this.currentSunColor);\n }\n\n /**\n * FOV both ways - width in x, height in y (cpp:3046-3047 / 3103-3104).\n * Carbon recovers it from the NON reversed-depth projection, so a driver\n * that reverses depth must pass the original in `frame.projectionTransform`.\n */\n #FillFovXY(out, frame)\n {\n const source = frame.projectionTransform;\n const fovY = source ? EveCamera.CalculateFovFromProjection(source) : 0;\n\n out.Set(\"FovXY\", [ fovY * (frame.aspectRatio ?? 1), fovY ]);\n }\n\n /**\n * The cascaded-shadow block (cpp:3163-3190). Each cascade's shadow matrix is\n * rebased into the current view, flipped in y, remapped from (-1,+1) to\n * (0,1), then scaled and offset into its cell of the 8x2 atlas.\n */\n #FillShadowCascades(out, shadowMap, renderContext)\n {\n const split = shadowMap.GetPerSplitData();\n\n for (let index = 0; index < 4; index++)\n {\n out.SetIndex(\"ShadowMapValues\", index, split.ShadowMapValues[index]);\n }\n\n for (let index = 0; index < 16; index++)\n {\n out.SetIndex(\"CascadeRanges\", index, split.CascadeRanges[index]);\n }\n\n const inverseView = renderContext.GetInverseViewTransform();\n const cellsX = 8;\n const cellsY = 2;\n\n for (let index = 0; index < CjsPerFrameLayouts.SHADOW_FRUSTUM_COUNT; index++)\n {\n const stored = split.ShadowMatrixVal[index];\n\n // Carbon stores Transpose(LVP), then computes inverseView * LVP. The JS\n // producer keeps logical LVP, so gl-matrix reverses only that product.\n mat4.multiply(perFrameMatrixScratch, stored, inverseView);\n\n // Flip y and change the range from (-1, +1) to (0, 1).\n mat4.multiply(perFrameMatrixScratch, SHADOW_CLIP_TO_UV, perFrameMatrixScratch);\n\n // Then into this cascade's cell of the 8x2 atlas.\n mat4.identity(perFrameLastProjectionScratch);\n mat4.translate(perFrameLastProjectionScratch, perFrameLastProjectionScratch, [\n (index % cellsX) / cellsX,\n Math.floor(index / cellsX) / cellsY,\n 0\n ]);\n mat4.scale(perFrameLastProjectionScratch, perFrameLastProjectionScratch, [\n 1 / cellsX,\n 1 / cellsY,\n 1\n ]);\n mat4.multiply(perFrameMatrixScratch, perFrameLastProjectionScratch, perFrameMatrixScratch);\n\n out.SetAndTransposeIndex(\"ShadowMatrixVal\", index, perFrameMatrixScratch);\n }\n\n out.Set(\"SplitInfo\", split.SplitInfo);\n }\n\n /** Carbon method ReregisterEntities (MAP_METHOD_AND_WRAP, cpp:4064-4089).\n * Guarded no-op after ClearComponentRegistry has nulled the registry\n * (destroy-only path; Carbon would never call this afterwards). */\n @carbon.method\n @impl.implemented\n ReregisterEntities()\n {\n if (!this.componentRegistry)\n {\n return;\n }\n\n for (const collection of [this.objects, this.backgroundObjects, this.planets])\n {\n for (const object of collection)\n {\n if (object instanceof EveEntity)\n {\n this.componentRegistry.ReRegister(object);\n }\n }\n }\n if (this.cameraAttachmentParent instanceof EveEntity)\n {\n this.componentRegistry.ReRegister(this.cameraAttachmentParent);\n }\n }\n\n /** Carbon method ClearComponentRegistry (EveSpaceScene.cpp:4091-4099, called\n * from the destructor cpp:322). Entity component-state is deliberately NOT\n * cleared beyond what Clear() does - either the scene is being destroyed\n * (entities go too) or entities move to another scene and re-register there.\n * The JS registry Clear() additionally detaches entity.registry when it\n * points at this registry - strictly more hygienic than Carbon; kept. */\n @carbon.method\n @impl.implemented\n ClearComponentRegistry()\n {\n this.componentRegistry?.Clear();\n this.componentRegistry = null;\n }\n\n /** Carbon method GetPostProcessDebug (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n GetPostProcessDebug()\n {\n return this.postProcessDebug;\n }\n\n /** Carbon method UpdateScene -> UpdateSceneFromScript (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n UpdateScene(time)\n {\n return this.Update(time, time);\n }\n\n static EveVisualizeMethod = EveVisualizeMethod;\n\n /** g_eveSpaceSceneGammaBrightness (TRI_REGISTER_SETTING \"eveSpaceSceneGammaBrightness\",\n * cpp:102-103): the tonemapper's OutputGamma and the per-frame GammaBrightness. */\n static eveSpaceSceneGammaBrightness = 1;\n\n static ShadowQuality = ShadowQuality;\n\n /**\n * Carbon SimplePriorityBlend (PriorityBlend.h:371-413) specialized to the\n * IEveLightingOverride::Overrides value type\n * { sunColor: vec4, sunIntensity, backgroundIntensity, reflectionIntensity }\n * (EveChildLightingOverride.h:15-32) - `+` and `* weight` componentwise.\n * Walks the (already priority-desc-sorted) list in equal-priority groups:\n * factor = (1 / max(groupTotal, 1)) * remainingWeight\n * then subtracts the UNCLAMPED group total from remainingWeight. Two quirks\n * preserved exactly: (a) a group with total intensity 0.3 contributes at\n * weight 0.3*remaining and leaves 0.7 for lower priorities; (b) a group with\n * total 2 is normalized to consume exactly remainingWeight and terminates\n * (remaining goes to -1).\n * @param {Array} sources - [{ priority, intensity, value }] sorted high->low\n * @returns {{ sunColor: Float32Array, sunIntensity: Number,\n * backgroundIntensity: Number, reflectionIntensity: Number }}\n */\n static #SimplePriorityBlend(sources)\n {\n const result = {\n sunColor: vec4.create(),\n sunIntensity: 0,\n backgroundIntensity: 0,\n reflectionIntensity: 0\n };\n let remainingWeight = 1;\n\n for (let first = 0; first < sources.length;)\n {\n // The range of sources sharing the current priority.\n let last = first + 1;\n while (last < sources.length && sources[last].priority === sources[first].priority)\n {\n last++;\n }\n\n let totalPriorityIntensity = 0;\n for (let index = first; index < last; index++)\n {\n totalPriorityIntensity += sources[index].intensity;\n }\n if (totalPriorityIntensity === 0)\n {\n first = last;\n continue;\n }\n\n const normalizationFactor = 1 / Math.max(totalPriorityIntensity, 1) * remainingWeight;\n\n for (let index = first; index < last; index++)\n {\n const weight = sources[index].intensity * normalizationFactor;\n const value = sources[index].value;\n vec4.scaleAndAdd(result.sunColor, result.sunColor, value.sunColor, weight);\n result.sunIntensity += value.sunIntensity * weight;\n result.backgroundIntensity += value.backgroundIntensity * weight;\n result.reflectionIntensity += value.reflectionIntensity * weight;\n }\n\n // Subtracts the UNCLAMPED total (PriorityBlend.h:405).\n remainingWeight -= totalPriorityIntensity;\n first = last;\n if (remainingWeight <= 0)\n {\n break;\n }\n }\n return result;\n }\n\n}\n\n// Registered as Carbon registers it (trinity/trinity/Eve/EveSpaceScene_Blue.cpp:44).\nblue.enums.RegisterEnum(\"trinity.EveSpaceScene.EveVisualizeMethod\", EveSpaceScene.EveVisualizeMethod, {\n source: \"trinity/trinity/Eve/EveSpaceScene.h\", family: \"eve/scene\", line: 176,\n exposedName: \"EveVisualizeMethod\", exposure: EnumRegistrationType.ENUM_REG_ENUM_OBJECT_ON_MODULE,\n chooserSource: \"trinity/trinity/Eve/EveSpaceScene_Blue.cpp:20\",\n chooser: [\n { name: \"None\", value: EveSpaceScene.EveVisualizeMethod.VM_NONE, description: \"No visualizer - use normal rendering\" },\n { name: \"TexCoord0\", value: EveSpaceScene.EveVisualizeMethod.VM_TEXCOORD0, description: \"\" },\n { name: \"TexCoord1\", value: EveSpaceScene.EveVisualizeMethod.VM_TEXCOORD1, description: \"\" },\n { name: \"White\", value: EveSpaceScene.EveVisualizeMethod.VM_WHITE, description: \"\" },\n { name: \"Overdraw\", value: EveSpaceScene.EveVisualizeMethod.VM_OVERDRAW, description: \"\" },\n { name: \"Wireframe\", value: EveSpaceScene.EveVisualizeMethod.VW_WIREFRAME, description: \"\" },\n { name: \"LightCount\", value: EveSpaceScene.EveVisualizeMethod.VW_LIGHT_COUNT, description: \"\" }\n ]\n});\n"],"names":["sunDirectionScratch","vec3","create","perFrameMatrixScratch","mat4","perFrameLastProjectionScratch","ZERO_JITTER","vec4","JITTER_SAMPLING_PATTERNS","Object","freeze","VOLUMETRIC_SLICES","SHADOW_CLIP_TO_UV","fromValues","IDENTITY","EmptyShadowResources","shadowMap","GpuResourceHandle","cascadedShadowDepth","pointLightShadowMap","pointLightShadowDepth","_EveSpaceScene","_identity","EveSpaceScene","CjsModel","e","_init_visualizeMethod","_init_extra_visualizeMethod","_init_envMap1ResPath","_init_extra_envMap1ResPath","_init_envMap2ResPath","_init_extra_envMap2ResPath","_init_envMap3ResPath","_init_extra_envMap3ResPath","_init_lowQualityNebulaResPath","_init_extra_lowQualityNebulaResPath","_init_lowQualityNebulaMixResPath","_init_extra_lowQualityNebulaMixResPath","_init_envMapResPath","_init_extra_envMapResPath","_init_fogColor","_init_extra_fogColor","_init_sunDirection","_init_extra_sunDirection","_init_ambientColor","_init_extra_ambientColor","_init_shLightingManager","_init_extra_shLightingManager","_init_combinedPostProcessAttributes","_init_extra_combinedPostProcessAttributes","_init_dataTextureMgr","_init_extra_dataTextureMgr","_init_dynamicObjectReflectionEnabled","_init_extra_dynamicObjectReflectionEnabled","_init_componentRegistry","_init_extra_componentRegistry","_init_cameraAttachmentParent","_init_extra_cameraAttachmentParent","_init_postProcessDebug","_init_extra_postProcessDebug","_init_curveSets","_init_extra_curveSets","_init_defaultDiffuseRoughness","_init_extra_defaultDiffuseRoughness","_init_fogStart","_init_extra_fogStart","_init_fogEnd","_init_extra_fogEnd","_init_reflectionIntensity","_init_extra_reflectionIntensity","_init_distanceFields","_init_extra_distanceFields","_init_backgroundEffect","_init_extra_backgroundEffect","_init_backgroundReflectionIntensity","_init_extra_backgroundReflectionIntensity","_init_nebulaIntensity","_init_extra_nebulaIntensity","_init_display","_init_extra_display","_init_backgroundRenderingEnabled","_init_extra_backgroundRenderingEnabled","_init_update","_init_extra_update","_init_impostorManager","_init_extra_impostorManager","_init_lensflares","_init_extra_lensflares","_init_externalParameters","_init_extra_externalParameters","_init_fogMax","_init_extra_fogMax","_init_staticParticles","_init_extra_staticParticles","_init_debugRenderer","_init_extra_debugRenderer","_init_objects","_init_extra_objects","_init_uiObjects","_init_extra_uiObjects","_init_backgroundObjects","_init_extra_backgroundObjects","_init_planets","_init_extra_planets","_init_raytracingManager","_init_extra_raytracingManager","_init_reflectionBackLightingColor","_init_extra_reflectionBackLightingColor","_init_reflectionBackLightingContrast","_init_extra_reflectionBackLightingContrast","_init_reflectionProbe","_init_extra_reflectionProbe","_init_volumetricsRenderer","_init_extra_volumetricsRenderer","_init_starfield","_init_extra_starfield","_init_planetScale","_init_extra_planetScale","_init_planetCameraScale","_init_extra_planetCameraScale","_init_subSurfaceScattering","_init_extra_subSurfaceScattering","_init_shadowQualitySetting","_init_extra_shadowQualitySetting","_init_sunDiffuseColor","_init_extra_sunDiffuseColor","_init_sunDiffuseColorWithDynamicLights","_init_extra_sunDiffuseColorWithDynamicLights","_init_envMapRotation","_init_extra_envMapRotation","_init_ballpark","_init_extra_ballpark","_init_name","_init_extra_name","_init_sunBall","_init_extra_sunBall","_init_postprocess","_init_extra_postprocess","_init_virtualCameraSystem","_init_extra_virtualCameraSystem","_init_warpTunnel","_init_extra_warpTunnel","_init_perFrameDebug","_init_extra_perFrameDebug","_init_cascadedShadowMap","_init_extra_cascadedShadowMap","_init_updateTime","_init_extra_updateTime","_init_useSunDiffuseColorWithDynamicLights","_init_extra_useSunDiffuseColorWithDynamicLights","_init_envMap","_init_extra_envMap","_init_envMap2","_init_extra_envMap2","_init_envMap3","_init_extra_envMap3","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","edit","readwrite","int32","enum","notify","persist","string","color","persistOnly","model","read","objectRef","boolean","rawStruct","list","float32","quat","float64","carbon","method","impl","adapted","notImplemented","implemented","reason","custom","visualizeMethod","envMap1ResPath","envMap2ResPath","envMap3ResPath","lowQualityNebulaResPath","lowQualityNebulaMixResPath","envMapResPath","fogColor","sunDirection","ambientColor","shLightingManager","combinedPostProcessAttributes","Tr2PostProcessAttributes","dataTextureMgr","Tr2DataTextureManager","dynamicObjectReflectionEnabled","componentRegistry","EveComponentRegistry","cameraAttachmentParent","EveEffectRoot2","postProcessDebug","curveSets","defaultDiffuseRoughness","fogStart","fogEnd","reflectionIntensity","distanceFields","backgroundEffect","backgroundReflectionIntensity","nebulaIntensity","display","backgroundRenderingEnabled","update","impostorManager","lensflares","externalParameters","fogMax","staticParticles","debugRenderer","objects","uiObjects","backgroundObjects","planets","raytracingManager","reflectionBackLightingColor","reflectionBackLightingContrast","reflectionProbe","volumetricsRenderer","Tr2VolumetricsRenderer","starfield","planetScale","planetCameraScale","subSurfaceScattering","shadowQualitySetting","sunDiffuseColor","sunDiffuseColorWithDynamicLights","envMapRotation","ballpark","name","sunBall","postprocess","virtualCameraSystem","warpTunnel","perFrameDebug","cascadedShadowMap","updateTime","useSunDiffuseColorWithDynamicLights","envMap1","envMap2","envMap3","updateContext","EveUpdateContext","currentSunColor","currentNebulaIntensity","currentReflectionIntensity","viewLast","projectionLast","jitterMatrix","jitter","projection","jitteredProjection","upscalingAmount","dynamicLightingEnabled","enablePostProcessDebugging","StampFrameContext","frustum","visibilityThreshold","lowDetailThreshold","mediumDetailThreshold","highDetailThreshold","lodFactor","raytracingEnabled","context","SetFrustum","SetHighDetailThreshold","SetMediumDetailThreshold","SetLowDetailThreshold","SetVisibilityThreshold","SetLodFactor","Update","realTime","simTime","SetTime","UpdateOrigin","SetDataTextureManager","object","UpdateSyncronous","UpdateAsyncronous","distanceField","lensflare","curveSet","renderContext","UpdatePostProcessAttributes","normalize","negate","PickObject","args","Error","PickAsyncObject","PickObjectAndAreaID","PickInfinity","x","y","view","viewport","out","resolved","GetViewport","projected","screenToProjection","ray","convertProjectionCoordToWorldPickRay","copy","direction","UpdateVisibility","inverseView","SetTransform","planet","UpdateZOnlyVisibility","GetRenderables","GetFrustum","FromPostProcess","SCENE_DEFAULT_PRIORITY","sources","owner","GetComponents","EveComponentType","PostProcessOwner","attributes","GetPostProcessAttributes","push","length","Tr2PostProcess2","sort","a","b","priority","observer","CreateDebugObserver","MergeInto","GetDict","SetDynamicExposure","GetDynamicExposureIfAvailable","SetTaa","GetTaaIfAvailable","SetTonemapping","GetTonemappingIfAvailable","SetFog","GetFogIfAvailable","SetGodRays","GetGodRaysIfAvailable","SetGenericEffect","GetGenericEffectIfAvailable","MEDIUM_PRIORITY","GetPostProcess","BlendLightingOverrides","overrides","component","EveLightingOverride","GetOverrides","sunColorSource","sunIntensity","Math","max","baselineSunColor","scale","intensity","value","sunColor","backgroundIntensity","over","UpdateFogSettings","GatherLights","lightManager","SetShadowQuality","GetRecordingFrameNumber","Clear","AdjustLightCutoff","GetLodFactor","LightOwner","GetLights","ResolveLightData","UpdateShLighting","updated","RawData","GetPerFrameVSData","GetPerFramePSData","RunLensflareOcclusionQueries","_depthMap","RunOcclusionQueries","Tr2OcclusionBuffer","getInstance","ProcessBuffer","Tr2VariableStore","GlobalStore","RegisterVariable","Tr2TextureReference","registerWithVariableStore","shadowResources","gpuResourcePool","store","references","publish","texture","SetTexture","emptyShadow","format","handle","GetPersistentTexture","TextureType","TEX_TYPE_2D","width","height","depth","mipCount","gpuUsage","Tr2GpuUsage","SHADER_RESOURCE","initialData","Tr2SubresourceData","Uint8Array","Get","Free","IsValid","PixelFormat","PIXEL_FORMAT_R8_UNORM","PIXEL_FORMAT_R8_UINT","Initialize","bones","Tr2RingBuffer","GetInstance","SetName","blue","resMan","GetResource","requirement","ResourceRequirement","TEXTURE","GetReflection","SetBackLightColor","SetBackLightContrast","CjsSchema","cast","EveEntity","Register","UpdateVariableStore","SetValue","#EngineFrameState","esm","GetEffectStateManager","GetProjection","atlas","GetShadowMapAtlasSettings","renderTargetWidth","renderTargetHeight","deviceViewport","GetDeviceViewport","animationTime","Tr2Renderer","GetAnimationTime","frameIndex","Number","GetCurrentFrameCounter","gammaBrightness","eveSpaceSceneGammaBrightness","projectionTransform","aspectRatio","sceneMipLodBias","GetMipLodBias","inverseShadowMapAtlasSize","actualTextureSize","shadowMapAtlasEntryMinSizeLog2","entryMinSizeLog2","Jitter","sample","fround","fromTranslation","multiply","identity","EndRender","visible","SetReadOnlyDepth","RenderRenderables","TriBatchType","TRIBATCHTYPE_ADDITIVE","RenderingMode","RM_ALPHA_ADDITIVE","GetViewTransform","TriRenderBatchAccumulator","EffectKeyGenerator","renderables","batch","batchType","rm","undefined","allocator","GetTriPoolAllocator","SetTriPoolAllocator","renderable","objectData","GetPerObjectData","GetBatches","RenderBatch","Finalize","ApplyStandardStates","RenderBatches","RenderDepthPass","depthMap","normalMap","customStencil","techniqueName","batchMap","clearAndStore","Tr2ColorAttachment","Tr2LoadAction","CLEAR","Tr2StoreAction","STORE","clearDepth","Tr2DepthAttachment","renderingMode","BeginManagedRendering","SetRenderTarget","PushRenderTarget","RenderPassHint","clearColor","slot","RM_OPAQUE","RM_DEPTH_ONLY","ApplyPerFrameData","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","TRIBATCHTYPE_DEPTH","accumulator","GetAccumulator","EndRenderPassHint","PopRenderTarget","EndManagedRendering","_enableShadows","_shadowBatches","Array","from","CjsPerFrameLayouts","SHADOW_FRUSTUM_COUNT","_shadowPerFrameVS","_shadowPerFrameVSBuffer","RenderShadows","renderer","ShadowQuality","SHADOW_LOW","SHADOW_HIGH","SetupCascadedShadows","Tr2RenderReason","TR2RENDERREASON_NORMAL","renderReason","viewFrustum","shadowCasters","ShadowCaster","volumetricCount","ComponentCount","VolumetricRenderable","fogCount","FroxelFogSettings","UpdateSplitValues","GetFrontClip","GetBackClip","shadowMapSize","GetShadowMapSize","splitCount","rightMinusLeft","bottomMinusTop","left","top","right","bottom","sunDir","cameraFrustums","shadowFrustums","splitSetups","splitIndex","splitSetup","SetupShadowSplit","GetInverseViewTransform","zNear","cameraFrustum","TriFrustum","ExtractFrustum","invert","invViewProj","TriShadowOrthoFrustum","shadowFrustum","PrepareShadowRendering","frustumIndex","batches","shadowCasterInfo","caster","radius","IsCastingShadow","perObjectData","info","GetShadowPerObjectData","GetShadowBatches","shaderTypeMask","GetRenderContextAL","constructor","SHADER_TYPE_MASK","perFrameVsMask","ShaderType","VERTEX_SHADER","COMPUTE_SHADER","GEOMETRY_SHADER","HULL_SHADER","DOMAIN_SHADER","SetRenderState","RenderState","RS_DEPTH_CLIP_ENABLE","GetBatchCount","BeginShadowRendering","SetAndTranspose","lightViewProjection","CreateConstantBuffer","data","GetData","FillAndSetConstants","byteLength","PER_FRAME_VS","SetInvertedDepthTest","EndShadowRendering","PopulatePerFramePSData","result","DrawToShadowMapResult","vs","ps","PIXEL_SHADER","PER_FRAME_PS","PopulatePerFrameVSData","frame","GetReversedDepthProjectionTransform","transpose","fromQuat","Set","distance","abs","device","Tr2ShadowMap","TypeError","exactEquals","PopulatePerFrameData","#FillSunData","#FillFovXY","source","fovY","EveCamera","CalculateFovFromProjection","#FillShadowCascades","split","GetPerSplitData","index","SetIndex","ShadowMapValues","CascadeRanges","cellsX","cellsY","stored","ShadowMatrixVal","translate","floor","SetAndTransposeIndex","SplitInfo","ReregisterEntities","collection","ReRegister","ClearComponentRegistry","GetPostProcessDebug","UpdateScene","time","EveSpaceSceneShadowMap","EveSpaceSceneCascadedShadowMap","EveSpaceSceneDynamicShadowMap","ShadowMapAtlas","EveVisualizeMethod","#SimplePriorityBlend","remainingWeight","first","last","totalPriorityIntensity","normalizationFactor","weight","scaleAndAdd","enums","RegisterEnum","line","exposedName","exposure","EnumRegistrationType","ENUM_REG_ENUM_OBJECT_ON_MODULE","chooserSource","chooser","VM_NONE","description","VM_TEXCOORD0","VM_TEXCOORD1","VM_WHITE","VM_OVERDRAW","VW_WIREFRAME","VW_LIGHT_COUNT"],"mappings":"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"}