Skip to content

Add upscaling support and refactor rendering pipeline - #34

Merged
qian-o merged 85 commits into
masterfrom
feat/upscaling
Sep 13, 2026
Merged

qian-o merged 85 commits into
masterfrom
feat/upscaling

Conversation

@qian-o

@qian-o qian-o commented Sep 13, 2026

Copy link
Copy Markdown
Owner

This pull request introduces several improvements and updates across the codebase, focusing on dependency updates, experiment refactoring, documentation enhancements, and project organization. The most significant changes include updating package dependencies, refactoring the FluidTank experiment for a more streamlined and extensible renderer, clarifying documentation on viewports and render passes, and adding a new Upscaling extension to the solution.

Dependency Updates:

  • Updated multiple NuGet package versions in sources/Directory.Packages.props, including Avalonia, Microsoft.Maui.Controls, Microsoft.WindowsAppSDK, Roslynator.Analyzers, SixLabors.ImageSharp, SkiaSharp, Slangc.NET, and Uno.WinUI to their latest releases.

FluidTank Experiment Refactoring and Improvements:

  • Refactored sources/Experiments/FluidTank/App.cs to use a new Renderer class, streamlined the ImGui UI to focus on core features, and exposed new toggles for antialiasing and ray-traced reflections. The simulation and rendering pipeline were simplified for clarity and extensibility. [1] [2] [3] [4]
  • Improved platform handling for X11/XWayland and ensured static event handlers for better performance and maintainability. [1] [2]

Documentation Enhancements:

  • Clarified the behavior of BeginRenderPass, viewports, and scissors in both documents/docs/fundamentals/commands.md and documents/docs/workloads/rasterization.md. Added a new section explaining the distinction between MRT (Multiple Render Targets) and multiple viewports. [1] [2]

Project Organization:

  • Added the new Zenith.NET.Extensions.Upscaling project to the solution (Zenith.NET.slnx) and included its NuGet badge in the README.md. [1] [2]

Code Cleanup:

  • Removed .clang-format files from shader asset directories, likely to prevent conflicts or enforce consistent formatting elsewhere.

Other minor improvements include code style adjustments (e.g., use of static lambdas), minor shader formatting tweaks, and updated ImGui rendering behavior in the CornellBox experiment for consistency.

Updated Slangc.NET from 2026.16.0 to 2026.16.1.
Updated Uno.WinUI from 6.6.184 to 6.7.65.
- Introduced SpatialUpscaler class with Dispatch method for handling spatial upscaling.
- Added SpatialUpscalerArgs and SpatialUpscalerDesc structs to define input/output parameters.
- Implemented TemporalUpscaler class with comprehensive resource management and dispatch logic.
- Created TemporalUpscalerArgs and TemporalUpscalerDesc structs for temporal upscaling parameters.
- Defined TemporalUpscalerMode enum to differentiate between speed and quality modes.
- Included SGSR license file for third-party components.
- Removed legacy Upscaler and related classes as part of the refactor.
Refactor struct definitions in Sgsr1Pass.cs, Sgsr2ActivatePass.cs, Sgsr2ConvertPass.cs, and Sgsr2UpscalePass.cs to use field initializers and constructor parameters, reducing boilerplate. Update Record methods to use the new struct initialization style. Add UTF-8 BOM to SGSR-LICENSE.txt.
- Introduced Sgsr2ConvertSpeed.slang for motion vector processing and depth clipping.
- Added Sgsr2UpscaleQuality.slang for high-quality upscaling with advanced color handling.
- Implemented Sgsr2UpscaleSpeed.slang for optimized upscaling performance.
- Updated Zenith.NET.Extensions.Upscaling.csproj to exclude shader files from default item includes.
Reformat and refactor shader (.slang) and C# files for readability and maintainability, splitting long expressions and using consistent indentation. Remove .clang-format file. Refactor shader selection logic in several C# classes to use switch expressions. Add UTF-8 BOM and minor formatting to auto-generated and shader files. Update Compile.cs script and Zenith.NET.Extensions.Upscaling.csproj for improved project structure and NuGet import. Apply minor bug fixes and consistency improvements. No functional algorithm changes.
The generated classes in Compile.cs are now declared as
internal partial class {pass.Name} instead of internal unsafe
partial class {pass.Name}, eliminating the unsafe modifier.
- Changed Sgsr2ConvertPass and Sgsr2UpscalePass to use partial classes for better organization.
- Added regions for DirectX12, Metal, and Vulkan shader entries in both pass classes.
- Updated shader bytecode in Sgsr2ConvertPass and Sgsr2UpscalePass for improved performance.
- Refactored shader compilation logic in Compile.cs to streamline pass creation and ensure regions are correctly handled.
- Introduced new structures for Pass and ShaderSource to enhance clarity and maintainability.
- Improved error handling during shader compilation and added logging for better debugging.
Updated generated shader pass files to use actual DirectX12 shader bytecode and set ThreadGroupSize to (8,8,1). Refactored Compile.cs: removed TargetFramework header, simplified boolean expressions, adopted C# range/index syntax, used char overloads for StartsWith/EndsWith, and improved region insertion logic. No functional changes; improvements are stylistic and for maintainability.
The <None Include="Shaders\**" /> line was deleted from the project file, so files in the Shaders directory and its subdirectories are no longer included as "None" items.
- Introduced Compile.cs for compiling shaders with support for multiple graphics APIs and shader variants.
- Implemented functionality to generate shader regions and ensure their presence in the generated file.
- Added ImGui.slang containing vertex and fragment shader definitions, including a color space conversion function.
Refactored ImGuiRenderer constructor to inline vertex and fragment shader creation using context.CreateShader with switch expressions, eliminating separate ShaderDesc variables. Moved sampler creation before shader creation. Sgsr1Pass.g.cs and ImGuiRenderer.g.cs had only formatting changes. No functional changes.
Refactored boolean checks by replacing `is false` and `is true` with `!` and direct checks for improved readability and adherence to C# conventions. No changes to functional logic.
Replaced empty CodeBytes arrays with actual compiled shader bytecode for DirectX12LegacyVertex, DirectX12LegacyFragment, DirectX12LinearVertex, and DirectX12LinearFragment shader descriptors. This allows the renderer to use these shaders at runtime without external loading or compilation.
Drop .g.cs files produced by slangc for ImGui and Upscaling
extensions; they are now produced at build time and no longer
checked into source control.
Refactored shader compilation and code generation to simplify ternary expressions, inline variables, and improve logging for diagnostics. Added region markers per graphics API in skeleton generation, and introduced FormatShaderDesc for generating empty shader fields, code bytes, and thread group sizes. Streamlined ReplaceShader and enhanced file writing logs to improve maintainability and clarity.
…lude compand parameter for improved texture loading options
…on guidelines

- Revised the document to reflect the new v3.0封板规格, replacing v2.0.
- Clarified the startup conditions and responsibilities regarding Renderer, Pass, Shader, and material code modifications.
- Updated the ImageSharp color semantics support and integration details.
- Enhanced the data contract for various rendering passes, including AtmospherePass, ShadowPass, and ProbeCapturePass.
- Specified the requirements for SkyData and AtmosphereData, including new parameters and their implications.
- Improved the descriptions of the rendering pipeline and data flow, ensuring clarity on the roles of different passes.
- Adjusted the validation boundaries and readiness criteria for RHI and related components.
- Emphasized the importance of verifying GPU execution paths and the implications of changes on rendering quality.
Deleted all .slang shaders and texture assets. Replaced Renderer.cs with a stub implementation. Added placeholder files for future passes. Updated DEVELOPMENT.md with a detailed Sponza rendering experiment specification. No changes to model, helper, or pass files.
A Unicode Byte Order Mark (BOM) was inserted at the start of Sponza.gltf. No other content was changed.
Added a detailed design document outlining goals, pipeline, scene/material/acceleration structure handling, light transport, SVGF denoising, output scaling, resource lifecycle, and acceptance criteria for Sponza ray tracing. Document enforces implementation conventions, resource management, and validation, referencing standards and code interfaces.
Replaced Unicode BOM with '{' in Sponza.gltf to restore valid JSON formatting.
Updated the Sponza development guide to lock down the renderer lifecycle, resource ownership boundaries, and asset-loading requirements. The document now specifies the public Renderer API, pass/module responsibilities, AppContext-based asset paths, resize/update behavior, and the rules for handling render history and upscaling state during frame execution.
Expanded the Sponza development document to define the rendering equation, PBRT-inspired BSDF and FresnelBlend material model, scene resource ownership, path sampling/MIS/RR rules, environment importance sampling, and validation expectations. This tightens the implementation contract and makes the physical assumptions, denoising limits, and performance checks explicit for the renderer.
…BR implementation, update pass structure, and enhance material sampling details.
…rface, Water, and Simulation

- Implement OutputPass for tone mapping and antialiasing effects.
- Create ScenePass to handle scene rendering with depth and color attachments.
- Introduce SurfacePass for particle density and normal calculations.
- Develop WaterPass for fluid rendering with ray tracing support.
- Add Simulation class to manage fluid dynamics and particle interactions.
- Define necessary constant structures for shader communication.
- Ensure proper resource management and disposal in all passes.
Complete overhaul of DEVELOPMENT.md to define a prescriptive, unified real-time ray-traced rendering pipeline for Sponza. Introduces clear pipeline stage separation, strict resource/data contracts, and detailed GBuffer/lighting output specs. Removes independent AO rays and global AO multipliers; AO now derives from GI visibility. Specifies fixed sampling, denoising (temporal, YCoCg clamp, A-Trous), compositing, upscaling, and output rules. Sets strict boundaries on allowed code changes and API usage. Documents Zenith.NET API review and implementation blockers. Establishes comprehensive acceptance criteria and excludes ReSTIR. The document is now the single source of truth for implementation.
Simulation parameters are now static and globally accessible, removing instance fields and centralizing configuration. All unsafe code is eliminated by refactoring buffer uploads to use a generic GraphicsHelper.Upload<T> method. Passes and event handlers are updated to use the new patterns. Shader code is cleaned up for readability, and minor modernizations and code cleanups are applied throughout.
Simplify settings by removing SimulationSettings and unused RenderSettings fields. Move simulation parameters to Simulation class as constants. Expose only WaveMakerEnabled and render scale in UI. Remove or hardcode advanced UI controls. Update simulation step logic and clean up related code.
Several fields in the Simulation class (FlipRatio, VelocityDamping, WaveAmplitude, WaveFrequency, Substeps, and PressureIterations) were changed from private to public constants to allow access from outside the class.
Refactor Renderer and related classes to remove RenderSettings and SurfaceData structs. Expose individual rendering options and textures as public fields or properties. Update UI and render methods to use new structure. Clean up unused code and simplify field/property access.
Refactored Buffer and Texture fields to use auto-implemented properties with getters (and private setters where needed), improving encapsulation and aligning with C# best practices. Updated resource members in rendering passes and the Simulation class. No changes to functional logic.
Extensively restructured the document for clarity and precision. Added a detailed project file tree, explicit resource contracts, and fixed sampling/denoising rules. Defined responsibilities and boundaries for all pipeline stages, specifying resource formats, shader bindings, and ownership. Included step-by-step data flow diagrams, resource lifetime management, and synchronization/layout transitions. Formalized implementation scope, limited allowed modifications, and aligned resource/constant buffer layouts between C# and Slang. Expanded technical review, clarified Zenith.NET API boundaries, runtime validation, and unsupported feature handling. Tabulated acceptance criteria and implementation order; documented rationale for excluding advanced techniques. Transformed design notes into a comprehensive implementation and validation standard.
- Bump SharpGLTF.Core NuGet package to 1.0.7 in Directory.Packages.props
- Remove unnecessary invisible character from DEVELOPMENT.md
The Sponza sample project has been fully removed from the repository. This includes deletion of all source files, assets (glTF model, binary data, textures, font), the project file, and related package references. The Sponza project was also removed from the solution file, and all Sponza-specific documentation and placeholder files have been deleted. The repository no longer contains any Sponza code, assets, or documentation.
Copilot AI lite review requested due to automatic review settings September 13, 2026 16:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved critical and moderate findings remain in upscaling, rendering, Vulkan compatibility, and API changes.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds SGSR-based spatial and temporal upscaling, refactors rendering across backends and FluidTank, and updates dependencies, documentation, and project organization.

Changes:

  • Adds the Upscaling extension, shaders, passes, and project metadata.
  • Updates Vulkan, Metal, DirectX 12, and experiment rendering infrastructure.
  • Refreshes dependencies, documentation, solution organization, and package metadata.
File summaries
File Reviewed changes
Zenith.NET.slnx Registers the Upscaling project.
sources/Zenith.NET/ZenithHelper.cs Adjusts mip-dimension calculations.
sources/Zenith.NET/Enums/NativeObjectType.cs Updates native object identifiers.
sources/Zenith.NET/CommandBuffer.cs Refactors render-pass viewport setup.
sources/Zenith.NET.Vulkan/VKTopLevelAccelerationStructure.cs Exposes acceleration-structure addresses.
sources/Zenith.NET.Vulkan/VKTimeline.cs Updates native-object handling.
sources/Zenith.NET.Vulkan/VKTexture.cs Updates image-view and texture creation.
sources/Zenith.NET.Vulkan/VKMeshShadingPipeline.cs Updates dynamic viewport states.
sources/Zenith.NET.Vulkan/VKGraphicsPipeline.cs Updates dynamic viewport states.
sources/Zenith.NET.Vulkan/VKFormats.cs Updates synchronization mappings.
sources/Zenith.NET.Vulkan/VKCommandBuffer.cs Updates dynamic rendering and viewport commands.
sources/Zenith.NET.Metal/MTLTopLevelAccelerationStructure.cs Exposes acceleration structures.
sources/Zenith.NET.Metal/MTLTimeline.cs Updates native-object handling.
sources/Zenith.NET.Metal/MTLTexture.cs Updates texture descriptors.
sources/Zenith.NET.Metal/MTLFormats.cs Updates Metal format mappings.
sources/Zenith.NET.Metal/MTLCommandQueue.cs Adds Metal 4 queue support.
sources/Zenith.NET.Metal/MTLCommandBuffer.cs Updates Metal 4 command encoding.
sources/Zenith.NET.Metal/MTLBuffer.cs Exposes Metal buffers.
sources/Zenith.NET.Metal/MTLBottomLevelAccelerationStructure.cs Exposes acceleration structures.
sources/Zenith.NET.DirectX12/DXTimeline.cs Updates native-object handling.
sources/Zenith.NET.DirectX12/DXTextureView.cs Updates texture-view creation.
sources/Zenith.NET.DirectX12/DXFormats.cs Updates barrier mappings.
sources/Zenith.NET.DirectX12/DXCommandBuffer.cs Updates command-buffer behavior.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Zenith.NET.Extensions.Upscaling.csproj Adds the Upscaling project.
sources/Extensions/Zenith.NET.Extensions.Upscaling/ThirdParty/SGSR-LICENSE.txt Includes SGSR licensing.
sources/Extensions/Zenith.NET.Extensions.Upscaling/TemporalUpscalerMode.cs Defines temporal modes.
sources/Extensions/Zenith.NET.Extensions.Upscaling/TemporalUpscalerDesc.cs Defines temporal configuration.
sources/Extensions/Zenith.NET.Extensions.Upscaling/TemporalUpscalerArgs.cs Defines temporal dispatch arguments.
sources/Extensions/Zenith.NET.Extensions.Upscaling/TemporalUpscaler.cs Implements temporal upscaling orchestration.
sources/Extensions/Zenith.NET.Extensions.Upscaling/SpatialUpscalerDesc.cs Defines spatial configuration.
sources/Extensions/Zenith.NET.Extensions.Upscaling/SpatialUpscalerArgs.cs Defines spatial dispatch arguments.
sources/Extensions/Zenith.NET.Extensions.Upscaling/SpatialUpscaler.cs Implements spatial upscaling orchestration.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Shaders/Sgsr2ConvertSpeed.slang Adds the SGSR2 speed conversion shader.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Shaders/Sgsr2ConvertQuality.slang Adds the SGSR2 quality conversion shader.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Shaders/Sgsr2Activate.slang Adds the SGSR2 activation shader.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Shaders/Sgsr1.slang Adds the SGSR1 shader.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Shaders/Compile.cs Compiles upscaling shaders.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Passes/Sgsr2UpscalePass.cs Records SGSR2 upscale dispatches.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Passes/Sgsr2ConvertPass.cs Records conversion dispatches.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Passes/Sgsr2ActivatePass.cs Records activation dispatches.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Passes/Sgsr1Pass.cs Records SGSR1 dispatches.
sources/Extensions/Zenith.NET.Extensions.Upscaling/Extensions.cs Adds upscaler factory extensions.
sources/Extensions/Zenith.NET.Extensions.Skia/SKTexture.cs Updates Skia texture initialization.
sources/Extensions/Zenith.NET.Extensions.ImGui/Zenith.NET.Extensions.ImGui.csproj Updates ImGui project dependencies.
sources/Extensions/Zenith.NET.Extensions.ImGui/Shaders/ImGui.slang Updates ImGui shader behavior.
sources/Extensions/Zenith.NET.Extensions.ImGui/Shaders/Compile.cs Updates ImGui shader compilation.
sources/Extensions/Zenith.NET.Extensions.ImGui/ImGuiRenderer.cs Updates ImGui texture uploads.
sources/Extensions/Zenith.NET.Extensions.ImageSharp/Extensions.cs Adds image color-companding support.
sources/Experiments/InkCanvas/Properties/launchSettings.json Updates InkCanvas launch settings.
sources/Experiments/InkCanvas/Drawing/Stroke.cs Refines stroke geometry handling.
sources/Experiments/InkCanvas/App.cs Updates InkCanvas rendering setup.
sources/Experiments/FluidTank/Simulation.cs Refactors fluid simulation setup.
sources/Experiments/FluidTank/Renderer.cs Adds centralized FluidTank rendering orchestration.
sources/Experiments/FluidTank/Program.cs Updates FluidTank startup.
sources/Experiments/FluidTank/Passes/WaterPass.cs Updates water rendering.
sources/Experiments/FluidTank/Passes/SurfacePass.cs Updates surface rendering.
sources/Experiments/FluidTank/Passes/ScenePass.cs Updates scene rendering.
sources/Experiments/FluidTank/Passes/OutputPass.cs Updates output processing.
sources/Experiments/FluidTank/Passes/GlassPass.cs Updates glass rendering.
sources/Experiments/FluidTank/Models/ParticleData.cs Updates particle data.
sources/Experiments/FluidTank/Models/FrameData.cs Updates frame data.
sources/Experiments/FluidTank/Models/FluidViewMode.cs Updates view modes.
sources/Experiments/FluidTank/Helpers/SceneResources.cs Updates scene resources.
sources/Experiments/FluidTank/Helpers/GraphicsHelper.cs Updates FluidTank helpers.
sources/Experiments/FluidTank/Helpers/FluidTankGeometry.cs Updates tank geometry.
sources/Experiments/FluidTank/Helpers/CocoaHelper.cs Updates Cocoa integration.
sources/Experiments/FluidTank/Handlers/ImGuiHandler.cs Updates FluidTank UI handling.
sources/Experiments/FluidTank/Handlers/CameraHandler.cs Updates camera handling.
sources/Experiments/FluidTank/Assets/Shaders/SurfaceCommon.slang Updates surface shader helpers.
sources/Experiments/FluidTank/Assets/Shaders/SceneCommon.slang Updates scene shader helpers.
sources/Experiments/FluidTank/Assets/Shaders/SceneBackground.slang Updates background rendering.
sources/Experiments/FluidTank/Assets/Shaders/Scene.slang Updates scene rendering.
sources/Experiments/FluidTank/Assets/Shaders/Particles.slang Updates particle rendering.
sources/Experiments/FluidTank/Assets/Shaders/Output.slang Updates output processing.
sources/Experiments/FluidTank/Assets/Shaders/Glass.slang Updates glass rendering.
sources/Experiments/FluidTank/Assets/Shaders/FluidSurface.slang Updates fluid-surface rendering.
sources/Experiments/FluidTank/Assets/Shaders/FluidSimulation.slang Updates fluid simulation shaders.
sources/Experiments/FluidTank/Assets/Shaders/FluidReflection.slang Updates reflection generation.
sources/Experiments/FluidTank/Assets/Shaders/FluidComposite.slang Updates fluid compositing.
sources/Experiments/FluidTank/Assets/Shaders/FluidBlur.slang Updates fluid blur processing.
sources/Experiments/FluidTank/Assets/Shaders/.clang-format Removes shader formatting overrides.
sources/Experiments/FluidTank/App.cs Updates FluidTank application wiring.
sources/Experiments/CornellBox/Assets/Shaders/PathTracing.slang Updates path-tracing shaders.
sources/Experiments/CornellBox/Assets/Shaders/.clang-format Removes shader formatting overrides.
sources/Experiments/CornellBox/App.cs Updates CornellBox rendering.
sources/Directory.Packages.props Updates package versions.
README.md Adds the Upscaling package badge.
documents/docs/workloads/rasterization.md Documents MRT and viewport behavior.
documents/docs/fundamentals/commands.md Documents render-pass viewport behavior.
Review details

Suppressed comments (5)

sources/Experiments/FluidTank/Assets/Shaders/FluidComposite.slang:312

  • When ray-traced reflections miss, FluidReflection.slang writes an RGBA value with alpha 0. This unconditional division therefore produces NaNs for those pixels instead of preserving the environment reflection; guard the divide and use the fallback when alpha is zero.
        reflected = reflectionSample.rgb / reflectionSample.a;

sources/Experiments/FluidTank/Renderer.cs:139

  • When ViewMode is Particles, the surface pass is skipped but WaterPass still binds surfacePass.Depth, Thickness, and Normal as sampled resources. After a resize in that mode those newly created textures remain in Undefined layout, so the Vulkan draw receives sampled-image descriptors whose required layout was never established; initialize/transition those resources or avoid binding the water path for particle rendering.
    sources/Zenith.NET.Vulkan/VKFormats.cs:71
  • FragmentShading no longer includes the color/depth attachment or acceleration-structure access masks that the previous Vulkan mapping supplied. Because Barrier is a generic stage-level memory barrier, callers using this flag around those fragment operations can now miss the required visibility dependency; retain the access masks for all operations represented by the stage.
    sources/Zenith.NET.Vulkan/VKGraphicsPipeline.cs:206
  • The new ViewportWithCount and ScissorWithCount dynamic states require the optional extended-dynamic-state feature, but device selection only checks the Vulkan API version and does not gate this path on that feature. On a Vulkan 1.4 device without it, pipeline creation or the corresponding commands are invalid; retain the count-based fallback or require/check the feature before using these states.
    sources/Zenith.NET.Vulkan/VKMeshShadingPipeline.cs:171
  • The mesh pipeline enables ViewportWithCount/ScissorWithCount unconditionally, which requires the optional extended-dynamic-state feature. API version 1.4 alone does not guarantee that feature, so this can make pipeline creation fail on otherwise supported devices; use the feature-gated fallback or reject such devices.
  • Files reviewed: 89/98 changed files
  • Comments generated: 8
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread sources/Zenith.NET.Vulkan/VKTexture.cs Outdated
Comment thread sources/Extensions/Zenith.NET.Extensions.ImageSharp/Extensions.cs Outdated
Comment thread sources/Zenith.NET/Enums/NativeObjectType.cs
Comment thread sources/Zenith.NET.Vulkan/VKFormats.cs
Renamed texture loading parameters for clarity (`compand` → `srgb`, `generateMipMaps` → `mipmaps`). Updated pixel format and mip level logic to use new names. Mipmap generation now respects `srgb` parameter. Synced `LoadTextureFromFile` with new naming and logic. `VKTexture` now selects image view type based on texture type, supporting 1D, 2D, and 3D.
Refactored code to relocate SceneResources from FluidTank.Helpers to FluidTank.Models. Updated using directives and applied explicit namespace and using statements for improved clarity and organization. No changes to SceneResources implementation.
Renamed debug event names for better readability in both upscalers. Grouped initialization of certain textures in TemporalUpscaler under a mode check to reduce duplication. Texture construction now only occurs in Quality mode. Reformatted a method call for clarity without changing logic.
@qian-o
qian-o merged commit 639adc9 into master Sep 13, 2026
2 checks passed
@qian-o
qian-o deleted the feat/upscaling branch September 13, 2026 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants