@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":"Tr2PostProcessRenderer.js","sources":["../../../../src/trinity/postProcess/Tr2PostProcessRenderer.js"],"sourcesContent":["// Carbon source: trinity/trinity/PostProcess/Tr2PostProcessRenderer.h\n// Carbon source: trinity/trinity/PostProcess/Tr2PostProcessRenderer.cpp\n// Carbon source: trinity/trinity/PostProcess/Tr2PostProcessRenderer_Blue.cpp\n//\n// The post-process chain Carbon runs between the scene and the back buffer.\n// Carbon's anonymous-namespace helpers (DrawInto, TEMP_PARAM,\n// GetUavCompatibleFormat, the Tonemapping:: appliers) are statics here.\n//\n// PASSES NOT PORTED YET throw by name from their own method, and each runs\n// only when the scene's Tr2PostProcess2 enables that effect, so a scene\n// without them runs the chain end to end: copy, sharpening, tonemapping.\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { BloomDebugMode, Quality } from \"../generated/postProcess/enums.js\";\nimport { blue, EnumRegistrationType } from \"#blue\";\nimport { num } from \"#math/num\";\nimport { Tr2ColorAttachment, Tr2BufferDescriptionAL, Tr2SubresourceData } from \"#trinityal\";\nimport {\n INVALID_UPSCALING_CONTEXT_ID,\n PixelFormat,\n ShaderType,\n TextureType,\n Tr2CpuUsage,\n Tr2GpuUsage,\n Tr2LoadAction,\n Tr2StoreAction,\n UpscalingTechnique\n} from \"#consts/render-context\";\nimport { RenderingMode } from \"#consts/graphics\";\nimport { PostProcessEffectPaths } from \"#consts/effectPaths\";\nimport { Tr2Effect } from \"../shader/Tr2Effect.js\";\nimport { Tr2Renderer } from \"../core/Tr2Renderer.js\";\nimport { EveSpaceScene } from \"../eve/scene/EveSpaceScene.js\";\nimport { Tr2PPTonemappingEffect } from \"./effect/Tr2PPTonemappingEffect.js\";\nimport { Tr2PPTaaEffect } from \"./effect/Tr2PPTaaEffect.js\";\nimport { BlurContext } from \"./BlurContext.js\";\nimport { GaussianData } from \"./GaussianData.js\";\nimport { Tr2PPBloomEffect } from \"./effect/Tr2PPBloomEffect.js\";\nimport { FillAndSetConstants } from \"../core/Tr2RenderUtils.js\";\nimport { vec2 } from \"#math/vec2\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport \"./effect/Tr2PPEffect.js\";\n\n/** `RENDER_TARGET` in Carbon's anonymous namespace (cpp:150). */\nconst RENDER_TARGET = Tr2GpuUsage.RENDER_TARGET | Tr2GpuUsage.SHADER_RESOURCE;\n\n/** `MAX_LUTS` (Tr2PostProcessRenderer.h). */\nconst MAX_LUTS = 4;\n\n/** Carbon's histogram tiling for dynamic exposure (cpp:33-35). */\nconst HISTOGRAM_TILE_SIZE_X = 16;\nconst HISTOGRAM_TILE_SIZE_Y = 16;\nconst NUM_TILES_PER_THREAD_GROUP = 256;\n\n/** Carbon's thread-group edge for the CAS dispatch (cpp:865). */\nconst CAS_THREAD_GROUP_WORK_REGION_DIM = 16;\n\n/** Builds one effect pointed at its path, with options set inside Start/EndUpdate. */\nfunction effectAt(path, options = null)\n{\n const effect = new Tr2Effect();\n\n if (!options)\n {\n effect.SetEffectPathName(path);\n return effect;\n }\n\n effect.StartUpdate();\n effect.SetEffectPathName(path);\n for (const [ option, value ] of Object.entries(options)) effect.SetOption(option, value);\n effect.EndUpdate();\n return effect;\n}\n\n\n/**\n * Carbon's post-process renderer: the chain from the scene's colour buffer to\n * the back buffer, driven by the scene's combined Tr2PostProcess2.\n */\n@type.define({ className: \"Tr2PostProcessRenderer\", family: \"postProcess\" })\nexport class Tr2PostProcessRenderer extends CjsModel\n{\n @edit.notify\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.Tr2PostProcessRenderer.BloomDebugMode\")\n bloomDebugMode = BloomDebugMode.BLOOM_DEBUG_NONE;\n\n @edit.notify\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.PostProcess.Quality\")\n quality = Quality.HIGH;\n\n // THE EFFECTS CARBON'S CONSTRUCTOR CREATES (cpp:537-635), in its order.\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n tonemappingEffect = effectAt(PostProcessEffectPaths.ToneMapping);\n\n _reactiveMaskEffect = effectAt(PostProcessEffectPaths.ReactiveMask);\n\n _transparencyMaskEffect = effectAt(PostProcessEffectPaths.TransparencyMask);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n bloomHighPassFilter = effectAt(PostProcessEffectPaths.HighPassFilter);\n\n _downSamplerLuminancePreserve = effectAt(PostProcessEffectPaths.Downsample, { LUNINANCE_PRESERVE: \"LUNINANCE_PRESERVE_ON\" });\n\n _downSampler = effectAt(PostProcessEffectPaths.Downsample, { LUNINANCE_PRESERVE: \"LUNINANCE_PRESERVE_OFF\" });\n\n _upsamplerHorizontal = effectAt(PostProcessEffectPaths.Upsample);\n\n _upsamplerVertical = effectAt(PostProcessEffectPaths.Upsample, { UPSAMPLING_STEP: \"UPSAMPLING_STEP_SECOND\" });\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n dynamicExposureToTextureShader = effectAt(PostProcessEffectPaths.ExposureToTexture);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n dynamicExposureCreateHistogramShader = effectAt(PostProcessEffectPaths.CreateHistograms);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n dynamicExposureMergeHistogramShader = effectAt(PostProcessEffectPaths.MergeHistograms);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n dynamicExposureMeasureExposureShader = effectAt(PostProcessEffectPaths.MeasureExposure);\n\n _fidelityFxCasShader = effectAt(PostProcessEffectPaths.CAS);\n\n _downsampleDepthEffect = effectAt(PostProcessEffectPaths.DownsampleDepth);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n fogColorEffect = effectAt(PostProcessEffectPaths.EnvironmentFogColor);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n fogCompositeEffect = effectAt(PostProcessEffectPaths.EnvironmentFogComposit);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n depthOfFieldBokehBlurShader = effectAt(PostProcessEffectPaths.Bokeh, { BOKEH_PIXEL_METHOD: \"BOKEH_PIXEL_AVERAGE\" });\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n depthOfFieldBokehFillShader = effectAt(PostProcessEffectPaths.Bokeh, { BOKEH_PIXEL_METHOD: \"BOKEH_PIXEL_MAX\" });\n\n _depthOfFieldBokehTAAShader = effectAt(PostProcessEffectPaths.BokehTAA);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n depthOfFieldCoCShader = effectAt(PostProcessEffectPaths.CircleOfConfusion);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n godrayEffect = effectAt(PostProcessEffectPaths.Godrays);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n signalLossEffect = effectAt(PostProcessEffectPaths.SignalLoss);\n\n _grainShader = Tr2PostProcessRenderer._createGrainShader();\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n taaEffect = effectAt(PostProcessEffectPaths.TAA);\n\n _taaCopyEffect = effectAt(PostProcessEffectPaths.TAACopy);\n\n /** Created on first use by RenderBloomDebug (cpp:1115-1144). */\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n bloomDebugShader = null;\n\n /** Created while the exposure debug is on (cpp:1256-1260), dropped when off. */\n _dynamicExposureDebugShader = null;\n\n /** m_useNewBloom, from g_newBloom, which defaults true (cpp:23). */\n @edit.notify\n @edit.readwrite\n @type.boolean\n useNewBloom = true;\n\n /** m_blurEffects: the horizontal/vertical Blur.fx pair per BlurContext hash (cpp:897-931). */\n _blurEffects = new Map();\n\n /** m_bloomConstantBuffer (h:166): created empty on first use, sized by FillAndSetConstants. */\n _bloomConstantBuffer = null;\n\n _taaFrameCounter = 0;\n\n _bokehFrameCounter = 0;\n\n /** Returns the active Carbon post-process quality. */\n @carbon.method\n @impl.implemented\n GetPostProcessingQuality()\n {\n return this.quality;\n }\n\n /** Selects the active Carbon post-process quality. */\n @carbon.method\n @impl.implemented\n SetPostProcessingQuality(quality)\n {\n this.quality = quality;\n }\n\n /**\n * Runs the post-process chain from the scene's colour buffer into\n * `destination` (cpp:648-849). Every step Carbon gates on an effect of the\n * scene's post process is gated the same way.\n *\n * Adapted: Carbon reaches the blitter through the static Tr2Renderer; ours\n * is an instance, so the renderer is passed in, as for Tr2Denoiser. Carbon's\n * pool handles release themselves when overwritten or out of scope; here\n * each is freed explicitly at the same point. The upscaling query goes to\n * the render context's AL, which Carbon's Tr2RenderContext inherits.\n *\n * @param {object} destination The back buffer or target texture.\n * @param {GpuResourceHandle} sourceBuffer The scene colour, owned from here on.\n * @param {GpuResourceHandle|null} depthMap The scene depth.\n * @param {GpuResourceHandle|null} velocity The velocity map, if rendered.\n * @param {GpuResourceHandle|null} opaqueColor The opaque colour copy, if rendered.\n * @param {EveSpaceScene} scene The scene whose post process drives the chain.\n * @param {object|null} upscalingContext The upscaling context, if any.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n Execute(destination, sourceBuffer, depthMap, velocity, opaqueColor, scene, upscalingContext, gpuResourcePool, renderContext, renderer)\n {\n if (!sourceBuffer?.IsValid())\n {\n console.error(\"Tr2PostProcessRenderer::Execute: Source buffer is invalid!\");\n return;\n }\n\n const release = handle => Tr2PostProcessRenderer._release(gpuResourcePool, handle);\n const source = sourceBuffer.Get();\n const renderSize = { width: source.GetWidth(), height: source.GetHeight() };\n let displaySize = renderSize;\n\n const postProcess = scene.GetPostProcess();\n const esm = renderContext.GetEffectStateManager();\n const al = renderContext.GetRenderContextAL();\n const destinationFormat = Tr2PostProcessRenderer.destinationFormatOf(destination, al);\n\n esm.ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n esm.PushRenderTarget();\n esm.PushDepthStencilBuffer(null);\n\n const upscalingInfo = al.GetUpscalingInfo(upscalingContext ? upscalingContext.GetID() : INVALID_UPSCALING_CONTEXT_ID);\n const upscalingEnabled = upscalingInfo.technique !== UpscalingTechnique.NONE;\n const sharpeningRequired = !upscalingInfo.hasSharpening;\n\n if (upscalingEnabled) displaySize = { width: upscalingInfo.displayWidth, height: upscalingInfo.displayHeight };\n\n let output = this._Temp(gpuResourcePool, \"Final Result\", displaySize, destinationFormat, RENDER_TARGET);\n\n // Always copy (cpp:691-693).\n let nonMsaaSource = this._Temp(gpuResourcePool, \"Pre-upscaling Composite\", renderSize, source.GetFormat(), RENDER_TARGET);\n source.Resolve(nonMsaaSource.Get(), renderContext);\n\n let dynamicExposure = null;\n let histogramBuffer = null;\n let upscaledSource = null;\n let bloomTexture = null;\n let exposure = null;\n\n try\n {\n if (postProcess)\n {\n const genericEffect = postProcess.GetGenericEffectIfAvailable(this.quality);\n if (genericEffect) this.RenderGenericEffect(nonMsaaSource.Get(), source, renderContext, genericEffect, renderer);\n\n const fog = postProcess.GetFogIfAvailable(this.quality);\n if (fog) this.RenderFog(nonMsaaSource.Get(), source, gpuResourcePool, renderContext, fog, renderer);\n }\n sourceBuffer = release(sourceBuffer);\n\n if (postProcess)\n {\n const godrays = postProcess.GetGodRaysIfAvailable(this.quality);\n if (godrays) this.RenderGodRays(nonMsaaSource.Get(), depthMap?.Get() ?? null, gpuResourcePool, renderContext, godrays, renderer);\n\n const dof = postProcess.GetDepthOfFieldIfAvailable(this.quality);\n if (dof)\n {\n const temporal = upscalingInfo.temporal || postProcess.GetTaaIfAvailable(this.quality) !== null;\n this.RenderDepthOfField(nonMsaaSource.Get(), gpuResourcePool, renderContext, dof, temporal, upscalingInfo.upscalingAmount, renderer);\n }\n\n dynamicExposure = postProcess.GetDynamicExposureIfAvailable(this.quality);\n const taa = postProcess.GetTaaIfAvailable(this.quality);\n\n if (taa && !upscalingInfo.temporal)\n {\n this.RenderTaa(nonMsaaSource.Get(), velocity?.Get() ?? null, opaqueColor?.Get() ?? null, gpuResourcePool, renderContext, taa, dynamicExposure, renderer);\n if (!upscalingContext)\n {\n velocity = release(velocity);\n opaqueColor = release(opaqueColor);\n }\n }\n else\n {\n this._taaFrameCounter = 0;\n }\n\n if (dynamicExposure)\n {\n histogramBuffer = this.RenderDynamicExposure(nonMsaaSource.Get(), gpuResourcePool, renderContext, dynamicExposure);\n if (!dynamicExposure.debug) histogramBuffer = release(histogramBuffer);\n }\n }\n\n if (upscalingContext && upscalingInfo.temporal)\n {\n upscalingContext.SetHudLessTexture(output.Get());\n upscaledSource = this.RenderUpscaling(nonMsaaSource.Get(), depthMap?.Get() ?? null, velocity?.Get() ?? null, opaqueColor?.Get() ?? null, scene.GetReprojectionMatrix(), gpuResourcePool, renderContext, upscalingContext, dynamicExposure);\n nonMsaaSource = release(nonMsaaSource);\n depthMap = release(depthMap);\n velocity = release(velocity);\n opaqueColor = release(opaqueColor);\n scene.ApplyUpscalingToPerFrameData(displaySize.width, displaySize.height, renderContext);\n }\n else\n {\n upscaledSource = nonMsaaSource;\n nonMsaaSource = null;\n if (!upscalingContext)\n {\n depthMap = release(depthMap);\n velocity = release(velocity);\n opaqueColor = release(opaqueColor);\n }\n }\n\n // After dynamic exposure, since bloom can be exposure dependent (cpp:760).\n bloomTexture = this.GetBlackTexture(gpuResourcePool);\n if (postProcess)\n {\n const bloom = postProcess.GetBloomIfAvailable(this.quality);\n if (bloom)\n {\n release(bloomTexture);\n bloomTexture = this.RenderBloom(upscaledSource, gpuResourcePool, renderContext, bloom, dynamicExposure, renderer);\n }\n }\n\n const sharpened = this.RenderSharpening(sharpeningRequired, upscaledSource, gpuResourcePool, renderContext);\n if (sharpened !== upscaledSource)\n {\n release(upscaledSource);\n upscaledSource = sharpened;\n }\n\n // TEMP_PARAM (cpp:771-774): set now, reset to empty when Execute ends.\n exposure = this.GetExposureBuffer(gpuResourcePool);\n this.tonemappingEffect.SetParameter(\"BlitCurrent\", bloomTexture.Get());\n this.tonemappingEffect.SetParameter(\"BlitOriginal\", upscaledSource.Get());\n this.tonemappingEffect.SetParameter(\"Exposure\", exposure.Get());\n this.tonemappingEffect.SetParameter(\"Histogram\", histogramBuffer?.Get() ?? null);\n\n const filmGrain = postProcess ? postProcess.GetFilmGrainIfAvailable(this.quality) : null;\n\n if (!upscalingInfo.temporal || filmGrain)\n {\n if (upscalingContext && !upscalingInfo.temporal)\n {\n const tonemappedOutput = this._Temp(gpuResourcePool, \"Tonemapping Result\", renderSize, destinationFormat, RENDER_TARGET);\n\n this.RenderTonemapping(tonemappedOutput.Get(), postProcess, renderContext, renderer);\n\n release(output);\n output = this.RenderUpscaling(tonemappedOutput.Get(), depthMap?.Get() ?? null, velocity?.Get() ?? null, opaqueColor?.Get() ?? null, scene.GetReprojectionMatrix(), gpuResourcePool, renderContext, upscalingContext, dynamicExposure);\n release(tonemappedOutput);\n depthMap = release(depthMap);\n velocity = release(velocity);\n opaqueColor = release(opaqueColor);\n scene.ApplyUpscalingToPerFrameData(displaySize.width, displaySize.height, renderContext);\n }\n else\n {\n this.RenderTonemapping(output.Get(), postProcess, renderContext, renderer);\n }\n\n esm.SetRenderTarget(0, destination);\n if (filmGrain)\n {\n this.RenderFilmGrain(output.Get(), renderContext, filmGrain, renderer);\n }\n else\n {\n renderer.DrawTexture(renderContext, output.Get());\n }\n }\n else\n {\n this.RenderTonemapping(output.Get(), postProcess, renderContext, renderer);\n renderer.DrawTexture(renderContext, output.Get());\n }\n\n if (postProcess)\n {\n const signalLoss = postProcess.GetSignalLossIfAvailable(this.quality);\n if (signalLoss) this.RenderSignalLoss(output.Get(), renderContext, signalLoss, renderer);\n }\n\n this.RenderDynamicExposureDebug(gpuResourcePool, renderContext, dynamicExposure, histogramBuffer?.Get() ?? null);\n }\n finally\n {\n this.tonemappingEffect.SetParameter(\"BlitCurrent\", null);\n this.tonemappingEffect.SetParameter(\"BlitOriginal\", null);\n this.tonemappingEffect.SetParameter(\"Exposure\", null);\n this.tonemappingEffect.SetParameter(\"Histogram\", null);\n\n for (const handle of [ output, nonMsaaSource, upscaledSource, bloomTexture, exposure, histogramBuffer, sourceBuffer, depthMap, velocity, opaqueColor ])\n {\n release(handle);\n }\n\n esm.PopDepthStencilBuffer();\n esm.PopRenderTarget();\n }\n }\n\n /**\n * Carbon SetupExposureConversion (cpp:851-857).\n *\n * @param {boolean} enable Whether exposure conversion runs.\n * @param {number} middleValue The exposure middle value.\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n SetupExposureConversion(enable, middleValue)\n {\n if (enable) this.dynamicExposureToTextureShader.SetParameter(\"ExposureMiddleValue\", middleValue);\n }\n\n /**\n * AMD CAS sharpening (cpp:859-891): a compute pass into a UAV-compatible copy,\n * or the input unchanged when the upscaler already sharpens.\n *\n * @param {boolean} enable Whether to sharpen.\n * @param {GpuResourceHandle} input The texture to sharpen.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @returns {GpuResourceHandle} The sharpened texture, or `input`.\n */\n @carbon.method\n @impl.implemented\n RenderSharpening(enable, input, gpuResourcePool, renderContext)\n {\n if (!enable) return input;\n\n const texture = input.Get();\n const format = Tr2PostProcessRenderer.getUavCompatibleFormat(texture.GetFormat());\n const output = this._Temp(\n gpuResourcePool,\n \"Sharpening Output\",\n { width: texture.GetWidth(), height: texture.GetHeight() },\n format,\n RENDER_TARGET | Tr2GpuUsage.UNORDERED_ACCESS\n );\n const renderWidth = output.Get().GetWidth();\n const renderHeight = output.Get().GetHeight();\n const casIntensity = 0;\n const { const0, const1 } = Tr2PostProcessRenderer.casSetup(casIntensity, renderWidth, renderHeight, renderWidth, renderHeight);\n\n this._fidelityFxCasShader.SetParameter(\"const0\", const0);\n this._fidelityFxCasShader.SetParameter(\"const1\", const1);\n this._fidelityFxCasShader.SetParameter(\"InputTexture\", texture);\n this._fidelityFxCasShader.SetParameter(\"OutputTexture\", output.Get());\n\n try\n {\n const dispatchX = Math.floor((renderWidth + (CAS_THREAD_GROUP_WORK_REGION_DIM - 1)) / CAS_THREAD_GROUP_WORK_REGION_DIM);\n const dispatchY = Math.floor((renderHeight + (CAS_THREAD_GROUP_WORK_REGION_DIM - 1)) / CAS_THREAD_GROUP_WORK_REGION_DIM);\n\n Tr2Renderer.runComputeShader(this._fidelityFxCasShader, dispatchX, dispatchY, 1, renderContext);\n }\n finally\n {\n this._fidelityFxCasShader.SetParameter(\"InputTexture\", null);\n this._fidelityFxCasShader.SetParameter(\"OutputTexture\", null);\n }\n\n return output;\n }\n\n /**\n * Tonemapping (cpp:1531-1583): stamps every effect of the post process onto\n * the tonemapping shader, picks the method, and draws it into `dest`.\n *\n * @param {object} dest The texture to render into.\n * @param {Tr2PostProcess2|null} postprocess The active post process.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderTonemapping(dest, postprocess, renderContext, renderer)\n {\n const effect = this.tonemappingEffect;\n\n effect.SetParameter(\"OutputGamma\", EveSpaceScene.eveSpaceSceneGammaBrightness);\n\n Tr2PostProcessRenderer.applyColorCorrection(postprocess ? postprocess.GetColorCorrectionIfAvailable(this.quality) : null, effect);\n Tr2PostProcessRenderer.applyBloom(postprocess ? postprocess.GetBloomIfAvailable(this.quality) : null, effect, this.useNewBloom, this.bloomDebugMode);\n Tr2PostProcessRenderer.applyDynamicExposure(postprocess ? postprocess.GetDynamicExposureIfAvailable(this.quality) : null, effect, postprocess ? postprocess.exposureAdjustment : 0);\n Tr2PostProcessRenderer.applyVignette(postprocess ? postprocess.GetVignetteIfAvailable(this.quality) : null, effect);\n Tr2PostProcessRenderer.applyDesaturate(postprocess ? postprocess.GetDesaturateIfAvailable(this.quality) : null, effect);\n Tr2PostProcessRenderer.applyFade(postprocess ? postprocess.GetFadeIfAvailable(this.quality) : null, effect);\n\n const luts = [];\n if (postprocess) postprocess.GetAvilableSortedLuts(luts);\n Tr2PostProcessRenderer.applyLuts(luts, effect);\n\n const tonemapping = postprocess ? postprocess.GetTonemappingIfAvailable() : null;\n if (!tonemapping)\n {\n Tr2PostProcessRenderer.applyNoTonemappingMethod(effect);\n }\n else if (tonemapping.method === Tr2PPTonemappingEffect.Aces)\n {\n Tr2PostProcessRenderer.applyAcesTonemappingMethod(tonemapping, effect);\n }\n else if (tonemapping.method === Tr2PPTonemappingEffect.AgX)\n {\n Tr2PostProcessRenderer.applyAgxTonemappingMethod(effect);\n }\n else\n {\n Tr2PostProcessRenderer.applyUncharted2TonemappingMethod(tonemapping, effect);\n }\n\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n Tr2PostProcessRenderer.drawInto(dest, Tr2LoadAction.DONT_CARE, effect, renderContext, renderer);\n }\n\n /**\n * A post process's own generic effect over the scene (cpp:1585-1596).\n *\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderGenericEffect(dest, src, renderContext, genericEffect, renderer)\n {\n const effect = genericEffect.GetEffect();\n if (!effect) return;\n\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n effect.SetParameter(\"Blit\", src);\n try\n {\n Tr2PostProcessRenderer.drawInto(dest, Tr2LoadAction.DONT_CARE, effect, renderContext, renderer);\n }\n finally\n {\n effect.SetParameter(\"Blit\", null);\n }\n }\n\n /**\n * Film grain over the final image (cpp:1392-1404).\n *\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderFilmGrain(dest, renderContext, filmGrain, renderer)\n {\n const shader = this._grainShader;\n\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n shader.SetParameter(\"GrainColorAmount\", filmGrain.colored ? filmGrain.colorAmount : 0);\n shader.SetParameter(\"GrainSize\", filmGrain.grainSize);\n shader.SetParameter(\"GrainIntensity\", filmGrain.intensity);\n shader.SetParameter(\"GrainThreshold\", 1 - filmGrain.grainDensity);\n shader.SetParameter(\"GrainEdge\", 1 / (filmGrain.grainContrast * filmGrain.grainSize));\n shader.SetParameter(\"BrightnessModifier\", filmGrain.brightnessModifier);\n shader.SetParameter(\"InputTexture\", dest);\n renderer.DrawScreenQuad(renderContext, shader);\n }\n\n /**\n * Signal loss over the final image (cpp:1173-1179).\n *\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderSignalLoss(dest, renderContext, signalLoss, renderer)\n {\n this.signalLossEffect.SetParameter(\"NoiseStrength\", signalLoss.strength);\n renderer.DrawTexture(renderContext, dest, { material: this.signalLossEffect });\n }\n\n /**\n * The dynamic exposure debug overlay (cpp:1243-1285). With the debug off\n * this drops the debug shader, which is all Carbon does then.\n *\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n RenderDynamicExposureDebug(_gpuResourcePool, _renderContext, dynamicExposure, _histogramBuffer)\n {\n if (dynamicExposure && dynamicExposure.debug)\n {\n throw new Error(\"Tr2PostProcessRenderer.RenderDynamicExposureDebug is not ported yet.\");\n }\n\n this._dynamicExposureDebugShader = null;\n }\n\n /**\n * The persistent 8 x R32_FLOAT exposure buffer (cpp:1700-1706).\n *\n * @param {Tr2GpuResourcePool} gpuResourcePool The pool.\n * @returns {GpuResourceHandle} The buffer.\n */\n @carbon.method\n @impl.implemented\n GetExposureBuffer(gpuResourcePool)\n {\n return gpuResourcePool.GetPersistentBuffer(\n \"Exposure Buffer\",\n Tr2BufferDescriptionAL.FromFormat(\n PixelFormat.PIXEL_FORMAT_R32_FLOAT,\n 8,\n Tr2GpuUsage.UNORDERED_ACCESS | Tr2GpuUsage.SHADER_RESOURCE,\n Tr2CpuUsage.READ\n ),\n new Float32Array(8)\n );\n }\n\n /**\n * The persistent 4 x 4 black texture (cpp:1708-1713).\n *\n * @param {Tr2GpuResourcePool} gpuResourcePool The pool.\n * @returns {GpuResourceHandle} The texture.\n */\n @carbon.method\n @impl.implemented\n GetBlackTexture(gpuResourcePool)\n {\n return gpuResourcePool.GetPersistentTexture(\"Black\", {\n type: TextureType.TEX_TYPE_2D,\n width: 4,\n height: 4,\n depth: 1,\n mipCount: 1,\n format: PixelFormat.PIXEL_FORMAT_B8G8R8A8_UNORM,\n gpuUsage: Tr2GpuUsage.SHADER_RESOURCE,\n initialData: [ new Tr2SubresourceData(new Uint32Array(4 * 4), 4 * 4, 4 * 4 * 4) ]\n });\n }\n\n // THE PASSES NOT PORTED YET. Each runs only when the post process enables it.\n\n /**\n * Carbon Blur (cpp:893-946): a horizontal then a vertical pass of Blur.fx,\n * each effect pair built once per BlurContext hash and cached.\n *\n * Takes ownership of `src` and frees it after the first pass, as Carbon's\n * `src = {}` does (cpp:940).\n *\n * @param {GpuResourceHandle} src The texture to blur, owned from here on.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {BlurContext} blurContext The blur variant.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {GpuResourceHandle} The blurred texture.\n */\n @carbon.method\n @impl.adapted\n Blur(src, gpuResourcePool, renderContext, blurContext, renderer)\n {\n const hash = blurContext.Hash();\n let effects = this._blurEffects.get(hash);\n\n if (!effects)\n {\n // Horizontal and vertical, IN THAT ORDER (cpp:899).\n effects = [ new Tr2Effect(), new Tr2Effect() ];\n const [ horizontal, vertical ] = effects;\n\n horizontal.StartUpdate();\n horizontal.SetEffectPathName(PostProcessEffectPaths.Blur);\n vertical.StartUpdate();\n vertical.SetEffectPathName(PostProcessEffectPaths.Blur);\n vertical.SetParameter(\"Direction\", vec2.fromValues(0, 1));\n\n const blurTypeOption = BlurContext.getBlurTypeOptionValue(blurContext.type);\n horizontal.SetOption(\"BLUR_TYPE\", blurTypeOption);\n vertical.SetOption(\"BLUR_TYPE\", blurTypeOption);\n\n const blurChannelOption = BlurContext.getBlurChannelOptionValue(blurContext.channel);\n horizontal.SetOption(\"BLUR_CHANNEL\", blurChannelOption);\n vertical.SetOption(\"BLUR_CHANNEL\", blurChannelOption);\n\n const processOption = BlurContext.getProcessTypeOptionValue(blurContext.process);\n horizontal.SetOption(\"BLUR_PROCESS_TYPE\", processOption);\n vertical.SetOption(\"BLUR_PROCESS_TYPE\", processOption);\n\n horizontal.SetOption(\"BLUR_FINALIZE_TYPE\", BlurContext.getFinalizeTypeOptionValue(BlurContext.BlurFinalize.BF_None));\n vertical.SetOption(\"BLUR_FINALIZE_TYPE\", BlurContext.getFinalizeTypeOptionValue(blurContext.finalize));\n\n horizontal.EndUpdate();\n vertical.EndUpdate();\n this._blurEffects.set(hash, effects);\n }\n\n const [ horizontal, vertical ] = effects;\n const source = src.Get();\n\n const rt2 = this._Temp(gpuResourcePool, \"Blur Temp 1\", { width: source.GetWidth(), height: source.GetHeight() }, source.GetFormat(), RENDER_TARGET);\n horizontal.SetParameter(\"BlitCurrent\", source);\n try\n {\n Tr2PostProcessRenderer.drawInto(rt2.Get(), Tr2LoadAction.DONT_CARE, horizontal, renderContext, renderer);\n }\n finally\n {\n horizontal.SetParameter(\"BlitCurrent\", null);\n Tr2PostProcessRenderer._release(gpuResourcePool, src);\n }\n\n const second = rt2.Get();\n const rt1 = this._Temp(gpuResourcePool, \"Blur Temp 2\", { width: second.GetWidth(), height: second.GetHeight() }, second.GetFormat(), RENDER_TARGET);\n vertical.SetParameter(\"BlitCurrent\", second);\n try\n {\n Tr2PostProcessRenderer.drawInto(rt1.Get(), Tr2LoadAction.DONT_CARE, vertical, renderContext, renderer);\n }\n finally\n {\n vertical.SetParameter(\"BlitCurrent\", null);\n Tr2PostProcessRenderer._release(gpuResourcePool, rt2);\n }\n\n return rt1;\n }\n\n /**\n * Carbon RenderBloom (cpp:957-1113). The new bloom (the default, `g_newBloom`)\n * downsamples the scene through up to six half-size steps, then walks back\n * up: a horizontal gaussian into each step's upsample texture, and a\n * vertical gaussian that adds the previous (coarser) result, tinted per\n * step, back into the step's downsample texture. The finest step is the\n * bloom texture tonemapping reads as `BlitCurrent`. The old bloom is a\n * high-pass at half size and one Blur.\n *\n * Carbon's per-pass constants (DownsampleData, GaussianData) go through\n * FillAndSetConstants into `m_bloomConstantBuffer` at the per-object PS\n * register; so do these.\n *\n * @param {GpuResourceHandle} dest The scene colour to bloom (not consumed).\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPBloomEffect} bloom The bloom settings.\n * @param {Tr2PPDynamicExposureEffect|null} dynamicExposure The exposure settings, if any.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {GpuResourceHandle} The bloom texture, owned by the caller.\n */\n @carbon.method\n @impl.adapted\n RenderBloom(dest, gpuResourcePool, renderContext, bloom, dynamicExposure, renderer)\n {\n const esm = renderContext.GetEffectStateManager();\n const release = handle => Tr2PostProcessRenderer._release(gpuResourcePool, handle);\n const destination = dest.Get();\n const destinationSize = { width: destination.GetWidth(), height: destination.GetHeight() };\n\n esm.ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n\n const hasDynamicExposure = dynamicExposure !== null;\n const exposureDependant = bloom.exposureDependency && hasDynamicExposure;\n\n if (!this.useNewBloom)\n {\n const highPass = this.bloomHighPassFilter;\n highPass.SetParameter(\"LuminanceThreshold\", Math.max(0, bloom.luminanceThreshold));\n highPass.SetParameter(\"LuminanceScale\", bloom.luminanceScale);\n highPass.SetParameter(\"ExposureDependency\", exposureDependant ? 1 : 0);\n\n const rt1 = this._Temp(gpuResourcePool, \"Bloom\", Tr2PostProcessRenderer.scaledSize(destination, 0.5), destination.GetFormat(), RENDER_TARGET);\n const exposure = this.GetExposureBuffer(gpuResourcePool);\n highPass.SetParameter(\"BlitCurrent\", destination);\n highPass.SetParameter(\"Exposure\", exposure.Get());\n try\n {\n Tr2PostProcessRenderer.drawInto(rt1.Get(), Tr2LoadAction.DONT_CARE, highPass, renderContext, renderer);\n }\n finally\n {\n highPass.SetParameter(\"BlitCurrent\", null);\n highPass.SetParameter(\"Exposure\", null);\n release(exposure);\n }\n\n return this.Blur(rt1, gpuResourcePool, renderContext, new BlurContext(), renderer);\n }\n\n const MAX_BLOOM_STEPS = Tr2PPBloomEffect.MAX_BLOOM_STEPS;\n const black = this.GetBlackTexture(gpuResourcePool);\n const minDim = Math.min(destinationSize.width, destinationSize.height);\n let currentSize = 0.5;\n let depth = 0;\n\n this._downSamplerLuminancePreserve.SetOption(\"EXPOSURE_DEPENDANCE\", hasDynamicExposure ? \"EXPOSURE_DEPENDANCE_ON\" : \"EXPOSURE_DEPENDANCE_OFF\");\n this._downSamplerLuminancePreserve.SetParameter(\"LuminanceThreshold\", bloom.luminanceThreshold);\n\n const downsampleTexture = new Array(MAX_BLOOM_STEPS).fill(null);\n const upsampleTexture = new Array(MAX_BLOOM_STEPS).fill(null);\n let result = null;\n\n try\n {\n for (let i = 0; i < MAX_BLOOM_STEPS; ++i)\n {\n if (Math.trunc(minDim * currentSize) === 0) break;\n\n const size = Tr2PostProcessRenderer.scaledSize(destination, currentSize);\n downsampleTexture[i] = this._Temp(gpuResourcePool, `Downsample_${i}`, size, destination.GetFormat(), RENDER_TARGET);\n upsampleTexture[i] = this._Temp(gpuResourcePool, `Upsample_${i}`, size, destination.GetFormat(), RENDER_TARGET);\n\n // The debug views (cpp:1006-1010) need RenderBloomDebug, not ported.\n if (this.bloomDebugMode !== BloomDebugMode.BLOOM_DEBUG_NONE)\n {\n throw new Error(\"Tr2PostProcessRenderer: bloom debug (RenderBloomDebug) is not ported yet.\");\n }\n\n currentSize *= 0.5;\n ++depth;\n }\n\n const pixelShaderMask = 1 << ShaderType.PIXEL_SHADER;\n const perObjectRegister = renderer.GetPerObjectPSStartRegister();\n\n // Downsample (cpp:1016-1039).\n let lastRt = destination;\n for (let i = 0; i < depth; ++i)\n {\n const rt = downsampleTexture[i].Get();\n const effect = i === 0 && bloom.luminanceThreshold > -1 ? this._downSamplerLuminancePreserve : this._downSampler;\n const exposure = this.GetExposureBuffer(gpuResourcePool);\n\n // DownsampleData: Vector2 invSourceSize + two floats of padding (h:139-144).\n const downsampleInfo = new Float32Array([ 1 / lastRt.GetWidth(), 1 / lastRt.GetHeight(), 0, 0 ]);\n\n effect.SetParameter(\"BlitCurrent\", lastRt);\n effect.SetParameter(\"Exposure\", exposure.Get());\n try\n {\n FillAndSetConstants(this._BloomConstantBuffer(renderContext), downsampleInfo, downsampleInfo.byteLength, pixelShaderMask, perObjectRegister, renderContext);\n Tr2PostProcessRenderer.drawInto(rt, Tr2LoadAction.DONT_CARE, effect, renderContext, renderer);\n }\n finally\n {\n effect.SetParameter(\"BlitCurrent\", null);\n effect.SetParameter(\"Exposure\", null);\n release(exposure);\n }\n\n lastRt = rt;\n }\n\n // Upsample (cpp:1041-1105): every horizontal pass, then every vertical.\n const tintScale = (1 / MAX_BLOOM_STEPS) * bloom.brightness;\n const directionalWeight = [ Math.max(bloom.directionalWeight, 0), Math.abs(bloom.directionalWeight) ];\n const gaussianBytes = new Uint8Array(GaussianData.byteSize);\n const stepSize = i => bloom[`step${i + 1}Size`];\n const stepTint = i => bloom[`step${i + 1}Tint`];\n\n for (let i = depth - 1; i >= 0; --i)\n {\n const currentMip = downsampleTexture[i].Get();\n const currentUpsampled = upsampleTexture[i].Get();\n const radiusInPixels = Math.max(currentMip.GetWidth(), currentMip.GetHeight()) * bloom.sizeScale * stepSize(i) * 0.01;\n const invTexelSizeX = 1 / currentMip.GetWidth();\n\n this._upsamplerHorizontal.SetParameter(\"BlitCurrent\", currentMip);\n const gaussianOutput = GaussianData.calculateGaussianPassParameters(radiusInPixels, directionalWeight[0], invTexelSizeX, vec3.fromValues(1, 1, 1), vec2.fromValues(1, 0));\n GaussianData.pack(gaussianOutput, gaussianBytes);\n FillAndSetConstants(this._BloomConstantBuffer(renderContext), gaussianBytes, gaussianBytes.byteLength, pixelShaderMask, perObjectRegister, renderContext);\n Tr2PostProcessRenderer.drawInto(currentUpsampled, Tr2LoadAction.DONT_CARE, this._upsamplerHorizontal, renderContext, renderer);\n }\n\n let lastHandle = null;\n for (let i = depth - 1; i >= 0; --i)\n {\n if (i === depth - 1) lastRt = black.Get();\n\n const currentMip = downsampleTexture[i].Get();\n const currentUpsampled = upsampleTexture[i].Get();\n const radiusInPixels = Math.max(currentMip.GetWidth(), currentMip.GetHeight()) * bloom.sizeScale * stepSize(i) * 0.01;\n const invTexelSizeY = 1 / currentMip.GetHeight();\n\n // The horizontally blurred mip, plus the coarser result below it.\n this._upsamplerVertical.SetParameter(\"BlitCurrent\", currentUpsampled);\n this._upsamplerVertical.SetParameter(\"LastMip\", lastRt);\n\n const tint = vec4.scale(vec4.create(), stepTint(i), tintScale);\n const gaussianOutput = GaussianData.calculateGaussianPassParameters(radiusInPixels, directionalWeight[1], invTexelSizeY, vec3.fromValues(tint[0], tint[1], tint[2]), vec2.fromValues(0, 1));\n GaussianData.pack(gaussianOutput, gaussianBytes);\n FillAndSetConstants(this._BloomConstantBuffer(renderContext), gaussianBytes, gaussianBytes.byteLength, pixelShaderMask, perObjectRegister, renderContext);\n\n // Into the downsample texture, which is not read again (cpp:1100).\n Tr2PostProcessRenderer.drawInto(currentMip, Tr2LoadAction.DONT_CARE, this._upsamplerVertical, renderContext, renderer);\n\n lastRt = currentMip;\n lastHandle = downsampleTexture[i];\n }\n\n // Carbon returns lastRt, the finest downsample texture; with no step at\n // all it is `dest` itself (cpp:1016, 1112), which the caller still owns,\n // so the bloom is then the black texture instead.\n result = lastHandle ?? black;\n return result;\n }\n finally\n {\n this._upsamplerHorizontal.SetParameter(\"BlitCurrent\", null);\n this._upsamplerVertical.SetParameter(\"BlitCurrent\", null);\n this._upsamplerVertical.SetParameter(\"LastMip\", null);\n\n for (const handle of [ ...downsampleTexture, ...upsampleTexture, black ])\n {\n if (handle && handle !== result) release(handle);\n }\n }\n }\n\n /**\n * God rays (cpp:1146-1171): half-resolution depth, the rays drawn into a\n * cleared half-resolution target, then added onto `dest`.\n *\n * Adapted: the renderer is passed in for the blitter, as in Execute.\n *\n * @param {object} dest The colour texture the rays are added to.\n * @param {object} depth The scene depth.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPGodRaysEffect} godrays The post process's god-ray settings.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderGodRays(dest, depth, gpuResourcePool, renderContext, godrays, renderer)\n {\n const esm = renderContext.GetEffectStateManager();\n const effect = this.godrayEffect;\n\n esm.ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n\n const rt1 = this.DownSampleDepth(depth, gpuResourcePool, renderContext, renderer);\n const rt2 = this._Temp(gpuResourcePool, \"God rays\", Tr2PostProcessRenderer.scaledSize(dest, 0.5), dest.GetFormat(), RENDER_TARGET);\n\n try\n {\n esm.PushRenderTarget(rt2.Get());\n // The clear is needed because the god-ray vertex shader can opt out of rendering (cpp:1157).\n renderContext.Clear({ clearColor: true, color: 0 });\n\n const color = godrays.godRayColor;\n effect.SetParameter(\"Color\", [ color[0], color[1], color[2], color[3] ]);\n effect.SetParameter(\"Intensity\", [ godrays.intensity, 0, 1, 1 ]);\n effect.SetParameter(\"grFactors\", godrays.grFactors);\n effect.SetResourceTexture2D(\"NoiseTexMap\", godrays.noiseTexturePath);\n effect.SetParameter(\"DepthMap\", rt1.Get());\n try\n {\n renderer.DrawScreenQuad(renderContext, effect);\n }\n finally\n {\n effect.SetParameter(\"DepthMap\", null);\n esm.PopRenderTarget();\n }\n\n esm.ApplyStandardStates(RenderingMode.RM_ALPHA_ADDITIVE);\n Tr2PostProcessRenderer.drawTextureInto(dest, Tr2LoadAction.LOAD, rt2.Get(), renderContext, renderer);\n }\n finally\n {\n Tr2PostProcessRenderer._release(gpuResourcePool, rt1);\n Tr2PostProcessRenderer._release(gpuResourcePool, rt2);\n }\n }\n\n /**\n * Half-resolution R32_FLOAT depth (cpp:948-954).\n *\n * @param {object} depth The scene depth.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {GpuResourceHandle} The down-sampled depth; the caller frees it.\n */\n @carbon.method\n @impl.adapted\n DownSampleDepth(depth, gpuResourcePool, renderContext, renderer)\n {\n const effect = this._downsampleDepthEffect;\n const destination = this._Temp(\n gpuResourcePool,\n \"Down-sampled Depth\",\n Tr2PostProcessRenderer.scaledSize(depth, 0.5),\n PixelFormat.PIXEL_FORMAT_R32_FLOAT,\n Tr2GpuUsage.RENDER_TARGET | Tr2GpuUsage.SHADER_RESOURCE\n );\n\n effect.SetParameter(\"DepthMap\", depth);\n try\n {\n Tr2PostProcessRenderer.drawInto(destination.Get(), Tr2LoadAction.DONT_CARE, effect, renderContext, renderer);\n }\n finally\n {\n effect.SetParameter(\"DepthMap\", null);\n }\n\n return destination;\n }\n\n /**\n * Carbon RenderDynamicExposure (cpp:1182-1241): three compute passes. Each\n * 16 x 16 tile builds a local luminance histogram, the tiles merge into one\n * 65-bin histogram, and one thread measures it and moves the persistent\n * exposure buffer towards the target at the increase/decrease speeds.\n * Tonemapping (and exposure-dependent bloom) read that buffer.\n *\n * @param {object} source The scene colour texture.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPDynamicExposureEffect} dynamicExposure The exposure settings.\n * @returns {GpuResourceHandle} The merged histogram, owned by the caller.\n */\n @carbon.method\n @impl.adapted\n RenderDynamicExposure(source, gpuResourcePool, renderContext, dynamicExposure)\n {\n const tilesX = Math.floor(source.GetWidth() / HISTOGRAM_TILE_SIZE_X) + 1;\n const tilesY = Math.floor(source.GetHeight() / HISTOGRAM_TILE_SIZE_Y) + 1;\n const localHistogramCount = tilesX * tilesY * 16;\n const uav = Tr2GpuUsage.SHADER_RESOURCE | Tr2GpuUsage.UNORDERED_ACCESS;\n\n const localHistograms = gpuResourcePool.GetTempBuffer(\n \"LocalHistograms\",\n Tr2BufferDescriptionAL.FromFormat(PixelFormat.PIXEL_FORMAT_R32G32B32A32_UINT, localHistogramCount, uav, Tr2CpuUsage.NONE)\n );\n const histogram = gpuResourcePool.GetTempBuffer(\n \"Histogram\",\n Tr2BufferDescriptionAL.FromFormat(PixelFormat.PIXEL_FORMAT_R32_UINT, 65, uav, Tr2CpuUsage.NONE)\n );\n const exposure = this.GetExposureBuffer(gpuResourcePool);\n\n const create = this.dynamicExposureCreateHistogramShader;\n const merge = this.dynamicExposureMergeHistogramShader;\n const measure = this.dynamicExposureMeasureExposureShader;\n\n create.SetParameter(\"ScreenTilesX\", tilesX);\n create.SetParameter(\"BlitOriginal\", source);\n create.SetParameter(\"LocalHistograms\", localHistograms.Get());\n merge.SetParameter(\"ScreenTilesX\", tilesX);\n merge.SetParameter(\"ScreenTilesY\", tilesY);\n merge.SetParameter(\"LocalHistograms\", localHistograms.Get());\n merge.SetParameter(\"Histogram\", histogram.Get());\n\n try\n {\n const zero = new Uint32Array(4);\n renderContext.ClearUav(localHistograms.Get(), zero);\n renderContext.ClearUav(histogram.Get(), zero);\n\n // Create histograms.\n create.SetParameter(\"MinLuminance\", Math.log(dynamicExposure.minLuminance));\n create.SetParameter(\"MaxLuminance\", Math.log(dynamicExposure.maxLuminance));\n create.SetParameter(\"MinBrightness\", dynamicExposure.minBrightness);\n create.SetParameter(\"MaxBrightness\", dynamicExposure.maxBrightness);\n Tr2Renderer.runComputeShader(create, tilesX, tilesY, 1, renderContext);\n\n // Merge histogram.\n const mergeHistogramXDim = Math.floor((tilesX * tilesY) / NUM_TILES_PER_THREAD_GROUP) + 1;\n Tr2Renderer.runComputeShader(merge, mergeHistogramXDim, 1, 1, renderContext);\n\n // Measure histogram.\n measure.SetParameter(\"MinLuminance\", Math.log(dynamicExposure.minLuminance));\n measure.SetParameter(\"MaxLuminance\", Math.log(dynamicExposure.maxLuminance));\n measure.SetParameter(\"MinBrightness\", dynamicExposure.minBrightness);\n measure.SetParameter(\"MaxBrightness\", dynamicExposure.maxBrightness);\n measure.SetParameter(\"IncreaseSpeed\", dynamicExposure.increaseSpeed);\n measure.SetParameter(\"DecreaseSpeed\", dynamicExposure.decreaseSpeed);\n measure.SetParameter(\"MinExposure\", dynamicExposure.minExposure);\n measure.SetParameter(\"MaxExposure\", dynamicExposure.maxExposure);\n measure.SetParameter(\"Histogram\", histogram.Get());\n measure.SetParameter(\"Exposure\", exposure.Get());\n Tr2Renderer.runComputeShader(measure, 1, 1, 1, renderContext);\n }\n finally\n {\n create.SetParameter(\"BlitOriginal\", null);\n create.SetParameter(\"LocalHistograms\", null);\n merge.SetParameter(\"LocalHistograms\", null);\n merge.SetParameter(\"Histogram\", null);\n measure.SetParameter(\"Histogram\", null);\n measure.SetParameter(\"Exposure\", null);\n Tr2PostProcessRenderer._release(gpuResourcePool, localHistograms);\n Tr2PostProcessRenderer._release(gpuResourcePool, exposure);\n }\n\n return histogram;\n }\n\n /** Carbon RenderUpscaling (cpp:1287-1390). */\n @carbon.method\n @impl.notImplemented\n RenderUpscaling()\n {\n throw new Error(\"Tr2PostProcessRenderer.RenderUpscaling is not ported yet.\");\n }\n\n /**\n * Environment fog (cpp:1406-1433): the fog colour at half resolution,\n * blurred, then composited over `dest` with the scene colour as the original.\n *\n * Adapted: the renderer is passed in for the blitter, as in Execute.\n *\n * @param {object} dest The colour texture fog is composited into.\n * @param {object} source The scene colour before post-processing.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPFogEffect} fog The post process's fog settings.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderFog(dest, source, gpuResourcePool, renderContext, fog, renderer)\n {\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n\n // Fog colour.\n const colorEffect = this.fogColorEffect;\n const rt1 = this._Temp(gpuResourcePool, \"Fog Color\", Tr2PostProcessRenderer.scaledSize(dest, 0.5), dest.GetFormat(), RENDER_TARGET);\n const color = fog.color;\n\n colorEffect.SetParameter(\"BlitCurrent\", dest);\n colorEffect.SetParameter(\"Params\", [ fog.nebulaInfluence, fog.nebulaBlur, fog.originalBrightenOnly, fog.colorInfluence ]);\n colorEffect.SetParameter(\"Color\", [ color[0], color[1], color[2], color[3] ]);\n try\n {\n Tr2PostProcessRenderer.drawInto(rt1.Get(), Tr2LoadAction.DONT_CARE, colorEffect, renderContext, renderer);\n }\n finally\n {\n colorEffect.SetParameter(\"BlitCurrent\", null);\n }\n\n // Blur; Blur takes rt1 over (cpp:1420 moves it).\n const blurred = this.Blur(rt1, gpuResourcePool, renderContext, new BlurContext(), renderer);\n\n // Final composite.\n const composite = this.fogCompositeEffect;\n const { areaSize, areaScale, areaCenter } = fog;\n\n composite.SetParameter(\"FogParameters\", [ fog.totalAmount, fog.totalPower, fog.backgroundOcclusion, fog.intensity ]);\n composite.SetParameter(\"BrightnessAdjustment\", [ fog.brightnessThreshold0, fog.brightnessThreshold1, fog.brightnessAdjustmentAmount, 0 ]);\n composite.SetParameter(\"BlendFunction0\", [ fog.blendDistance0, fog.blendBias0, fog.blendAmount0, fog.blendPower0 ]);\n composite.SetParameter(\"BlendFunction1\", [ fog.blendDistance1, fog.blendBias1, fog.blendAmount1, fog.blendPower1 ]);\n composite.SetParameter(\"BlendFunction2\", [ fog.blendDistance2, fog.blendBias2, fog.blendAmount2, fog.blendPower2 ]);\n composite.SetParameter(\"AreaSize\", [ areaSize[0], areaSize[1], areaSize[2], areaScale[0] ]);\n composite.SetParameter(\"AreaCenter\", [ areaCenter[0], areaCenter[1], areaCenter[2], areaScale[1] ]);\n composite.SetParameter(\"BlitCurrent\", blurred.Get());\n composite.SetParameter(\"BlitOriginal\", source);\n try\n {\n Tr2PostProcessRenderer.drawInto(dest, Tr2LoadAction.DONT_CARE, composite, renderContext, renderer);\n }\n finally\n {\n composite.SetParameter(\"BlitCurrent\", null);\n composite.SetParameter(\"BlitOriginal\", null);\n Tr2PostProcessRenderer._release(gpuResourcePool, blurred);\n }\n }\n\n /**\n * Temporal anti-aliasing (cpp:1435-1529): the current frame blended into a\n * ping-ponged persistent accumulator, then copied back into `dest`.\n *\n * Adapted: the renderer is passed in for the blitter, as in Execute. The\n * cooldown map's initial ClearUav of a texture is refused by the WebGPU AL,\n * which does not change the result: WebGPU creates textures zeroed, the\n * value Carbon clears to.\n *\n * @param {object} dest The scene colour, blended and written back.\n * @param {object|null} velocity The velocity map.\n * @param {object|null} opaqueColor The opaque colour copy; null at TAA low.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPTaaEffect} taa The post process's TAA settings.\n * @param {Tr2PPDynamicExposureEffect|null} dynamicExposure Dynamic exposure, if on.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderTaa(dest, velocity, opaqueColor, gpuResourcePool, renderContext, taa, dynamicExposure, renderer)\n {\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n\n const al = renderContext.GetRenderContextAL();\n const release = handle => Tr2PostProcessRenderer._release(gpuResourcePool, handle);\n const clear = texture =>\n {\n al.SetRenderTarget(0, texture);\n al.Clear({ clearColor: true, color: 0 });\n };\n const clearUav = texture => al.ClearUav(texture, new Uint32Array(4));\n const persistent = (name, format, gpuUsage, initialize) => gpuResourcePool.GetPersistentTexture(name, {\n type: TextureType.TEX_TYPE_2D,\n width: dest.GetWidth(),\n height: dest.GetHeight(),\n depth: 1,\n mipCount: 1,\n format,\n gpuUsage\n }, initialize);\n\n const accumulationBuffer0 = persistent(\"TAA Accumulation 0\", PixelFormat.PIXEL_FORMAT_R16G16B16A16_UNORM, RENDER_TARGET, clear);\n const accumulationBuffer1 = persistent(\"TAA Accumulation 1\", PixelFormat.PIXEL_FORMAT_R16G16B16A16_UNORM, RENDER_TARGET, clear);\n const cooldownBuffer = persistent(\"TAA Cooldown\", PixelFormat.PIXEL_FORMAT_R32_UINT, Tr2GpuUsage.UNORDERED_ACCESS | Tr2GpuUsage.SHADER_RESOURCE, clearUav);\n const exposure = dynamicExposure ? this.GetExposureBuffer(gpuResourcePool) : null;\n\n const frameCount = this._taaFrameCounter++;\n const [ input, output ] = (frameCount & 1) === 0\n ? [ accumulationBuffer0, accumulationBuffer1 ]\n : [ accumulationBuffer1, accumulationBuffer0 ];\n\n const effect = this.taaEffect;\n const copy = this._taaCopyEffect;\n\n for (const each of [ effect, copy ])\n {\n if (dynamicExposure)\n {\n each.SetParameter(\"ExposureAdjust\", Math.pow(2, dynamicExposure.adjustment));\n each.SetParameter(\"ExposureMiddleValue\", dynamicExposure.middleValue);\n each.SetParameter(\"ExposureInfluence\", dynamicExposure.influence);\n each.SetOption(\"DYNAMIC_EXPOSURE_TOGGLE\", \"DYNAMIC_EXPOSURE_ENABLED\");\n }\n else\n {\n each.SetOption(\"DYNAMIC_EXPOSURE_TOGGLE\", \"DYNAMIC_EXPOSURE_DISABLED\");\n }\n }\n\n effect.SetParameter(\"FrameIndex\", frameCount);\n effect.SetParameter(\"EarlyOutThreshold\", taa.earlyOutThreshold);\n effect.SetOption(\"QUALITY\", Tr2PostProcessRenderer.getTaaQualityShaderOptionValue(taa.quality));\n effect.SetOption(\"DEBUG\", Tr2PostProcessRenderer.getTaaDebugShaderOptionValue(taa.debug));\n\n const MAX_WEIGHT = Math.fround(0.96);\n effect.SetParameter(\"BlendWeight\", Math.min(Math.fround(frameCount / (frameCount + 1)), MAX_WEIGHT));\n\n try\n {\n effect.SetParameter(\"CurrentFrame\", dest);\n effect.SetParameter(\"CurrentFrameOpaque\", opaqueColor);\n effect.SetParameter(\"AccumulationBuffer\", input.Get());\n effect.SetParameter(\"CooldownMap\", cooldownBuffer.Get());\n effect.SetParameter(\"VelocityMap\", velocity);\n effect.SetParameter(\"Exposure\", exposure?.Get() ?? null);\n Tr2PostProcessRenderer.drawInto(output.Get(), Tr2LoadAction.DONT_CARE, effect, renderContext, renderer);\n\n copy.SetParameter(\"AccumulationBuffer\", output.Get());\n copy.SetParameter(\"Exposure\", exposure?.Get() ?? null);\n Tr2PostProcessRenderer.drawInto(dest, Tr2LoadAction.DONT_CARE, copy, renderContext, renderer);\n }\n finally\n {\n for (const name of [ \"CurrentFrame\", \"CurrentFrameOpaque\", \"AccumulationBuffer\", \"CooldownMap\", \"VelocityMap\", \"Exposure\" ])\n {\n effect.SetParameter(name, null);\n }\n copy.SetParameter(\"AccumulationBuffer\", null);\n copy.SetParameter(\"Exposure\", null);\n\n for (const handle of [ accumulationBuffer0, accumulationBuffer1, cooldownBuffer, exposure ]) release(handle);\n }\n }\n\n /**\n * Depth of field (cpp:1598-1698): the circle of confusion, blurred to its\n * maximum when the foreground blurs too, then either the TAA-friendly bokeh\n * and a copy back, or the bokeh blend and fill.\n *\n * Adapted: the renderer is passed in for the blitter, as in Execute.\n *\n * @param {object} dest The colour texture to blur.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPDepthOfFieldEffect} depthOfField The post process's DoF settings.\n * @param {boolean} temporal Whether TAA or a temporal upscaler follows.\n * @param {number} upscalingAmount The upscaler's ratio, 1 without one.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderDepthOfField(dest, gpuResourcePool, renderContext, depthOfField, temporal, upscalingAmount, renderer)\n {\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n\n const release = handle => Tr2PostProcessRenderer._release(gpuResourcePool, handle);\n const shape = depthOfField.GetBokehShapeString();\n const cocShader = this.depthOfFieldCoCShader;\n const cocSize = Tr2PostProcessRenderer.scaledSize(dest, depthOfField.cocScale);\n let coc = null;\n let blur = null;\n\n cocShader.SetParameter(\"FocalInfo\", [ depthOfField.focalDistance, depthOfField.focalLength, depthOfField.scale, 0 ]);\n cocShader.SetOption(\"COC_OUTPUT_CHANNEL_COUNT\", depthOfField.foregroundBlurNeeded ? \"COC_OUTPUT_CHANNEL_COUNT_2\" : \"COC_OUTPUT_CHANNEL_COUNT_1\");\n\n try\n {\n if (!depthOfField.foregroundBlurNeeded)\n {\n coc = this._Temp(gpuResourcePool, \"CoC\", cocSize, PixelFormat.PIXEL_FORMAT_R8_UNORM, RENDER_TARGET);\n Tr2PostProcessRenderer.drawInto(coc.Get(), Tr2LoadAction.DONT_CARE, cocShader, renderContext, renderer);\n }\n else\n {\n const coc2 = this._Temp(gpuResourcePool, \"CoC\", cocSize, PixelFormat.PIXEL_FORMAT_R8G8_UNORM, RENDER_TARGET);\n const { BlurType, BlurChannel, BlurProcess, BlurFinalize } = BlurContext;\n\n Tr2PostProcessRenderer.drawInto(coc2.Get(), Tr2LoadAction.DONT_CARE, cocShader, renderContext, renderer);\n coc = this.Blur(\n coc2,\n gpuResourcePool,\n renderContext,\n BlurContext.createBlurContext(BlurType.BT_Big, BlurChannel.BC_r, BlurProcess.BP_Maximum, BlurFinalize.BF_MaxOfAllChannels),\n renderer\n );\n }\n\n const adjustedScale = Math.fround(depthOfField.scale / upscalingAmount);\n\n blur = this._Temp(gpuResourcePool, \"Bokeh Blend\", { width: dest.GetWidth(), height: dest.GetHeight() }, dest.GetFormat(), RENDER_TARGET);\n\n if (depthOfField.useTAAFriendlyBokeh)\n {\n const GOLDEN_ANGLE = Math.fround(Math.PI * (3 - Math.sqrt(5)));\n let angle = 0;\n let samplesPerPixel = 2 / 5;\n\n if (temporal)\n {\n // Four rotations, the same period as the TAA jitter, so TAA can\n // detect and remove some flickering (cpp:1650-1651).\n if ((this._bokehFrameCounter & 1) !== 0) angle += Math.PI;\n if ((this._bokehFrameCounter & 2) !== 0) angle += 0.5 * GOLDEN_ANGLE;\n this._bokehFrameCounter++;\n\n // Fewer samples per frame; the rotations accumulate four times as many (cpp:1658-1659).\n samplesPerPixel = 1 / 5;\n }\n\n const bokeh = this._depthOfFieldBokehTAAShader;\n\n bokeh.SetOption(\"BOKEH_SHAPE\", shape);\n bokeh.SetParameter(\"BlitCurrent\", dest);\n bokeh.SetParameter(\"CoCMap\", coc.Get());\n bokeh.SetParameter(\"BokehInfo\", [ adjustedScale, angle, samplesPerPixel, 0 ]);\n try\n {\n Tr2PostProcessRenderer.drawInto(blur.Get(), Tr2LoadAction.DONT_CARE, bokeh, renderContext, renderer);\n }\n finally\n {\n bokeh.SetParameter(\"BlitCurrent\", null);\n bokeh.SetParameter(\"CoCMap\", null);\n }\n\n // Copy back.\n Tr2PostProcessRenderer.drawTextureInto(dest, Tr2LoadAction.DONT_CARE, blur.Get(), renderContext, renderer);\n }\n else\n {\n const blend = this.depthOfFieldBokehBlurShader;\n\n blend.SetParameter(\"BlitCurrent\", dest);\n blend.SetParameter(\"CoCMap\", coc.Get());\n blend.SetParameter(\"BokehInfo\", [ adjustedScale, 0, 0, 0 ]);\n blend.SetOption(\"BOKEH_SHAPE\", shape);\n try\n {\n Tr2PostProcessRenderer.drawInto(blur.Get(), Tr2LoadAction.DONT_CARE, blend, renderContext, renderer);\n }\n finally\n {\n blend.SetParameter(\"BlitCurrent\", null);\n blend.SetParameter(\"CoCMap\", null);\n }\n\n const fill = this.depthOfFieldBokehFillShader;\n\n fill.SetParameter(\"BlitCurrent\", blur.Get());\n fill.SetParameter(\"CoCMap\", coc.Get());\n fill.SetParameter(\"BokehInfo\", [ adjustedScale, 0, 0, 0 ]);\n fill.SetOption(\"BOKEH_SHAPE\", shape);\n try\n {\n Tr2PostProcessRenderer.drawInto(dest, Tr2LoadAction.DONT_CARE, fill, renderContext, renderer);\n }\n finally\n {\n fill.SetParameter(\"BlitCurrent\", null);\n fill.SetParameter(\"CoCMap\", null);\n }\n }\n }\n finally\n {\n release(coc);\n release(blur);\n }\n }\n\n /**\n * m_bloomConstantBuffer, created empty on first use. Carbon default-constructs\n * the member (cpp:565) and FillAndSetConstants sizes it; our constant\n * buffers come from the render context, which the constructor has not got.\n *\n * @param {Tr2RenderContext} renderContext The context to create against.\n * @returns {object} A `Tr2ConstantBufferAL`.\n */\n _BloomConstantBuffer(renderContext)\n {\n this._bloomConstantBuffer ??= renderContext.CreateConstantBuffer();\n return this._bloomConstantBuffer;\n }\n\n /** A pool temp texture of Carbon's `GetTempTexture( name, size, format, usage )` form. */\n _Temp(gpuResourcePool, name, size, format, gpuUsage)\n {\n return 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 // CARBON'S ANONYMOUS-NAMESPACE HELPERS (cpp:31-150, 301-509).\n\n /**\n * DrawInto for an effect (cpp:56-62): hint the load action, push the target,\n * draw a screen quad, pop.\n *\n * @returns {void}\n */\n static drawInto(dest, loadAction, effect, renderContext, renderer)\n {\n const esm = renderContext.GetEffectStateManager();\n\n renderContext.RenderPassHint(new Tr2ColorAttachment(loadAction, Tr2StoreAction.STORE), null);\n esm.PushRenderTarget(dest);\n try\n {\n renderer.DrawScreenQuad(renderContext, effect);\n }\n finally\n {\n esm.PopRenderTarget();\n }\n }\n\n /**\n * DrawInto for a texture (cpp:38-44): hint the load action, push the target,\n * blit the texture, pop. Carbon overloads DrawInto; the texture form is\n * named here.\n *\n * @returns {void}\n */\n static drawTextureInto(dest, loadAction, src, renderContext, renderer)\n {\n const esm = renderContext.GetEffectStateManager();\n\n renderContext.RenderPassHint(new Tr2ColorAttachment(loadAction, Tr2StoreAction.STORE), null);\n esm.PushRenderTarget(dest);\n try\n {\n renderer.DrawTexture(renderContext, src);\n }\n finally\n {\n esm.PopRenderTarget();\n }\n }\n\n /**\n * `TextureSize2D( texture.GetDesc() ) * scale` (Tr2GpuResourcePool.h:34-37):\n * each side scaled in float, truncated, and at least one.\n *\n * @param {object} texture A texture answering GetWidth and GetHeight.\n * @param {number} scale The scale.\n * @returns {{width: number, height: number}} The size.\n */\n static scaledSize(texture, scale)\n {\n const side = value => Math.max(1, Math.trunc(Math.fround(Math.fround(value) * Math.fround(scale))));\n\n return { width: side(texture.GetWidth()), height: side(texture.GetHeight()) };\n }\n\n /** GetTaaQualityShaderOptionValue (cpp:97-110). */\n static getTaaQualityShaderOptionValue(quality)\n {\n if (quality === Tr2PPTaaEffect.TAA_MEDIUM) return \"QUALITY_MEDIUM\";\n if (quality === Tr2PPTaaEffect.TAA_HIGH) return \"QUALITY_HIGH\";\n return \"QUALITY_LOW\";\n }\n\n /** GetTaaDebugShaderOptionValue (cpp:112-123). */\n static getTaaDebugShaderOptionValue(debug)\n {\n if (debug === Tr2PPTaaEffect.Debug.TAA_DEBUG_MOTION_VECTORS) return \"DEBUG_SHOW_MOTION_VECTORS\";\n if (debug === Tr2PPTaaEffect.Debug.TAA_DEBUG_EARLY_OUT_MASK) return \"DEBUG_SHOW_EARLY_OUT_MASK\";\n return \"DEBUG_NONE\";\n }\n\n /**\n * GetUavCompatibleFormat (cpp:64-72): BGRA formats cannot be UAVs, so they\n * become RGBA.\n *\n * @param {number} format A `PixelFormat`.\n * @returns {number} A UAV-compatible `PixelFormat`.\n */\n static getUavCompatibleFormat(format)\n {\n if (format === PixelFormat.PIXEL_FORMAT_B8G8R8X8_UNORM || format === PixelFormat.PIXEL_FORMAT_B8G8R8A8_UNORM)\n {\n return PixelFormat.PIXEL_FORMAT_R8G8B8A8_UNORM;\n }\n return format;\n }\n\n /**\n * The destination's `PixelFormat`. Carbon's destination is always a\n * Tr2TextureAL. Our back buffer is the canvas render target, which answers\n * GetWidth and GetHeight as a texture does, but reports its format as the\n * canvas's GPU format; the AL's Carbon `GetBackBufferFormat` gives the\n * `PixelFormat` for it.\n *\n * @param {object} destination The target.\n * @param {object} al The render context AL.\n * @returns {number} A `PixelFormat`.\n */\n static destinationFormatOf(destination, al)\n {\n return destination === al.GetDefaultBackBuffer() ? al.GetBackBufferFormat() : destination.GetFormat();\n }\n\n /**\n * AMD FidelityFX CAS `CasSetup` (ffx_cas.h, CAS 1.0, MIT). The header is a\n * third-party dependency of Carbon, not in the checkout; this is its public\n * definition. `sharpness` 0 gives -1/8.\n *\n * @param {number} sharpness 0 to 1.\n * @param {number} inputWidth Input width in pixels.\n * @param {number} inputHeight Input height in pixels.\n * @param {number} outputWidth Output width in pixels.\n * @param {number} outputHeight Output height in pixels.\n * @returns {{const0: Float32Array, const1: Float32Array}} The two constant\n * vectors, as floats over their packed uint bits (AMDSharpening::AsVector).\n */\n static casSetup(sharpness, inputWidth, inputHeight, outputWidth, outputHeight)\n {\n const const0 = new Float32Array(4);\n const const1 = new Float32Array(4);\n const bits1 = new Uint32Array(const1.buffer);\n\n // Scaling terms.\n const0[0] = inputWidth * (1 / outputWidth);\n const0[1] = inputHeight * (1 / outputHeight);\n const0[2] = 0.5 * inputWidth * (1 / outputWidth) - 0.5;\n const0[3] = 0.5 * inputHeight * (1 / outputHeight) - 0.5;\n\n // Sharpness value: -1 / lerp(8, 5, saturate(sharpness)).\n const saturated = Math.min(1, Math.max(0, sharpness));\n const sharp = -(1 / (8 + (5 - 8) * saturated));\n\n const1[0] = sharp;\n // AU1_AH2_AF2(sharp, 0): two halves packed low-first into one uint.\n bits1[1] = (num.toHalfFloat(sharp) & 0xffff) | ((num.toHalfFloat(0) & 0xffff) << 16);\n const1[2] = 8 * inputWidth * (1 / outputWidth);\n bits1[3] = 0;\n\n return { const0, const1 };\n }\n\n /** Tonemapping::ApplyColorCorrection (cpp:304-321). */\n static applyColorCorrection(colorCorrection, effect)\n {\n if (!colorCorrection)\n {\n effect.SetOption(\"COLOR_CORRECTION_TOGGLE\", \"COLOR_CORRECTION_DISABLED\");\n return;\n }\n effect.SetOption(\"COLOR_CORRECTION_TOGGLE\", \"COLOR_CORRECTION_ENABLED\");\n effect.SetParameter(\"WhiteTemperature\", colorCorrection.whiteTemperature);\n effect.SetParameter(\"WhiteTint\", colorCorrection.whiteTint);\n effect.SetParameter(\"ColorSaturation\", colorCorrection.colorSaturation);\n effect.SetParameter(\"ColorContrast\", colorCorrection.colorContrast);\n effect.SetParameter(\"ColorGamma\", colorCorrection.colorGamma);\n effect.SetParameter(\"ColorGain\", colorCorrection.colorGain);\n effect.SetParameter(\"ColorOffset\", colorCorrection.colorOffset);\n }\n\n /** Tonemapping::ApplyBloom (cpp:323-348). */\n static applyBloom(bloom, effect, newBloom, debugMode)\n {\n if (!bloom)\n {\n effect.SetResourceTexture2D(\"Grime\", \"res:/texture/global/black.dds\");\n return;\n }\n effect.SetParameter(\"GrimeWeight\", bloom.grimeWeight);\n effect.SetParameter(\"BloomBrightness\", newBloom ? 1 : bloom.brightness);\n effect.SetResourceTexture2D(\"Grime\", bloom.grimePath);\n\n if (debugMode !== BloomDebugMode.BLOOM_DEBUG_NONE)\n {\n throw new Error(\"Tr2PostProcessRenderer: the bloom debug arm of ApplyBloom is not ported yet.\");\n }\n }\n\n /** Tonemapping::ApplyDynamicExposure (cpp:350-366). */\n static applyDynamicExposure(dynamicExposure, effect, postprocessExposureAmount)\n {\n if (!dynamicExposure)\n {\n effect.SetOption(\"DYNAMIC_EXPOSURE_TOGGLE\", \"DYNAMIC_EXPOSURE_DISABLED\");\n effect.SetParameter(\"ExposureAdjust\", Math.pow(2, postprocessExposureAmount));\n return;\n }\n effect.SetParameter(\"ExposureMiddleValue\", dynamicExposure.middleValue);\n effect.SetParameter(\"ExposureInfluence\", dynamicExposure.influence);\n effect.SetParameter(\"MinExposure\", dynamicExposure.minExposure);\n effect.SetParameter(\"MaxExposure\", dynamicExposure.maxExposure);\n effect.SetOption(\"DYNAMIC_EXPOSURE_TOGGLE\", \"DYNAMIC_EXPOSURE_ENABLED\");\n effect.SetParameter(\"ExposureAdjust\", Math.pow(2, postprocessExposureAmount + dynamicExposure.adjustment));\n }\n\n /** Tonemapping::ApplyVignette (cpp:368-387). */\n static applyVignette(vignette, effect)\n {\n if (!vignette)\n {\n effect.SetOption(\"VIGNETTE_TOGGLE\", \"VIGNETTE_DISABLED\");\n return;\n }\n effect.SetResourceTexture2D(\"VignetteShape\", vignette.shapePath);\n effect.SetResourceTexture2D(\"VignetteDetail\", vignette.detailPath);\n effect.SetParameter(\"VignetteDetailSize\", [ vignette.detail1Size[0], vignette.detail1Size[1], vignette.detail2Size[0], vignette.detail2Size[1] ]);\n effect.SetParameter(\"VignetteDetailScroll\", [ vignette.detail1Scroll[0], vignette.detail1Scroll[1], vignette.detail2Scroll[0], vignette.detail2Scroll[1] ]);\n effect.SetParameter(\"VignetteColor\", [ vignette.color[0], vignette.color[1], vignette.color[2], vignette.color[3] ]);\n effect.SetParameter(\"VignetteIntensity\", [ vignette.intensity, vignette.opacity ]);\n effect.SetParameter(\"VignetteSineFrequency\", vignette.sineFrequency);\n effect.SetParameter(\"VignetteSineRange\", [ vignette.sineMinimum, vignette.sineMaximum ]);\n effect.SetOption(\"VIGNETTE_TOGGLE\", \"VIGNETTE_ENABLED\");\n }\n\n /** Tonemapping::ApplyDesatureate (cpp:389-400); Carbon's spelling is its own. */\n static applyDesaturate(desaturate, effect)\n {\n if (!desaturate)\n {\n effect.SetOption(\"DESATURATE_TOGGLE\", \"DESATURATE_DISABLED\");\n return;\n }\n effect.SetParameter(\"SaturationFactor\", desaturate.intensity);\n effect.SetOption(\"DESATURATE_TOGGLE\", \"DESATURATE_ENABLED\");\n }\n\n /** Tonemapping::ApplyFade (cpp:402-413). */\n static applyFade(fade, effect)\n {\n if (!fade)\n {\n effect.SetParameter(\"FadeAmount\", 0);\n return;\n }\n effect.SetParameter(\"FadeColor\", [ fade.color[0], fade.color[1], fade.color[2], fade.color[3] ]);\n effect.SetParameter(\"FadeAmount\", fade.intensity);\n }\n\n /** Tonemapping::ApplyLuts (cpp:415-431). */\n static applyLuts(luts, effect)\n {\n if (!luts.length)\n {\n effect.SetOption(\"LUT_TOGGLE\", \"LUT_DISABLED\");\n return;\n }\n effect.SetOption(\"LUT_TOGGLE\", \"LUT_ENABLED\");\n for (let i = 0; i < MAX_LUTS; i++)\n {\n effect.SetParameter(`LUTInfluence_${i}`, i < luts.length ? luts[i].influence : 0);\n effect.SetResourceTexture2D(`TexLUT_${i}`, i < luts.length ? luts[i].path : \"\");\n }\n }\n\n /**\n * Tonemapping::ApplyAcesTonemappingMethod (cpp:433-485). The matrices are\n * built in Carbon's row-major memory with an explicit row-by-column product,\n * which is what Carbon's `Matrix * Matrix` computes, so no operand order is\n * translated.\n */\n static applyAcesTonemappingMethod(tonemapping, effect)\n {\n effect.SetOption(\"TONE_MAPPING_METHOD\", \"TONE_MAPPING_ACES\");\n effect.SetOption(\"SWEETENER_TOGGLE\", tonemapping.useSweeteners ? \"SWEETENER_ENABLED\" : \"SWEETENER_DISABLED\");\n effect.SetParameter(\"AcesSlope\", tonemapping.slope);\n effect.SetParameter(\"AcesToe\", tonemapping.toe);\n effect.SetParameter(\"AcesShoulder\", tonemapping.shoulder);\n effect.SetParameter(\"AcesBlackClip\", tonemapping.blackClip);\n effect.SetParameter(\"AcesWhiteClip\", tonemapping.whiteClip);\n\n const acesInputMat = transposeRowMajor([\n 0.59719, 0.35458, 0.04823, 0, 0.07600, 0.90834, 0.01566, 0, 0.02840, 0.13383, 0.83777, 0, 0, 0, 0, 1\n ]);\n const acesOutputMat = transposeRowMajor([\n 1.60475, -0.53108, -0.07367, 0, -0.10208, 1.10813, -0.00605, 0, -0.00327, -0.07276, 1.07602, 0, 0, 0, 0, 1\n ]);\n const blueCorrect = [\n 0.9404372683, -0.0183068787, 0.0778696104, 0, 0.0083786969, 0.8286599939, 0.1629613092, 0, 0.0005471261, -0.0008833746, 1.0003362486, 0, 0, 0, 0, 1\n ];\n const blueCorrectInv = [\n 1.06318, 0.0233956, -0.0865726, 0, -0.0106337, 1.20632, -0.19569, 0, -0.000590887, 0.00105248, 0.999538, 0, 0, 0, 0, 1\n ];\n const blueCorrection = transposeRowMajor(lerpRowsToIdentity(blueCorrect, tonemapping.blueCorrection));\n const blueCorrectionInv = transposeRowMajor(lerpRowsToIdentity(blueCorrectInv, tonemapping.blueCorrection));\n const s = tonemapping.scale;\n const scale = [ s, 0, 0, 0, 0, s, 0, 0, 0, 0, s, 0, 0, 0, 0, 1 ];\n\n const input = transposeRowMajor(multiplyRowMajor(multiplyRowMajor(acesInputMat, blueCorrection), scale));\n const output = transposeRowMajor(multiplyRowMajor(blueCorrectionInv, acesOutputMat));\n\n effect.SetParameter(\"AcesInputMat\", Float32Array.from(input));\n effect.SetParameter(\"AcesOutputMat\", Float32Array.from(output));\n }\n\n /** Tonemapping::ApplyAgxTonemappingMethod (cpp:487-490). */\n static applyAgxTonemappingMethod(effect)\n {\n effect.SetOption(\"TONE_MAPPING_METHOD\", \"TONE_MAPPING_AGX\");\n }\n\n /** Tonemapping::ApplyUncharted2TonemappingMethod (cpp:492-503). */\n static applyUncharted2TonemappingMethod(tonemapping, effect)\n {\n effect.SetOption(\"TONE_MAPPING_METHOD\", \"TONE_MAPPING_UNCHARTED2\");\n effect.SetParameter(\"ShoulderStrength\", tonemapping.shoulderStrength);\n effect.SetParameter(\"LinearStrength\", tonemapping.linearStrength);\n effect.SetParameter(\"LinearAngle\", tonemapping.linearAngle);\n effect.SetParameter(\"ToeStrength\", tonemapping.toeStrength);\n effect.SetParameter(\"ToeNumerator\", tonemapping.toeNumerator);\n effect.SetParameter(\"ToeDenominator\", tonemapping.toeDenominator);\n effect.SetParameter(\"WhiteScale\", tonemapping.whiteScale);\n }\n\n /** Tonemapping::ApplyNoTonemappingMethod (cpp:505-508). */\n static applyNoTonemappingMethod(effect)\n {\n effect.SetOption(\"TONE_MAPPING_METHOD\", \"TONE_MAPPING_DISABLED\");\n }\n\n /** Frees a handle that still holds a resource, and answers null for reassignment. */\n static _release(gpuResourcePool, handle)\n {\n if (handle?.IsValid()) gpuResourcePool.Free(handle);\n return null;\n }\n\n /** The film grain shader, with its noise texture (cpp:620-624). */\n static _createGrainShader()\n {\n const effect = new Tr2Effect();\n\n effect.StartUpdate();\n effect.SetEffectPathName(PostProcessEffectPaths.FilmGrain);\n effect.AddResourceTexture2D(\"NoiseTexture\", \"res:/texture/global/film_grain_noise.png\");\n effect.EndUpdate();\n return effect;\n }\n\n static BloomDebugMode = BloomDebugMode;\n\n static Quality = Quality;\n\n}\n\n/** Carbon's `Transpose( Matrix )` on row-major memory. */\nfunction transposeRowMajor(m)\n{\n const out = new Array(16);\n for (let row = 0; row < 4; row++)\n {\n for (let column = 0; column < 4; column++) out[column * 4 + row] = m[row * 4 + column];\n }\n return out;\n}\n\n/** Carbon's `Matrix * Matrix` on row-major memory: out[r][c] = sum a[r][k] * b[k][c]. */\nfunction multiplyRowMajor(a, b)\n{\n const out = new Array(16).fill(0);\n for (let row = 0; row < 4; row++)\n {\n for (let column = 0; column < 4; column++)\n {\n let sum = 0;\n for (let k = 0; k < 4; k++) sum += a[row * 4 + k] * b[k * 4 + column];\n out[row * 4 + column] = sum;\n }\n }\n return out;\n}\n\n/**\n * The blue-correction rows lerped from identity by `amount`, as a row-major\n * matrix with identity fourth row and column (cpp:462-478).\n */\nfunction lerpRowsToIdentity(m, amount)\n{\n const out = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ];\n for (let row = 0; row < 3; row++)\n {\n for (let column = 0; column < 3; column++)\n {\n const identity = row === column ? 1 : 0;\n out[row * 4 + column] = identity + (m[row * 4 + column] - identity) * amount;\n }\n }\n return out;\n}\n\n// Carbon gives this a chooser (Tr2PostProcessRenderer_Blue.cpp:9) but never\n// registers it, so it takes no exposure metadata.\nblue.enums.RegisterEnum(\"trinity.Tr2PostProcessRenderer.BloomDebugMode\", BloomDebugMode, {\n source: \"trinity/trinity/PostProcess/Tr2PostProcessRenderer.h\", family: \"postProcess\", line: 112,\n chooserSource: \"trinity/trinity/PostProcess/Tr2PostProcessRenderer_Blue.cpp:9\",\n chooser: [\n { name: \"None\", value: BloomDebugMode.BLOOM_DEBUG_NONE, description: \"No Debug\" },\n { name: \"All\", value: BloomDebugMode.BLOOM_DEBUG_ALL, description: \"Show all steps\" },\n { name: \"Step1\", value: BloomDebugMode.BLOOM_DEBUG_STEP1, description: \"Show step 1\" },\n { name: \"Step2\", value: BloomDebugMode.BLOOM_DEBUG_STEP2, description: \"Show step 2\" },\n { name: \"Step3\", value: BloomDebugMode.BLOOM_DEBUG_STEP3, description: \"Show step 3\" },\n { name: \"Step4\", value: BloomDebugMode.BLOOM_DEBUG_STEP4, description: \"Show step 4\" },\n { name: \"Step5\", value: BloomDebugMode.BLOOM_DEBUG_STEP5, description: \"Show step 5\" },\n { name: \"Step6\", value: BloomDebugMode.BLOOM_DEBUG_STEP6, description: \"Show step 6\" }\n ]\n});\n"],"names":["RENDER_TARGET","Tr2GpuUsage","SHADER_RESOURCE","MAX_LUTS","HISTOGRAM_TILE_SIZE_X","HISTOGRAM_TILE_SIZE_Y","NUM_TILES_PER_THREAD_GROUP","CAS_THREAD_GROUP_WORK_REGION_DIM","effectAt","path","options","effect","Tr2Effect","SetEffectPathName","StartUpdate","option","value","Object","entries","SetOption","EndUpdate","_Tr2PostProcessRender","_identity","Tr2PostProcessRenderer","CjsModel","e","_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","_initProto","c","_initClass","_applyDecs","type","define","className","family","edit","notify","readwrite","int32","enum","objectRef","boolean","carbon","method","impl","implemented","adapted","notImplemented","bloomDebugMode","BloomDebugMode","BLOOM_DEBUG_NONE","quality","Quality","HIGH","tonemappingEffect","PostProcessEffectPaths","ToneMapping","_reactiveMaskEffect","ReactiveMask","_transparencyMaskEffect","TransparencyMask","bloomHighPassFilter","HighPassFilter","_downSamplerLuminancePreserve","Downsample","LUNINANCE_PRESERVE","_downSampler","_upsamplerHorizontal","Upsample","_upsamplerVertical","UPSAMPLING_STEP","dynamicExposureToTextureShader","ExposureToTexture","dynamicExposureCreateHistogramShader","CreateHistograms","dynamicExposureMergeHistogramShader","MergeHistograms","dynamicExposureMeasureExposureShader","MeasureExposure","_fidelityFxCasShader","CAS","_downsampleDepthEffect","DownsampleDepth","fogColorEffect","EnvironmentFogColor","fogCompositeEffect","EnvironmentFogComposit","depthOfFieldBokehBlurShader","Bokeh","BOKEH_PIXEL_METHOD","depthOfFieldBokehFillShader","_depthOfFieldBokehTAAShader","BokehTAA","depthOfFieldCoCShader","CircleOfConfusion","godrayEffect","Godrays","signalLossEffect","SignalLoss","_grainShader","_createGrainShader","taaEffect","TAA","_taaCopyEffect","TAACopy","bloomDebugShader","_dynamicExposureDebugShader","useNewBloom","_blurEffects","Map","_bloomConstantBuffer","_taaFrameCounter","_bokehFrameCounter","GetPostProcessingQuality","SetPostProcessingQuality","Execute","destination","sourceBuffer","depthMap","velocity","opaqueColor","scene","upscalingContext","gpuResourcePool","renderContext","renderer","IsValid","console","error","release","handle","_release","source","Get","renderSize","width","GetWidth","height","GetHeight","displaySize","postProcess","GetPostProcess","esm","GetEffectStateManager","al","GetRenderContextAL","destinationFormat","destinationFormatOf","ApplyStandardStates","RenderingMode","RM_FULLSCREEN","PushRenderTarget","PushDepthStencilBuffer","upscalingInfo","GetUpscalingInfo","GetID","INVALID_UPSCALING_CONTEXT_ID","upscalingEnabled","technique","UpscalingTechnique","NONE","sharpeningRequired","hasSharpening","displayWidth","displayHeight","output","_Temp","nonMsaaSource","GetFormat","Resolve","dynamicExposure","histogramBuffer","upscaledSource","bloomTexture","exposure","genericEffect","GetGenericEffectIfAvailable","RenderGenericEffect","fog","GetFogIfAvailable","RenderFog","godrays","GetGodRaysIfAvailable","RenderGodRays","dof","GetDepthOfFieldIfAvailable","temporal","GetTaaIfAvailable","RenderDepthOfField","upscalingAmount","GetDynamicExposureIfAvailable","taa","RenderTaa","RenderDynamicExposure","debug","SetHudLessTexture","RenderUpscaling","GetReprojectionMatrix","ApplyUpscalingToPerFrameData","GetBlackTexture","bloom","GetBloomIfAvailable","RenderBloom","sharpened","RenderSharpening","GetExposureBuffer","SetParameter","filmGrain","GetFilmGrainIfAvailable","tonemappedOutput","RenderTonemapping","SetRenderTarget","RenderFilmGrain","DrawTexture","signalLoss","GetSignalLossIfAvailable","RenderSignalLoss","RenderDynamicExposureDebug","PopDepthStencilBuffer","PopRenderTarget","SetupExposureConversion","enable","middleValue","input","texture","format","getUavCompatibleFormat","UNORDERED_ACCESS","renderWidth","renderHeight","casIntensity","const0","const1","casSetup","dispatchX","Math","floor","dispatchY","Tr2Renderer","runComputeShader","dest","postprocess","EveSpaceScene","eveSpaceSceneGammaBrightness","applyColorCorrection","GetColorCorrectionIfAvailable","applyBloom","applyDynamicExposure","exposureAdjustment","applyVignette","GetVignetteIfAvailable","applyDesaturate","GetDesaturateIfAvailable","applyFade","GetFadeIfAvailable","luts","GetAvilableSortedLuts","applyLuts","tonemapping","GetTonemappingIfAvailable","applyNoTonemappingMethod","Tr2PPTonemappingEffect","Aces","applyAcesTonemappingMethod","AgX","applyAgxTonemappingMethod","applyUncharted2TonemappingMethod","drawInto","Tr2LoadAction","DONT_CARE","src","GetEffect","shader","colored","colorAmount","grainSize","intensity","grainDensity","grainContrast","brightnessModifier","DrawScreenQuad","strength","material","_gpuResourcePool","_renderContext","_histogramBuffer","Error","GetPersistentBuffer","Tr2BufferDescriptionAL","FromFormat","PixelFormat","PIXEL_FORMAT_R32_FLOAT","Tr2CpuUsage","READ","Float32Array","GetPersistentTexture","TextureType","TEX_TYPE_2D","depth","mipCount","PIXEL_FORMAT_B8G8R8A8_UNORM","gpuUsage","initialData","Tr2SubresourceData","Uint32Array","Blur","blurContext","hash","Hash","effects","get","horizontal","vertical","vec2","fromValues","blurTypeOption","BlurContext","getBlurTypeOptionValue","blurChannelOption","getBlurChannelOptionValue","channel","processOption","getProcessTypeOptionValue","process","getFinalizeTypeOptionValue","BlurFinalize","BF_None","finalize","set","rt2","second","rt1","destinationSize","hasDynamicExposure","exposureDependant","exposureDependency","highPass","max","luminanceThreshold","luminanceScale","scaledSize","MAX_BLOOM_STEPS","Tr2PPBloomEffect","black","minDim","min","currentSize","downsampleTexture","Array","fill","upsampleTexture","result","i","trunc","size","pixelShaderMask","ShaderType","PIXEL_SHADER","perObjectRegister","GetPerObjectPSStartRegister","lastRt","rt","downsampleInfo","FillAndSetConstants","_BloomConstantBuffer","byteLength","tintScale","brightness","directionalWeight","abs","gaussianBytes","Uint8Array","GaussianData","byteSize","stepSize","stepTint","currentMip","currentUpsampled","radiusInPixels","sizeScale","invTexelSizeX","gaussianOutput","calculateGaussianPassParameters","vec3","pack","lastHandle","invTexelSizeY","tint","vec4","scale","create","DownSampleDepth","Clear","clearColor","color","godRayColor","grFactors","SetResourceTexture2D","noiseTexturePath","RM_ALPHA_ADDITIVE","drawTextureInto","LOAD","tilesX","tilesY","localHistogramCount","uav","localHistograms","GetTempBuffer","PIXEL_FORMAT_R32G32B32A32_UINT","histogram","PIXEL_FORMAT_R32_UINT","merge","measure","zero","ClearUav","log","minLuminance","maxLuminance","minBrightness","maxBrightness","mergeHistogramXDim","increaseSpeed","decreaseSpeed","minExposure","maxExposure","colorEffect","nebulaInfluence","nebulaBlur","originalBrightenOnly","colorInfluence","blurred","composite","areaSize","areaScale","areaCenter","totalAmount","totalPower","backgroundOcclusion","brightnessThreshold0","brightnessThreshold1","brightnessAdjustmentAmount","blendDistance0","blendBias0","blendAmount0","blendPower0","blendDistance1","blendBias1","blendAmount1","blendPower1","blendDistance2","blendBias2","blendAmount2","blendPower2","clear","clearUav","persistent","name","initialize","accumulationBuffer0","PIXEL_FORMAT_R16G16B16A16_UNORM","accumulationBuffer1","cooldownBuffer","frameCount","copy","each","pow","adjustment","influence","earlyOutThreshold","getTaaQualityShaderOptionValue","getTaaDebugShaderOptionValue","MAX_WEIGHT","fround","depthOfField","shape","GetBokehShapeString","cocShader","cocSize","cocScale","coc","blur","focalDistance","focalLength","foregroundBlurNeeded","PIXEL_FORMAT_R8_UNORM","coc2","PIXEL_FORMAT_R8G8_UNORM","BlurType","BlurChannel","BlurProcess","createBlurContext","BT_Big","BC_r","BP_Maximum","BF_MaxOfAllChannels","adjustedScale","useTAAFriendlyBokeh","GOLDEN_ANGLE","PI","sqrt","angle","samplesPerPixel","bokeh","blend","CreateConstantBuffer","GetTempTexture","loadAction","RenderPassHint","Tr2ColorAttachment","Tr2StoreAction","STORE","side","Tr2PPTaaEffect","TAA_MEDIUM","TAA_HIGH","Debug","TAA_DEBUG_MOTION_VECTORS","TAA_DEBUG_EARLY_OUT_MASK","PIXEL_FORMAT_B8G8R8X8_UNORM","PIXEL_FORMAT_R8G8B8A8_UNORM","GetDefaultBackBuffer","GetBackBufferFormat","sharpness","inputWidth","inputHeight","outputWidth","outputHeight","bits1","buffer","saturated","sharp","num","toHalfFloat","colorCorrection","whiteTemperature","whiteTint","colorSaturation","colorContrast","colorGamma","colorGain","colorOffset","newBloom","debugMode","grimeWeight","grimePath","postprocessExposureAmount","vignette","shapePath","detailPath","detail1Size","detail2Size","detail1Scroll","detail2Scroll","opacity","sineFrequency","sineMinimum","sineMaximum","desaturate","fade","length","useSweeteners","slope","toe","shoulder","blackClip","whiteClip","acesInputMat","transposeRowMajor","acesOutputMat","blueCorrect","blueCorrectInv","blueCorrection","lerpRowsToIdentity","blueCorrectionInv","s","multiplyRowMajor","from","shoulderStrength","linearStrength","linearAngle","toeStrength","toeNumerator","toeDenominator","whiteScale","Free","FilmGrain","AddResourceTexture2D","constructor","m","out","row","column","a","b","sum","k","amount","identity","blue","enums","RegisterEnum","line","chooserSource","chooser","description","BLOOM_DEBUG_ALL","BLOOM_DEBUG_STEP1","BLOOM_DEBUG_STEP2","BLOOM_DEBUG_STEP3","BLOOM_DEBUG_STEP4","BLOOM_DEBUG_STEP5","BLOOM_DEBUG_STEP6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2PostProcessRenderer.js","sources":["../../../../src/trinity/postProcess/Tr2PostProcessRenderer.js"],"sourcesContent":["// Carbon source: trinity/trinity/PostProcess/Tr2PostProcessRenderer.h\n// Carbon source: trinity/trinity/PostProcess/Tr2PostProcessRenderer.cpp\n// Carbon source: trinity/trinity/PostProcess/Tr2PostProcessRenderer_Blue.cpp\n//\n// The post-process chain Carbon runs between the scene and the back buffer.\n// Carbon's anonymous-namespace helpers (DrawInto, TEMP_PARAM,\n// GetUavCompatibleFormat, the Tonemapping:: appliers) are statics here.\n//\n// PASSES NOT PORTED YET throw by name from their own method, and each runs\n// only when the scene's Tr2PostProcess2 enables that effect, so a scene\n// without them runs the chain end to end: copy, sharpening, tonemapping.\nimport { carbon, impl, edit, type } from \"#schema\";\nimport { CjsModel } from \"#model\";\nimport { BloomDebugMode, Quality } from \"../generated/postProcess/enums.js\";\nimport { blue, EnumRegistrationType } from \"#blue\";\nimport { num } from \"#math/num\";\nimport { Tr2ColorAttachment, Tr2BufferDescriptionAL, Tr2SubresourceData } from \"#trinityal\";\nimport {\n INVALID_UPSCALING_CONTEXT_ID,\n PixelFormat,\n ShaderType,\n TextureType,\n Tr2CpuUsage,\n Tr2GpuUsage,\n Tr2LoadAction,\n Tr2StoreAction,\n UpscalingTechnique\n} from \"#consts/render-context\";\nimport { RenderingMode } from \"#consts/graphics\";\nimport { PostProcessEffectPaths } from \"#consts/effectPaths\";\nimport { Tr2Effect } from \"../shader/Tr2Effect.js\";\nimport { Tr2Renderer } from \"../core/Tr2Renderer.js\";\nimport { EveSpaceScene } from \"../eve/scene/EveSpaceScene.js\";\nimport { Tr2PPTonemappingEffect } from \"./effect/Tr2PPTonemappingEffect.js\";\nimport { Tr2PPTaaEffect } from \"./effect/Tr2PPTaaEffect.js\";\nimport { BlurContext } from \"./BlurContext.js\";\nimport { GaussianData } from \"./GaussianData.js\";\nimport { Tr2PPBloomEffect } from \"./effect/Tr2PPBloomEffect.js\";\nimport { FillAndSetConstants } from \"../core/Tr2RenderUtils.js\";\nimport { vec2 } from \"#math/vec2\";\nimport { vec3 } from \"#math/vec3\";\nimport { vec4 } from \"#math/vec4\";\nimport { float32FromBits } from \"#utils/bytes\";\nimport \"./effect/Tr2PPEffect.js\";\n\n/** `RENDER_TARGET` in Carbon's anonymous namespace (cpp:150). */\nconst RENDER_TARGET = Tr2GpuUsage.RENDER_TARGET | Tr2GpuUsage.SHADER_RESOURCE;\n\n/** `MAX_LUTS` (Tr2PostProcessRenderer.h). */\nconst MAX_LUTS = 4;\n\n/** Carbon's histogram tiling for dynamic exposure (cpp:33-35). */\nconst HISTOGRAM_TILE_SIZE_X = 16;\nconst HISTOGRAM_TILE_SIZE_Y = 16;\nconst NUM_TILES_PER_THREAD_GROUP = 256;\n\n/** Carbon's thread-group edge for the CAS dispatch (cpp:865). */\nconst CAS_THREAD_GROUP_WORK_REGION_DIM = 16;\n\n/** Builds one effect pointed at its path, with options set inside Start/EndUpdate. */\nfunction effectAt(path, options = null)\n{\n const effect = new Tr2Effect();\n\n if (!options)\n {\n effect.SetEffectPathName(path);\n return effect;\n }\n\n effect.StartUpdate();\n effect.SetEffectPathName(path);\n for (const [ option, value ] of Object.entries(options)) effect.SetOption(option, value);\n effect.EndUpdate();\n return effect;\n}\n\n\n/**\n * Carbon's post-process renderer: the chain from the scene's colour buffer to\n * the back buffer, driven by the scene's combined Tr2PostProcess2.\n */\n@type.define({ className: \"Tr2PostProcessRenderer\", family: \"postProcess\" })\nexport class Tr2PostProcessRenderer extends CjsModel\n{\n @edit.notify\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.Tr2PostProcessRenderer.BloomDebugMode\")\n bloomDebugMode = BloomDebugMode.BLOOM_DEBUG_NONE;\n\n @edit.notify\n @edit.readwrite\n @type.int32\n @type.enum(\"trinity.PostProcess.Quality\")\n quality = Quality.HIGH;\n\n // THE EFFECTS CARBON'S CONSTRUCTOR CREATES (cpp:537-635), in its order.\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n tonemappingEffect = effectAt(PostProcessEffectPaths.ToneMapping);\n\n _reactiveMaskEffect = effectAt(PostProcessEffectPaths.ReactiveMask);\n\n _transparencyMaskEffect = effectAt(PostProcessEffectPaths.TransparencyMask);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n bloomHighPassFilter = effectAt(PostProcessEffectPaths.HighPassFilter);\n\n _downSamplerLuminancePreserve = effectAt(PostProcessEffectPaths.Downsample, { LUNINANCE_PRESERVE: \"LUNINANCE_PRESERVE_ON\" });\n\n _downSampler = effectAt(PostProcessEffectPaths.Downsample, { LUNINANCE_PRESERVE: \"LUNINANCE_PRESERVE_OFF\" });\n\n _upsamplerHorizontal = effectAt(PostProcessEffectPaths.Upsample);\n\n _upsamplerVertical = effectAt(PostProcessEffectPaths.Upsample, { UPSAMPLING_STEP: \"UPSAMPLING_STEP_SECOND\" });\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n dynamicExposureToTextureShader = effectAt(PostProcessEffectPaths.ExposureToTexture);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n dynamicExposureCreateHistogramShader = effectAt(PostProcessEffectPaths.CreateHistograms);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n dynamicExposureMergeHistogramShader = effectAt(PostProcessEffectPaths.MergeHistograms);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n dynamicExposureMeasureExposureShader = effectAt(PostProcessEffectPaths.MeasureExposure);\n\n _fidelityFxCasShader = effectAt(PostProcessEffectPaths.CAS);\n\n _downsampleDepthEffect = effectAt(PostProcessEffectPaths.DownsampleDepth);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n fogColorEffect = effectAt(PostProcessEffectPaths.EnvironmentFogColor);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n fogCompositeEffect = effectAt(PostProcessEffectPaths.EnvironmentFogComposit);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n depthOfFieldBokehBlurShader = effectAt(PostProcessEffectPaths.Bokeh, { BOKEH_PIXEL_METHOD: \"BOKEH_PIXEL_AVERAGE\" });\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n depthOfFieldBokehFillShader = effectAt(PostProcessEffectPaths.Bokeh, { BOKEH_PIXEL_METHOD: \"BOKEH_PIXEL_MAX\" });\n\n _depthOfFieldBokehTAAShader = effectAt(PostProcessEffectPaths.BokehTAA);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n depthOfFieldCoCShader = effectAt(PostProcessEffectPaths.CircleOfConfusion);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n godrayEffect = effectAt(PostProcessEffectPaths.Godrays);\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n signalLossEffect = effectAt(PostProcessEffectPaths.SignalLoss);\n\n _grainShader = Tr2PostProcessRenderer._createGrainShader();\n\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n taaEffect = effectAt(PostProcessEffectPaths.TAA);\n\n _taaCopyEffect = effectAt(PostProcessEffectPaths.TAACopy);\n\n /** Created on first use by RenderBloomDebug (cpp:1115-1144). */\n @edit.readwrite\n @type.objectRef(\"Tr2Effect\")\n bloomDebugShader = null;\n\n /** Created while the exposure debug is on (cpp:1256-1260), dropped when off. */\n _dynamicExposureDebugShader = null;\n\n /** m_useNewBloom, from g_newBloom, which defaults true (cpp:23). */\n @edit.notify\n @edit.readwrite\n @type.boolean\n useNewBloom = true;\n\n /** m_blurEffects: the horizontal/vertical Blur.fx pair per BlurContext hash (cpp:897-931). */\n _blurEffects = new Map();\n\n /** m_bloomConstantBuffer (h:166): created empty on first use, sized by FillAndSetConstants. */\n _bloomConstantBuffer = null;\n\n _taaFrameCounter = 0;\n\n _bokehFrameCounter = 0;\n\n /** Returns the active Carbon post-process quality. */\n @carbon.method\n @impl.implemented\n GetPostProcessingQuality()\n {\n return this.quality;\n }\n\n /** Selects the active Carbon post-process quality. */\n @carbon.method\n @impl.implemented\n SetPostProcessingQuality(quality)\n {\n this.quality = quality;\n }\n\n /**\n * Runs the post-process chain from the scene's colour buffer into\n * `destination` (cpp:648-849). Every step Carbon gates on an effect of the\n * scene's post process is gated the same way.\n *\n * Adapted: Carbon reaches the blitter through the static Tr2Renderer; ours\n * is an instance, so the renderer is passed in, as for Tr2Denoiser. Carbon's\n * pool handles release themselves when overwritten or out of scope; here\n * each is freed explicitly at the same point. The upscaling query goes to\n * the render context's AL, which Carbon's Tr2RenderContext inherits.\n *\n * @param {object} destination The back buffer or target texture.\n * @param {GpuResourceHandle} sourceBuffer The scene colour, owned from here on.\n * @param {GpuResourceHandle|null} depthMap The scene depth.\n * @param {GpuResourceHandle|null} velocity The velocity map, if rendered.\n * @param {GpuResourceHandle|null} opaqueColor The opaque colour copy, if rendered.\n * @param {EveSpaceScene} scene The scene whose post process drives the chain.\n * @param {object|null} upscalingContext The upscaling context, if any.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n Execute(destination, sourceBuffer, depthMap, velocity, opaqueColor, scene, upscalingContext, gpuResourcePool, renderContext, renderer)\n {\n if (!sourceBuffer?.IsValid())\n {\n console.error(\"Tr2PostProcessRenderer::Execute: Source buffer is invalid!\");\n return;\n }\n\n const release = handle => Tr2PostProcessRenderer._release(gpuResourcePool, handle);\n const source = sourceBuffer.Get();\n const renderSize = { width: source.GetWidth(), height: source.GetHeight() };\n let displaySize = renderSize;\n\n const postProcess = scene.GetPostProcess();\n const esm = renderContext.GetEffectStateManager();\n const al = renderContext.GetRenderContextAL();\n const destinationFormat = Tr2PostProcessRenderer.destinationFormatOf(destination, al);\n\n esm.ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n esm.PushRenderTarget();\n esm.PushDepthStencilBuffer(null);\n\n const upscalingInfo = al.GetUpscalingInfo(upscalingContext ? upscalingContext.GetID() : INVALID_UPSCALING_CONTEXT_ID);\n const upscalingEnabled = upscalingInfo.technique !== UpscalingTechnique.NONE;\n const sharpeningRequired = !upscalingInfo.hasSharpening;\n\n if (upscalingEnabled) displaySize = { width: upscalingInfo.displayWidth, height: upscalingInfo.displayHeight };\n\n let output = this._Temp(gpuResourcePool, \"Final Result\", displaySize, destinationFormat, RENDER_TARGET);\n\n // Always copy (cpp:691-693).\n let nonMsaaSource = this._Temp(gpuResourcePool, \"Pre-upscaling Composite\", renderSize, source.GetFormat(), RENDER_TARGET);\n source.Resolve(nonMsaaSource.Get(), renderContext);\n\n let dynamicExposure = null;\n let histogramBuffer = null;\n let upscaledSource = null;\n let bloomTexture = null;\n let exposure = null;\n\n try\n {\n if (postProcess)\n {\n const genericEffect = postProcess.GetGenericEffectIfAvailable(this.quality);\n if (genericEffect) this.RenderGenericEffect(nonMsaaSource.Get(), source, renderContext, genericEffect, renderer);\n\n const fog = postProcess.GetFogIfAvailable(this.quality);\n if (fog) this.RenderFog(nonMsaaSource.Get(), source, gpuResourcePool, renderContext, fog, renderer);\n }\n sourceBuffer = release(sourceBuffer);\n\n if (postProcess)\n {\n const godrays = postProcess.GetGodRaysIfAvailable(this.quality);\n if (godrays) this.RenderGodRays(nonMsaaSource.Get(), depthMap?.Get() ?? null, gpuResourcePool, renderContext, godrays, renderer);\n\n const dof = postProcess.GetDepthOfFieldIfAvailable(this.quality);\n if (dof)\n {\n const temporal = upscalingInfo.temporal || postProcess.GetTaaIfAvailable(this.quality) !== null;\n this.RenderDepthOfField(nonMsaaSource.Get(), gpuResourcePool, renderContext, dof, temporal, upscalingInfo.upscalingAmount, renderer);\n }\n\n dynamicExposure = postProcess.GetDynamicExposureIfAvailable(this.quality);\n const taa = postProcess.GetTaaIfAvailable(this.quality);\n\n if (taa && !upscalingInfo.temporal)\n {\n this.RenderTaa(nonMsaaSource.Get(), velocity?.Get() ?? null, opaqueColor?.Get() ?? null, gpuResourcePool, renderContext, taa, dynamicExposure, renderer);\n if (!upscalingContext)\n {\n velocity = release(velocity);\n opaqueColor = release(opaqueColor);\n }\n }\n else\n {\n this._taaFrameCounter = 0;\n }\n\n if (dynamicExposure)\n {\n histogramBuffer = this.RenderDynamicExposure(nonMsaaSource.Get(), gpuResourcePool, renderContext, dynamicExposure);\n if (!dynamicExposure.debug) histogramBuffer = release(histogramBuffer);\n }\n }\n\n if (upscalingContext && upscalingInfo.temporal)\n {\n upscalingContext.SetHudLessTexture(output.Get());\n upscaledSource = this.RenderUpscaling(nonMsaaSource.Get(), depthMap?.Get() ?? null, velocity?.Get() ?? null, opaqueColor?.Get() ?? null, scene.GetReprojectionMatrix(), gpuResourcePool, renderContext, upscalingContext, dynamicExposure);\n nonMsaaSource = release(nonMsaaSource);\n depthMap = release(depthMap);\n velocity = release(velocity);\n opaqueColor = release(opaqueColor);\n scene.ApplyUpscalingToPerFrameData(displaySize.width, displaySize.height, renderContext);\n }\n else\n {\n upscaledSource = nonMsaaSource;\n nonMsaaSource = null;\n if (!upscalingContext)\n {\n depthMap = release(depthMap);\n velocity = release(velocity);\n opaqueColor = release(opaqueColor);\n }\n }\n\n // After dynamic exposure, since bloom can be exposure dependent (cpp:760).\n bloomTexture = this.GetBlackTexture(gpuResourcePool);\n if (postProcess)\n {\n const bloom = postProcess.GetBloomIfAvailable(this.quality);\n if (bloom)\n {\n release(bloomTexture);\n bloomTexture = this.RenderBloom(upscaledSource, gpuResourcePool, renderContext, bloom, dynamicExposure, renderer);\n }\n }\n\n const sharpened = this.RenderSharpening(sharpeningRequired, upscaledSource, gpuResourcePool, renderContext);\n if (sharpened !== upscaledSource)\n {\n release(upscaledSource);\n upscaledSource = sharpened;\n }\n\n // TEMP_PARAM (cpp:771-774): set now, reset to empty when Execute ends.\n exposure = this.GetExposureBuffer(gpuResourcePool);\n this.tonemappingEffect.SetParameter(\"BlitCurrent\", bloomTexture.Get());\n this.tonemappingEffect.SetParameter(\"BlitOriginal\", upscaledSource.Get());\n this.tonemappingEffect.SetParameter(\"Exposure\", exposure.Get());\n this.tonemappingEffect.SetParameter(\"Histogram\", histogramBuffer?.Get() ?? null);\n\n const filmGrain = postProcess ? postProcess.GetFilmGrainIfAvailable(this.quality) : null;\n\n if (!upscalingInfo.temporal || filmGrain)\n {\n if (upscalingContext && !upscalingInfo.temporal)\n {\n const tonemappedOutput = this._Temp(gpuResourcePool, \"Tonemapping Result\", renderSize, destinationFormat, RENDER_TARGET);\n\n this.RenderTonemapping(tonemappedOutput.Get(), postProcess, renderContext, renderer);\n\n release(output);\n output = this.RenderUpscaling(tonemappedOutput.Get(), depthMap?.Get() ?? null, velocity?.Get() ?? null, opaqueColor?.Get() ?? null, scene.GetReprojectionMatrix(), gpuResourcePool, renderContext, upscalingContext, dynamicExposure);\n release(tonemappedOutput);\n depthMap = release(depthMap);\n velocity = release(velocity);\n opaqueColor = release(opaqueColor);\n scene.ApplyUpscalingToPerFrameData(displaySize.width, displaySize.height, renderContext);\n }\n else\n {\n this.RenderTonemapping(output.Get(), postProcess, renderContext, renderer);\n }\n\n esm.SetRenderTarget(0, destination);\n if (filmGrain)\n {\n this.RenderFilmGrain(output.Get(), renderContext, filmGrain, renderer);\n }\n else\n {\n renderer.DrawTexture(renderContext, output.Get());\n }\n }\n else\n {\n this.RenderTonemapping(output.Get(), postProcess, renderContext, renderer);\n renderer.DrawTexture(renderContext, output.Get());\n }\n\n if (postProcess)\n {\n const signalLoss = postProcess.GetSignalLossIfAvailable(this.quality);\n if (signalLoss) this.RenderSignalLoss(output.Get(), renderContext, signalLoss, renderer);\n }\n\n this.RenderDynamicExposureDebug(gpuResourcePool, renderContext, dynamicExposure, histogramBuffer?.Get() ?? null);\n }\n finally\n {\n this.tonemappingEffect.SetParameter(\"BlitCurrent\", null);\n this.tonemappingEffect.SetParameter(\"BlitOriginal\", null);\n this.tonemappingEffect.SetParameter(\"Exposure\", null);\n this.tonemappingEffect.SetParameter(\"Histogram\", null);\n\n for (const handle of [ output, nonMsaaSource, upscaledSource, bloomTexture, exposure, histogramBuffer, sourceBuffer, depthMap, velocity, opaqueColor ])\n {\n release(handle);\n }\n\n esm.PopDepthStencilBuffer();\n esm.PopRenderTarget();\n }\n }\n\n /**\n * Carbon SetupExposureConversion (cpp:851-857).\n *\n * @param {boolean} enable Whether exposure conversion runs.\n * @param {number} middleValue The exposure middle value.\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n SetupExposureConversion(enable, middleValue)\n {\n if (enable) this.dynamicExposureToTextureShader.SetParameter(\"ExposureMiddleValue\", middleValue);\n }\n\n /**\n * AMD CAS sharpening (cpp:859-891): a compute pass into a UAV-compatible copy,\n * or the input unchanged when the upscaler already sharpens.\n *\n * @param {boolean} enable Whether to sharpen.\n * @param {GpuResourceHandle} input The texture to sharpen.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @returns {GpuResourceHandle} The sharpened texture, or `input`.\n */\n @carbon.method\n @impl.implemented\n RenderSharpening(enable, input, gpuResourcePool, renderContext)\n {\n if (!enable) return input;\n\n const texture = input.Get();\n const format = Tr2PostProcessRenderer.getUavCompatibleFormat(texture.GetFormat());\n const output = this._Temp(\n gpuResourcePool,\n \"Sharpening Output\",\n { width: texture.GetWidth(), height: texture.GetHeight() },\n format,\n RENDER_TARGET | Tr2GpuUsage.UNORDERED_ACCESS\n );\n const renderWidth = output.Get().GetWidth();\n const renderHeight = output.Get().GetHeight();\n const casIntensity = 0;\n const { const0, const1 } = Tr2PostProcessRenderer.casSetup(casIntensity, renderWidth, renderHeight, renderWidth, renderHeight);\n\n this._fidelityFxCasShader.SetParameter(\"const0\", const0);\n this._fidelityFxCasShader.SetParameter(\"const1\", const1);\n this._fidelityFxCasShader.SetParameter(\"InputTexture\", texture);\n this._fidelityFxCasShader.SetParameter(\"OutputTexture\", output.Get());\n\n try\n {\n const dispatchX = Math.floor((renderWidth + (CAS_THREAD_GROUP_WORK_REGION_DIM - 1)) / CAS_THREAD_GROUP_WORK_REGION_DIM);\n const dispatchY = Math.floor((renderHeight + (CAS_THREAD_GROUP_WORK_REGION_DIM - 1)) / CAS_THREAD_GROUP_WORK_REGION_DIM);\n\n Tr2Renderer.runComputeShader(this._fidelityFxCasShader, dispatchX, dispatchY, 1, renderContext);\n }\n finally\n {\n this._fidelityFxCasShader.SetParameter(\"InputTexture\", null);\n this._fidelityFxCasShader.SetParameter(\"OutputTexture\", null);\n }\n\n return output;\n }\n\n /**\n * Tonemapping (cpp:1531-1583): stamps every effect of the post process onto\n * the tonemapping shader, picks the method, and draws it into `dest`.\n *\n * @param {object} dest The texture to render into.\n * @param {Tr2PostProcess2|null} postprocess The active post process.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderTonemapping(dest, postprocess, renderContext, renderer)\n {\n const effect = this.tonemappingEffect;\n\n effect.SetParameter(\"OutputGamma\", EveSpaceScene.eveSpaceSceneGammaBrightness);\n\n Tr2PostProcessRenderer.applyColorCorrection(postprocess ? postprocess.GetColorCorrectionIfAvailable(this.quality) : null, effect);\n Tr2PostProcessRenderer.applyBloom(postprocess ? postprocess.GetBloomIfAvailable(this.quality) : null, effect, this.useNewBloom, this.bloomDebugMode);\n Tr2PostProcessRenderer.applyDynamicExposure(postprocess ? postprocess.GetDynamicExposureIfAvailable(this.quality) : null, effect, postprocess ? postprocess.exposureAdjustment : 0);\n Tr2PostProcessRenderer.applyVignette(postprocess ? postprocess.GetVignetteIfAvailable(this.quality) : null, effect);\n Tr2PostProcessRenderer.applyDesaturate(postprocess ? postprocess.GetDesaturateIfAvailable(this.quality) : null, effect);\n Tr2PostProcessRenderer.applyFade(postprocess ? postprocess.GetFadeIfAvailable(this.quality) : null, effect);\n\n const luts = [];\n if (postprocess) postprocess.GetAvilableSortedLuts(luts);\n Tr2PostProcessRenderer.applyLuts(luts, effect);\n\n const tonemapping = postprocess ? postprocess.GetTonemappingIfAvailable() : null;\n if (!tonemapping)\n {\n Tr2PostProcessRenderer.applyNoTonemappingMethod(effect);\n }\n else if (tonemapping.method === Tr2PPTonemappingEffect.Aces)\n {\n Tr2PostProcessRenderer.applyAcesTonemappingMethod(tonemapping, effect);\n }\n else if (tonemapping.method === Tr2PPTonemappingEffect.AgX)\n {\n Tr2PostProcessRenderer.applyAgxTonemappingMethod(effect);\n }\n else\n {\n Tr2PostProcessRenderer.applyUncharted2TonemappingMethod(tonemapping, effect);\n }\n\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n Tr2PostProcessRenderer.drawInto(dest, Tr2LoadAction.DONT_CARE, effect, renderContext, renderer);\n }\n\n /**\n * A post process's own generic effect over the scene (cpp:1585-1596).\n *\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderGenericEffect(dest, src, renderContext, genericEffect, renderer)\n {\n const effect = genericEffect.GetEffect();\n if (!effect) return;\n\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n effect.SetParameter(\"Blit\", src);\n try\n {\n Tr2PostProcessRenderer.drawInto(dest, Tr2LoadAction.DONT_CARE, effect, renderContext, renderer);\n }\n finally\n {\n effect.SetParameter(\"Blit\", null);\n }\n }\n\n /**\n * Film grain over the final image (cpp:1392-1404).\n *\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderFilmGrain(dest, renderContext, filmGrain, renderer)\n {\n const shader = this._grainShader;\n\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n shader.SetParameter(\"GrainColorAmount\", filmGrain.colored ? filmGrain.colorAmount : 0);\n shader.SetParameter(\"GrainSize\", filmGrain.grainSize);\n shader.SetParameter(\"GrainIntensity\", filmGrain.intensity);\n shader.SetParameter(\"GrainThreshold\", 1 - filmGrain.grainDensity);\n shader.SetParameter(\"GrainEdge\", 1 / (filmGrain.grainContrast * filmGrain.grainSize));\n shader.SetParameter(\"BrightnessModifier\", filmGrain.brightnessModifier);\n shader.SetParameter(\"InputTexture\", dest);\n renderer.DrawScreenQuad(renderContext, shader);\n }\n\n /**\n * Signal loss over the final image (cpp:1173-1179).\n *\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderSignalLoss(dest, renderContext, signalLoss, renderer)\n {\n this.signalLossEffect.SetParameter(\"NoiseStrength\", signalLoss.strength);\n renderer.DrawTexture(renderContext, dest, { material: this.signalLossEffect });\n }\n\n /**\n * The dynamic exposure debug overlay (cpp:1243-1285). With the debug off\n * this drops the debug shader, which is all Carbon does then.\n *\n * @returns {void}\n */\n @carbon.method\n @impl.implemented\n RenderDynamicExposureDebug(_gpuResourcePool, _renderContext, dynamicExposure, _histogramBuffer)\n {\n if (dynamicExposure && dynamicExposure.debug)\n {\n throw new Error(\"Tr2PostProcessRenderer.RenderDynamicExposureDebug is not ported yet.\");\n }\n\n this._dynamicExposureDebugShader = null;\n }\n\n /**\n * The persistent 8 x R32_FLOAT exposure buffer (cpp:1700-1706).\n *\n * @param {Tr2GpuResourcePool} gpuResourcePool The pool.\n * @returns {GpuResourceHandle} The buffer.\n */\n @carbon.method\n @impl.implemented\n GetExposureBuffer(gpuResourcePool)\n {\n return gpuResourcePool.GetPersistentBuffer(\n \"Exposure Buffer\",\n Tr2BufferDescriptionAL.FromFormat(\n PixelFormat.PIXEL_FORMAT_R32_FLOAT,\n 8,\n Tr2GpuUsage.UNORDERED_ACCESS | Tr2GpuUsage.SHADER_RESOURCE,\n Tr2CpuUsage.READ\n ),\n new Float32Array(8)\n );\n }\n\n /**\n * The persistent 4 x 4 black texture (cpp:1708-1713).\n *\n * @param {Tr2GpuResourcePool} gpuResourcePool The pool.\n * @returns {GpuResourceHandle} The texture.\n */\n @carbon.method\n @impl.implemented\n GetBlackTexture(gpuResourcePool)\n {\n return gpuResourcePool.GetPersistentTexture(\"Black\", {\n type: TextureType.TEX_TYPE_2D,\n width: 4,\n height: 4,\n depth: 1,\n mipCount: 1,\n format: PixelFormat.PIXEL_FORMAT_B8G8R8A8_UNORM,\n gpuUsage: Tr2GpuUsage.SHADER_RESOURCE,\n initialData: [ new Tr2SubresourceData(new Uint32Array(4 * 4), 4 * 4, 4 * 4 * 4) ]\n });\n }\n\n // THE PASSES NOT PORTED YET. Each runs only when the post process enables it.\n\n /**\n * Carbon Blur (cpp:893-946): a horizontal then a vertical pass of Blur.fx,\n * each effect pair built once per BlurContext hash and cached.\n *\n * Takes ownership of `src` and frees it after the first pass, as Carbon's\n * `src = {}` does (cpp:940).\n *\n * @param {GpuResourceHandle} src The texture to blur, owned from here on.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {BlurContext} blurContext The blur variant.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {GpuResourceHandle} The blurred texture.\n */\n @carbon.method\n @impl.adapted\n Blur(src, gpuResourcePool, renderContext, blurContext, renderer)\n {\n const hash = blurContext.Hash();\n let effects = this._blurEffects.get(hash);\n\n if (!effects)\n {\n // Horizontal and vertical, IN THAT ORDER (cpp:899).\n effects = [ new Tr2Effect(), new Tr2Effect() ];\n const [ horizontal, vertical ] = effects;\n\n horizontal.StartUpdate();\n horizontal.SetEffectPathName(PostProcessEffectPaths.Blur);\n vertical.StartUpdate();\n vertical.SetEffectPathName(PostProcessEffectPaths.Blur);\n vertical.SetParameter(\"Direction\", vec2.fromValues(0, 1));\n\n const blurTypeOption = BlurContext.getBlurTypeOptionValue(blurContext.type);\n horizontal.SetOption(\"BLUR_TYPE\", blurTypeOption);\n vertical.SetOption(\"BLUR_TYPE\", blurTypeOption);\n\n const blurChannelOption = BlurContext.getBlurChannelOptionValue(blurContext.channel);\n horizontal.SetOption(\"BLUR_CHANNEL\", blurChannelOption);\n vertical.SetOption(\"BLUR_CHANNEL\", blurChannelOption);\n\n const processOption = BlurContext.getProcessTypeOptionValue(blurContext.process);\n horizontal.SetOption(\"BLUR_PROCESS_TYPE\", processOption);\n vertical.SetOption(\"BLUR_PROCESS_TYPE\", processOption);\n\n horizontal.SetOption(\"BLUR_FINALIZE_TYPE\", BlurContext.getFinalizeTypeOptionValue(BlurContext.BlurFinalize.BF_None));\n vertical.SetOption(\"BLUR_FINALIZE_TYPE\", BlurContext.getFinalizeTypeOptionValue(blurContext.finalize));\n\n horizontal.EndUpdate();\n vertical.EndUpdate();\n this._blurEffects.set(hash, effects);\n }\n\n const [ horizontal, vertical ] = effects;\n const source = src.Get();\n\n const rt2 = this._Temp(gpuResourcePool, \"Blur Temp 1\", { width: source.GetWidth(), height: source.GetHeight() }, source.GetFormat(), RENDER_TARGET);\n horizontal.SetParameter(\"BlitCurrent\", source);\n try\n {\n Tr2PostProcessRenderer.drawInto(rt2.Get(), Tr2LoadAction.DONT_CARE, horizontal, renderContext, renderer);\n }\n finally\n {\n horizontal.SetParameter(\"BlitCurrent\", null);\n Tr2PostProcessRenderer._release(gpuResourcePool, src);\n }\n\n const second = rt2.Get();\n const rt1 = this._Temp(gpuResourcePool, \"Blur Temp 2\", { width: second.GetWidth(), height: second.GetHeight() }, second.GetFormat(), RENDER_TARGET);\n vertical.SetParameter(\"BlitCurrent\", second);\n try\n {\n Tr2PostProcessRenderer.drawInto(rt1.Get(), Tr2LoadAction.DONT_CARE, vertical, renderContext, renderer);\n }\n finally\n {\n vertical.SetParameter(\"BlitCurrent\", null);\n Tr2PostProcessRenderer._release(gpuResourcePool, rt2);\n }\n\n return rt1;\n }\n\n /**\n * Carbon RenderBloom (cpp:957-1113). The new bloom (the default, `g_newBloom`)\n * downsamples the scene through up to six half-size steps, then walks back\n * up: a horizontal gaussian into each step's upsample texture, and a\n * vertical gaussian that adds the previous (coarser) result, tinted per\n * step, back into the step's downsample texture. The finest step is the\n * bloom texture tonemapping reads as `BlitCurrent`. The old bloom is a\n * high-pass at half size and one Blur.\n *\n * Carbon's per-pass constants (DownsampleData, GaussianData) go through\n * FillAndSetConstants into `m_bloomConstantBuffer` at the per-object PS\n * register; so do these.\n *\n * @param {GpuResourceHandle} dest The scene colour to bloom (not consumed).\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPBloomEffect} bloom The bloom settings.\n * @param {Tr2PPDynamicExposureEffect|null} dynamicExposure The exposure settings, if any.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {GpuResourceHandle} The bloom texture, owned by the caller.\n */\n @carbon.method\n @impl.adapted\n RenderBloom(dest, gpuResourcePool, renderContext, bloom, dynamicExposure, renderer)\n {\n const esm = renderContext.GetEffectStateManager();\n const release = handle => Tr2PostProcessRenderer._release(gpuResourcePool, handle);\n const destination = dest.Get();\n const destinationSize = { width: destination.GetWidth(), height: destination.GetHeight() };\n\n esm.ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n\n const hasDynamicExposure = dynamicExposure !== null;\n const exposureDependant = bloom.exposureDependency && hasDynamicExposure;\n\n if (!this.useNewBloom)\n {\n const highPass = this.bloomHighPassFilter;\n highPass.SetParameter(\"LuminanceThreshold\", Math.max(0, bloom.luminanceThreshold));\n highPass.SetParameter(\"LuminanceScale\", bloom.luminanceScale);\n highPass.SetParameter(\"ExposureDependency\", exposureDependant ? 1 : 0);\n\n const rt1 = this._Temp(gpuResourcePool, \"Bloom\", Tr2PostProcessRenderer.scaledSize(destination, 0.5), destination.GetFormat(), RENDER_TARGET);\n const exposure = this.GetExposureBuffer(gpuResourcePool);\n highPass.SetParameter(\"BlitCurrent\", destination);\n highPass.SetParameter(\"Exposure\", exposure.Get());\n try\n {\n Tr2PostProcessRenderer.drawInto(rt1.Get(), Tr2LoadAction.DONT_CARE, highPass, renderContext, renderer);\n }\n finally\n {\n highPass.SetParameter(\"BlitCurrent\", null);\n highPass.SetParameter(\"Exposure\", null);\n release(exposure);\n }\n\n return this.Blur(rt1, gpuResourcePool, renderContext, new BlurContext(), renderer);\n }\n\n const MAX_BLOOM_STEPS = Tr2PPBloomEffect.MAX_BLOOM_STEPS;\n const black = this.GetBlackTexture(gpuResourcePool);\n const minDim = Math.min(destinationSize.width, destinationSize.height);\n let currentSize = 0.5;\n let depth = 0;\n\n this._downSamplerLuminancePreserve.SetOption(\"EXPOSURE_DEPENDANCE\", hasDynamicExposure ? \"EXPOSURE_DEPENDANCE_ON\" : \"EXPOSURE_DEPENDANCE_OFF\");\n this._downSamplerLuminancePreserve.SetParameter(\"LuminanceThreshold\", bloom.luminanceThreshold);\n\n const downsampleTexture = new Array(MAX_BLOOM_STEPS).fill(null);\n const upsampleTexture = new Array(MAX_BLOOM_STEPS).fill(null);\n let result = null;\n\n try\n {\n for (let i = 0; i < MAX_BLOOM_STEPS; ++i)\n {\n if (Math.trunc(minDim * currentSize) === 0) break;\n\n const size = Tr2PostProcessRenderer.scaledSize(destination, currentSize);\n downsampleTexture[i] = this._Temp(gpuResourcePool, `Downsample_${i}`, size, destination.GetFormat(), RENDER_TARGET);\n upsampleTexture[i] = this._Temp(gpuResourcePool, `Upsample_${i}`, size, destination.GetFormat(), RENDER_TARGET);\n\n // The debug views (cpp:1006-1010) need RenderBloomDebug, not ported.\n if (this.bloomDebugMode !== BloomDebugMode.BLOOM_DEBUG_NONE)\n {\n throw new Error(\"Tr2PostProcessRenderer: bloom debug (RenderBloomDebug) is not ported yet.\");\n }\n\n currentSize *= 0.5;\n ++depth;\n }\n\n const pixelShaderMask = 1 << ShaderType.PIXEL_SHADER;\n const perObjectRegister = renderer.GetPerObjectPSStartRegister();\n\n // Downsample (cpp:1016-1039).\n let lastRt = destination;\n for (let i = 0; i < depth; ++i)\n {\n const rt = downsampleTexture[i].Get();\n const effect = i === 0 && bloom.luminanceThreshold > -1 ? this._downSamplerLuminancePreserve : this._downSampler;\n const exposure = this.GetExposureBuffer(gpuResourcePool);\n\n // DownsampleData: Vector2 invSourceSize + two floats of padding (h:139-144).\n const downsampleInfo = new Float32Array([ 1 / lastRt.GetWidth(), 1 / lastRt.GetHeight(), 0, 0 ]);\n\n effect.SetParameter(\"BlitCurrent\", lastRt);\n effect.SetParameter(\"Exposure\", exposure.Get());\n try\n {\n FillAndSetConstants(this._BloomConstantBuffer(renderContext), downsampleInfo, downsampleInfo.byteLength, pixelShaderMask, perObjectRegister, renderContext);\n Tr2PostProcessRenderer.drawInto(rt, Tr2LoadAction.DONT_CARE, effect, renderContext, renderer);\n }\n finally\n {\n effect.SetParameter(\"BlitCurrent\", null);\n effect.SetParameter(\"Exposure\", null);\n release(exposure);\n }\n\n lastRt = rt;\n }\n\n // Upsample (cpp:1041-1105): every horizontal pass, then every vertical.\n const tintScale = (1 / MAX_BLOOM_STEPS) * bloom.brightness;\n const directionalWeight = [ Math.max(bloom.directionalWeight, 0), Math.abs(bloom.directionalWeight) ];\n const gaussianBytes = new Uint8Array(GaussianData.byteSize);\n const stepSize = i => bloom[`step${i + 1}Size`];\n const stepTint = i => bloom[`step${i + 1}Tint`];\n\n for (let i = depth - 1; i >= 0; --i)\n {\n const currentMip = downsampleTexture[i].Get();\n const currentUpsampled = upsampleTexture[i].Get();\n const radiusInPixels = Math.max(currentMip.GetWidth(), currentMip.GetHeight()) * bloom.sizeScale * stepSize(i) * 0.01;\n const invTexelSizeX = 1 / currentMip.GetWidth();\n\n this._upsamplerHorizontal.SetParameter(\"BlitCurrent\", currentMip);\n const gaussianOutput = GaussianData.calculateGaussianPassParameters(radiusInPixels, directionalWeight[0], invTexelSizeX, vec3.fromValues(1, 1, 1), vec2.fromValues(1, 0));\n GaussianData.pack(gaussianOutput, gaussianBytes);\n FillAndSetConstants(this._BloomConstantBuffer(renderContext), gaussianBytes, gaussianBytes.byteLength, pixelShaderMask, perObjectRegister, renderContext);\n Tr2PostProcessRenderer.drawInto(currentUpsampled, Tr2LoadAction.DONT_CARE, this._upsamplerHorizontal, renderContext, renderer);\n }\n\n let lastHandle = null;\n for (let i = depth - 1; i >= 0; --i)\n {\n if (i === depth - 1) lastRt = black.Get();\n\n const currentMip = downsampleTexture[i].Get();\n const currentUpsampled = upsampleTexture[i].Get();\n const radiusInPixels = Math.max(currentMip.GetWidth(), currentMip.GetHeight()) * bloom.sizeScale * stepSize(i) * 0.01;\n const invTexelSizeY = 1 / currentMip.GetHeight();\n\n // The horizontally blurred mip, plus the coarser result below it.\n this._upsamplerVertical.SetParameter(\"BlitCurrent\", currentUpsampled);\n this._upsamplerVertical.SetParameter(\"LastMip\", lastRt);\n\n const tint = vec4.scale(vec4.create(), stepTint(i), tintScale);\n const gaussianOutput = GaussianData.calculateGaussianPassParameters(radiusInPixels, directionalWeight[1], invTexelSizeY, vec3.fromValues(tint[0], tint[1], tint[2]), vec2.fromValues(0, 1));\n GaussianData.pack(gaussianOutput, gaussianBytes);\n FillAndSetConstants(this._BloomConstantBuffer(renderContext), gaussianBytes, gaussianBytes.byteLength, pixelShaderMask, perObjectRegister, renderContext);\n\n // Into the downsample texture, which is not read again (cpp:1100).\n Tr2PostProcessRenderer.drawInto(currentMip, Tr2LoadAction.DONT_CARE, this._upsamplerVertical, renderContext, renderer);\n\n lastRt = currentMip;\n lastHandle = downsampleTexture[i];\n }\n\n // Carbon returns lastRt, the finest downsample texture; with no step at\n // all it is `dest` itself (cpp:1016, 1112), which the caller still owns,\n // so the bloom is then the black texture instead.\n result = lastHandle ?? black;\n return result;\n }\n finally\n {\n this._upsamplerHorizontal.SetParameter(\"BlitCurrent\", null);\n this._upsamplerVertical.SetParameter(\"BlitCurrent\", null);\n this._upsamplerVertical.SetParameter(\"LastMip\", null);\n\n for (const handle of [ ...downsampleTexture, ...upsampleTexture, black ])\n {\n if (handle && handle !== result) release(handle);\n }\n }\n }\n\n /**\n * God rays (cpp:1146-1171): half-resolution depth, the rays drawn into a\n * cleared half-resolution target, then added onto `dest`.\n *\n * Adapted: the renderer is passed in for the blitter, as in Execute.\n *\n * @param {object} dest The colour texture the rays are added to.\n * @param {object} depth The scene depth.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPGodRaysEffect} godrays The post process's god-ray settings.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderGodRays(dest, depth, gpuResourcePool, renderContext, godrays, renderer)\n {\n const esm = renderContext.GetEffectStateManager();\n const effect = this.godrayEffect;\n\n esm.ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n\n const rt1 = this.DownSampleDepth(depth, gpuResourcePool, renderContext, renderer);\n const rt2 = this._Temp(gpuResourcePool, \"God rays\", Tr2PostProcessRenderer.scaledSize(dest, 0.5), dest.GetFormat(), RENDER_TARGET);\n\n try\n {\n esm.PushRenderTarget(rt2.Get());\n // The clear is needed because the god-ray vertex shader can opt out of rendering (cpp:1157).\n renderContext.Clear({ clearColor: true, color: 0 });\n\n const color = godrays.godRayColor;\n effect.SetParameter(\"Color\", [ color[0], color[1], color[2], color[3] ]);\n effect.SetParameter(\"Intensity\", [ godrays.intensity, 0, 1, 1 ]);\n effect.SetParameter(\"grFactors\", godrays.grFactors);\n effect.SetResourceTexture2D(\"NoiseTexMap\", godrays.noiseTexturePath);\n effect.SetParameter(\"DepthMap\", rt1.Get());\n try\n {\n renderer.DrawScreenQuad(renderContext, effect);\n }\n finally\n {\n effect.SetParameter(\"DepthMap\", null);\n esm.PopRenderTarget();\n }\n\n esm.ApplyStandardStates(RenderingMode.RM_ALPHA_ADDITIVE);\n Tr2PostProcessRenderer.drawTextureInto(dest, Tr2LoadAction.LOAD, rt2.Get(), renderContext, renderer);\n }\n finally\n {\n Tr2PostProcessRenderer._release(gpuResourcePool, rt1);\n Tr2PostProcessRenderer._release(gpuResourcePool, rt2);\n }\n }\n\n /**\n * Half-resolution R32_FLOAT depth (cpp:948-954).\n *\n * @param {object} depth The scene depth.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {GpuResourceHandle} The down-sampled depth; the caller frees it.\n */\n @carbon.method\n @impl.adapted\n DownSampleDepth(depth, gpuResourcePool, renderContext, renderer)\n {\n const effect = this._downsampleDepthEffect;\n const destination = this._Temp(\n gpuResourcePool,\n \"Down-sampled Depth\",\n Tr2PostProcessRenderer.scaledSize(depth, 0.5),\n PixelFormat.PIXEL_FORMAT_R32_FLOAT,\n Tr2GpuUsage.RENDER_TARGET | Tr2GpuUsage.SHADER_RESOURCE\n );\n\n effect.SetParameter(\"DepthMap\", depth);\n try\n {\n Tr2PostProcessRenderer.drawInto(destination.Get(), Tr2LoadAction.DONT_CARE, effect, renderContext, renderer);\n }\n finally\n {\n effect.SetParameter(\"DepthMap\", null);\n }\n\n return destination;\n }\n\n /**\n * Carbon RenderDynamicExposure (cpp:1182-1241): three compute passes. Each\n * 16 x 16 tile builds a local luminance histogram, the tiles merge into one\n * 65-bin histogram, and one thread measures it and moves the persistent\n * exposure buffer towards the target at the increase/decrease speeds.\n * Tonemapping (and exposure-dependent bloom) read that buffer.\n *\n * @param {object} source The scene colour texture.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPDynamicExposureEffect} dynamicExposure The exposure settings.\n * @returns {GpuResourceHandle} The merged histogram, owned by the caller.\n */\n @carbon.method\n @impl.adapted\n RenderDynamicExposure(source, gpuResourcePool, renderContext, dynamicExposure)\n {\n const tilesX = Math.floor(source.GetWidth() / HISTOGRAM_TILE_SIZE_X) + 1;\n const tilesY = Math.floor(source.GetHeight() / HISTOGRAM_TILE_SIZE_Y) + 1;\n const localHistogramCount = tilesX * tilesY * 16;\n const uav = Tr2GpuUsage.SHADER_RESOURCE | Tr2GpuUsage.UNORDERED_ACCESS;\n\n const localHistograms = gpuResourcePool.GetTempBuffer(\n \"LocalHistograms\",\n Tr2BufferDescriptionAL.FromFormat(PixelFormat.PIXEL_FORMAT_R32G32B32A32_UINT, localHistogramCount, uav, Tr2CpuUsage.NONE)\n );\n const histogram = gpuResourcePool.GetTempBuffer(\n \"Histogram\",\n Tr2BufferDescriptionAL.FromFormat(PixelFormat.PIXEL_FORMAT_R32_UINT, 65, uav, Tr2CpuUsage.NONE)\n );\n const exposure = this.GetExposureBuffer(gpuResourcePool);\n\n const create = this.dynamicExposureCreateHistogramShader;\n const merge = this.dynamicExposureMergeHistogramShader;\n const measure = this.dynamicExposureMeasureExposureShader;\n\n create.SetParameter(\"ScreenTilesX\", tilesX);\n create.SetParameter(\"BlitOriginal\", source);\n create.SetParameter(\"LocalHistograms\", localHistograms.Get());\n merge.SetParameter(\"ScreenTilesX\", tilesX);\n merge.SetParameter(\"ScreenTilesY\", tilesY);\n merge.SetParameter(\"LocalHistograms\", localHistograms.Get());\n merge.SetParameter(\"Histogram\", histogram.Get());\n\n try\n {\n const zero = new Uint32Array(4);\n renderContext.ClearUav(localHistograms.Get(), zero);\n renderContext.ClearUav(histogram.Get(), zero);\n\n // Create histograms.\n create.SetParameter(\"MinLuminance\", Math.log(dynamicExposure.minLuminance));\n create.SetParameter(\"MaxLuminance\", Math.log(dynamicExposure.maxLuminance));\n create.SetParameter(\"MinBrightness\", dynamicExposure.minBrightness);\n create.SetParameter(\"MaxBrightness\", dynamicExposure.maxBrightness);\n Tr2Renderer.runComputeShader(create, tilesX, tilesY, 1, renderContext);\n\n // Merge histogram.\n const mergeHistogramXDim = Math.floor((tilesX * tilesY) / NUM_TILES_PER_THREAD_GROUP) + 1;\n Tr2Renderer.runComputeShader(merge, mergeHistogramXDim, 1, 1, renderContext);\n\n // Measure histogram.\n measure.SetParameter(\"MinLuminance\", Math.log(dynamicExposure.minLuminance));\n measure.SetParameter(\"MaxLuminance\", Math.log(dynamicExposure.maxLuminance));\n measure.SetParameter(\"MinBrightness\", dynamicExposure.minBrightness);\n measure.SetParameter(\"MaxBrightness\", dynamicExposure.maxBrightness);\n measure.SetParameter(\"IncreaseSpeed\", dynamicExposure.increaseSpeed);\n measure.SetParameter(\"DecreaseSpeed\", dynamicExposure.decreaseSpeed);\n measure.SetParameter(\"MinExposure\", dynamicExposure.minExposure);\n measure.SetParameter(\"MaxExposure\", dynamicExposure.maxExposure);\n measure.SetParameter(\"Histogram\", histogram.Get());\n measure.SetParameter(\"Exposure\", exposure.Get());\n Tr2Renderer.runComputeShader(measure, 1, 1, 1, renderContext);\n }\n finally\n {\n create.SetParameter(\"BlitOriginal\", null);\n create.SetParameter(\"LocalHistograms\", null);\n merge.SetParameter(\"LocalHistograms\", null);\n merge.SetParameter(\"Histogram\", null);\n measure.SetParameter(\"Histogram\", null);\n measure.SetParameter(\"Exposure\", null);\n Tr2PostProcessRenderer._release(gpuResourcePool, localHistograms);\n Tr2PostProcessRenderer._release(gpuResourcePool, exposure);\n }\n\n return histogram;\n }\n\n /** Carbon RenderUpscaling (cpp:1287-1390). */\n @carbon.method\n @impl.notImplemented\n RenderUpscaling()\n {\n throw new Error(\"Tr2PostProcessRenderer.RenderUpscaling is not ported yet.\");\n }\n\n /**\n * Environment fog (cpp:1406-1433): the fog colour at half resolution,\n * blurred, then composited over `dest` with the scene colour as the original.\n *\n * Adapted: the renderer is passed in for the blitter, as in Execute.\n *\n * @param {object} dest The colour texture fog is composited into.\n * @param {object} source The scene colour before post-processing.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPFogEffect} fog The post process's fog settings.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderFog(dest, source, gpuResourcePool, renderContext, fog, renderer)\n {\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n\n // Fog colour.\n const colorEffect = this.fogColorEffect;\n const rt1 = this._Temp(gpuResourcePool, \"Fog Color\", Tr2PostProcessRenderer.scaledSize(dest, 0.5), dest.GetFormat(), RENDER_TARGET);\n const color = fog.color;\n\n colorEffect.SetParameter(\"BlitCurrent\", dest);\n colorEffect.SetParameter(\"Params\", [ fog.nebulaInfluence, fog.nebulaBlur, fog.originalBrightenOnly, fog.colorInfluence ]);\n colorEffect.SetParameter(\"Color\", [ color[0], color[1], color[2], color[3] ]);\n try\n {\n Tr2PostProcessRenderer.drawInto(rt1.Get(), Tr2LoadAction.DONT_CARE, colorEffect, renderContext, renderer);\n }\n finally\n {\n colorEffect.SetParameter(\"BlitCurrent\", null);\n }\n\n // Blur; Blur takes rt1 over (cpp:1420 moves it).\n const blurred = this.Blur(rt1, gpuResourcePool, renderContext, new BlurContext(), renderer);\n\n // Final composite.\n const composite = this.fogCompositeEffect;\n const { areaSize, areaScale, areaCenter } = fog;\n\n composite.SetParameter(\"FogParameters\", [ fog.totalAmount, fog.totalPower, fog.backgroundOcclusion, fog.intensity ]);\n composite.SetParameter(\"BrightnessAdjustment\", [ fog.brightnessThreshold0, fog.brightnessThreshold1, fog.brightnessAdjustmentAmount, 0 ]);\n composite.SetParameter(\"BlendFunction0\", [ fog.blendDistance0, fog.blendBias0, fog.blendAmount0, fog.blendPower0 ]);\n composite.SetParameter(\"BlendFunction1\", [ fog.blendDistance1, fog.blendBias1, fog.blendAmount1, fog.blendPower1 ]);\n composite.SetParameter(\"BlendFunction2\", [ fog.blendDistance2, fog.blendBias2, fog.blendAmount2, fog.blendPower2 ]);\n composite.SetParameter(\"AreaSize\", [ areaSize[0], areaSize[1], areaSize[2], areaScale[0] ]);\n composite.SetParameter(\"AreaCenter\", [ areaCenter[0], areaCenter[1], areaCenter[2], areaScale[1] ]);\n composite.SetParameter(\"BlitCurrent\", blurred.Get());\n composite.SetParameter(\"BlitOriginal\", source);\n try\n {\n Tr2PostProcessRenderer.drawInto(dest, Tr2LoadAction.DONT_CARE, composite, renderContext, renderer);\n }\n finally\n {\n composite.SetParameter(\"BlitCurrent\", null);\n composite.SetParameter(\"BlitOriginal\", null);\n Tr2PostProcessRenderer._release(gpuResourcePool, blurred);\n }\n }\n\n /**\n * Temporal anti-aliasing (cpp:1435-1529): the current frame blended into a\n * ping-ponged persistent accumulator, then copied back into `dest`.\n *\n * Adapted: the renderer is passed in for the blitter, as in Execute. The\n * cooldown map's initial ClearUav of a texture is refused by the WebGPU AL,\n * which does not change the result: WebGPU creates textures zeroed, the\n * value Carbon clears to.\n *\n * @param {object} dest The scene colour, blended and written back.\n * @param {object|null} velocity The velocity map.\n * @param {object|null} opaqueColor The opaque colour copy; null at TAA low.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPTaaEffect} taa The post process's TAA settings.\n * @param {Tr2PPDynamicExposureEffect|null} dynamicExposure Dynamic exposure, if on.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderTaa(dest, velocity, opaqueColor, gpuResourcePool, renderContext, taa, dynamicExposure, renderer)\n {\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n\n const al = renderContext.GetRenderContextAL();\n const release = handle => Tr2PostProcessRenderer._release(gpuResourcePool, handle);\n const clear = texture =>\n {\n al.SetRenderTarget(0, texture);\n al.Clear({ clearColor: true, color: 0 });\n };\n const clearUav = texture => al.ClearUav(texture, new Uint32Array(4));\n const persistent = (name, format, gpuUsage, initialize) => gpuResourcePool.GetPersistentTexture(name, {\n type: TextureType.TEX_TYPE_2D,\n width: dest.GetWidth(),\n height: dest.GetHeight(),\n depth: 1,\n mipCount: 1,\n format,\n gpuUsage\n }, initialize);\n\n const accumulationBuffer0 = persistent(\"TAA Accumulation 0\", PixelFormat.PIXEL_FORMAT_R16G16B16A16_UNORM, RENDER_TARGET, clear);\n const accumulationBuffer1 = persistent(\"TAA Accumulation 1\", PixelFormat.PIXEL_FORMAT_R16G16B16A16_UNORM, RENDER_TARGET, clear);\n const cooldownBuffer = persistent(\"TAA Cooldown\", PixelFormat.PIXEL_FORMAT_R32_UINT, Tr2GpuUsage.UNORDERED_ACCESS | Tr2GpuUsage.SHADER_RESOURCE, clearUav);\n const exposure = dynamicExposure ? this.GetExposureBuffer(gpuResourcePool) : null;\n\n const frameCount = this._taaFrameCounter++;\n const [ input, output ] = (frameCount & 1) === 0\n ? [ accumulationBuffer0, accumulationBuffer1 ]\n : [ accumulationBuffer1, accumulationBuffer0 ];\n\n const effect = this.taaEffect;\n const copy = this._taaCopyEffect;\n\n for (const each of [ effect, copy ])\n {\n if (dynamicExposure)\n {\n each.SetParameter(\"ExposureAdjust\", Math.pow(2, dynamicExposure.adjustment));\n each.SetParameter(\"ExposureMiddleValue\", dynamicExposure.middleValue);\n each.SetParameter(\"ExposureInfluence\", dynamicExposure.influence);\n each.SetOption(\"DYNAMIC_EXPOSURE_TOGGLE\", \"DYNAMIC_EXPOSURE_ENABLED\");\n }\n else\n {\n each.SetOption(\"DYNAMIC_EXPOSURE_TOGGLE\", \"DYNAMIC_EXPOSURE_DISABLED\");\n }\n }\n\n // frame_count is a uint32_t, and that overload stores its bits (Tr2Effect.cpp:2103-2120).\n effect.SetParameter(\"FrameIndex\", float32FromBits(frameCount));\n effect.SetParameter(\"EarlyOutThreshold\", taa.earlyOutThreshold);\n effect.SetOption(\"QUALITY\", Tr2PostProcessRenderer.getTaaQualityShaderOptionValue(taa.quality));\n effect.SetOption(\"DEBUG\", Tr2PostProcessRenderer.getTaaDebugShaderOptionValue(taa.debug));\n\n const MAX_WEIGHT = Math.fround(0.96);\n effect.SetParameter(\"BlendWeight\", Math.min(Math.fround(frameCount / (frameCount + 1)), MAX_WEIGHT));\n\n try\n {\n effect.SetParameter(\"CurrentFrame\", dest);\n effect.SetParameter(\"CurrentFrameOpaque\", opaqueColor);\n effect.SetParameter(\"AccumulationBuffer\", input.Get());\n effect.SetParameter(\"CooldownMap\", cooldownBuffer.Get());\n effect.SetParameter(\"VelocityMap\", velocity);\n effect.SetParameter(\"Exposure\", exposure?.Get() ?? null);\n Tr2PostProcessRenderer.drawInto(output.Get(), Tr2LoadAction.DONT_CARE, effect, renderContext, renderer);\n\n copy.SetParameter(\"AccumulationBuffer\", output.Get());\n copy.SetParameter(\"Exposure\", exposure?.Get() ?? null);\n Tr2PostProcessRenderer.drawInto(dest, Tr2LoadAction.DONT_CARE, copy, renderContext, renderer);\n }\n finally\n {\n for (const name of [ \"CurrentFrame\", \"CurrentFrameOpaque\", \"AccumulationBuffer\", \"CooldownMap\", \"VelocityMap\", \"Exposure\" ])\n {\n effect.SetParameter(name, null);\n }\n copy.SetParameter(\"AccumulationBuffer\", null);\n copy.SetParameter(\"Exposure\", null);\n\n for (const handle of [ accumulationBuffer0, accumulationBuffer1, cooldownBuffer, exposure ]) release(handle);\n }\n }\n\n /**\n * Depth of field (cpp:1598-1698): the circle of confusion, blurred to its\n * maximum when the foreground blurs too, then either the TAA-friendly bokeh\n * and a copy back, or the bokeh blend and fill.\n *\n * Adapted: the renderer is passed in for the blitter, as in Execute.\n *\n * @param {object} dest The colour texture to blur.\n * @param {Tr2GpuResourcePool} gpuResourcePool The frame's pool.\n * @param {Tr2RenderContext} renderContext The context to render with.\n * @param {Tr2PPDepthOfFieldEffect} depthOfField The post process's DoF settings.\n * @param {boolean} temporal Whether TAA or a temporal upscaler follows.\n * @param {number} upscalingAmount The upscaler's ratio, 1 without one.\n * @param {Tr2Renderer} renderer The renderer owning the blitter.\n * @returns {void}\n */\n @carbon.method\n @impl.adapted\n RenderDepthOfField(dest, gpuResourcePool, renderContext, depthOfField, temporal, upscalingAmount, renderer)\n {\n renderContext.GetEffectStateManager().ApplyStandardStates(RenderingMode.RM_FULLSCREEN);\n\n const release = handle => Tr2PostProcessRenderer._release(gpuResourcePool, handle);\n const shape = depthOfField.GetBokehShapeString();\n const cocShader = this.depthOfFieldCoCShader;\n const cocSize = Tr2PostProcessRenderer.scaledSize(dest, depthOfField.cocScale);\n let coc = null;\n let blur = null;\n\n cocShader.SetParameter(\"FocalInfo\", [ depthOfField.focalDistance, depthOfField.focalLength, depthOfField.scale, 0 ]);\n cocShader.SetOption(\"COC_OUTPUT_CHANNEL_COUNT\", depthOfField.foregroundBlurNeeded ? \"COC_OUTPUT_CHANNEL_COUNT_2\" : \"COC_OUTPUT_CHANNEL_COUNT_1\");\n\n try\n {\n if (!depthOfField.foregroundBlurNeeded)\n {\n coc = this._Temp(gpuResourcePool, \"CoC\", cocSize, PixelFormat.PIXEL_FORMAT_R8_UNORM, RENDER_TARGET);\n Tr2PostProcessRenderer.drawInto(coc.Get(), Tr2LoadAction.DONT_CARE, cocShader, renderContext, renderer);\n }\n else\n {\n const coc2 = this._Temp(gpuResourcePool, \"CoC\", cocSize, PixelFormat.PIXEL_FORMAT_R8G8_UNORM, RENDER_TARGET);\n const { BlurType, BlurChannel, BlurProcess, BlurFinalize } = BlurContext;\n\n Tr2PostProcessRenderer.drawInto(coc2.Get(), Tr2LoadAction.DONT_CARE, cocShader, renderContext, renderer);\n coc = this.Blur(\n coc2,\n gpuResourcePool,\n renderContext,\n BlurContext.createBlurContext(BlurType.BT_Big, BlurChannel.BC_r, BlurProcess.BP_Maximum, BlurFinalize.BF_MaxOfAllChannels),\n renderer\n );\n }\n\n const adjustedScale = Math.fround(depthOfField.scale / upscalingAmount);\n\n blur = this._Temp(gpuResourcePool, \"Bokeh Blend\", { width: dest.GetWidth(), height: dest.GetHeight() }, dest.GetFormat(), RENDER_TARGET);\n\n if (depthOfField.useTAAFriendlyBokeh)\n {\n const GOLDEN_ANGLE = Math.fround(Math.PI * (3 - Math.sqrt(5)));\n let angle = 0;\n let samplesPerPixel = 2 / 5;\n\n if (temporal)\n {\n // Four rotations, the same period as the TAA jitter, so TAA can\n // detect and remove some flickering (cpp:1650-1651).\n if ((this._bokehFrameCounter & 1) !== 0) angle += Math.PI;\n if ((this._bokehFrameCounter & 2) !== 0) angle += 0.5 * GOLDEN_ANGLE;\n this._bokehFrameCounter++;\n\n // Fewer samples per frame; the rotations accumulate four times as many (cpp:1658-1659).\n samplesPerPixel = 1 / 5;\n }\n\n const bokeh = this._depthOfFieldBokehTAAShader;\n\n bokeh.SetOption(\"BOKEH_SHAPE\", shape);\n bokeh.SetParameter(\"BlitCurrent\", dest);\n bokeh.SetParameter(\"CoCMap\", coc.Get());\n bokeh.SetParameter(\"BokehInfo\", [ adjustedScale, angle, samplesPerPixel, 0 ]);\n try\n {\n Tr2PostProcessRenderer.drawInto(blur.Get(), Tr2LoadAction.DONT_CARE, bokeh, renderContext, renderer);\n }\n finally\n {\n bokeh.SetParameter(\"BlitCurrent\", null);\n bokeh.SetParameter(\"CoCMap\", null);\n }\n\n // Copy back.\n Tr2PostProcessRenderer.drawTextureInto(dest, Tr2LoadAction.DONT_CARE, blur.Get(), renderContext, renderer);\n }\n else\n {\n const blend = this.depthOfFieldBokehBlurShader;\n\n blend.SetParameter(\"BlitCurrent\", dest);\n blend.SetParameter(\"CoCMap\", coc.Get());\n blend.SetParameter(\"BokehInfo\", [ adjustedScale, 0, 0, 0 ]);\n blend.SetOption(\"BOKEH_SHAPE\", shape);\n try\n {\n Tr2PostProcessRenderer.drawInto(blur.Get(), Tr2LoadAction.DONT_CARE, blend, renderContext, renderer);\n }\n finally\n {\n blend.SetParameter(\"BlitCurrent\", null);\n blend.SetParameter(\"CoCMap\", null);\n }\n\n const fill = this.depthOfFieldBokehFillShader;\n\n fill.SetParameter(\"BlitCurrent\", blur.Get());\n fill.SetParameter(\"CoCMap\", coc.Get());\n fill.SetParameter(\"BokehInfo\", [ adjustedScale, 0, 0, 0 ]);\n fill.SetOption(\"BOKEH_SHAPE\", shape);\n try\n {\n Tr2PostProcessRenderer.drawInto(dest, Tr2LoadAction.DONT_CARE, fill, renderContext, renderer);\n }\n finally\n {\n fill.SetParameter(\"BlitCurrent\", null);\n fill.SetParameter(\"CoCMap\", null);\n }\n }\n }\n finally\n {\n release(coc);\n release(blur);\n }\n }\n\n /**\n * m_bloomConstantBuffer, created empty on first use. Carbon default-constructs\n * the member (cpp:565) and FillAndSetConstants sizes it; our constant\n * buffers come from the render context, which the constructor has not got.\n *\n * @param {Tr2RenderContext} renderContext The context to create against.\n * @returns {object} A `Tr2ConstantBufferAL`.\n */\n _BloomConstantBuffer(renderContext)\n {\n this._bloomConstantBuffer ??= renderContext.CreateConstantBuffer();\n return this._bloomConstantBuffer;\n }\n\n /** A pool temp texture of Carbon's `GetTempTexture( name, size, format, usage )` form. */\n _Temp(gpuResourcePool, name, size, format, gpuUsage)\n {\n return 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 // CARBON'S ANONYMOUS-NAMESPACE HELPERS (cpp:31-150, 301-509).\n\n /**\n * DrawInto for an effect (cpp:56-62): hint the load action, push the target,\n * draw a screen quad, pop.\n *\n * @returns {void}\n */\n static drawInto(dest, loadAction, effect, renderContext, renderer)\n {\n const esm = renderContext.GetEffectStateManager();\n\n renderContext.RenderPassHint(new Tr2ColorAttachment(loadAction, Tr2StoreAction.STORE), null);\n esm.PushRenderTarget(dest);\n try\n {\n renderer.DrawScreenQuad(renderContext, effect);\n }\n finally\n {\n esm.PopRenderTarget();\n }\n }\n\n /**\n * DrawInto for a texture (cpp:38-44): hint the load action, push the target,\n * blit the texture, pop. Carbon overloads DrawInto; the texture form is\n * named here.\n *\n * @returns {void}\n */\n static drawTextureInto(dest, loadAction, src, renderContext, renderer)\n {\n const esm = renderContext.GetEffectStateManager();\n\n renderContext.RenderPassHint(new Tr2ColorAttachment(loadAction, Tr2StoreAction.STORE), null);\n esm.PushRenderTarget(dest);\n try\n {\n renderer.DrawTexture(renderContext, src);\n }\n finally\n {\n esm.PopRenderTarget();\n }\n }\n\n /**\n * `TextureSize2D( texture.GetDesc() ) * scale` (Tr2GpuResourcePool.h:34-37):\n * each side scaled in float, truncated, and at least one.\n *\n * @param {object} texture A texture answering GetWidth and GetHeight.\n * @param {number} scale The scale.\n * @returns {{width: number, height: number}} The size.\n */\n static scaledSize(texture, scale)\n {\n const side = value => Math.max(1, Math.trunc(Math.fround(Math.fround(value) * Math.fround(scale))));\n\n return { width: side(texture.GetWidth()), height: side(texture.GetHeight()) };\n }\n\n /** GetTaaQualityShaderOptionValue (cpp:97-110). */\n static getTaaQualityShaderOptionValue(quality)\n {\n if (quality === Tr2PPTaaEffect.TAA_MEDIUM) return \"QUALITY_MEDIUM\";\n if (quality === Tr2PPTaaEffect.TAA_HIGH) return \"QUALITY_HIGH\";\n return \"QUALITY_LOW\";\n }\n\n /** GetTaaDebugShaderOptionValue (cpp:112-123). */\n static getTaaDebugShaderOptionValue(debug)\n {\n if (debug === Tr2PPTaaEffect.Debug.TAA_DEBUG_MOTION_VECTORS) return \"DEBUG_SHOW_MOTION_VECTORS\";\n if (debug === Tr2PPTaaEffect.Debug.TAA_DEBUG_EARLY_OUT_MASK) return \"DEBUG_SHOW_EARLY_OUT_MASK\";\n return \"DEBUG_NONE\";\n }\n\n /**\n * GetUavCompatibleFormat (cpp:64-72): BGRA formats cannot be UAVs, so they\n * become RGBA.\n *\n * @param {number} format A `PixelFormat`.\n * @returns {number} A UAV-compatible `PixelFormat`.\n */\n static getUavCompatibleFormat(format)\n {\n if (format === PixelFormat.PIXEL_FORMAT_B8G8R8X8_UNORM || format === PixelFormat.PIXEL_FORMAT_B8G8R8A8_UNORM)\n {\n return PixelFormat.PIXEL_FORMAT_R8G8B8A8_UNORM;\n }\n return format;\n }\n\n /**\n * The destination's `PixelFormat`. Carbon's destination is always a\n * Tr2TextureAL. Our back buffer is the canvas render target, which answers\n * GetWidth and GetHeight as a texture does, but reports its format as the\n * canvas's GPU format; the AL's Carbon `GetBackBufferFormat` gives the\n * `PixelFormat` for it.\n *\n * @param {object} destination The target.\n * @param {object} al The render context AL.\n * @returns {number} A `PixelFormat`.\n */\n static destinationFormatOf(destination, al)\n {\n return destination === al.GetDefaultBackBuffer() ? al.GetBackBufferFormat() : destination.GetFormat();\n }\n\n /**\n * AMD FidelityFX CAS `CasSetup` (ffx_cas.h, CAS 1.0, MIT). The header is a\n * third-party dependency of Carbon, not in the checkout; this is its public\n * definition. `sharpness` 0 gives -1/8.\n *\n * @param {number} sharpness 0 to 1.\n * @param {number} inputWidth Input width in pixels.\n * @param {number} inputHeight Input height in pixels.\n * @param {number} outputWidth Output width in pixels.\n * @param {number} outputHeight Output height in pixels.\n * @returns {{const0: Float32Array, const1: Float32Array}} The two constant\n * vectors, as floats over their packed uint bits (AMDSharpening::AsVector).\n */\n static casSetup(sharpness, inputWidth, inputHeight, outputWidth, outputHeight)\n {\n const const0 = new Float32Array(4);\n const const1 = new Float32Array(4);\n const bits1 = new Uint32Array(const1.buffer);\n\n // Scaling terms.\n const0[0] = inputWidth * (1 / outputWidth);\n const0[1] = inputHeight * (1 / outputHeight);\n const0[2] = 0.5 * inputWidth * (1 / outputWidth) - 0.5;\n const0[3] = 0.5 * inputHeight * (1 / outputHeight) - 0.5;\n\n // Sharpness value: -1 / lerp(8, 5, saturate(sharpness)).\n const saturated = Math.min(1, Math.max(0, sharpness));\n const sharp = -(1 / (8 + (5 - 8) * saturated));\n\n const1[0] = sharp;\n // AU1_AH2_AF2(sharp, 0): two halves packed low-first into one uint.\n bits1[1] = (num.toHalfFloat(sharp) & 0xffff) | ((num.toHalfFloat(0) & 0xffff) << 16);\n const1[2] = 8 * inputWidth * (1 / outputWidth);\n bits1[3] = 0;\n\n return { const0, const1 };\n }\n\n /** Tonemapping::ApplyColorCorrection (cpp:304-321). */\n static applyColorCorrection(colorCorrection, effect)\n {\n if (!colorCorrection)\n {\n effect.SetOption(\"COLOR_CORRECTION_TOGGLE\", \"COLOR_CORRECTION_DISABLED\");\n return;\n }\n effect.SetOption(\"COLOR_CORRECTION_TOGGLE\", \"COLOR_CORRECTION_ENABLED\");\n effect.SetParameter(\"WhiteTemperature\", colorCorrection.whiteTemperature);\n effect.SetParameter(\"WhiteTint\", colorCorrection.whiteTint);\n effect.SetParameter(\"ColorSaturation\", colorCorrection.colorSaturation);\n effect.SetParameter(\"ColorContrast\", colorCorrection.colorContrast);\n effect.SetParameter(\"ColorGamma\", colorCorrection.colorGamma);\n effect.SetParameter(\"ColorGain\", colorCorrection.colorGain);\n effect.SetParameter(\"ColorOffset\", colorCorrection.colorOffset);\n }\n\n /** Tonemapping::ApplyBloom (cpp:323-348). */\n static applyBloom(bloom, effect, newBloom, debugMode)\n {\n if (!bloom)\n {\n effect.SetResourceTexture2D(\"Grime\", \"res:/texture/global/black.dds\");\n return;\n }\n effect.SetParameter(\"GrimeWeight\", bloom.grimeWeight);\n effect.SetParameter(\"BloomBrightness\", newBloom ? 1 : bloom.brightness);\n effect.SetResourceTexture2D(\"Grime\", bloom.grimePath);\n\n if (debugMode !== BloomDebugMode.BLOOM_DEBUG_NONE)\n {\n throw new Error(\"Tr2PostProcessRenderer: the bloom debug arm of ApplyBloom is not ported yet.\");\n }\n }\n\n /** Tonemapping::ApplyDynamicExposure (cpp:350-366). */\n static applyDynamicExposure(dynamicExposure, effect, postprocessExposureAmount)\n {\n if (!dynamicExposure)\n {\n effect.SetOption(\"DYNAMIC_EXPOSURE_TOGGLE\", \"DYNAMIC_EXPOSURE_DISABLED\");\n effect.SetParameter(\"ExposureAdjust\", Math.pow(2, postprocessExposureAmount));\n return;\n }\n effect.SetParameter(\"ExposureMiddleValue\", dynamicExposure.middleValue);\n effect.SetParameter(\"ExposureInfluence\", dynamicExposure.influence);\n effect.SetParameter(\"MinExposure\", dynamicExposure.minExposure);\n effect.SetParameter(\"MaxExposure\", dynamicExposure.maxExposure);\n effect.SetOption(\"DYNAMIC_EXPOSURE_TOGGLE\", \"DYNAMIC_EXPOSURE_ENABLED\");\n effect.SetParameter(\"ExposureAdjust\", Math.pow(2, postprocessExposureAmount + dynamicExposure.adjustment));\n }\n\n /** Tonemapping::ApplyVignette (cpp:368-387). */\n static applyVignette(vignette, effect)\n {\n if (!vignette)\n {\n effect.SetOption(\"VIGNETTE_TOGGLE\", \"VIGNETTE_DISABLED\");\n return;\n }\n effect.SetResourceTexture2D(\"VignetteShape\", vignette.shapePath);\n effect.SetResourceTexture2D(\"VignetteDetail\", vignette.detailPath);\n effect.SetParameter(\"VignetteDetailSize\", [ vignette.detail1Size[0], vignette.detail1Size[1], vignette.detail2Size[0], vignette.detail2Size[1] ]);\n effect.SetParameter(\"VignetteDetailScroll\", [ vignette.detail1Scroll[0], vignette.detail1Scroll[1], vignette.detail2Scroll[0], vignette.detail2Scroll[1] ]);\n effect.SetParameter(\"VignetteColor\", [ vignette.color[0], vignette.color[1], vignette.color[2], vignette.color[3] ]);\n effect.SetParameter(\"VignetteIntensity\", [ vignette.intensity, vignette.opacity ]);\n effect.SetParameter(\"VignetteSineFrequency\", vignette.sineFrequency);\n effect.SetParameter(\"VignetteSineRange\", [ vignette.sineMinimum, vignette.sineMaximum ]);\n effect.SetOption(\"VIGNETTE_TOGGLE\", \"VIGNETTE_ENABLED\");\n }\n\n /** Tonemapping::ApplyDesatureate (cpp:389-400); Carbon's spelling is its own. */\n static applyDesaturate(desaturate, effect)\n {\n if (!desaturate)\n {\n effect.SetOption(\"DESATURATE_TOGGLE\", \"DESATURATE_DISABLED\");\n return;\n }\n effect.SetParameter(\"SaturationFactor\", desaturate.intensity);\n effect.SetOption(\"DESATURATE_TOGGLE\", \"DESATURATE_ENABLED\");\n }\n\n /** Tonemapping::ApplyFade (cpp:402-413). */\n static applyFade(fade, effect)\n {\n if (!fade)\n {\n effect.SetParameter(\"FadeAmount\", 0);\n return;\n }\n effect.SetParameter(\"FadeColor\", [ fade.color[0], fade.color[1], fade.color[2], fade.color[3] ]);\n effect.SetParameter(\"FadeAmount\", fade.intensity);\n }\n\n /** Tonemapping::ApplyLuts (cpp:415-431). */\n static applyLuts(luts, effect)\n {\n if (!luts.length)\n {\n effect.SetOption(\"LUT_TOGGLE\", \"LUT_DISABLED\");\n return;\n }\n effect.SetOption(\"LUT_TOGGLE\", \"LUT_ENABLED\");\n for (let i = 0; i < MAX_LUTS; i++)\n {\n effect.SetParameter(`LUTInfluence_${i}`, i < luts.length ? luts[i].influence : 0);\n effect.SetResourceTexture2D(`TexLUT_${i}`, i < luts.length ? luts[i].path : \"\");\n }\n }\n\n /**\n * Tonemapping::ApplyAcesTonemappingMethod (cpp:433-485). The matrices are\n * built in Carbon's row-major memory with an explicit row-by-column product,\n * which is what Carbon's `Matrix * Matrix` computes, so no operand order is\n * translated.\n */\n static applyAcesTonemappingMethod(tonemapping, effect)\n {\n effect.SetOption(\"TONE_MAPPING_METHOD\", \"TONE_MAPPING_ACES\");\n effect.SetOption(\"SWEETENER_TOGGLE\", tonemapping.useSweeteners ? \"SWEETENER_ENABLED\" : \"SWEETENER_DISABLED\");\n effect.SetParameter(\"AcesSlope\", tonemapping.slope);\n effect.SetParameter(\"AcesToe\", tonemapping.toe);\n effect.SetParameter(\"AcesShoulder\", tonemapping.shoulder);\n effect.SetParameter(\"AcesBlackClip\", tonemapping.blackClip);\n effect.SetParameter(\"AcesWhiteClip\", tonemapping.whiteClip);\n\n const acesInputMat = transposeRowMajor([\n 0.59719, 0.35458, 0.04823, 0, 0.07600, 0.90834, 0.01566, 0, 0.02840, 0.13383, 0.83777, 0, 0, 0, 0, 1\n ]);\n const acesOutputMat = transposeRowMajor([\n 1.60475, -0.53108, -0.07367, 0, -0.10208, 1.10813, -0.00605, 0, -0.00327, -0.07276, 1.07602, 0, 0, 0, 0, 1\n ]);\n const blueCorrect = [\n 0.9404372683, -0.0183068787, 0.0778696104, 0, 0.0083786969, 0.8286599939, 0.1629613092, 0, 0.0005471261, -0.0008833746, 1.0003362486, 0, 0, 0, 0, 1\n ];\n const blueCorrectInv = [\n 1.06318, 0.0233956, -0.0865726, 0, -0.0106337, 1.20632, -0.19569, 0, -0.000590887, 0.00105248, 0.999538, 0, 0, 0, 0, 1\n ];\n const blueCorrection = transposeRowMajor(lerpRowsToIdentity(blueCorrect, tonemapping.blueCorrection));\n const blueCorrectionInv = transposeRowMajor(lerpRowsToIdentity(blueCorrectInv, tonemapping.blueCorrection));\n const s = tonemapping.scale;\n const scale = [ s, 0, 0, 0, 0, s, 0, 0, 0, 0, s, 0, 0, 0, 0, 1 ];\n\n const input = transposeRowMajor(multiplyRowMajor(multiplyRowMajor(acesInputMat, blueCorrection), scale));\n const output = transposeRowMajor(multiplyRowMajor(blueCorrectionInv, acesOutputMat));\n\n effect.SetParameter(\"AcesInputMat\", Float32Array.from(input));\n effect.SetParameter(\"AcesOutputMat\", Float32Array.from(output));\n }\n\n /** Tonemapping::ApplyAgxTonemappingMethod (cpp:487-490). */\n static applyAgxTonemappingMethod(effect)\n {\n effect.SetOption(\"TONE_MAPPING_METHOD\", \"TONE_MAPPING_AGX\");\n }\n\n /** Tonemapping::ApplyUncharted2TonemappingMethod (cpp:492-503). */\n static applyUncharted2TonemappingMethod(tonemapping, effect)\n {\n effect.SetOption(\"TONE_MAPPING_METHOD\", \"TONE_MAPPING_UNCHARTED2\");\n effect.SetParameter(\"ShoulderStrength\", tonemapping.shoulderStrength);\n effect.SetParameter(\"LinearStrength\", tonemapping.linearStrength);\n effect.SetParameter(\"LinearAngle\", tonemapping.linearAngle);\n effect.SetParameter(\"ToeStrength\", tonemapping.toeStrength);\n effect.SetParameter(\"ToeNumerator\", tonemapping.toeNumerator);\n effect.SetParameter(\"ToeDenominator\", tonemapping.toeDenominator);\n effect.SetParameter(\"WhiteScale\", tonemapping.whiteScale);\n }\n\n /** Tonemapping::ApplyNoTonemappingMethod (cpp:505-508). */\n static applyNoTonemappingMethod(effect)\n {\n effect.SetOption(\"TONE_MAPPING_METHOD\", \"TONE_MAPPING_DISABLED\");\n }\n\n /** Frees a handle that still holds a resource, and answers null for reassignment. */\n static _release(gpuResourcePool, handle)\n {\n if (handle?.IsValid()) gpuResourcePool.Free(handle);\n return null;\n }\n\n /** The film grain shader, with its noise texture (cpp:620-624). */\n static _createGrainShader()\n {\n const effect = new Tr2Effect();\n\n effect.StartUpdate();\n effect.SetEffectPathName(PostProcessEffectPaths.FilmGrain);\n effect.AddResourceTexture2D(\"NoiseTexture\", \"res:/texture/global/film_grain_noise.png\");\n effect.EndUpdate();\n return effect;\n }\n\n static BloomDebugMode = BloomDebugMode;\n\n static Quality = Quality;\n\n}\n\n/** Carbon's `Transpose( Matrix )` on row-major memory. */\nfunction transposeRowMajor(m)\n{\n const out = new Array(16);\n for (let row = 0; row < 4; row++)\n {\n for (let column = 0; column < 4; column++) out[column * 4 + row] = m[row * 4 + column];\n }\n return out;\n}\n\n/** Carbon's `Matrix * Matrix` on row-major memory: out[r][c] = sum a[r][k] * b[k][c]. */\nfunction multiplyRowMajor(a, b)\n{\n const out = new Array(16).fill(0);\n for (let row = 0; row < 4; row++)\n {\n for (let column = 0; column < 4; column++)\n {\n let sum = 0;\n for (let k = 0; k < 4; k++) sum += a[row * 4 + k] * b[k * 4 + column];\n out[row * 4 + column] = sum;\n }\n }\n return out;\n}\n\n/**\n * The blue-correction rows lerped from identity by `amount`, as a row-major\n * matrix with identity fourth row and column (cpp:462-478).\n */\nfunction lerpRowsToIdentity(m, amount)\n{\n const out = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ];\n for (let row = 0; row < 3; row++)\n {\n for (let column = 0; column < 3; column++)\n {\n const identity = row === column ? 1 : 0;\n out[row * 4 + column] = identity + (m[row * 4 + column] - identity) * amount;\n }\n }\n return out;\n}\n\n// Carbon gives this a chooser (Tr2PostProcessRenderer_Blue.cpp:9) but never\n// registers it, so it takes no exposure metadata.\nblue.enums.RegisterEnum(\"trinity.Tr2PostProcessRenderer.BloomDebugMode\", BloomDebugMode, {\n source: \"trinity/trinity/PostProcess/Tr2PostProcessRenderer.h\", family: \"postProcess\", line: 112,\n chooserSource: \"trinity/trinity/PostProcess/Tr2PostProcessRenderer_Blue.cpp:9\",\n chooser: [\n { name: \"None\", value: BloomDebugMode.BLOOM_DEBUG_NONE, description: \"No Debug\" },\n { name: \"All\", value: BloomDebugMode.BLOOM_DEBUG_ALL, description: \"Show all steps\" },\n { name: \"Step1\", value: BloomDebugMode.BLOOM_DEBUG_STEP1, description: \"Show step 1\" },\n { name: \"Step2\", value: BloomDebugMode.BLOOM_DEBUG_STEP2, description: \"Show step 2\" },\n { name: \"Step3\", value: BloomDebugMode.BLOOM_DEBUG_STEP3, description: \"Show step 3\" },\n { name: \"Step4\", value: BloomDebugMode.BLOOM_DEBUG_STEP4, description: \"Show step 4\" },\n { name: \"Step5\", value: BloomDebugMode.BLOOM_DEBUG_STEP5, description: \"Show step 5\" },\n { name: \"Step6\", value: BloomDebugMode.BLOOM_DEBUG_STEP6, description: \"Show step 6\" }\n ]\n});\n"],"names":["RENDER_TARGET","Tr2GpuUsage","SHADER_RESOURCE","MAX_LUTS","HISTOGRAM_TILE_SIZE_X","HISTOGRAM_TILE_SIZE_Y","NUM_TILES_PER_THREAD_GROUP","CAS_THREAD_GROUP_WORK_REGION_DIM","effectAt","path","options","effect","Tr2Effect","SetEffectPathName","StartUpdate","option","value","Object","entries","SetOption","EndUpdate","_Tr2PostProcessRender","_identity","Tr2PostProcessRenderer","CjsModel","e","_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","_initProto","c","_initClass","_applyDecs","type","define","className","family","edit","notify","readwrite","int32","enum","objectRef","boolean","carbon","method","impl","implemented","adapted","notImplemented","bloomDebugMode","BloomDebugMode","BLOOM_DEBUG_NONE","quality","Quality","HIGH","tonemappingEffect","PostProcessEffectPaths","ToneMapping","_reactiveMaskEffect","ReactiveMask","_transparencyMaskEffect","TransparencyMask","bloomHighPassFilter","HighPassFilter","_downSamplerLuminancePreserve","Downsample","LUNINANCE_PRESERVE","_downSampler","_upsamplerHorizontal","Upsample","_upsamplerVertical","UPSAMPLING_STEP","dynamicExposureToTextureShader","ExposureToTexture","dynamicExposureCreateHistogramShader","CreateHistograms","dynamicExposureMergeHistogramShader","MergeHistograms","dynamicExposureMeasureExposureShader","MeasureExposure","_fidelityFxCasShader","CAS","_downsampleDepthEffect","DownsampleDepth","fogColorEffect","EnvironmentFogColor","fogCompositeEffect","EnvironmentFogComposit","depthOfFieldBokehBlurShader","Bokeh","BOKEH_PIXEL_METHOD","depthOfFieldBokehFillShader","_depthOfFieldBokehTAAShader","BokehTAA","depthOfFieldCoCShader","CircleOfConfusion","godrayEffect","Godrays","signalLossEffect","SignalLoss","_grainShader","_createGrainShader","taaEffect","TAA","_taaCopyEffect","TAACopy","bloomDebugShader","_dynamicExposureDebugShader","useNewBloom","_blurEffects","Map","_bloomConstantBuffer","_taaFrameCounter","_bokehFrameCounter","GetPostProcessingQuality","SetPostProcessingQuality","Execute","destination","sourceBuffer","depthMap","velocity","opaqueColor","scene","upscalingContext","gpuResourcePool","renderContext","renderer","IsValid","console","error","release","handle","_release","source","Get","renderSize","width","GetWidth","height","GetHeight","displaySize","postProcess","GetPostProcess","esm","GetEffectStateManager","al","GetRenderContextAL","destinationFormat","destinationFormatOf","ApplyStandardStates","RenderingMode","RM_FULLSCREEN","PushRenderTarget","PushDepthStencilBuffer","upscalingInfo","GetUpscalingInfo","GetID","INVALID_UPSCALING_CONTEXT_ID","upscalingEnabled","technique","UpscalingTechnique","NONE","sharpeningRequired","hasSharpening","displayWidth","displayHeight","output","_Temp","nonMsaaSource","GetFormat","Resolve","dynamicExposure","histogramBuffer","upscaledSource","bloomTexture","exposure","genericEffect","GetGenericEffectIfAvailable","RenderGenericEffect","fog","GetFogIfAvailable","RenderFog","godrays","GetGodRaysIfAvailable","RenderGodRays","dof","GetDepthOfFieldIfAvailable","temporal","GetTaaIfAvailable","RenderDepthOfField","upscalingAmount","GetDynamicExposureIfAvailable","taa","RenderTaa","RenderDynamicExposure","debug","SetHudLessTexture","RenderUpscaling","GetReprojectionMatrix","ApplyUpscalingToPerFrameData","GetBlackTexture","bloom","GetBloomIfAvailable","RenderBloom","sharpened","RenderSharpening","GetExposureBuffer","SetParameter","filmGrain","GetFilmGrainIfAvailable","tonemappedOutput","RenderTonemapping","SetRenderTarget","RenderFilmGrain","DrawTexture","signalLoss","GetSignalLossIfAvailable","RenderSignalLoss","RenderDynamicExposureDebug","PopDepthStencilBuffer","PopRenderTarget","SetupExposureConversion","enable","middleValue","input","texture","format","getUavCompatibleFormat","UNORDERED_ACCESS","renderWidth","renderHeight","casIntensity","const0","const1","casSetup","dispatchX","Math","floor","dispatchY","Tr2Renderer","runComputeShader","dest","postprocess","EveSpaceScene","eveSpaceSceneGammaBrightness","applyColorCorrection","GetColorCorrectionIfAvailable","applyBloom","applyDynamicExposure","exposureAdjustment","applyVignette","GetVignetteIfAvailable","applyDesaturate","GetDesaturateIfAvailable","applyFade","GetFadeIfAvailable","luts","GetAvilableSortedLuts","applyLuts","tonemapping","GetTonemappingIfAvailable","applyNoTonemappingMethod","Tr2PPTonemappingEffect","Aces","applyAcesTonemappingMethod","AgX","applyAgxTonemappingMethod","applyUncharted2TonemappingMethod","drawInto","Tr2LoadAction","DONT_CARE","src","GetEffect","shader","colored","colorAmount","grainSize","intensity","grainDensity","grainContrast","brightnessModifier","DrawScreenQuad","strength","material","_gpuResourcePool","_renderContext","_histogramBuffer","Error","GetPersistentBuffer","Tr2BufferDescriptionAL","FromFormat","PixelFormat","PIXEL_FORMAT_R32_FLOAT","Tr2CpuUsage","READ","Float32Array","GetPersistentTexture","TextureType","TEX_TYPE_2D","depth","mipCount","PIXEL_FORMAT_B8G8R8A8_UNORM","gpuUsage","initialData","Tr2SubresourceData","Uint32Array","Blur","blurContext","hash","Hash","effects","get","horizontal","vertical","vec2","fromValues","blurTypeOption","BlurContext","getBlurTypeOptionValue","blurChannelOption","getBlurChannelOptionValue","channel","processOption","getProcessTypeOptionValue","process","getFinalizeTypeOptionValue","BlurFinalize","BF_None","finalize","set","rt2","second","rt1","destinationSize","hasDynamicExposure","exposureDependant","exposureDependency","highPass","max","luminanceThreshold","luminanceScale","scaledSize","MAX_BLOOM_STEPS","Tr2PPBloomEffect","black","minDim","min","currentSize","downsampleTexture","Array","fill","upsampleTexture","result","i","trunc","size","pixelShaderMask","ShaderType","PIXEL_SHADER","perObjectRegister","GetPerObjectPSStartRegister","lastRt","rt","downsampleInfo","FillAndSetConstants","_BloomConstantBuffer","byteLength","tintScale","brightness","directionalWeight","abs","gaussianBytes","Uint8Array","GaussianData","byteSize","stepSize","stepTint","currentMip","currentUpsampled","radiusInPixels","sizeScale","invTexelSizeX","gaussianOutput","calculateGaussianPassParameters","vec3","pack","lastHandle","invTexelSizeY","tint","vec4","scale","create","DownSampleDepth","Clear","clearColor","color","godRayColor","grFactors","SetResourceTexture2D","noiseTexturePath","RM_ALPHA_ADDITIVE","drawTextureInto","LOAD","tilesX","tilesY","localHistogramCount","uav","localHistograms","GetTempBuffer","PIXEL_FORMAT_R32G32B32A32_UINT","histogram","PIXEL_FORMAT_R32_UINT","merge","measure","zero","ClearUav","log","minLuminance","maxLuminance","minBrightness","maxBrightness","mergeHistogramXDim","increaseSpeed","decreaseSpeed","minExposure","maxExposure","colorEffect","nebulaInfluence","nebulaBlur","originalBrightenOnly","colorInfluence","blurred","composite","areaSize","areaScale","areaCenter","totalAmount","totalPower","backgroundOcclusion","brightnessThreshold0","brightnessThreshold1","brightnessAdjustmentAmount","blendDistance0","blendBias0","blendAmount0","blendPower0","blendDistance1","blendBias1","blendAmount1","blendPower1","blendDistance2","blendBias2","blendAmount2","blendPower2","clear","clearUav","persistent","name","initialize","accumulationBuffer0","PIXEL_FORMAT_R16G16B16A16_UNORM","accumulationBuffer1","cooldownBuffer","frameCount","copy","each","pow","adjustment","influence","float32FromBits","earlyOutThreshold","getTaaQualityShaderOptionValue","getTaaDebugShaderOptionValue","MAX_WEIGHT","fround","depthOfField","shape","GetBokehShapeString","cocShader","cocSize","cocScale","coc","blur","focalDistance","focalLength","foregroundBlurNeeded","PIXEL_FORMAT_R8_UNORM","coc2","PIXEL_FORMAT_R8G8_UNORM","BlurType","BlurChannel","BlurProcess","createBlurContext","BT_Big","BC_r","BP_Maximum","BF_MaxOfAllChannels","adjustedScale","useTAAFriendlyBokeh","GOLDEN_ANGLE","PI","sqrt","angle","samplesPerPixel","bokeh","blend","CreateConstantBuffer","GetTempTexture","loadAction","RenderPassHint","Tr2ColorAttachment","Tr2StoreAction","STORE","side","Tr2PPTaaEffect","TAA_MEDIUM","TAA_HIGH","Debug","TAA_DEBUG_MOTION_VECTORS","TAA_DEBUG_EARLY_OUT_MASK","PIXEL_FORMAT_B8G8R8X8_UNORM","PIXEL_FORMAT_R8G8B8A8_UNORM","GetDefaultBackBuffer","GetBackBufferFormat","sharpness","inputWidth","inputHeight","outputWidth","outputHeight","bits1","buffer","saturated","sharp","num","toHalfFloat","colorCorrection","whiteTemperature","whiteTint","colorSaturation","colorContrast","colorGamma","colorGain","colorOffset","newBloom","debugMode","grimeWeight","grimePath","postprocessExposureAmount","vignette","shapePath","detailPath","detail1Size","detail2Size","detail1Scroll","detail2Scroll","opacity","sineFrequency","sineMinimum","sineMaximum","desaturate","fade","length","useSweeteners","slope","toe","shoulder","blackClip","whiteClip","acesInputMat","transposeRowMajor","acesOutputMat","blueCorrect","blueCorrectInv","blueCorrection","lerpRowsToIdentity","blueCorrectionInv","s","multiplyRowMajor","from","shoulderStrength","linearStrength","linearAngle","toeStrength","toeNumerator","toeDenominator","whiteScale","Free","FilmGrain","AddResourceTexture2D","constructor","m","out","row","column","a","b","sum","k","amount","identity","blue","enums","RegisterEnum","line","chooserSource","chooser","description","BLOOM_DEBUG_ALL","BLOOM_DEBUG_STEP1","BLOOM_DEBUG_STEP2","BLOOM_DEBUG_STEP3","BLOOM_DEBUG_STEP4","BLOOM_DEBUG_STEP5","BLOOM_DEBUG_STEP6"],"mappings":"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"}
|