@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.
- package/dist/global/consts/effectPaths.js +4 -1
- package/dist/global/consts/effectPaths.js.map +1 -1
- package/dist/global/consts/index.js +1 -1
- package/dist/global/index.js +1 -1
- package/dist/index.js +3 -3
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +19 -2
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/resource/format/index.js +1 -1
- package/dist/resource/formats/hlsl/core/carbonTypedViews.js +121 -65
- package/dist/resource/formats/hlsl/core/carbonTypedViews.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +10 -7
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgpu/core/effectBackendBodySet.js +3 -1
- package/dist/resource/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
- package/dist/resource/formats/webgpu/core/packageEffect.js +5 -0
- package/dist/resource/formats/webgpu/core/packageEffect.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/emitWgsl.js +20 -0
- package/dist/resource/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/emulatedAddressing.js +93 -4
- package/dist/resource/formats/webgpu/core/wgsl/emulatedAddressing.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +74 -64
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerFragmentProgram.js +16 -7
- package/dist/resource/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/wgslTypedViews.js +69 -27
- package/dist/resource/formats/webgpu/core/wgsl/wgslTypedViews.js.map +1 -1
- package/dist/resource/geometry/registerGeometryResources.js +10 -1
- package/dist/resource/geometry/registerGeometryResources.js.map +1 -1
- package/dist/sof/EveSOFDNA.js +4 -2
- package/dist/sof/EveSOFDNA.js.map +1 -1
- package/dist/sof/EveSOFDataMgr.js +83 -69
- package/dist/sof/EveSOFDataMgr.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +6 -1
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +7 -2
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +43 -0
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/device/Tr2GpuStructuredBuffer.js +134 -0
- package/dist/trinity/core/device/Tr2GpuStructuredBuffer.js.map +1 -0
- package/dist/trinity/core/index.js +1 -0
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +410 -124
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/eve/effect/lensflare/EveLensflare.js +303 -312
- package/dist/trinity/eve/effect/lensflare/EveLensflare.js.map +1 -1
- package/dist/trinity/eve/effect/lensflare/EveOccluder.js +117 -0
- package/dist/trinity/eve/effect/lensflare/EveOccluder.js.map +1 -0
- package/dist/trinity/eve/index.js +1 -0
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceScene.js +286 -6
- package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +212 -32
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
- package/dist/trinity/generated/eve/effect/index.js +0 -1
- package/dist/trinity/generated/eve/effect/index.js.map +1 -1
- package/dist/trinity/generated/eve/index.js +0 -1
- package/dist/trinity/generated/eve/index.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -2
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +2 -2
- package/dist/trinity/postProcess/Tr2PostProcessRenderer.js +4 -1
- package/dist/trinity/postProcess/Tr2PostProcessRenderer.js.map +1 -1
- package/dist/trinity/postProcess/Tr2SSAO.js +282 -21
- package/dist/trinity/postProcess/Tr2SSAO.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js +71 -53
- package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +81 -18
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +46 -4
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +32 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +27 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +29 -4
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js +32 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +57 -5
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js +111 -5
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -1
- package/docs/trinity/reference/classes/generated.md +20 -20
- package/docs/trinity/reference/classes/post-process.md +1 -1
- package/package.json +1 -1
- package/dist/trinity/generated/eve/effect/EveOccluder.js +0 -38
- package/dist/trinity/generated/eve/effect/EveOccluder.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js +0 -48
- package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveSpaceSceneRenderDriver.js","sources":["../../../../../src/trinity/eve/scene/EveSpaceSceneRenderDriver.js"],"sourcesContent":["// Source: trinity/trinity/Eve/EveSpaceSceneRenderDriver.{h,cpp}\n// Maintained CarbonEngineJS implementation; generated schema is reference-only.\n//\n// THE FRAME DRIVER. Carbon's EveSpaceScene::Render is an empty function body\n// (EveSpaceScene.cpp:2947-2949) and TriStepRenderScene calls it anyway, so a\n// scene draws nothing through that path in Carbon either. The real driver is\n// this class, an ITr2RenderNode reached through Tr2StepExecuteRenderNode from a\n// render job (EveSpaceSceneRenderDriver.cpp:404).\n//\n// DELIBERATELY PARTIAL. Carbon's Execute is a forty-step frame: background,\n// reflection, depth prepass, shadows, SSAO, light lists, distortion, the main\n// colour pass, overlays, lensflare occlusion, post-process and 3D UI. This\n// implements the spine - update, gather, submit opaque and decal - and nothing\n// else. Every omitted stage is a later insertion into the SAME sequence rather\n// than a redesign, and they are listed on Execute so a reader can tell \"not\n// yet\" from \"not needed\".\n//\n// It does not own the passes Carbon's scene owns. CarbonEngineJS splits\n// Carbon's BeginRender/GatherBatches into scene-owned CPU methods that a driver\n// calls in order; that contract is written on EveSpaceScene itself, and this is\n// the driver it describes.\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { vec4 } from \"#math/vec4\";\nimport { mat4 } from \"#math/mat4\";\nimport { PixelFormat, TextureType, Tr2GpuUsage, Tr2LoadAction, Tr2StoreAction } from \"#consts/render-context\";\nimport { Tr2ColorAttachment, Tr2DepthAttachment, Tr2SubresourceData } from \"#trinityal\";\nimport { AmbientOcclusionQuality, AntiAliasingQuality, EveVisualizeMethod } from \"../../generated/eve/enums.js\";\nimport { ShadowQuality, Tr2VolumerticQuality } from \"../../generated/trinityCore/enums.js\";\nimport { Quality } from \"../../generated/postProcess/enums.js\";\nimport { RenderingMode, TriBatchType } from \"#consts/graphics\";\nimport { CjsBatchManager } from \"../../core/batch/CjsBatchManager.js\";\nimport { TriFrustum } from \"../../core/view/TriFrustum.js\";\nimport { GpuResourceHandle } from \"../../core/Tr2GpuResourcePool/GpuResourceHandle.js\";\nimport { Tr2GpuResourcePool } from \"../../core/Tr2GpuResourcePool/Tr2GpuResourcePool.js\";\nimport { Tr2Renderer } from \"../../core/Tr2Renderer.js\";\nimport { Tr2TextureReference } from \"../../core/Tr2TextureReference.js\";\nimport { Tr2VariableStore } from \"../../core/variable/Tr2VariableStore.js\";\nimport { Tr2PostProcessRenderer } from \"../../postProcess/Tr2PostProcessRenderer.js\";\nimport { Tr2PPTaaEffect } from \"../../postProcess/effect/Tr2PPTaaEffect.js\";\nimport \"../../core/volumetrics/Tr2VolumetricsRenderer.js\";\n// A cycle with EveSpaceScene.js; each side reads the other only inside methods.\nimport { EveSpaceScene } from \"./EveSpaceScene.js\";\nimport { blue, EnumRegistrationType } from \"#blue\";\nimport \"../../postProcess/effect/Tr2PPEffect.js\";\nimport \"#blue/registerTrinityEnums\";\n\n/** Collects camera, quality, pass-toggle, overlay, background, and post-process state for driving an EVE space-scene frame. */\n@type.define({ className: \"EveSpaceSceneRenderDriver\", family: \"eve/scene\", purpose: \"Collects camera, quality, pass-toggle, overlay, background, and post-process state for driving an EVE space-scene frame.\" })\nexport class EveSpaceSceneRenderDriver extends CjsModel\n{\n\n /** m_settings.aoQuality (AmbientOcclusionQuality - enum AmbientOcclusionQuality) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.EveSpaceSceneRenderDriver.AmbientOcclusionQuality\")\n aoQuality = 0;\n\n /** m_settings.antiAliasingQuality (AntiAliasingQuality - enum AntiAliasingQuality) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.EveSpaceSceneRenderDriver.AntiAliasingQuality\")\n antiAliasingQuality = 0;\n\n /** m_settings.visualizeMethod (EveSpaceScene::EveVisualizeMethod - enum EveVisualizeMethod) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.EveSpaceScene.EveVisualizeMethod\")\n visualizeMethod = 0;\n\n /** m_settings.postProcessingQuality (PostProcess::Quality - enum Quality) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.PostProcess.Quality\")\n postProcessingQuality = 0;\n\n /** m_settings.shadowQuality (ShadowQuality - enum ShadowQuality) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.ShadowQuality\")\n shadowQuality = 0;\n\n /** m_customStencilFormat (ImageIO::PixelFormat - enum PixelFormat) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.ImageIO.PixelFormat\")\n customStencilFormat = 0;\n\n /** m_internalPixelFormat (ImageIO::PixelFormat - enum PixelFormat) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.ImageIO.PixelFormat\")\n internalPixelFormat = 10;\n\n /** m_settings.volumetricQuality (Tr2VolumerticQuality - enum Tr2VolumerticQuality) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.Tr2VolumerticQuality\")\n volumetricQuality = 0;\n\n /** m_scene (EveSpaceScenePtr) [PERSISTONLY] */\n @edit.readwrite\n @edit.persistOnly\n @type.model(\"EveSpaceScene\")\n scene = null;\n\n /** m_name (std::string) [READWRITE] */\n @edit.readwrite\n @type.string\n name = \"\";\n\n /** m_settings.enableUpscaling (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n enableUpscaling = false;\n\n /** m_projection (TriProjectionPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"TriProjection\")\n projection = null;\n\n /** m_camera (EveCameraPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"EveCamera\")\n camera = null;\n\n /** m_view (TriViewPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"TriView\")\n view = null;\n\n /** m_settings.clearColor (Color) [READWRITE]; Carbon's default is opaque black (EveSpaceSceneRenderDriver.h:59). */\n @edit.readwrite\n @type.color\n clearColor = vec4.fromValues(0, 0, 0, 1);\n\n /** m_distortionEffect (Tr2EffectPtr) [READ] */\n @edit.read\n @type.objectRef(\"Tr2Effect\")\n distortionEffect = null;\n\n /** m_settings.enableDistortion (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n enableDistortion = false;\n\n /** m_reflectionCorrectionEnabled (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n reflectionCorrectionEnabled = true;\n\n /** m_settings.forceOpaqueBuffer (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n forceOpaqueBuffer = false;\n\n /** m_settings.forceNormalMap (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n forceNormalMap = false;\n\n /** m_settings.forceVelocityMap (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n forceVelocityMap = false;\n\n /** m_fpsRenderer (TriStepRenderFpsPtr) [READ] */\n @edit.read\n @type.objectRef(\"TriStepRenderFps\")\n fpsRenderer = null;\n\n /** m_mainPassRenderingEnabled (bool) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.boolean\n mainPassRenderingEnabled = true;\n\n /** m_toolsScenes (PITr2SceneVector) [READ] */\n @edit.read\n @type.list(\"ITr2Scene\")\n toolsScenes = [];\n\n /** m_depthPassTechnique (unknown) [READWRITE] */\n @edit.readwrite\n @type.string\n depthPassTechnique = \"Depth\";\n\n /** m_postProcess (Tr2PostProcessRendererPtr) [READ], created in the constructor (cpp:151). */\n @edit.read\n @type.objectRef(\"Tr2PostProcessRenderer\")\n postProcess = new Tr2PostProcessRenderer();\n\n /** m_settings.showFPS (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n showFPS = false;\n\n /** m_sceneOverlay (ITr2RenderNodePtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"ITr2RenderNode\")\n sceneOverlay = null;\n\n /** m_background (ITr2RenderNodePtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"ITr2RenderNode\")\n background = null;\n\n /** m_ssao (Tr2SSAOPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"Tr2SSAO\")\n SSAO = null;\n\n /** m_enableRendering (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n enableRendering = true;\n\n /** Carbon method GetAllTempTextures (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.notImplemented\n GetAllTempTextures(...args)\n {\n throw new Error(\"EveSpaceSceneRenderDriver.GetAllTempTextures is not implemented in CarbonEngineJS.\");\n }\n\n /** The frustum this driver derives each frame; Carbon keeps one per driver. */\n #frustum = new TriFrustum();\n\n /** Collects renderables into batches; composed, so the caller owns its producers. */\n #batchManager = null;\n\n /** m_gpuResourcePool: the scene's colour and depth, and every post-process target. */\n #gpuResourcePool = new Tr2GpuResourcePool();\n\n /** Carbon's Tr2Renderer is static; ours is an instance, prepared per context. */\n #renderer = new Tr2Renderer();\n\n #preparedContext = null;\n\n /** The provider \"DepthMap\" is registered with; it holds this frame's scene depth. */\n #depthMapReference = new Tr2TextureReference();\n\n /** The provider \"SSAOMap\" is registered with: the empty SSAO, or nothing. */\n #ssaoMapReference = new Tr2TextureReference();\n\n /**\n * m_viewLast / m_projectionLast (EveSpaceSceneRenderDriver.h:147-149): the\n * previous frame's camera. The driver owns them, not the scene, because\n * several drivers can render one scene; they are handed in at the start of\n * Execute and back out after the main pass (cpp:431-432, 597-598).\n */\n _viewLast = mat4.create();\n\n _projectionLast = mat4.create();\n\n /**\n * The batch types this driver submits, in submission order.\n *\n * Carbon's main pass draws OPAQUE then DECAL (EveSpaceScene.cpp:2725/2731),\n * with transparent and additive following in the same pass (:2758). Only the\n * first two are submitted here; the rest are a later insertion at the marked\n * point in #Submit.\n */\n static SubmittedBatchTypes = Object.freeze([\n TriBatchType.TRIBATCHTYPE_OPAQUE,\n TriBatchType.TRIBATCHTYPE_DECAL\n ]);\n\n /** The standard states Carbon applies before each accumulator (EveSpaceScene.cpp:1139-1142). */\n static #standardStatesFor = Object.freeze({\n [TriBatchType.TRIBATCHTYPE_OPAQUE]: RenderingMode.RM_OPAQUE,\n [TriBatchType.TRIBATCHTYPE_DECAL]: RenderingMode.RM_DECAL\n });\n\n /**\n * Supplies the batch manager this driver collects through.\n *\n * Composed rather than constructed, because which producers and collectors are\n * registered is the caller's: Carbon's equivalent is the scene's component\n * registry plus the quad and instanced-mesh collectors it gathers from\n * (EveSpaceScene.cpp:1509-1520).\n *\n * @param {CjsBatchManager} batchManager Initialized batch manager.\n * @returns {EveSpaceSceneRenderDriver} This driver.\n */\n SetBatchManager(batchManager)\n {\n this.#batchManager = batchManager ?? null;\n return this;\n }\n\n /** @returns {CjsBatchManager|null} The composed batch manager. */\n GetBatchManager()\n {\n return this.#batchManager;\n }\n\n /** @returns {TriFrustum} The frustum derived by the last Execute. */\n GetFrustum()\n {\n return this.#frustum;\n }\n\n /**\n * Whether this node can run against the requested destinations.\n *\n * Carbon guards on a scene plus either a camera or a view/projection pair\n * (EveSpaceSceneRenderDriver.cpp:406-425) and returns rather than failing,\n * because a driver with nothing to draw is a legitimate frame.\n *\n * @returns {boolean} Whether Execute would draw.\n */\n Validate(_destinationDimensions = null, _outputs = null, _realTime = 0, _simTime = 0)\n {\n if (!this.scene) return false;\n\n return Boolean(this.camera || (this.view && this.projection));\n }\n\n /**\n * Drives one frame of a space scene into its destination.\n *\n * The spine of Carbon's Execute, in Carbon's order. NOT here, each an\n * insertion into this same sequence: the background node, the reflection\n * pass, the depth prepass, shadows, SSAO, the light-list update, the\n * distortion map, transparent and additive submission, the scene overlay,\n * lensflare occlusion queries and 3D UI. The scene renders into its own\n * colour and depth, plus TAA's velocity map and opaque copy when\n * anti-aliasing is on, and the post process draws it into the destination.\n *\n * Rendering-disabled is not a no-op in Carbon either: the scene still\n * updates, so simulation keeps running while nothing is drawn (cpp:408-419).\n *\n * @returns {boolean} Whether anything was submitted.\n */\n Execute(destinations = null, _outputs = null, realTime = 0, simTime = 0, _rootTimer = null, renderContext = null)\n {\n if (!renderContext || !this.Validate()) return false;\n\n const target = Array.isArray(destinations) ? destinations[0] ?? null : destinations;\n\n // RENDERING DISABLED (cpp:408-419): camera onto the renderer and the scene\n // update, so simulation keeps running - and nothing else. No target borrow,\n // no clear, no camera update.\n if (!this.enableRendering)\n {\n this.#SetCameraToRenderer(renderContext);\n this.scene.Update(realTime, simTime);\n return false;\n }\n\n // The previous frame's camera, for motion vectors (cpp:431-432).\n mat4.copy(this.scene.viewLast, this._viewLast);\n mat4.copy(this.scene.projectionLast, this._projectionLast);\n\n // Carbon's camera reads gTriDev->AspectRatio() (EveCamera.cpp:507); the\n // destination's is the equivalent here.\n this.camera?.Update(simTime, target ? target.GetWidth() / target.GetHeight() : 1, realTime);\n\n this._PropagateSettings();\n\n this.#PrepareContext(renderContext);\n\n // cpp:444 - the white \"EmptySSAO\" until an SSAO pass replaces it. None is\n // ported, so it is what the main pass samples, as when Carbon's SSAO is\n // off (RenderSSAO, cpp:360-381).\n this.#RegisterSSAOMap(EveSpaceSceneRenderDriver.getEmptySSAO(this.#gpuResourcePool));\n\n // THE SCENE RENDERS INTO ITS OWN COLOUR AND DEPTH (cpp:461, 471), and the\n // post process draws the result into the destination (cpp:602-609).\n // Carbon always has a destination; a null one - which tests use - keeps\n // drawing into whatever is bound, with no post process.\n const offscreen = target ? this.#BeginOffscreen(target, renderContext) : null;\n\n // Carbon's pool handles are RAII locals (cpp:461, 471) and release on any\n // exit; the post process owns them once it is called (cpp:608).\n let handedOff = false;\n\n // The caller's targets are saved for the frame and restored on every exit\n // (cpp:450-457): colour slots 0 and 1, and the depth stencil.\n const esm = renderContext.GetEffectStateManager();\n\n // REVERSE-Z FOR THE WHOLE FRAME (cpp:446-447): the depth test is inverted\n // and depth clears to 0, and the scene hands shaders the reversed-depth\n // projection. Carbon's post passes (fog, depth of field, god rays) read\n // the depth buffer under that convention.\n esm.SetInvertedDepthTest(true);\n esm.PushRenderTarget(undefined, 0);\n esm.PushRenderTarget(undefined, 1);\n esm.PushDepthStencilBuffer();\n\n try\n {\n if (offscreen) this.#BeginRenderPass(esm, [ offscreen.color.Get() ], offscreen.depth.Get());\n\n renderContext.Clear({ color: this.clearColor, depth: 0 });\n\n // AFTER the scene target is bound (cpp:473-476), because the projection\n // and frustum read the bound viewport; BEFORE the update, so the scene's\n // own update reads this frame's view (cpp:476 -> 479).\n this.#SetCameraToRenderer(renderContext);\n\n this.scene.Update(realTime, simTime);\n\n // THE SCENE DEPTH IS A GLOBAL, \"DepthMap\" (cpp:494): TAA, the circle of\n // confusion and the fog composite sample it by name. A texture variable\n // holds a provider, not a bare AL texture, so the depth goes in through\n // this driver's reference, as the blitter publishes BlitSource.\n if (offscreen)\n {\n this.#depthMapReference.SetTexture(offscreen.depth.Get());\n Tr2VariableStore.GlobalStore().RegisterVariable(\"DepthMap\", this.#depthMapReference);\n }\n\n // cpp:550 - the shadow pass's textures as globals. No shadow pass is\n // ported, so every resource is empty and the white fallbacks go in.\n EveSpaceScene.registerWithVariableStore(EveSpaceSceneRenderDriver.#noShadowResources, this.#gpuResourcePool);\n\n const submitted = this.#RenderMainPass(renderContext, offscreen);\n\n // cpp:565 - SSAOMap is emptied after the main pass.\n this.#RegisterSSAOMap(null);\n\n // LENS-FLARE OCCLUSION (cpp:587-592), after the main pass on the scene\n // target with read-only depth: each lensflare's queries, then the\n // occlusion buffer's Clear/CopyCounters compute - which the god rays\n // read through FlareOcclusionBuffer.\n if (offscreen)\n {\n this.#BeginRenderPass(esm, [ offscreen.color.Get() ], offscreen.depth.Get());\n renderContext.SetReadOnlyDepth(true);\n this.scene.RunLensflareOcclusionQueries(offscreen.depth.Get(), renderContext);\n renderContext.SetReadOnlyDepth(false);\n }\n\n // EndRender's last-frame store, handed back out to this driver (cpp:597-598).\n this.scene.EndRender(renderContext);\n mat4.copy(this._viewLast, this.scene.viewLast);\n mat4.copy(this._projectionLast, this.scene.projectionLast);\n\n if (offscreen)\n {\n handedOff = true;\n this.#PostProcess(target, offscreen, renderContext);\n }\n\n return submitted;\n }\n finally\n {\n esm.PopDepthStencilBuffer();\n esm.PopRenderTarget(1);\n esm.PopRenderTarget(0);\n esm.SetInvertedDepthTest(false);\n\n // Carbon restores the empty SSAO and empties DepthMap at the frame's end\n // (cpp:625-626); the pool reclaims the depth texture after this.\n this.#RegisterSSAOMap(EveSpaceSceneRenderDriver.getEmptySSAO(this.#gpuResourcePool));\n this.#depthMapReference.SetTexture(null);\n\n if (offscreen && !handedOff) this.#EndOffscreen(offscreen);\n }\n }\n\n /**\n * GlobalStore().RegisterVariable( \"SSAOMap\", texture ): the texture goes in\n * through this driver's reference, and a null is Carbon's typed-null\n * Tr2TextureAL{}. A pool handle is released once its texture is taken, as\n * Carbon's temporary does at the end of the statement.\n */\n #RegisterSSAOMap(handle)\n {\n this.#ssaoMapReference.SetTexture(handle ? handle.Get() : null);\n if (handle) this.#gpuResourcePool.Free(handle);\n Tr2VariableStore.GlobalStore().RegisterVariable(\"SSAOMap\", this.#ssaoMapReference);\n }\n\n /**\n * Carbon's anonymous-namespace GetEmptySSAO (cpp:40-46): a persistent white\n * 1x1 RGBA8, \"no occlusion\", for frames without an SSAO pass.\n *\n * @param {Tr2GpuResourcePool} gpuResourcePool The driver's pool.\n * @returns {GpuResourceHandle} The texture.\n */\n @carbon.method\n @impl.implemented\n static getEmptySSAO(gpuResourcePool)\n {\n return gpuResourcePool.GetPersistentTexture(\"EmptySSAO\", {\n type: TextureType.TEX_TYPE_2D,\n width: 1,\n height: 1,\n depth: 1,\n mipCount: 1,\n format: PixelFormat.PIXEL_FORMAT_R8G8B8A8_UNORM,\n gpuUsage: Tr2GpuUsage.SHADER_RESOURCE,\n initialData: [ new Tr2SubresourceData(new Uint8Array([ 255, 255, 255, 255 ]), 4, 4) ]\n });\n }\n\n /** EveSpaceScene::ShadowResources with every texture empty: no shadow pass is ported. */\n static #noShadowResources = {\n shadowMap: new GpuResourceHandle(),\n cascadedShadowDepth: new GpuResourceHandle(),\n pointLightShadowMap: new GpuResourceHandle(),\n pointLightShadowDepth: new GpuResourceHandle()\n };\n\n /**\n * Carbon's anonymous-namespace BeginRenderPass (cpp:23-38): binds the colour\n * attachments through the effect state manager, unbinds the slots after\n * them, binds the depth, and sets the full-screen viewport - which the\n * projection and frustum then read.\n *\n * QUIRK, reproduced: Carbon's clearing loop increments `index` twice per\n * iteration (`SetRenderTarget( index++, ... )` inside `for( ; ...; ++index )`),\n * so after one attachment it unbinds slots 1 and 3 and leaves slot 2 bound.\n *\n * @param {Tr2EffectStateManager} esm The context's effect state manager.\n * @param {object[]} colorAttachments Colour targets for slots 0..n-1.\n * @param {object|null} depthAttachment The depth stencil.\n * @returns {void}\n */\n #BeginRenderPass(esm, colorAttachments, depthAttachment)\n {\n let index = 0;\n for (const colorAttachment of colorAttachments) esm.SetRenderTarget(index++, colorAttachment);\n\n // Generously assuming max 4 render targets, as Carbon's comment says.\n const maxRenderTargets = 4;\n for (; index < maxRenderTargets; ++index) esm.SetRenderTarget(index++, null);\n\n esm.SetDepthStencilBuffer(depthAttachment);\n esm.SetFullScreenViewport();\n }\n\n /**\n * The gather and main pass of one frame: BeginRender's CPU half, the\n * per-frame blocks, and the opaque family's submission.\n *\n * With an off-screen target it also borrows the TAA maps, as Carbon's\n * Execute does around BeginRender and RenderMainPass (cpp:501, 549): the\n * velocity map after BeginRender, the opaque colour copy only when the main\n * pass runs. They land on `offscreen` so the post process receives them and\n * an early exit frees them.\n *\n * @param {object} renderContext Recording render context.\n * @param {object|null} offscreen The scene's borrowed targets, if any.\n * @returns {boolean} Whether anything was submitted.\n */\n #RenderMainPass(renderContext, offscreen)\n {\n // BeginRender's CPU half, in the order EveSpaceScene's own contract gives.\n // The impact data texture is republished first (EveSpaceScene.cpp:1324-1327).\n if (this.scene.dataTextureMgr) this.scene.dataTextureMgr.SetVariables();\n\n\n // BeginRender jitters the camera's projection and draws with the result\n // (EveSpaceScene.cpp:1329-1331).\n this.scene.Jitter(renderContext);\n renderContext.SetProjection(this.scene.jitteredProjection);\n this.scene.BlendLightingOverrides();\n this.scene.UpdateFogSettings();\n this.scene.UpdateVisibility?.(renderContext.GetInverseViewTransform?.() ?? null);\n\n const map = this.#Collect(this.scene.GetRenderables?.([]) ?? [], renderContext);\n\n // After the gather, the scene's global textures - the nebula and the\n // reflection - go through the variable store (UpdateVariableStore,\n // EveSpaceScene.cpp:1390-1397).\n this.scene.UpdateVariableStore();\n\n if (offscreen) offscreen.velocity = this._GetVelocityMapIfNeeded(offscreen.size);\n\n // \"The lensflares need a special pre-render update\" (cpp:1419-1422): after\n // the gather and lights, before the per-frame fills, against this frame's\n // frustum.\n for (const lensflare of this.scene.lensflares ?? []) lensflare.PrepareRender(this.#frustum, renderContext);\n\n // Carbon populates per-frame data AFTER the gather, because the blended sun\n // colour is only current once lights have been gathered (cpp:1396-1426),\n // and BEFORE the render job's steps draw the batches. RenderBatches draws\n // immediately now - Carbon's shape - so the blocks must be populated AND\n // BOUND here, between the gather and the submission.\n //\n // No explicit null for the fills' `frame`: a default parameter replaces only\n // undefined, and with null both fills threw on their first field read, so\n // every frame of a real EveSpaceScene died here.\n this.scene.PopulatePerFramePSData?.(renderContext);\n this.scene.PopulatePerFrameVSData?.(renderContext);\n\n // The scene's own apply (EveSpaceScene::ApplyPerFrameData, cpp:818-828),\n // not the generic Tr2BindPerFrame*Data: the space scene binds its vertex\n // block for compute as well, which dynamic exposure reads Time from.\n this.scene.ApplyPerFrameData(renderContext);\n\n // Carbon gates the main pass on the scene's display flag AND this switch\n // (cpp:527).\n if (!this.mainPassRenderingEnabled || this.scene.display === false) return false;\n\n if (offscreen) offscreen.opaque = this._GetOpaqueColorMapIfNeeded(offscreen.size);\n\n const velocity = offscreen?.velocity?.Get() ?? null;\n const opaque = offscreen?.opaque?.Get() ?? null;\n const esm = renderContext.GetEffectStateManager();\n let submitted;\n\n // THE VELOCITY SCOPE (EveSpaceScene.cpp:2715-2735): the velocity map is\n // colour slot 1 for the opaque family, cleared by the pass hint to (0, 0);\n // slot 0 and depth load and store. There is no background pass, so it is\n // never already dirty. Shaders that do not write SV_Target1 leave it\n // alone (the AL masks the target off).\n //\n // Without velocity Carbon hints the colour LOAD/STORE and the depth\n // LOAD/DONT_CARE (cpp:2733); that hint is not ported, because this frame's\n // post process still reads the depth the pass would discard.\n if (velocity)\n {\n esm.PushRenderTarget(velocity, 1);\n try\n {\n renderContext.RenderPassHint(\n new Tr2ColorAttachment(Tr2LoadAction.LOAD, Tr2StoreAction.STORE),\n new Tr2ColorAttachment(Tr2LoadAction.CLEAR, Tr2StoreAction.STORE, 0),\n new Tr2DepthAttachment(Tr2LoadAction.LOAD, Tr2StoreAction.STORE)\n );\n submitted = this.#Submit(map, renderContext);\n }\n finally\n {\n esm.PopRenderTarget(1);\n }\n }\n else\n {\n submitted = this.#Submit(map, renderContext);\n }\n\n // THE OPAQUE COLOUR COPY (EveSpaceScene.cpp:2738-2750): the scene colour\n // after the opaque family, which TAA reads as CurrentFrameOpaque. Carbon\n // also publishes it as EveSpaceSceneOpaqueMap in the global variable store\n // for transparent shaders; nothing here submits those yet, so it is not.\n if (opaque)\n {\n renderContext.RenderPassHint(new Tr2ColorAttachment(Tr2LoadAction.DONT_CARE, Tr2StoreAction.STORE), null);\n esm.PushDepthStencilBuffer(null);\n esm.PushRenderTarget(opaque);\n try\n {\n esm.ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n this.#renderer.DrawTexture(renderContext, offscreen.color.Get());\n }\n finally\n {\n esm.PopRenderTarget();\n esm.PopDepthStencilBuffer();\n }\n }\n\n return submitted;\n }\n\n /**\n * Carbon's private PropagateSettings (cpp:212-231), the anti-aliasing part: the\n * setting creates, updates or removes the TAA effect on the scene's default\n * post process, whose quality is the setting's value.\n *\n * Adapted: Carbon's shadow, AO, volumetric and upscaling propagation follows\n * in the same method; none of those passes run in this driver yet.\n *\n * @returns {void}\n */\n _PropagateSettings()\n {\n const postprocess = this.scene.postprocess;\n\n if (!postprocess) return;\n\n if (this.antiAliasingQuality === AntiAliasingQuality.Disabled)\n {\n postprocess.SetTaa(null);\n return;\n }\n\n if (!postprocess.GetTaaIfAvailable()) postprocess.SetTaa(new Tr2PPTaaEffect());\n\n postprocess.GetTaaIfAvailable().quality = this.antiAliasingQuality;\n }\n\n /**\n * Carbon's GetVelocityMapIfNeeded (cpp:653-668): an R16G16_FLOAT map while\n * anti-aliasing is on, or when forced.\n *\n * Adapted: Carbon also allocates it for a temporal upscaler and for a named\n * render-job output; neither exists here.\n *\n * @param {{width: number, height: number}} size The render size.\n * @returns {GpuResourceHandle|null} The map, or null.\n */\n _GetVelocityMapIfNeeded(size)\n {\n if (this.antiAliasingQuality === AntiAliasingQuality.Disabled && !this.forceVelocityMap) return null;\n\n return this.#TempTexture(\"velocityMap\", size, PixelFormat.PIXEL_FORMAT_R16G16_FLOAT);\n }\n\n /**\n * Carbon's GetOpaqueColorMapIfNeeded (cpp:702-719): a copy of the scene\n * colour at anti-aliasing Medium and above, or when forced.\n *\n * Adapted: Carbon also allocates it for an upscaler, a named output, and a\n * frame with SSSSS opaque batches; none exists here.\n *\n * @param {{width: number, height: number}} size The render size.\n * @returns {GpuResourceHandle|null} The copy, or null.\n */\n _GetOpaqueColorMapIfNeeded(size)\n {\n if (this.antiAliasingQuality < AntiAliasingQuality.Medium && !this.forceOpaqueBuffer) return null;\n\n return this.#TempTexture(\"opaqueBackBuffer\", size, this.internalPixelFormat);\n }\n\n /** A render-target pool texture of the scene's size. */\n #TempTexture(name, size, format, gpuUsage = Tr2GpuUsage.RENDER_TARGET | Tr2GpuUsage.SHADER_RESOURCE)\n {\n return this.#gpuResourcePool.GetTempTexture(name, {\n type: TextureType.TEX_TYPE_2D,\n width: size.width,\n height: size.height,\n depth: 1,\n mipCount: 1,\n format,\n gpuUsage\n });\n }\n\n /**\n * Binds the pool and prepares the renderer against the frame's context, once\n * per context. Carbon's pool and renderer are device resources, ready before\n * any frame; ours are handed the context here instead.\n */\n #PrepareContext(renderContext)\n {\n if (this.#preparedContext === renderContext) return;\n\n this.#gpuResourcePool.SetRenderContext(renderContext);\n this.#renderer.PrepareDeviceResources(renderContext);\n this.#preparedContext = renderContext;\n }\n\n /**\n * Borrows the scene's colour and depth (cpp:461, 471): the internal pixel\n * format at the destination's size, and a 32-bit float depth.\n */\n #BeginOffscreen(target, renderContext)\n {\n const pool = this.#gpuResourcePool;\n\n this.#PrepareContext(renderContext);\n\n const size = { width: target.GetWidth(), height: target.GetHeight() };\n const texture = (name, format, gpuUsage) => pool.GetTempTexture(name, {\n type: TextureType.TEX_TYPE_2D,\n width: size.width,\n height: size.height,\n depth: 1,\n mipCount: 1,\n format,\n gpuUsage\n });\n\n return {\n size,\n color: texture(\"customBackBuffer\", this.internalPixelFormat, Tr2GpuUsage.RENDER_TARGET | Tr2GpuUsage.SHADER_RESOURCE),\n depth: texture(\"depthBuffer\", PixelFormat.PIXEL_FORMAT_D32_FLOAT, Tr2GpuUsage.DEPTH_STENCIL | Tr2GpuUsage.SHADER_RESOURCE),\n // Borrowed by the main pass when TAA needs them (#RenderMainPass).\n velocity: null,\n opaque: null\n };\n }\n\n /** Returns the scene's targets when the frame ends without a post process. */\n #EndOffscreen(offscreen)\n {\n for (const handle of [ offscreen.color, offscreen.depth, offscreen.velocity, offscreen.opaque ])\n {\n if (handle) this.#gpuResourcePool.Free(handle);\n }\n }\n\n /**\n * Binds the destination and runs the post process into it (cpp:602-609).\n * Execute owns and frees both handles, as Carbon moves them into it.\n */\n #PostProcess(target, offscreen, renderContext)\n {\n const esm = renderContext.GetEffectStateManager();\n\n esm.SetRenderTarget(0, target);\n esm.SetDepthStencilBuffer(null);\n\n this.postProcess.Execute(target, offscreen.color, offscreen.depth, offscreen.velocity, offscreen.opaque, this.scene, null, this.#gpuResourcePool, renderContext, this.#renderer);\n }\n\n /**\n * Collects one frame's batches.\n *\n * @param {Array<object>} renderables Pre-culled renderables.\n * @param {object} renderContext Recording render context.\n * @returns {object|null} The batch map, or null without a manager.\n */\n #Collect(renderables, renderContext)\n {\n if (!this.#batchManager) return null;\n\n this.#batchManager.Collect(renderables, undefined, renderContext);\n\n return this.#batchManager.GetBatchMap();\n }\n\n /**\n * Submits one frame's collected batches.\n *\n * @param {object|null} map The batch map `#Collect` produced.\n * @param {object} renderContext Recording render context.\n * @returns {boolean} Whether anything was submitted.\n */\n #Submit(map, renderContext)\n {\n if (!map) return false;\n\n let submitted = false;\n\n for (const batchType of EveSpaceSceneRenderDriver.SubmittedBatchTypes)\n {\n const accumulator = map?.GetAccumulator?.(batchType) ?? null;\n\n // An empty accumulator is submitted anyway. Carbon does not test one, and\n // a pass that draws nothing is still a pass; skipping it here would move a\n // frame-planning decision into the driver.\n if (!accumulator) continue;\n\n // Carbon applies the accumulator's standard states first\n // (EveSpaceScene.cpp:1139-1142): a batch whose own mode is RM_ANY would\n // otherwise inherit whatever was last applied - after one frame, the\n // post process's RM_FULLSCREEN.\n renderContext.GetEffectStateManager().ApplyStandardStates(EveSpaceSceneRenderDriver.#standardStatesFor[batchType]);\n submitted = renderContext.RenderBatches(accumulator) || submitted;\n }\n\n // Transparent, additive and distortion submission belongs here, after the\n // opaque family and before the overlay, exactly as Carbon orders them.\n\n return submitted;\n }\n\n /**\n * Puts this frame's projection and view onto the render context, and derives\n * the frustum the scene culls against.\n *\n * Carbon's SetCameraToRenderer (cpp:384-391) sets the projection then the view\n * transform. The frustum derivation is the driver step our own scene contract\n * names, because Carbon derives it inside BeginRender.\n *\n * @param {object} renderContext Recording render context.\n * @returns {void}\n */\n #SetCameraToRenderer(renderContext)\n {\n // Carbon (cpp:384-391): the camera's TriProjection and TriView when there\n // is a camera, else this driver's own pair - Validate guarantees one.\n //\n // Carbon calls projection->SetProjection( renderContext ), which also\n // folds the bound viewport into the projection (TriProjection.cpp:71-106);\n // that adjustment is not ported, so the projection's transform is set as\n // it stands.\n const projection = (this.camera ? this.camera.GetProjection() : this.projection).GetTransform();\n const view = (this.camera ? this.camera.GetViewMatrix() : this.view).GetTransform();\n\n renderContext.SetProjection(projection);\n renderContext.SetViewTransform(view);\n\n // Against the viewport the scene target just bound (the camera is set\n // after BeginOffscreen, as Carbon's is after BeginRenderPass).\n // Carbon always has a device viewport; ours is null until something binds\n // a target, as on the disabled path or a frame with no destination.\n const viewport = renderContext.GetViewport();\n\n if (viewport) this.#frustum.DeriveFrustum(view, renderContext.GetViewPosition() ?? null, projection, viewport);\n\n this.scene.StampFrameContext?.({ frustum: this.#frustum });\n }\n\n static AmbientOcclusionQuality = AmbientOcclusionQuality;\n\n static AntiAliasingQuality = AntiAliasingQuality;\n\n static EveVisualizeMethod = EveVisualizeMethod;\n\n static Quality = Quality;\n\n static ShadowQuality = ShadowQuality;\n\n static Tr2VolumerticQuality = Tr2VolumerticQuality;\n\n static PixelFormat = PixelFormat;\n\n}\n\n// Registered as Carbon registers it (trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:53).\nblue.enums.RegisterEnum(\"trinity.EveSpaceSceneRenderDriver.AmbientOcclusionQuality\", EveSpaceSceneRenderDriver.AmbientOcclusionQuality, {\n source: \"trinity/trinity/Eve/EveSpaceSceneRenderDriver.h\", family: \"eve/scene\", line: 39,\n exposedName: \"EveSpaceSceneRenderDriverAmbientOcclusionQuality\", exposure: EnumRegistrationType.ENUM_REG_ENUM_OBJECT_ON_MODULE,\n chooserSource: \"trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:18\",\n chooser: [\n { name: \"Disabled\", value: EveSpaceSceneRenderDriver.AmbientOcclusionQuality.Disabled, description: \"\" },\n { name: \"Low\", value: EveSpaceSceneRenderDriver.AmbientOcclusionQuality.Low, description: \"\" },\n { name: \"Medium\", value: EveSpaceSceneRenderDriver.AmbientOcclusionQuality.Medium, description: \"\" },\n { name: \"High\", value: EveSpaceSceneRenderDriver.AmbientOcclusionQuality.High, description: \"\" }\n ]\n});\n\n// Registered as Carbon registers it (trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:52).\nblue.enums.RegisterEnum(\"trinity.EveSpaceSceneRenderDriver.AntiAliasingQuality\", EveSpaceSceneRenderDriver.AntiAliasingQuality, {\n source: \"trinity/trinity/Eve/EveSpaceSceneRenderDriver.h\", family: \"eve/scene\", line: 32,\n exposedName: \"EveSpaceSceneRenderDriverAntiAliasingQuality\", exposure: EnumRegistrationType.ENUM_REG_ENUM_OBJECT_ON_MODULE,\n chooserSource: \"trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:11\",\n chooser: [\n { name: \"Disabled\", value: EveSpaceSceneRenderDriver.AntiAliasingQuality.Disabled, description: \"\" },\n { name: \"Low\", value: EveSpaceSceneRenderDriver.AntiAliasingQuality.Low, description: \"\" },\n { name: \"Medium\", value: EveSpaceSceneRenderDriver.AntiAliasingQuality.Medium, description: \"\" },\n { name: \"High\", value: EveSpaceSceneRenderDriver.AntiAliasingQuality.High, description: \"\" }\n ]\n});\n\n// Registered as Carbon registers it (trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:54).\nblue.enums.RegisterEnum(\"trinity.ShadowQuality\", EveSpaceSceneRenderDriver.ShadowQuality, {\n source: \"trinity/trinity/Tr2LightManager.h\", family: \"eve/scene\", line: 25,\n exposedName: \"ShadowQuality\", exposure: EnumRegistrationType.ENUM_REG_ENUM_OBJECT_ON_MODULE,\n chooserSource: \"trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:25\",\n chooser: [\n { name: \"Disabled\", value: EveSpaceSceneRenderDriver.ShadowQuality.SHADOW_DISABLED, description: \"\" },\n { name: \"Low\", value: EveSpaceSceneRenderDriver.ShadowQuality.SHADOW_LOW, description: \"\" },\n { name: \"High\", value: EveSpaceSceneRenderDriver.ShadowQuality.SHADOW_HIGH, description: \"\" },\n { name: \"Raytraced\", value: EveSpaceSceneRenderDriver.ShadowQuality.SHADOW_RAYTRACED, description: \"\" }\n ]\n});\n"],"names":["_EveSpaceSceneRenderD","_identity","EveSpaceSceneRenderDriver","CjsModel","e","_init_aoQuality","_init_extra_aoQuality","_init_antiAliasingQuality","_init_extra_antiAliasingQuality","_init_visualizeMethod","_init_extra_visualizeMethod","_init_postProcessingQuality","_init_extra_postProcessingQuality","_init_shadowQuality","_init_extra_shadowQuality","_init_customStencilFormat","_init_extra_customStencilFormat","_init_internalPixelFormat","_init_extra_internalPixelFormat","_init_volumetricQuality","_init_extra_volumetricQuality","_init_scene","_init_extra_scene","_init_name","_init_extra_name","_init_enableUpscaling","_init_extra_enableUpscaling","_init_projection","_init_extra_projection","_init_camera","_init_extra_camera","_init_view","_init_extra_view","_init_clearColor","_init_extra_clearColor","_init_distortionEffect","_init_extra_distortionEffect","_init_enableDistortion","_init_extra_enableDistortion","_init_reflectionCorrectionEnabled","_init_extra_reflectionCorrectionEnabled","_init_forceOpaqueBuffer","_init_extra_forceOpaqueBuffer","_init_forceNormalMap","_init_extra_forceNormalMap","_init_forceVelocityMap","_init_extra_forceVelocityMap","_init_fpsRenderer","_init_extra_fpsRenderer","_init_mainPassRenderingEnabled","_init_extra_mainPassRenderingEnabled","_init_toolsScenes","_init_extra_toolsScenes","_init_depthPassTechnique","_init_extra_depthPassTechnique","_init_postProcess","_init_extra_postProcess","_init_showFPS","_init_extra_showFPS","_init_sceneOverlay","_init_extra_sceneOverlay","_init_background","_init_extra_background","_init_SSAO","_init_extra_SSAO","_init_enableRendering","_init_extra_enableRendering","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","purpose","edit","readwrite","int32","enum","persistOnly","model","string","boolean","objectRef","color","read","persist","list","carbon","method","impl","notImplemented","implemented","aoQuality","antiAliasingQuality","visualizeMethod","postProcessingQuality","shadowQuality","customStencilFormat","internalPixelFormat","volumetricQuality","scene","name","enableUpscaling","projection","camera","view","clearColor","vec4","fromValues","distortionEffect","enableDistortion","reflectionCorrectionEnabled","forceOpaqueBuffer","forceNormalMap","forceVelocityMap","fpsRenderer","mainPassRenderingEnabled","toolsScenes","depthPassTechnique","postProcess","Tr2PostProcessRenderer","showFPS","sceneOverlay","background","SSAO","enableRendering","GetAllTempTextures","args","Error","TriFrustum","Tr2GpuResourcePool","Tr2Renderer","Tr2TextureReference","_viewLast","mat4","create","_projectionLast","SetBatchManager","batchManager","GetBatchManager","GetFrustum","Validate","_destinationDimensions","_outputs","_realTime","_simTime","Boolean","Execute","destinations","realTime","simTime","_rootTimer","renderContext","target","Array","isArray","Update","copy","viewLast","projectionLast","GetWidth","GetHeight","_PropagateSettings","getEmptySSAO","offscreen","handedOff","esm","GetEffectStateManager","SetInvertedDepthTest","PushRenderTarget","undefined","PushDepthStencilBuffer","Get","depth","Clear","SetTexture","Tr2VariableStore","GlobalStore","RegisterVariable","EveSpaceScene","registerWithVariableStore","submitted","SetReadOnlyDepth","RunLensflareOcclusionQueries","EndRender","PopDepthStencilBuffer","PopRenderTarget","#RegisterSSAOMap","handle","Free","gpuResourcePool","GetPersistentTexture","TextureType","TEX_TYPE_2D","width","height","mipCount","format","PixelFormat","PIXEL_FORMAT_R8G8B8A8_UNORM","gpuUsage","Tr2GpuUsage","SHADER_RESOURCE","initialData","Tr2SubresourceData","Uint8Array","#BeginRenderPass","colorAttachments","depthAttachment","index","colorAttachment","SetRenderTarget","maxRenderTargets","SetDepthStencilBuffer","SetFullScreenViewport","#RenderMainPass","dataTextureMgr","SetVariables","Jitter","SetProjection","jitteredProjection","BlendLightingOverrides","UpdateFogSettings","UpdateVisibility","GetInverseViewTransform","map","GetRenderables","UpdateVariableStore","velocity","_GetVelocityMapIfNeeded","size","lensflare","lensflares","PrepareRender","PopulatePerFramePSData","PopulatePerFrameVSData","ApplyPerFrameData","display","opaque","_GetOpaqueColorMapIfNeeded","RenderPassHint","Tr2ColorAttachment","Tr2LoadAction","LOAD","Tr2StoreAction","STORE","CLEAR","Tr2DepthAttachment","DONT_CARE","ApplyStandardStates","RenderingMode","RM_FULLSCREEN","DrawTexture","postprocess","AntiAliasingQuality","Disabled","SetTaa","GetTaaIfAvailable","Tr2PPTaaEffect","quality","PIXEL_FORMAT_R16G16_FLOAT","Medium","#TempTexture","RENDER_TARGET","GetTempTexture","#PrepareContext","SetRenderContext","PrepareDeviceResources","#BeginOffscreen","pool","texture","PIXEL_FORMAT_D32_FLOAT","DEPTH_STENCIL","#EndOffscreen","#PostProcess","#Collect","renderables","Collect","GetBatchMap","#Submit","batchType","SubmittedBatchTypes","accumulator","GetAccumulator","RenderBatches","#SetCameraToRenderer","GetProjection","GetTransform","GetViewMatrix","SetViewTransform","viewport","GetViewport","DeriveFrustum","GetViewPosition","StampFrameContext","frustum","Object","freeze","TriBatchType","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","RM_OPAQUE","RM_DECAL","shadowMap","GpuResourceHandle","cascadedShadowDepth","pointLightShadowMap","pointLightShadowDepth","AmbientOcclusionQuality","EveVisualizeMethod","Quality","ShadowQuality","Tr2VolumerticQuality","constructor","blue","enums","RegisterEnum","source","line","exposedName","exposure","EnumRegistrationType","ENUM_REG_ENUM_OBJECT_ON_MODULE","chooserSource","chooser","value","description","Low","High","SHADOW_DISABLED","SHADOW_LOW","SHADOW_HIGH","SHADOW_RAYTRACED"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveSpaceSceneRenderDriver.js","sources":["../../../../../src/trinity/eve/scene/EveSpaceSceneRenderDriver.js"],"sourcesContent":["// Source: trinity/trinity/Eve/EveSpaceSceneRenderDriver.{h,cpp}\n// Maintained CarbonEngineJS implementation; generated schema is reference-only.\n//\n// THE FRAME DRIVER. Carbon's EveSpaceScene::Render is an empty function body\n// (EveSpaceScene.cpp:2947-2949) and TriStepRenderScene calls it anyway, so a\n// scene draws nothing through that path in Carbon either. The real driver is\n// this class, an ITr2RenderNode reached through Tr2StepExecuteRenderNode from a\n// render job (EveSpaceSceneRenderDriver.cpp:404).\n//\n// DELIBERATELY PARTIAL. Carbon's Execute is a forty-step frame: background,\n// reflection, depth prepass, shadows, SSAO, light lists, distortion, the main\n// colour pass, overlays, lensflare occlusion, post-process and 3D UI. This\n// implements the spine - update, gather, submit opaque and decal - and nothing\n// else. Every omitted stage is a later insertion into the SAME sequence rather\n// than a redesign, and they are listed on Execute so a reader can tell \"not\n// yet\" from \"not needed\".\n//\n// It does not own the passes Carbon's scene owns. CarbonEngineJS splits\n// Carbon's BeginRender/GatherBatches into scene-owned CPU methods that a driver\n// calls in order; that contract is written on EveSpaceScene itself, and this is\n// the driver it describes.\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { vec4 } from \"#math/vec4\";\nimport { mat4 } from \"#math/mat4\";\nimport { PixelFormat, TextureType, Tr2GpuUsage, Tr2LoadAction, Tr2StoreAction } from \"#consts/render-context\";\nimport { Tr2ColorAttachment, Tr2DepthAttachment, Tr2SubresourceData } from \"#trinityal\";\nimport { AmbientOcclusionQuality, AntiAliasingQuality, EveVisualizeMethod } from \"../../generated/eve/enums.js\";\nimport { ShadowQuality, SSAOQuality, TR2SHADERMODEL, Tr2VolumerticQuality } from \"../../generated/trinityCore/enums.js\";\nimport { Quality } from \"../../generated/postProcess/enums.js\";\nimport { RenderingMode, TriBatchType } from \"#consts/graphics\";\nimport { CjsBatchManager } from \"../../core/batch/CjsBatchManager.js\";\nimport { TriFrustum } from \"../../core/view/TriFrustum.js\";\nimport { GpuResourceHandle } from \"../../core/Tr2GpuResourcePool/GpuResourceHandle.js\";\nimport { Tr2GpuResourcePool } from \"../../core/Tr2GpuResourcePool/Tr2GpuResourcePool.js\";\nimport { Tr2Renderer } from \"../../core/Tr2Renderer.js\";\nimport { Tr2ShadowMap } from \"../../core/Tr2ShadowMap.js\";\nimport { Tr2LightManager } from \"../../core/lighting/Tr2LightManager.js\";\nimport { COMPUTE_LIGHT_LISTS_EFFECT_PATH } from \"#consts/effectPaths\";\nimport { Tr2TextureReference } from \"../../core/Tr2TextureReference.js\";\nimport { Tr2VariableStore } from \"../../core/variable/Tr2VariableStore.js\";\nimport { Tr2PostProcessRenderer } from \"../../postProcess/Tr2PostProcessRenderer.js\";\nimport { Tr2PPTaaEffect } from \"../../postProcess/effect/Tr2PPTaaEffect.js\";\nimport \"../../core/volumetrics/Tr2VolumetricsRenderer.js\";\n// A cycle with EveSpaceScene.js; each side reads the other only inside methods.\nimport { EveSpaceScene } from \"./EveSpaceScene.js\";\nimport { blue, EnumRegistrationType } from \"#blue\";\nimport \"../../postProcess/effect/Tr2PPEffect.js\";\nimport \"#blue/registerTrinityEnums\";\n\n/** Collects camera, quality, pass-toggle, overlay, background, and post-process state for driving an EVE space-scene frame. */\n@type.define({ className: \"EveSpaceSceneRenderDriver\", family: \"eve/scene\", purpose: \"Collects camera, quality, pass-toggle, overlay, background, and post-process state for driving an EVE space-scene frame.\" })\nexport class EveSpaceSceneRenderDriver extends CjsModel\n{\n\n /** m_settings.aoQuality (AmbientOcclusionQuality - enum AmbientOcclusionQuality) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.EveSpaceSceneRenderDriver.AmbientOcclusionQuality\")\n aoQuality = 0;\n\n /** m_settings.antiAliasingQuality (AntiAliasingQuality - enum AntiAliasingQuality) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.EveSpaceSceneRenderDriver.AntiAliasingQuality\")\n antiAliasingQuality = 0;\n\n /** m_settings.visualizeMethod (EveSpaceScene::EveVisualizeMethod - enum EveVisualizeMethod) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.EveSpaceScene.EveVisualizeMethod\")\n visualizeMethod = 0;\n\n /** m_settings.postProcessingQuality (PostProcess::Quality - enum Quality) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.PostProcess.Quality\")\n postProcessingQuality = 0;\n\n /** m_settings.shadowQuality (ShadowQuality - enum ShadowQuality) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.ShadowQuality\")\n shadowQuality = 0;\n\n /** m_customStencilFormat (ImageIO::PixelFormat - enum PixelFormat) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.ImageIO.PixelFormat\")\n customStencilFormat = 0;\n\n /** m_internalPixelFormat (ImageIO::PixelFormat - enum PixelFormat) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.ImageIO.PixelFormat\")\n internalPixelFormat = 10;\n\n /** m_settings.volumetricQuality (Tr2VolumerticQuality - enum Tr2VolumerticQuality) [READWRITE, ENUM] */\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.Tr2VolumerticQuality\")\n volumetricQuality = 0;\n\n /** m_scene (EveSpaceScenePtr) [PERSISTONLY] */\n @edit.readwrite\n @edit.persistOnly\n @type.model(\"EveSpaceScene\")\n scene = null;\n\n /** m_name (std::string) [READWRITE] */\n @edit.readwrite\n @type.string\n name = \"\";\n\n /** m_settings.enableUpscaling (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n enableUpscaling = false;\n\n /** m_projection (TriProjectionPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"TriProjection\")\n projection = null;\n\n /** m_camera (EveCameraPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"EveCamera\")\n camera = null;\n\n /** m_view (TriViewPtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"TriView\")\n view = null;\n\n /** m_settings.clearColor (Color) [READWRITE]; Carbon's default is opaque black (EveSpaceSceneRenderDriver.h:59). */\n @edit.readwrite\n @type.color\n clearColor = vec4.fromValues(0, 0, 0, 1);\n\n /** m_distortionEffect (Tr2EffectPtr) [READ] */\n @edit.read\n @type.objectRef(\"Tr2Effect\")\n distortionEffect = null;\n\n /** m_settings.enableDistortion (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n enableDistortion = false;\n\n /** m_reflectionCorrectionEnabled (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n reflectionCorrectionEnabled = true;\n\n /** m_settings.forceOpaqueBuffer (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n forceOpaqueBuffer = false;\n\n /** m_settings.forceNormalMap (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n forceNormalMap = false;\n\n /** m_settings.forceVelocityMap (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n forceVelocityMap = false;\n\n /** m_fpsRenderer (TriStepRenderFpsPtr) [READ] */\n @edit.read\n @type.objectRef(\"TriStepRenderFps\")\n fpsRenderer = null;\n\n /** m_mainPassRenderingEnabled (bool) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.boolean\n mainPassRenderingEnabled = true;\n\n /** m_toolsScenes (PITr2SceneVector) [READ] */\n @edit.read\n @type.list(\"ITr2Scene\")\n toolsScenes = [];\n\n /** m_depthPassTechnique (unknown) [READWRITE] */\n @edit.readwrite\n @type.string\n depthPassTechnique = \"Depth\";\n\n /** m_postProcess (Tr2PostProcessRendererPtr) [READ], created in the constructor (cpp:151). */\n @edit.read\n @type.objectRef(\"Tr2PostProcessRenderer\")\n postProcess = new Tr2PostProcessRenderer();\n\n /** m_settings.showFPS (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n showFPS = false;\n\n /** m_sceneOverlay (ITr2RenderNodePtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"ITr2RenderNode\")\n sceneOverlay = null;\n\n /** m_background (ITr2RenderNodePtr) [READWRITE] */\n @edit.readwrite\n @type.objectRef(\"ITr2RenderNode\")\n background = null;\n\n /** m_ssao (Tr2SSAOPtr) [READWRITE, PERSIST] */\n @edit.readwrite\n @edit.persist\n @type.model(\"Tr2SSAO\")\n SSAO = null;\n\n /** m_enableRendering (bool) [READWRITE] */\n @edit.readwrite\n @type.boolean\n enableRendering = true;\n\n /** Carbon method GetAllTempTextures (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.notImplemented\n GetAllTempTextures(...args)\n {\n throw new Error(\"EveSpaceSceneRenderDriver.GetAllTempTextures is not implemented in CarbonEngineJS.\");\n }\n\n /** The frustum this driver derives each frame; Carbon keeps one per driver. */\n #frustum = new TriFrustum();\n\n /** Collects renderables into batches; composed, so the caller owns its producers. */\n #batchManager = null;\n\n /** m_gpuResourcePool: the scene's colour and depth, and every post-process target. */\n #gpuResourcePool = new Tr2GpuResourcePool();\n\n /** Carbon's Tr2Renderer is static; ours is an instance, prepared per context. */\n #renderer = new Tr2Renderer();\n\n #preparedContext = null;\n\n /** The provider \"DepthMap\" is registered with; it holds this frame's scene depth. */\n #depthMapReference = new Tr2TextureReference();\n\n /** The provider \"SSAOMap\" is registered with: the SSAO, the empty SSAO, or nothing. */\n #ssaoMapReference = new Tr2TextureReference();\n\n /** The provider \"SpaceSceneNormalMap\" is registered with: the depth pass's normals. */\n #normalMapReference = new Tr2TextureReference();\n\n /** The provider \"EveSpaceSceneOpaqueMap\" is registered with: the opaque colour copy. */\n _opaqueMapReference = new Tr2TextureReference();\n\n /**\n * m_viewLast / m_projectionLast (EveSpaceSceneRenderDriver.h:147-149): the\n * previous frame's camera. The driver owns them, not the scene, because\n * several drivers can render one scene; they are handed in at the start of\n * Execute and back out after the main pass (cpp:431-432, 597-598).\n */\n _viewLast = mat4.create();\n\n _projectionLast = mat4.create();\n\n /**\n * The opaque family, in submission order: Carbon's RenderOpaqueBatches\n * draws OPAQUE then DECAL (EveSpaceScene.cpp:1124-1150). The transparent\n * family follows after the opaque copy; see _SubmitTransparent.\n */\n static SubmittedBatchTypes = Object.freeze([\n TriBatchType.TRIBATCHTYPE_OPAQUE,\n TriBatchType.TRIBATCHTYPE_DECAL\n ]);\n\n /** The standard states Carbon applies before each accumulator (EveSpaceScene.cpp:1139-1142). */\n static #standardStatesFor = Object.freeze({\n [TriBatchType.TRIBATCHTYPE_OPAQUE]: RenderingMode.RM_OPAQUE,\n [TriBatchType.TRIBATCHTYPE_DECAL]: RenderingMode.RM_DECAL\n });\n\n /**\n * Supplies the batch manager this driver collects through.\n *\n * Composed rather than constructed, because which producers and collectors are\n * registered is the caller's: Carbon's equivalent is the scene's component\n * registry plus the quad and instanced-mesh collectors it gathers from\n * (EveSpaceScene.cpp:1509-1520).\n *\n * @param {CjsBatchManager} batchManager Initialized batch manager.\n * @returns {EveSpaceSceneRenderDriver} This driver.\n */\n SetBatchManager(batchManager)\n {\n this.#batchManager = batchManager ?? null;\n return this;\n }\n\n /** @returns {CjsBatchManager|null} The composed batch manager. */\n GetBatchManager()\n {\n return this.#batchManager;\n }\n\n /** @returns {TriFrustum} The frustum derived by the last Execute. */\n GetFrustum()\n {\n return this.#frustum;\n }\n\n /**\n * Whether this node can run against the requested destinations.\n *\n * Carbon guards on a scene plus either a camera or a view/projection pair\n * (EveSpaceSceneRenderDriver.cpp:406-425) and returns rather than failing,\n * because a driver with nothing to draw is a legitimate frame.\n *\n * @returns {boolean} Whether Execute would draw.\n */\n Validate(_destinationDimensions = null, _outputs = null, _realTime = 0, _simTime = 0)\n {\n if (!this.scene) return false;\n\n return Boolean(this.camera || (this.view && this.projection));\n }\n\n /**\n * Drives one frame of a space scene into its destination.\n *\n * The spine of Carbon's Execute, in Carbon's order. NOT here, each an\n * insertion into this same sequence: the background node, the reflection\n * pass, shadows, the light-list update, the distortion map, the scene\n * overlay and 3D UI. The scene renders into\n * its own colour and depth, plus the depth pass's normal map when ambient\n * occlusion is on and TAA's velocity map and opaque copy when\n * anti-aliasing is on, and the post process draws it into the destination.\n *\n * Rendering-disabled is not a no-op in Carbon either: the scene still\n * updates, so simulation keeps running while nothing is drawn (cpp:408-419).\n *\n * @returns {boolean} Whether anything was submitted.\n */\n Execute(destinations = null, _outputs = null, realTime = 0, simTime = 0, _rootTimer = null, renderContext = null)\n {\n if (!renderContext || !this.Validate()) return false;\n\n const target = Array.isArray(destinations) ? destinations[0] ?? null : destinations;\n\n // Step 1 of EveSpaceScene's driver order: the update context carries the\n // frame's render context, whose view the scene's view-dependent updates\n // read (billboards, the flare occluders' transforms).\n this.scene.updateContext.renderContext = renderContext;\n\n // RENDERING DISABLED (cpp:408-419): camera onto the renderer and the scene\n // update, so simulation keeps running - and nothing else. No target borrow,\n // no clear, no camera update.\n if (!this.enableRendering)\n {\n this.#SetCameraToRenderer(renderContext);\n this.scene.Update(realTime, simTime);\n return false;\n }\n\n // The previous frame's camera, for motion vectors (cpp:431-432).\n mat4.copy(this.scene.viewLast, this._viewLast);\n mat4.copy(this.scene.projectionLast, this._projectionLast);\n\n // Carbon's camera reads gTriDev->AspectRatio() (EveCamera.cpp:507); the\n // destination's is the equivalent here.\n this.camera?.Update(simTime, target ? target.GetWidth() / target.GetHeight() : 1, realTime);\n\n this._PropagateSettings();\n\n this.#PrepareContext(renderContext);\n\n // cpp:444 - the white \"EmptySSAO\" until an SSAO pass replaces it. None is\n // ported, so it is what the main pass samples, as when Carbon's SSAO is\n // off (RenderSSAO, cpp:360-381).\n this.#RegisterSSAOMap(EveSpaceSceneRenderDriver.getEmptySSAO(this.#gpuResourcePool));\n\n // THE SCENE RENDERS INTO ITS OWN COLOUR AND DEPTH (cpp:461, 471), and the\n // post process draws the result into the destination (cpp:602-609).\n // Carbon always has a destination; a null one - which tests use - keeps\n // drawing into whatever is bound, with no post process.\n const offscreen = target ? this.#BeginOffscreen(target, renderContext) : null;\n\n // Carbon's pool handles are RAII locals (cpp:461, 471) and release on any\n // exit; the post process owns them once it is called (cpp:608).\n let handedOff = false;\n\n // The caller's targets are saved for the frame and restored on every exit\n // (cpp:450-457): colour slots 0 and 1, and the depth stencil.\n const esm = renderContext.GetEffectStateManager();\n\n // REVERSE-Z FOR THE WHOLE FRAME (cpp:446-447): the depth test is inverted\n // and depth clears to 0, and the scene hands shaders the reversed-depth\n // projection. Carbon's post passes (fog, depth of field, god rays) read\n // the depth buffer under that convention.\n esm.SetInvertedDepthTest(true);\n esm.PushRenderTarget(undefined, 0);\n esm.PushRenderTarget(undefined, 1);\n esm.PushDepthStencilBuffer();\n\n try\n {\n if (offscreen) this.#BeginRenderPass(esm, [ offscreen.color.Get() ], offscreen.depth.Get());\n\n renderContext.Clear({ color: this.clearColor, depth: 0 });\n\n // AFTER the scene target is bound (cpp:473-476), because the projection\n // and frustum read the bound viewport; BEFORE the update, so the scene's\n // own update reads this frame's view (cpp:476 -> 479).\n this.#SetCameraToRenderer(renderContext);\n\n this.scene.Update(realTime, simTime);\n\n // THE SCENE DEPTH IS A GLOBAL, \"DepthMap\" (cpp:494): TAA, the circle of\n // confusion and the fog composite sample it by name. A texture variable\n // holds a provider, not a bare AL texture, so the depth goes in through\n // this driver's reference, as the blitter publishes BlitSource.\n if (offscreen)\n {\n this.#depthMapReference.SetTexture(offscreen.depth.Get());\n Tr2VariableStore.GlobalStore().RegisterVariable(\"DepthMap\", this.#depthMapReference);\n }\n\n // The shadow globals start empty, with the white fallbacks: the shadow\n // pass fills them for the main pass only (cpp:550, 557).\n EveSpaceScene.registerWithVariableStore(EveSpaceSceneRenderDriver.#noShadowResources, this.#gpuResourcePool);\n\n const submitted = this.#RenderMainPass(renderContext, offscreen);\n\n // cpp:565 - SSAOMap is emptied after the main pass.\n this.#RegisterSSAOMap(null);\n\n // LENS-FLARE OCCLUSION (cpp:587-592), after the main pass on the scene\n // target with read-only depth: each lensflare's queries, then the\n // occlusion buffer's Clear/CopyCounters compute - which the god rays\n // read through FlareOcclusionBuffer.\n if (offscreen)\n {\n this.#BeginRenderPass(esm, [ offscreen.color.Get() ], offscreen.depth.Get());\n renderContext.SetReadOnlyDepth(true);\n this.scene.RunLensflareOcclusionQueries(offscreen.depth.Get(), renderContext);\n renderContext.SetReadOnlyDepth(false);\n }\n\n // EndRender's last-frame store, handed back out to this driver (cpp:597-598).\n this.scene.EndRender(renderContext);\n mat4.copy(this._viewLast, this.scene.viewLast);\n mat4.copy(this._projectionLast, this.scene.projectionLast);\n\n if (offscreen)\n {\n handedOff = true;\n this.#PostProcess(target, offscreen, renderContext);\n }\n\n return submitted;\n }\n finally\n {\n esm.PopDepthStencilBuffer();\n esm.PopRenderTarget(1);\n esm.PopRenderTarget(0);\n esm.SetInvertedDepthTest(false);\n\n // Carbon restores the empty SSAO and empties DepthMap at the frame's end\n // (cpp:625-626); the pool reclaims the depth texture after this.\n this.#RegisterSSAOMap(EveSpaceSceneRenderDriver.getEmptySSAO(this.#gpuResourcePool));\n this.#depthMapReference.SetTexture(null);\n\n // The normal map is an Execute local in Carbon (cpp:514), never handed\n // to the post process.\n if (offscreen?.normal)\n {\n this.#gpuResourcePool.Free(offscreen.normal);\n offscreen.normal = null;\n }\n\n // So are the shadow resources (cpp:526).\n for (const handle of Object.values(offscreen?.shadows ?? {}))\n {\n if (handle.IsValid()) this.#gpuResourcePool.Free(handle);\n }\n\n if (offscreen && !handedOff) this.#EndOffscreen(offscreen);\n }\n }\n\n /**\n * GlobalStore().RegisterVariable( \"SSAOMap\", texture ): the texture goes in\n * through this driver's reference, and a null is Carbon's typed-null\n * Tr2TextureAL{}. A pool handle is released once its texture is taken, as\n * Carbon's temporary does at the end of the statement.\n */\n #RegisterSSAOMap(handle)\n {\n this.#ssaoMapReference.SetTexture(handle ? handle.Get() : null);\n if (handle) this.#gpuResourcePool.Free(handle);\n Tr2VariableStore.GlobalStore().RegisterVariable(\"SSAOMap\", this.#ssaoMapReference);\n }\n\n /**\n * Carbon's anonymous-namespace GetEmptySSAO (cpp:40-46): a persistent white\n * 1x1 RGBA8, \"no occlusion\", for frames without an SSAO pass.\n *\n * @param {Tr2GpuResourcePool} gpuResourcePool The driver's pool.\n * @returns {GpuResourceHandle} The texture.\n */\n @carbon.method\n @impl.implemented\n static getEmptySSAO(gpuResourcePool)\n {\n return gpuResourcePool.GetPersistentTexture(\"EmptySSAO\", {\n type: TextureType.TEX_TYPE_2D,\n width: 1,\n height: 1,\n depth: 1,\n mipCount: 1,\n format: PixelFormat.PIXEL_FORMAT_R8G8B8A8_UNORM,\n gpuUsage: Tr2GpuUsage.SHADER_RESOURCE,\n initialData: [ new Tr2SubresourceData(new Uint8Array([ 255, 255, 255, 255 ]), 4, 4) ]\n });\n }\n\n /** EveSpaceScene::ShadowResources with every texture empty: no shadow pass is ported. */\n static #noShadowResources = {\n shadowMap: new GpuResourceHandle(),\n cascadedShadowDepth: new GpuResourceHandle(),\n pointLightShadowMap: new GpuResourceHandle(),\n pointLightShadowDepth: new GpuResourceHandle()\n };\n\n /**\n * Carbon's anonymous-namespace BeginRenderPass (cpp:23-38): binds the colour\n * attachments through the effect state manager, unbinds the slots after\n * them, binds the depth, and sets the full-screen viewport - which the\n * projection and frustum then read.\n *\n * QUIRK, reproduced: Carbon's clearing loop increments `index` twice per\n * iteration (`SetRenderTarget( index++, ... )` inside `for( ; ...; ++index )`),\n * so after one attachment it unbinds slots 1 and 3 and leaves slot 2 bound.\n *\n * @param {Tr2EffectStateManager} esm The context's effect state manager.\n * @param {object[]} colorAttachments Colour targets for slots 0..n-1.\n * @param {object|null} depthAttachment The depth stencil.\n * @returns {void}\n */\n #BeginRenderPass(esm, colorAttachments, depthAttachment)\n {\n let index = 0;\n for (const colorAttachment of colorAttachments) esm.SetRenderTarget(index++, colorAttachment);\n\n // Generously assuming max 4 render targets, as Carbon's comment says.\n const maxRenderTargets = 4;\n for (; index < maxRenderTargets; ++index) esm.SetRenderTarget(index++, null);\n\n esm.SetDepthStencilBuffer(depthAttachment);\n esm.SetFullScreenViewport();\n }\n\n /**\n * The gather and main pass of one frame: BeginRender's CPU half, the\n * per-frame blocks, and the opaque family's submission.\n *\n * With an off-screen target it also borrows the TAA maps, as Carbon's\n * Execute does around BeginRender and RenderMainPass (cpp:501, 549): the\n * velocity map after BeginRender, the opaque colour copy only when the main\n * pass runs. They land on `offscreen` so the post process receives them and\n * an early exit frees them.\n *\n * @param {object} renderContext Recording render context.\n * @param {object|null} offscreen The scene's borrowed targets, if any.\n * @returns {boolean} Whether anything was submitted.\n */\n #RenderMainPass(renderContext, offscreen)\n {\n // BeginRender's CPU half, in the order EveSpaceScene's own contract gives.\n // The impact data texture is republished first (EveSpaceScene.cpp:1324-1327).\n if (this.scene.dataTextureMgr) this.scene.dataTextureMgr.SetVariables();\n\n\n // BeginRender jitters the camera's projection and draws with the result\n // (EveSpaceScene.cpp:1329-1331).\n this.scene.Jitter(renderContext);\n renderContext.SetProjection(this.scene.jitteredProjection);\n this.scene.BlendLightingOverrides();\n this.scene.UpdateFogSettings();\n\n // The light manager exists only while dynamic lighting is on\n // (EveSpaceScene.cpp:1378-1388), and publishes its buffers before the gather.\n if (this.scene.dynamicLightingEnabled)\n {\n Tr2LightManager.getOrCreateInstance(COMPUTE_LIGHT_LISTS_EFFECT_PATH).SetVariableStore();\n }\n else\n {\n Tr2LightManager.deleteInstance();\n }\n this.scene.UpdateVisibility?.(renderContext.GetInverseViewTransform?.() ?? null);\n\n const map = this.#Collect(this.scene.GetRenderables?.([]) ?? [], renderContext);\n\n // After the gather, the scene's global textures - the nebula and the\n // reflection - go through the variable store (UpdateVariableStore,\n // EveSpaceScene.cpp:1390-1397).\n this.scene.UpdateVariableStore();\n\n // The dynamic lights, after the gather (EveSpaceScene.cpp:1398-1416).\n const lightManager = Tr2LightManager.getInstance();\n\n if (lightManager) this.scene.GatherLights(lightManager);\n\n if (offscreen) offscreen.velocity = this._GetVelocityMapIfNeeded(offscreen.size);\n\n // \"The lensflares need a special pre-render update\" (cpp:1419-1422): after\n // the gather and lights, before the per-frame fills, against this frame's\n // frustum.\n for (const lensflare of this.scene.lensflares ?? []) lensflare.PrepareRender(this.#frustum, renderContext);\n\n // Carbon populates per-frame data AFTER the gather, because the blended sun\n // colour is only current once lights have been gathered (cpp:1396-1426),\n // and BEFORE the render job's steps draw the batches. RenderBatches draws\n // immediately now - Carbon's shape - so the blocks must be populated AND\n // BOUND here, between the gather and the submission.\n //\n // No explicit null for the fills' `frame`: a default parameter replaces only\n // undefined, and with null both fills threw on their first field read, so\n // every frame of a real EveSpaceScene died here.\n this.scene.PopulatePerFramePSData?.(renderContext);\n this.scene.PopulatePerFrameVSData?.(renderContext);\n\n // The scene's own apply (EveSpaceScene::ApplyPerFrameData, cpp:818-828),\n // not the generic Tr2BindPerFrame*Data: the space scene binds its vertex\n // block for compute as well, which dynamic exposure reads Time from.\n this.scene.ApplyPerFrameData(renderContext);\n\n // THE DEPTH PASS (cpp:514-521): depth and, when AO or a forced map wants\n // it, the normal map, before shadows and SSAO read them. The depth\n // buffer stays bound; the scene colour is back in slot 0 afterwards.\n if (offscreen && map)\n {\n offscreen.normal = this._GetNormalMapIfNeeded(offscreen.size);\n this.scene.RenderDepthPass(offscreen.depth.Get(), offscreen.normal?.Get() ?? null, null, renderContext, this.depthPassTechnique, map);\n }\n\n this.#normalMapReference.SetTexture(offscreen?.normal?.Get() ?? null);\n Tr2VariableStore.GlobalStore().RegisterVariable(\"SpaceSceneNormalMap\", this.#normalMapReference);\n\n // Carbon gates the main pass on the scene's display flag AND this switch\n // (cpp:527).\n if (!this.mainPassRenderingEnabled || this.scene.display === false) return false;\n\n // SHADOWS (cpp:529-532), after the depth pass: the cascaded shadow map and\n // its screen-space factor, held until the frame ends.\n if (offscreen) offscreen.shadows = this.scene.RenderShadows(offscreen.depth.Get(), offscreen.normal?.Get() ?? null, this.#gpuResourcePool, renderContext, this.#renderer);\n\n // SSAO (cpp:534-537), after the shadows and before the main pass samples\n // SSAOMap.\n if (offscreen) this.#RegisterSSAOMap(this._RenderSSAO(offscreen.depth.Get(), offscreen.normal?.Get() ?? null, renderContext));\n\n // The light lists, against this frame's depth read-only (cpp:539-546).\n if (offscreen && lightManager)\n {\n renderContext.SetReadOnlyDepth(true);\n lightManager.UpdateLists(offscreen.depth.Get(), renderContext);\n renderContext.SetReadOnlyDepth(false);\n }\n\n if (offscreen) offscreen.opaque = this._GetOpaqueColorMapIfNeeded(offscreen.size);\n\n // cpp:550 - the shadow pass's textures as globals, for the main pass.\n if (offscreen?.shadows) EveSpaceScene.registerWithVariableStore(offscreen.shadows, this.#gpuResourcePool);\n\n const velocity = offscreen?.velocity?.Get() ?? null;\n const opaque = offscreen?.opaque?.Get() ?? null;\n const esm = renderContext.GetEffectStateManager();\n let submitted;\n\n // THE VELOCITY SCOPE (EveSpaceScene.cpp:2715-2735): the velocity map is\n // colour slot 1 for the opaque family, cleared by the pass hint to (0, 0);\n // slot 0 and depth load and store. There is no background pass, so it is\n // never already dirty. Shaders that do not write SV_Target1 leave it\n // alone (the AL masks the target off).\n //\n // Without velocity Carbon hints the colour LOAD/STORE and the depth\n // LOAD/DONT_CARE (cpp:2733); that hint is not ported, because this frame's\n // post process still reads the depth the pass would discard.\n if (velocity)\n {\n esm.PushRenderTarget(velocity, 1);\n try\n {\n renderContext.RenderPassHint(\n new Tr2ColorAttachment(Tr2LoadAction.LOAD, Tr2StoreAction.STORE),\n new Tr2ColorAttachment(Tr2LoadAction.CLEAR, Tr2StoreAction.STORE, 0),\n new Tr2DepthAttachment(Tr2LoadAction.LOAD, Tr2StoreAction.STORE)\n );\n submitted = this.#Submit(map, renderContext);\n }\n finally\n {\n esm.PopRenderTarget(1);\n }\n }\n else\n {\n submitted = this.#Submit(map, renderContext);\n }\n\n // THE OPAQUE COLOUR COPY (EveSpaceScene.cpp:2738-2750): the scene colour\n // after the opaque family, which TAA reads as CurrentFrameOpaque and\n // transparent shaders read as the global EveSpaceSceneOpaqueMap.\n if (opaque)\n {\n renderContext.RenderPassHint(new Tr2ColorAttachment(Tr2LoadAction.DONT_CARE, Tr2StoreAction.STORE), null);\n esm.PushDepthStencilBuffer(null);\n esm.PushRenderTarget(opaque);\n try\n {\n esm.ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n this.#renderer.DrawTexture(renderContext, offscreen.color.Get());\n }\n finally\n {\n esm.PopRenderTarget();\n esm.PopDepthStencilBuffer();\n }\n\n this._opaqueMapReference.SetTexture(opaque);\n Tr2VariableStore.GlobalStore().RegisterVariable(\"EveSpaceSceneOpaqueMap\", this._opaqueMapReference);\n }\n\n // THE TRANSPARENT FAMILY (EveSpaceScene.cpp:2758). Carbon runs subsurface\n // scattering, the jittered-projection refresh and the volumetrics between\n // the opaque copy and this (cpp:2752-2757); none of those are ported.\n submitted = this._SubmitTransparent(map, renderContext) || submitted;\n\n // cpp:557 - the shadow globals are emptied after the main pass.\n if (offscreen?.shadows) EveSpaceScene.registerWithVariableStore(EveSpaceSceneRenderDriver.#noShadowResources, this.#gpuResourcePool);\n\n return submitted;\n }\n\n /**\n * Carbon's private PropagateSettings (cpp:212-280), the anti-aliasing and\n * ambient-occlusion parts. Anti-aliasing creates, updates or removes the TAA\n * effect on the scene's default post process, whose quality is the\n * setting's value. Ambient occlusion enables the SSAO, when there is one,\n * at the quality the setting maps to.\n *\n * Adapted: Carbon's shadow propagation sits between the two, and its\n * post-process quality, volumetric and upscaling propagation follow; none\n * of those passes run in this driver yet.\n *\n * @returns {void}\n */\n _PropagateSettings()\n {\n const postprocess = this.scene.postprocess;\n\n if (postprocess)\n {\n if (this.antiAliasingQuality === AntiAliasingQuality.Disabled)\n {\n postprocess.SetTaa(null);\n }\n else\n {\n if (!postprocess.GetTaaIfAvailable()) postprocess.SetTaa(new Tr2PPTaaEffect());\n\n postprocess.GetTaaIfAvailable().quality = this.antiAliasingQuality;\n }\n }\n\n // Shadow quality (cpp:233-255): the cascaded shadow map exists at LOW and\n // HIGH. Carbon's raytracing manager is not ported, so RAYTRACED has none.\n if (this.shadowQuality === ShadowQuality.SHADOW_DISABLED || this.shadowQuality === ShadowQuality.SHADOW_RAYTRACED)\n {\n this.scene.cascadedShadowMap = null;\n }\n else if (!this.scene.cascadedShadowMap)\n {\n this.scene.cascadedShadowMap = new Tr2ShadowMap();\n }\n\n this.scene.shadowQualitySetting = this.shadowQuality;\n\n if (this.SSAO)\n {\n if (this.aoQuality === AmbientOcclusionQuality.Disabled)\n {\n this.SSAO.Enable(false);\n }\n else\n {\n this.SSAO.Enable(true);\n\n switch (this.aoQuality)\n {\n case AmbientOcclusionQuality.Low:\n this.SSAO.SetQuality(SSAOQuality.LOW, true);\n break;\n case AmbientOcclusionQuality.Medium:\n this.SSAO.SetQuality(SSAOQuality.MEDIUM, false);\n break;\n default:\n this.SSAO.SetQuality(SSAOQuality.HIGHEST, false);\n break;\n }\n }\n }\n }\n\n /**\n * Carbon's private RenderSSAO (cpp:360-382): the SSAO filtered from the\n * depth and normal maps with depth bound read-only, or the empty SSAO when\n * there is none.\n *\n * Adapted: Carbon's `temporal` is also true under a temporal upscaler,\n * which is not ported, so only the post process's TAA sets it.\n *\n * @param {object} depthMap The scene depth.\n * @param {object|null} normalMap The depth pass's normal map.\n * @param {object} renderContext The frame's context.\n * @returns {GpuResourceHandle} The SSAO texture.\n */\n _RenderSSAO(depthMap, normalMap, renderContext)\n {\n let ssao = new GpuResourceHandle();\n\n if (this.scene.display && this.SSAO)\n {\n renderContext.SetReadOnlyDepth(true);\n\n const scenePostProcess = this.scene.postprocess;\n const temporal = scenePostProcess !== null && scenePostProcess.GetTaaIfAvailable() !== null;\n\n ssao = this.SSAO.Filter(depthMap, normalMap, this.#gpuResourcePool, renderContext, temporal);\n renderContext.SetReadOnlyDepth(false);\n }\n\n return ssao.IsValid() ? ssao : EveSpaceSceneRenderDriver.getEmptySSAO(this.#gpuResourcePool);\n }\n\n /**\n * Carbon's GetNormalMapIfNeeded (cpp:672-685): an R10G10B10A2_UNORM map\n * when ambient occlusion or ray-traced shadows want normals, on any shader\n * model but the lowest, or when forced.\n *\n * Adapted: Carbon also allocates it for a named render-job output; none\n * exists here.\n *\n * @param {{width: number, height: number}} size The render size.\n * @returns {GpuResourceHandle|null} The map, or null.\n */\n _GetNormalMapIfNeeded(size)\n {\n const wanted = (this.aoQuality !== AmbientOcclusionQuality.Disabled || this.shadowQuality === ShadowQuality.SHADOW_RAYTRACED)\n && Tr2Renderer.GetShaderModel() !== TR2SHADERMODEL.TR2SM_3_0_LO;\n\n if (!wanted && !this.forceNormalMap) return null;\n\n return this.#TempTexture(\"normalMap\", size, PixelFormat.PIXEL_FORMAT_R10G10B10A2_UNORM);\n }\n\n /**\n * Carbon's GetVelocityMapIfNeeded (cpp:653-668): an R16G16_FLOAT map while\n * anti-aliasing is on, or when forced.\n *\n * Adapted: Carbon also allocates it for a temporal upscaler and for a named\n * render-job output; neither exists here.\n *\n * @param {{width: number, height: number}} size The render size.\n * @returns {GpuResourceHandle|null} The map, or null.\n */\n _GetVelocityMapIfNeeded(size)\n {\n if (this.antiAliasingQuality === AntiAliasingQuality.Disabled && !this.forceVelocityMap) return null;\n\n return this.#TempTexture(\"velocityMap\", size, PixelFormat.PIXEL_FORMAT_R16G16_FLOAT);\n }\n\n /**\n * Carbon's GetOpaqueColorMapIfNeeded (cpp:702-719): a copy of the scene\n * colour at anti-aliasing Medium and above, or when forced.\n *\n * Adapted: Carbon also allocates it for an upscaler, a named output, and a\n * frame with SSSSS opaque batches; none exists here.\n *\n * @param {{width: number, height: number}} size The render size.\n * @returns {GpuResourceHandle|null} The copy, or null.\n */\n _GetOpaqueColorMapIfNeeded(size)\n {\n if (this.antiAliasingQuality < AntiAliasingQuality.Medium && !this.forceOpaqueBuffer) return null;\n\n return this.#TempTexture(\"opaqueBackBuffer\", size, this.internalPixelFormat);\n }\n\n /** A render-target pool texture of the scene's size. */\n #TempTexture(name, size, format, gpuUsage = Tr2GpuUsage.RENDER_TARGET | Tr2GpuUsage.SHADER_RESOURCE)\n {\n return this.#gpuResourcePool.GetTempTexture(name, {\n type: TextureType.TEX_TYPE_2D,\n width: size.width,\n height: size.height,\n depth: 1,\n mipCount: 1,\n format,\n gpuUsage\n });\n }\n\n /**\n * Binds the pool and prepares the renderer against the frame's context, once\n * per context. Carbon's pool and renderer are device resources, ready before\n * any frame; ours are handed the context here instead.\n */\n #PrepareContext(renderContext)\n {\n if (this.#preparedContext === renderContext) return;\n\n this.#gpuResourcePool.SetRenderContext(renderContext);\n this.#renderer.PrepareDeviceResources(renderContext);\n this.#preparedContext = renderContext;\n }\n\n /**\n * Borrows the scene's colour and depth (cpp:461, 471): the internal pixel\n * format at the destination's size, and a 32-bit float depth.\n */\n #BeginOffscreen(target, renderContext)\n {\n const pool = this.#gpuResourcePool;\n\n this.#PrepareContext(renderContext);\n\n const size = { width: target.GetWidth(), height: target.GetHeight() };\n const texture = (name, format, gpuUsage) => pool.GetTempTexture(name, {\n type: TextureType.TEX_TYPE_2D,\n width: size.width,\n height: size.height,\n depth: 1,\n mipCount: 1,\n format,\n gpuUsage\n });\n\n return {\n size,\n color: texture(\"customBackBuffer\", this.internalPixelFormat, Tr2GpuUsage.RENDER_TARGET | Tr2GpuUsage.SHADER_RESOURCE),\n depth: texture(\"depthBuffer\", PixelFormat.PIXEL_FORMAT_D32_FLOAT, Tr2GpuUsage.DEPTH_STENCIL | Tr2GpuUsage.SHADER_RESOURCE),\n // Borrowed by the main pass when TAA needs them (#RenderMainPass).\n velocity: null,\n opaque: null,\n // Borrowed for the depth pass when AO needs it; the driver's to free.\n normal: null,\n // The shadow pass's ShadowResources; the driver's to free.\n shadows: null\n };\n }\n\n /** Returns the scene's targets when the frame ends without a post process. */\n #EndOffscreen(offscreen)\n {\n for (const handle of [ offscreen.color, offscreen.depth, offscreen.velocity, offscreen.opaque ])\n {\n if (handle) this.#gpuResourcePool.Free(handle);\n }\n }\n\n /**\n * Binds the destination and runs the post process into it (cpp:602-609).\n * Execute owns and frees both handles, as Carbon moves them into it.\n */\n #PostProcess(target, offscreen, renderContext)\n {\n const esm = renderContext.GetEffectStateManager();\n\n esm.SetRenderTarget(0, target);\n esm.SetDepthStencilBuffer(null);\n\n this.postProcess.Execute(target, offscreen.color, offscreen.depth, offscreen.velocity, offscreen.opaque, this.scene, null, this.#gpuResourcePool, renderContext, this.#renderer);\n }\n\n /**\n * Collects one frame's batches.\n *\n * @param {Array<object>} renderables Pre-culled renderables.\n * @param {object} renderContext Recording render context.\n * @returns {object|null} The batch map, or null without a manager.\n */\n #Collect(renderables, renderContext)\n {\n if (!this.#batchManager) return null;\n\n this.#batchManager.Collect(renderables, undefined, renderContext);\n\n return this.#batchManager.GetBatchMap();\n }\n\n /**\n * Submits one frame's collected batches.\n *\n * @param {object|null} map The batch map `#Collect` produced.\n * @param {object} renderContext Recording render context.\n * @returns {boolean} Whether anything was submitted.\n */\n #Submit(map, renderContext)\n {\n if (!map) return false;\n\n let submitted = false;\n\n for (const batchType of EveSpaceSceneRenderDriver.SubmittedBatchTypes)\n {\n const accumulator = map?.GetAccumulator?.(batchType) ?? null;\n\n // An empty accumulator is submitted anyway. Carbon does not test one, and\n // a pass that draws nothing is still a pass; skipping it here would move a\n // frame-planning decision into the driver.\n if (!accumulator) continue;\n\n // Carbon applies the accumulator's standard states first\n // (EveSpaceScene.cpp:1139-1142): a batch whose own mode is RM_ANY would\n // otherwise inherit whatever was last applied - after one frame, the\n // post process's RM_FULLSCREEN.\n renderContext.GetEffectStateManager().ApplyStandardStates(EveSpaceSceneRenderDriver.#standardStatesFor[batchType]);\n submitted = renderContext.RenderBatches(accumulator) || submitted;\n }\n\n return submitted;\n }\n\n /**\n * Carbon's RenderTransparentBatches (EveSpaceScene.cpp:1156-1178): the\n * transparent accumulator under RM_ALPHA, then the additive one under\n * RM_ALPHA_ADDITIVE. Transparent batches were sorted back to front at\n * collection. Carbon's whole colour pass runs with read-only depth\n * (cpp:2710, 2771); ours makes the transparent family read-only, so these\n * test against the scene depth without writing it.\n *\n * Distortion (cpp:2759-2762) follows in Carbon and is not ported.\n *\n * @param {object|null} map The batch map `#Collect` produced.\n * @param {object} renderContext Recording render context.\n * @returns {boolean} Whether anything was submitted.\n */\n _SubmitTransparent(map, renderContext)\n {\n if (!map) return false;\n\n const esm = renderContext.GetEffectStateManager();\n let submitted = false;\n\n renderContext.SetReadOnlyDepth(true);\n try\n {\n for (const [ batchType, renderingMode ] of EveSpaceSceneRenderDriver._transparentFamily)\n {\n const accumulator = map.GetAccumulator(batchType);\n if (!accumulator) continue;\n\n esm.ApplyStandardStates(renderingMode);\n submitted = renderContext.RenderBatches(accumulator) || submitted;\n }\n }\n finally\n {\n renderContext.SetReadOnlyDepth(false);\n }\n\n return submitted;\n }\n\n /** The transparent family and the standard states each is drawn under (cpp:1170-1173). */\n static _transparentFamily = Object.freeze([\n [ TriBatchType.TRIBATCHTYPE_TRANSPARENT, RenderingMode.RM_ALPHA ],\n [ TriBatchType.TRIBATCHTYPE_ADDITIVE, RenderingMode.RM_ALPHA_ADDITIVE ]\n ]);\n\n /**\n * Puts this frame's projection and view onto the render context, and derives\n * the frustum the scene culls against.\n *\n * Carbon's SetCameraToRenderer (cpp:384-391) sets the projection then the view\n * transform. The frustum derivation is the driver step our own scene contract\n * names, because Carbon derives it inside BeginRender.\n *\n * @param {object} renderContext Recording render context.\n * @returns {void}\n */\n #SetCameraToRenderer(renderContext)\n {\n // Carbon (cpp:384-391): the camera's TriProjection and TriView when there\n // is a camera, else this driver's own pair - Validate guarantees one.\n //\n // Carbon calls projection->SetProjection( renderContext ), which also\n // folds the bound viewport into the projection (TriProjection.cpp:71-106);\n // that adjustment is not ported, so the projection's transform is set as\n // it stands.\n const projection = (this.camera ? this.camera.GetProjection() : this.projection).GetTransform();\n const view = (this.camera ? this.camera.GetViewMatrix() : this.view).GetTransform();\n\n renderContext.SetProjection(projection);\n renderContext.SetViewTransform(view);\n\n // Against the viewport the scene target just bound (the camera is set\n // after BeginOffscreen, as Carbon's is after BeginRenderPass).\n // Carbon always has a device viewport; ours is null until something binds\n // a target, as on the disabled path or a frame with no destination.\n const viewport = renderContext.GetViewport();\n\n if (viewport) this.#frustum.DeriveFrustum(view, renderContext.GetViewPosition() ?? null, projection, viewport);\n\n this.scene.StampFrameContext?.({ frustum: this.#frustum });\n }\n\n static AmbientOcclusionQuality = AmbientOcclusionQuality;\n\n static AntiAliasingQuality = AntiAliasingQuality;\n\n static EveVisualizeMethod = EveVisualizeMethod;\n\n static Quality = Quality;\n\n static ShadowQuality = ShadowQuality;\n\n static Tr2VolumerticQuality = Tr2VolumerticQuality;\n\n static PixelFormat = PixelFormat;\n\n}\n\n// Registered as Carbon registers it (trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:53).\nblue.enums.RegisterEnum(\"trinity.EveSpaceSceneRenderDriver.AmbientOcclusionQuality\", EveSpaceSceneRenderDriver.AmbientOcclusionQuality, {\n source: \"trinity/trinity/Eve/EveSpaceSceneRenderDriver.h\", family: \"eve/scene\", line: 39,\n exposedName: \"EveSpaceSceneRenderDriverAmbientOcclusionQuality\", exposure: EnumRegistrationType.ENUM_REG_ENUM_OBJECT_ON_MODULE,\n chooserSource: \"trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:18\",\n chooser: [\n { name: \"Disabled\", value: EveSpaceSceneRenderDriver.AmbientOcclusionQuality.Disabled, description: \"\" },\n { name: \"Low\", value: EveSpaceSceneRenderDriver.AmbientOcclusionQuality.Low, description: \"\" },\n { name: \"Medium\", value: EveSpaceSceneRenderDriver.AmbientOcclusionQuality.Medium, description: \"\" },\n { name: \"High\", value: EveSpaceSceneRenderDriver.AmbientOcclusionQuality.High, description: \"\" }\n ]\n});\n\n// Registered as Carbon registers it (trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:52).\nblue.enums.RegisterEnum(\"trinity.EveSpaceSceneRenderDriver.AntiAliasingQuality\", EveSpaceSceneRenderDriver.AntiAliasingQuality, {\n source: \"trinity/trinity/Eve/EveSpaceSceneRenderDriver.h\", family: \"eve/scene\", line: 32,\n exposedName: \"EveSpaceSceneRenderDriverAntiAliasingQuality\", exposure: EnumRegistrationType.ENUM_REG_ENUM_OBJECT_ON_MODULE,\n chooserSource: \"trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:11\",\n chooser: [\n { name: \"Disabled\", value: EveSpaceSceneRenderDriver.AntiAliasingQuality.Disabled, description: \"\" },\n { name: \"Low\", value: EveSpaceSceneRenderDriver.AntiAliasingQuality.Low, description: \"\" },\n { name: \"Medium\", value: EveSpaceSceneRenderDriver.AntiAliasingQuality.Medium, description: \"\" },\n { name: \"High\", value: EveSpaceSceneRenderDriver.AntiAliasingQuality.High, description: \"\" }\n ]\n});\n\n// Registered as Carbon registers it (trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:54).\nblue.enums.RegisterEnum(\"trinity.ShadowQuality\", EveSpaceSceneRenderDriver.ShadowQuality, {\n source: \"trinity/trinity/Tr2LightManager.h\", family: \"eve/scene\", line: 25,\n exposedName: \"ShadowQuality\", exposure: EnumRegistrationType.ENUM_REG_ENUM_OBJECT_ON_MODULE,\n chooserSource: \"trinity/trinity/Eve/EveSpaceSceneRenderDriver_Blue.cpp:25\",\n chooser: [\n { name: \"Disabled\", value: EveSpaceSceneRenderDriver.ShadowQuality.SHADOW_DISABLED, description: \"\" },\n { name: \"Low\", value: EveSpaceSceneRenderDriver.ShadowQuality.SHADOW_LOW, description: \"\" },\n { name: \"High\", value: EveSpaceSceneRenderDriver.ShadowQuality.SHADOW_HIGH, description: \"\" },\n { name: \"Raytraced\", value: EveSpaceSceneRenderDriver.ShadowQuality.SHADOW_RAYTRACED, description: \"\" }\n ]\n});\n"],"names":["_EveSpaceSceneRenderD","_identity","EveSpaceSceneRenderDriver","CjsModel","e","_init_aoQuality","_init_extra_aoQuality","_init_antiAliasingQuality","_init_extra_antiAliasingQuality","_init_visualizeMethod","_init_extra_visualizeMethod","_init_postProcessingQuality","_init_extra_postProcessingQuality","_init_shadowQuality","_init_extra_shadowQuality","_init_customStencilFormat","_init_extra_customStencilFormat","_init_internalPixelFormat","_init_extra_internalPixelFormat","_init_volumetricQuality","_init_extra_volumetricQuality","_init_scene","_init_extra_scene","_init_name","_init_extra_name","_init_enableUpscaling","_init_extra_enableUpscaling","_init_projection","_init_extra_projection","_init_camera","_init_extra_camera","_init_view","_init_extra_view","_init_clearColor","_init_extra_clearColor","_init_distortionEffect","_init_extra_distortionEffect","_init_enableDistortion","_init_extra_enableDistortion","_init_reflectionCorrectionEnabled","_init_extra_reflectionCorrectionEnabled","_init_forceOpaqueBuffer","_init_extra_forceOpaqueBuffer","_init_forceNormalMap","_init_extra_forceNormalMap","_init_forceVelocityMap","_init_extra_forceVelocityMap","_init_fpsRenderer","_init_extra_fpsRenderer","_init_mainPassRenderingEnabled","_init_extra_mainPassRenderingEnabled","_init_toolsScenes","_init_extra_toolsScenes","_init_depthPassTechnique","_init_extra_depthPassTechnique","_init_postProcess","_init_extra_postProcess","_init_showFPS","_init_extra_showFPS","_init_sceneOverlay","_init_extra_sceneOverlay","_init_background","_init_extra_background","_init_SSAO","_init_extra_SSAO","_init_enableRendering","_init_extra_enableRendering","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","purpose","edit","readwrite","int32","enum","persistOnly","model","string","boolean","objectRef","color","read","persist","list","carbon","method","impl","notImplemented","implemented","aoQuality","antiAliasingQuality","visualizeMethod","postProcessingQuality","shadowQuality","customStencilFormat","internalPixelFormat","volumetricQuality","scene","name","enableUpscaling","projection","camera","view","clearColor","vec4","fromValues","distortionEffect","enableDistortion","reflectionCorrectionEnabled","forceOpaqueBuffer","forceNormalMap","forceVelocityMap","fpsRenderer","mainPassRenderingEnabled","toolsScenes","depthPassTechnique","postProcess","Tr2PostProcessRenderer","showFPS","sceneOverlay","background","SSAO","enableRendering","GetAllTempTextures","args","Error","TriFrustum","Tr2GpuResourcePool","Tr2Renderer","Tr2TextureReference","_opaqueMapReference","_viewLast","mat4","create","_projectionLast","SetBatchManager","batchManager","GetBatchManager","GetFrustum","Validate","_destinationDimensions","_outputs","_realTime","_simTime","Boolean","Execute","destinations","realTime","simTime","_rootTimer","renderContext","target","Array","isArray","updateContext","Update","copy","viewLast","projectionLast","GetWidth","GetHeight","_PropagateSettings","getEmptySSAO","offscreen","handedOff","esm","GetEffectStateManager","SetInvertedDepthTest","PushRenderTarget","undefined","PushDepthStencilBuffer","Get","depth","Clear","SetTexture","Tr2VariableStore","GlobalStore","RegisterVariable","EveSpaceScene","registerWithVariableStore","submitted","SetReadOnlyDepth","RunLensflareOcclusionQueries","EndRender","PopDepthStencilBuffer","PopRenderTarget","normal","Free","handle","Object","values","shadows","IsValid","#RegisterSSAOMap","gpuResourcePool","GetPersistentTexture","TextureType","TEX_TYPE_2D","width","height","mipCount","format","PixelFormat","PIXEL_FORMAT_R8G8B8A8_UNORM","gpuUsage","Tr2GpuUsage","SHADER_RESOURCE","initialData","Tr2SubresourceData","Uint8Array","#BeginRenderPass","colorAttachments","depthAttachment","index","colorAttachment","SetRenderTarget","maxRenderTargets","SetDepthStencilBuffer","SetFullScreenViewport","#RenderMainPass","dataTextureMgr","SetVariables","Jitter","SetProjection","jitteredProjection","BlendLightingOverrides","UpdateFogSettings","dynamicLightingEnabled","Tr2LightManager","getOrCreateInstance","COMPUTE_LIGHT_LISTS_EFFECT_PATH","SetVariableStore","deleteInstance","UpdateVisibility","GetInverseViewTransform","map","GetRenderables","UpdateVariableStore","lightManager","getInstance","GatherLights","velocity","_GetVelocityMapIfNeeded","size","lensflare","lensflares","PrepareRender","PopulatePerFramePSData","PopulatePerFrameVSData","ApplyPerFrameData","_GetNormalMapIfNeeded","RenderDepthPass","display","RenderShadows","_RenderSSAO","UpdateLists","opaque","_GetOpaqueColorMapIfNeeded","RenderPassHint","Tr2ColorAttachment","Tr2LoadAction","LOAD","Tr2StoreAction","STORE","CLEAR","Tr2DepthAttachment","DONT_CARE","ApplyStandardStates","RenderingMode","RM_FULLSCREEN","DrawTexture","_SubmitTransparent","postprocess","AntiAliasingQuality","Disabled","SetTaa","GetTaaIfAvailable","Tr2PPTaaEffect","quality","ShadowQuality","SHADOW_DISABLED","SHADOW_RAYTRACED","cascadedShadowMap","Tr2ShadowMap","shadowQualitySetting","AmbientOcclusionQuality","Enable","Low","SetQuality","SSAOQuality","LOW","Medium","MEDIUM","HIGHEST","depthMap","normalMap","ssao","GpuResourceHandle","scenePostProcess","temporal","Filter","wanted","GetShaderModel","TR2SHADERMODEL","TR2SM_3_0_LO","PIXEL_FORMAT_R10G10B10A2_UNORM","PIXEL_FORMAT_R16G16_FLOAT","#TempTexture","RENDER_TARGET","GetTempTexture","#PrepareContext","SetRenderContext","PrepareDeviceResources","#BeginOffscreen","pool","texture","PIXEL_FORMAT_D32_FLOAT","DEPTH_STENCIL","#EndOffscreen","#PostProcess","#Collect","renderables","Collect","GetBatchMap","#Submit","batchType","SubmittedBatchTypes","accumulator","GetAccumulator","RenderBatches","renderingMode","_transparentFamily","#SetCameraToRenderer","GetProjection","GetTransform","GetViewMatrix","SetViewTransform","viewport","GetViewport","DeriveFrustum","GetViewPosition","StampFrameContext","frustum","freeze","TriBatchType","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","RM_OPAQUE","RM_DECAL","shadowMap","cascadedShadowDepth","pointLightShadowMap","pointLightShadowDepth","TRIBATCHTYPE_TRANSPARENT","RM_ALPHA","TRIBATCHTYPE_ADDITIVE","RM_ALPHA_ADDITIVE","EveVisualizeMethod","Quality","Tr2VolumerticQuality","constructor","blue","enums","RegisterEnum","source","line","exposedName","exposure","EnumRegistrationType","ENUM_REG_ENUM_OBJECT_ON_MODULE","chooserSource","chooser","value","description","High","SHADOW_LOW","SHADOW_HIGH"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { EveCloudEditableVolume } from './child/EveCloudEditableVolume.js';
|
|
2
2
|
export { MorphTargetAnimationFilter, Origin, PropagationType, RenderType, RotationalConstraints, Status, TriggerType, lineSetType } from './child/enums.js';
|
|
3
|
-
export { EveOccluder } from './effect/EveOccluder.js';
|
|
4
3
|
export { EveStarfield } from './effect/EveStarfield.js';
|
|
5
4
|
export { AmbientOcclusionQuality, AntiAliasingQuality, BackgroundRenderingReason, BoundingSphereQuery, EveVisualizeMethod, ParameterType, ReflectionQuality, ReflectionSetting, VisualizerType } from './enums.js';
|
|
6
5
|
export { PerLightShadowSetting } from './lights/enums.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { EveCloudEditableVolume } from './eve/child/EveCloudEditableVolume.js';
|
|
2
2
|
export { MorphTargetAnimationFilter, Origin, PropagationType, RenderType, RotationalConstraints, Status, TriggerType, lineSetType } from './eve/child/enums.js';
|
|
3
|
-
export { EveOccluder } from './eve/effect/EveOccluder.js';
|
|
4
3
|
export { EveStarfield } from './eve/effect/EveStarfield.js';
|
|
5
4
|
export { AmbientOcclusionQuality, AntiAliasingQuality, BackgroundRenderingReason, BoundingSphereQuery, EveVisualizeMethod, ParameterType, ReflectionQuality, ReflectionSetting, VisualizerType } from './eve/enums.js';
|
|
6
5
|
export { PerLightShadowSetting } from './eve/lights/enums.js';
|
|
@@ -36,7 +35,6 @@ export { Tr2TexturedSpriteObject } from './sprite2d/Tr2TexturedSpriteObject.js';
|
|
|
36
35
|
export { CornerType, TextureRepeat, Tr2Sprite2dRenderEffect, Tr2Sprite2dTextureSettings, Tr2SpriteObjectBlendMode, Tr2SpriteObjectEffect, Tr2SpriteObjectPickState, Tr2SpriteTarget, Tr2StretchScaleBehavior } from './sprite2d/enums.js';
|
|
37
36
|
export { Tr2AtlasTexture } from './trinityCore/Tr2AtlasTexture.js';
|
|
38
37
|
export { Tr2GpuProfiler } from './trinityCore/Tr2GpuProfiler.js';
|
|
39
|
-
export { Tr2GpuStructuredBuffer } from './trinityCore/Tr2GpuStructuredBuffer.js';
|
|
40
38
|
export { Tr2GrannyPrimitiveSet } from './trinityCore/Tr2GrannyPrimitiveSet.js';
|
|
41
39
|
export { Tr2HostBitmap } from './trinityCore/Tr2HostBitmap.js';
|
|
42
40
|
export { Tr2ImpostorManager } from './trinityCore/Tr2ImpostorManager.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { Tr2AtlasTexture } from './Tr2AtlasTexture.js';
|
|
2
2
|
export { Tr2GpuProfiler } from './Tr2GpuProfiler.js';
|
|
3
|
-
export { Tr2GpuStructuredBuffer } from './Tr2GpuStructuredBuffer.js';
|
|
4
3
|
export { Tr2GrannyPrimitiveSet } from './Tr2GrannyPrimitiveSet.js';
|
|
5
4
|
export { Tr2HostBitmap } from './Tr2HostBitmap.js';
|
|
6
5
|
export { Tr2ImpostorManager } from './Tr2ImpostorManager.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|
package/dist/trinity/index.js
CHANGED
|
@@ -286,6 +286,7 @@ export { IEveDistributionSpawner } from './eve/distribution/spawners/IEveDistrib
|
|
|
286
286
|
export { EveMultiEffect } from './eve/effect/multiEffect/EveMultiEffect.js';
|
|
287
287
|
export { EveMultiEffectParameter } from './eve/effect/multiEffect/EveMultiEffectParameter.js';
|
|
288
288
|
export { EveLensflare } from './eve/effect/lensflare/EveLensflare.js';
|
|
289
|
+
export { EveOccluder } from './eve/effect/lensflare/EveOccluder.js';
|
|
289
290
|
export { Tr2OcclusionBuffer } from './eve/effect/lensflare/Tr2OcclusionBuffer.js';
|
|
290
291
|
export { EveBoxVolume } from './eve/volume/EveBoxVolume.js';
|
|
291
292
|
export { EveEllipsoidVolume } from './eve/volume/EveEllipsoidVolume.js';
|
|
@@ -588,6 +589,7 @@ export { Tr2SwapChain } from './core/device/Tr2SwapChain.js';
|
|
|
588
589
|
export { Tr2DepthStencil } from './core/device/Tr2DepthStencil.js';
|
|
589
590
|
export { Tr2RenderTarget } from './core/device/Tr2RenderTarget.js';
|
|
590
591
|
export { Tr2GpuBuffer } from './core/device/Tr2GpuBuffer.js';
|
|
592
|
+
export { Tr2GpuStructuredBuffer } from './core/device/Tr2GpuStructuredBuffer.js';
|
|
591
593
|
export { Tr2RingBufferOffsets } from './core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js';
|
|
592
594
|
export { Tr2RingBuffer } from './core/device/Tr2RingBuffer/Tr2RingBuffer.js';
|
|
593
595
|
export { Tr2RuntimeGpuBuffer } from './core/device/Tr2RuntimeGpuBuffer.js';
|
|
@@ -662,7 +664,6 @@ export { Tr2PresentParameters } from './ui/Tr2PresentParameters.js';
|
|
|
662
664
|
export { Tr2ProjectBoundingBoxBracket } from './ui/Tr2ProjectBoundingBoxBracket.js';
|
|
663
665
|
export { EveCloudEditableVolume } from './generated/eve/child/EveCloudEditableVolume.js';
|
|
664
666
|
export { MorphTargetAnimationFilter, Origin, PropagationType, RenderType, RotationalConstraints, Status, TriggerType, lineSetType } from './generated/eve/child/enums.js';
|
|
665
|
-
export { EveOccluder } from './generated/eve/effect/EveOccluder.js';
|
|
666
667
|
export { EveStarfield } from './generated/eve/effect/EveStarfield.js';
|
|
667
668
|
export { AmbientOcclusionQuality, AntiAliasingQuality, BackgroundRenderingReason, BoundingSphereQuery, EveVisualizeMethod, ParameterType, ReflectionQuality, ReflectionSetting, VisualizerType } from './generated/eve/enums.js';
|
|
668
669
|
export { PerLightShadowSetting } from './generated/eve/lights/enums.js';
|
|
@@ -696,7 +697,6 @@ export { Tr2TexturedSpriteObject } from './generated/sprite2d/Tr2TexturedSpriteO
|
|
|
696
697
|
export { CornerType, TextureRepeat, Tr2Sprite2dRenderEffect, Tr2Sprite2dTextureSettings, Tr2SpriteObjectBlendMode, Tr2SpriteObjectEffect, Tr2SpriteObjectPickState, Tr2SpriteTarget, Tr2StretchScaleBehavior } from './generated/sprite2d/enums.js';
|
|
697
698
|
export { Tr2AtlasTexture } from './generated/trinityCore/Tr2AtlasTexture.js';
|
|
698
699
|
export { Tr2GpuProfiler } from './generated/trinityCore/Tr2GpuProfiler.js';
|
|
699
|
-
export { Tr2GpuStructuredBuffer } from './generated/trinityCore/Tr2GpuStructuredBuffer.js';
|
|
700
700
|
export { Tr2GrannyPrimitiveSet } from './generated/trinityCore/Tr2GrannyPrimitiveSet.js';
|
|
701
701
|
export { Tr2HostBitmap } from './generated/trinityCore/Tr2HostBitmap.js';
|
|
702
702
|
export { Tr2ImpostorManager } from './generated/trinityCore/Tr2ImpostorManager.js';
|
|
@@ -20,6 +20,7 @@ import { FillAndSetConstants } from '../core/Tr2RenderUtils.js';
|
|
|
20
20
|
import { vec2 } from '#math/vec2';
|
|
21
21
|
import { vec3 } from '#math/vec3';
|
|
22
22
|
import { vec4 } from '#math/vec4';
|
|
23
|
+
import { float32FromBits } from '#utils/bytes';
|
|
23
24
|
import './effect/Tr2PPEffect.js';
|
|
24
25
|
|
|
25
26
|
let _initProto, _initClass, _init_bloomDebugMode, _init_extra_bloomDebugMode, _init_quality, _init_extra_quality, _init_tonemappingEffect, _init_extra_tonemappingEffect, _init_bloomHighPassFilter, _init_extra_bloomHighPassFilter, _init_dynamicExposureToTextureShader, _init_extra_dynamicExposureToTextureShader, _init_dynamicExposureCreateHistogramShader, _init_extra_dynamicExposureCreateHistogramShader, _init_dynamicExposureMergeHistogramShader, _init_extra_dynamicExposureMergeHistogramShader, _init_dynamicExposureMeasureExposureShader, _init_extra_dynamicExposureMeasureExposureShader, _init_fogColorEffect, _init_extra_fogColorEffect, _init_fogCompositeEffect, _init_extra_fogCompositeEffect, _init_depthOfFieldBokehBlurShader, _init_extra_depthOfFieldBokehBlurShader, _init_depthOfFieldBokehFillShader, _init_extra_depthOfFieldBokehFillShader, _init_depthOfFieldCoCShader, _init_extra_depthOfFieldCoCShader, _init_godrayEffect, _init_extra_godrayEffect, _init_signalLossEffect, _init_extra_signalLossEffect, _init_taaEffect, _init_extra_taaEffect, _init_bloomDebugShader, _init_extra_bloomDebugShader, _init_useNewBloom, _init_extra_useNewBloom;
|
|
@@ -970,7 +971,9 @@ new class extends _identity {
|
|
|
970
971
|
each.SetOption("DYNAMIC_EXPOSURE_TOGGLE", "DYNAMIC_EXPOSURE_DISABLED");
|
|
971
972
|
}
|
|
972
973
|
}
|
|
973
|
-
|
|
974
|
+
|
|
975
|
+
// frame_count is a uint32_t, and that overload stores its bits (Tr2Effect.cpp:2103-2120).
|
|
976
|
+
effect.SetParameter("FrameIndex", float32FromBits(frameCount));
|
|
974
977
|
effect.SetParameter("EarlyOutThreshold", taa.earlyOutThreshold);
|
|
975
978
|
effect.SetOption("QUALITY", _Tr2PostProcessRender.getTaaQualityShaderOptionValue(taa.quality));
|
|
976
979
|
effect.SetOption("DEBUG", _Tr2PostProcessRender.getTaaDebugShaderOptionValue(taa.debug));
|