Skip to content

feat: enb post processing#1398

Closed
doodlum wants to merge 220 commits into
devfrom
effect11
Closed

feat: enb post processing#1398
doodlum wants to merge 220 commits into
devfrom
effect11

Conversation

@doodlum
Copy link
Copy Markdown
Collaborator

@doodlum doodlum commented Aug 16, 2025

Summary by CodeRabbit

  • New Features

    • Added ENB Post-Processing with DX11 FX support, including bloom and main effects.
    • In-app UI to select techniques, edit parameters, and manage effects (load/save/reset).
    • Effects are applied during rendering with shared textures and time-of-day data.
  • Chores

    • Added a new graphics dependency to support FX-based post-processing.
    • Introduced configuration and version files for the post-processing feature.
    • Updated local developer tooling settings.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Aug 16, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

Introduces a new ENB Post Processing feature with FX11-based effects and a managing singleton. Integrates a render hook into the HDR tonemap pass, adds effects (ENBEffect, ENBBloom), UI and settings handling, shared D3D11 resources, and build dependencies (Effects11). Registers the feature globally and exposes it in the feature list.

Changes

Cohort / File(s) Summary
Build & Dependencies
CMakeLists.txt, vcpkg.json
Adds Effects11 dependency and links Microsoft::Effects11. Updates vcpkg dependencies to include effects11.
Feature: ENB Post Processing Core
src/Features/ENBPostProcessing.h, src/Features/ENBPostProcessing.cpp
Adds ENBPostProcessing feature with settings persistence, UI, resource setup, render hook install, and execution via EffectManager.
Effect Framework
src/Features/ENBPostProcessing/Effect.h, src/Features/ENBPostProcessing/Effect.cpp
Introduces base Effect class handling FX compilation, technique sequencing, UI variable system, texture binding, and ImGui rendering.
Concrete Effects
src/Features/ENBPostProcessing/ENBEffect.*, src/Features/ENBPostProcessing/ENBBloom.*
Adds ENB-style effects with Execute flows; ENBEffect updates shader variables; ENBBloom delegates to technique sequence.
Effect Manager
src/Features/ENBPostProcessing/EffectManager.h, src/Features/ENBPostProcessing/EffectManager.cpp
Adds singleton manager to register/load/save/apply effects, manage shared D3D11 resources, update common variables, and render a fullscreen pass.
Engine Integration
src/Feature.cpp, src/Globals.h, src/Globals.cpp
Registers global enbPostProcessing feature; exposes it in feature list; adds forward declaration and definition.
Configs & Assets
features/ENBPostProcessing/Shaders/Features/ENBPostProcessing.ini
Adds INI with [Info] Version 1-0-0.
Local Tooling
.claude/settings.local.json
Adds local permissions config for tooling (allow Bash/WebFetch).

Sequence Diagram(s)

sequenceDiagram
    participant Game as Game Renderer
    participant Hook as HDRTonemap Hook
    participant EM as EffectManager
    participant FX as Effects (ENBEffect/ENBBloom)
    participant D3D as D3D11
    participant RT as Render Targets

    Game->>Hook: Invoke tonemap blend
    Hook->>EM: ExecuteEffects(input, swap, output)
    EM->>D3D: Bind fullscreen quad + states
    EM->>EM: Update common variables
    loop For each compiled effect
        EM->>FX: Execute(input, swap, output)
        FX->>D3D: Apply technique sequence
        D3D->>RT: Ping-pong render passes
    end
    EM-->>Hook: Final texture in output
    Hook->>D3D: Copy to intermediate target
    Hook-->>Game: Return to pipeline
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested reviewers

  • alandtse
  • davo0411

Poem

A whisker twitch, a shader gleam,
I hop between the tones that stream—
FX and bloom in moonlit flight,
I blend the hues of day and night.
With tiny paws I press “Apply,”
Post-process dreams across the sky. 🐇✨

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch effect11

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions
Copy link
Copy Markdown

Using provided base ref: 2a9e819
Using base ref: 2a9e819
Base commit date: 2025-08-16T00:16:27-07:00 (Saturday, August 16, 2025 12:16 AM)
No actionable suggestions for changed features.

Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
@doodlum
Copy link
Copy Markdown
Collaborator Author

doodlum commented Aug 16, 2025

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Aug 16, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

doodlum and others added 29 commits August 23, 2025 19:13
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
@doodlum doodlum closed this Sep 3, 2025
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