Skip to content

feat(ui): font size and perf overlay improvements#1511

Merged
doodlum merged 2 commits into
community-shaders:devfrom
soda3000:dev-22-09-2025
Sep 22, 2025
Merged

feat(ui): font size and perf overlay improvements#1511
doodlum merged 2 commits into
community-shaders:devfrom
soda3000:dev-22-09-2025

Conversation

@soda3000
Copy link
Copy Markdown
Contributor

@soda3000 soda3000 commented Sep 22, 2025

This PR improves the UI/UX around global font sizing and the Performance Overlay. It adds one-click “restore default” flows, persists overlay settings reliably, and tightens overlay behavior for clarity and stability.

Summary by CodeRabbit

  • New Features
    • Performance Overlay: Save/Load settings and a “Restore Defaults” button with tooltip; resets stats and history when restoring.
    • Theme & Fonts: New resolution-based automatic font size option with toggle, effective size readout, and manual slider (disabled in auto mode). “Restore Theme Defaults” button resets UI sizes, colors, and options; font scale updates immediately.
    • Reliability/UX: Settings load now falls back safely to defaults; improved font handling reduces unnecessary reloads.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Sep 22, 2025

Walkthrough

Adds settings persistence and default-restore for PerformanceOverlay, introduces resolution-based font sizing via ThemeManager::ResolveFontSize, updates Menu to use resolved font size with cached value, adjusts OverlayRenderer::RenderOverlay to accept cachedFontSize by reference, and enhances Settings UI with restore/defaults and auto/manual font size controls.

Changes

Cohort / File(s) Summary
PerformanceOverlay persistence and defaults
src/Features/PerformanceOverlay.cpp, src/Features/PerformanceOverlay.h
Added SaveSettings(json&), LoadSettings(json&), RestoreDefaultSettings(); DrawSettings gains “Restore Defaults” button with tooltip; loading resizes history buffers and falls back to defaults on invalid JSON.
Font size resolution and caching
src/Menu.cpp, src/Menu.h, src/Menu/ThemeManager.cpp, src/Menu/ThemeManager.h
ThemeManager adds ResolveFontSize(Menu) and uses it in ReloadFont; Menu uses resolved font size and introduces cachedFontSize; ThemeSettings.FontSize default set to 0.0f to enable dynamic resolution-based sizing.
Overlay renderer signature
src/Menu/OverlayRenderer.cpp, src/Menu/OverlayRenderer.h
RenderOverlay parameter changed from float cachedFontSize to float& cachedFontSize to allow modification by callee; callers pass lvalue.
Settings UI for sizes/defaults
src/Menu/SettingsTabRenderer.cpp
Adds “Restore Theme Defaults,” tooltip, auto/manual font size toggle (0.0f sentinel), effective-size readout, disabled slider in auto mode, and immediate FontGlobalScale updates.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant Menu
  participant ThemeManager
  participant OverlayRenderer

  User->>Menu: Open overlay / change theme size
  Menu->>ThemeManager: ResolveFontSize(menu)
  ThemeManager-->>Menu: effectiveFontSize
  Menu->>OverlayRenderer: RenderOverlay(..., cachedFontSize&, currentFontSize=effectiveFontSize)
  OverlayRenderer->>ThemeManager: ReloadFont(menu, cachedFontSize&)
  ThemeManager-->>OverlayRenderer: maybe update cachedFontSize
  OverlayRenderer-->>Menu: draw complete
Loading
sequenceDiagram
  autonumber
  actor User
  participant SettingsUI as Settings Tab UI
  participant Perf as PerformanceOverlay

  User->>SettingsUI: Click "Restore Defaults"
  SettingsUI->>Perf: RestoreDefaultSettings()
  Perf->>Perf: Reset settings, smoothed stats, frame history buffers

  User->>SettingsUI: Save / Load
  SettingsUI->>Perf: SaveSettings(json&) / LoadSettings(json&)
  Perf-->>SettingsUI: Settings serialized / applied (with fallback)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • alandtse

Poem

A nibble, a hop, a font-size tune,
I tweak my UI by sun and moon.
Defaults restored with a thump of feet,
Frames tracked neatly, buffers neat.
Save, load—snap!—my whiskers twitch;
Settings persist without a glitch.
Carrot-approved. 🥕

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 11.11% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The PR title "feat(ui): font size and perf overlay improvements" succinctly and accurately summarizes the primary work in this changeset—updates to UI font sizing/resolution defaults and improvements to the performance overlay (persistence and restore defaults)—and is clear and relevant for a reviewer scanning history.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

Comment @coderabbitai help to get the list of available commands and usage tips.

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

Using provided base ref: a04ff60
Using base ref: a04ff60
Base commit date: 2025-09-22T13:31:21+01:00 (Monday, September 22, 2025 01:31 PM)
No actionable suggestions for changed features.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (2)
src/Menu.h (1)

279-279: Consider documenting the cached font size member.

The cachedFontSize member serves an important role in preventing redundant font reloads. Consider adding a brief comment explaining its purpose.

-	float cachedFontSize = ThemeManager::Constants::DEFAULT_FONT_SIZE;  // Tracks whether font has been modified and may require reloading
+	float cachedFontSize = ThemeManager::Constants::DEFAULT_FONT_SIZE;  // Caches the last loaded font size to detect changes and prevent redundant reloads
src/Features/PerformanceOverlay.cpp (1)

241-256: Defaults reset looks good; consider clearing comparison/test state.

Optional: clearing A/B and manual test artifacts avoids confusing deltas immediately after a reset.

 void PerformanceOverlay::RestoreDefaultSettings()
 {
   this->settings = PerformanceOverlay::Settings{};
   // Reset runtime buffers/state to match defaults
   this->state.frameTimeHistory.Resize(this->settings.FrameHistorySize);
   this->state.postFGFrameTimeHistory.Resize(this->settings.FrameHistorySize);
   this->state.smoothFps = 0.0f;
   this->state.smoothFrameTimeMs = 0.0f;
   this->state.postFGSmoothFps = 0.0f;
   this->state.postFGSmoothFrameTimeMs = 0.0f;
   this->state.minFrameTime = 1000.0f;
   this->state.maxFrameTime = 0.0f;
   this->state.smoothedMinFrameTime = 0.0f;
   this->state.smoothedMaxFrameTime = 50.0f;
+  // Optional: also clear comparison state
+  this->ClearTestData();
+  this->settingsDiff.clear();
+  this->settingsDiffLoaded = false;
 }
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a04ff60 and 93c5adf.

📒 Files selected for processing (9)
  • src/Features/PerformanceOverlay.cpp (1 hunks)
  • src/Features/PerformanceOverlay.h (1 hunks)
  • src/Menu.cpp (3 hunks)
  • src/Menu.h (1 hunks)
  • src/Menu/OverlayRenderer.cpp (1 hunks)
  • src/Menu/OverlayRenderer.h (1 hunks)
  • src/Menu/SettingsTabRenderer.cpp (3 hunks)
  • src/Menu/ThemeManager.cpp (3 hunks)
  • src/Menu/ThemeManager.h (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{cpp,cxx,cc,c,h,hpp,hxx,hlsl,hlsli,fx,fxh,py}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Do not include TODO/FIXME placeholders; provide complete, working solutions

Files:

  • src/Menu.h
  • src/Menu/OverlayRenderer.h
  • src/Features/PerformanceOverlay.h
  • src/Features/PerformanceOverlay.cpp
  • src/Menu/OverlayRenderer.cpp
  • src/Menu/ThemeManager.h
  • src/Menu.cpp
  • src/Menu/SettingsTabRenderer.cpp
  • src/Menu/ThemeManager.cpp
src/**/*.{cpp,cxx,cc,h,hpp,hxx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

src/**/*.{cpp,cxx,cc,h,hpp,hxx}: Ensure SE/AE/VR runtime compatibility; use runtime detection patterns (e.g., REL::RelocateMember())
Include robust error handling and resource management with graceful degradation in the plugin code

Files:

  • src/Menu.h
  • src/Menu/OverlayRenderer.h
  • src/Features/PerformanceOverlay.h
  • src/Features/PerformanceOverlay.cpp
  • src/Menu/OverlayRenderer.cpp
  • src/Menu/ThemeManager.h
  • src/Menu.cpp
  • src/Menu/SettingsTabRenderer.cpp
  • src/Menu/ThemeManager.cpp
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build plugin and addons
🔇 Additional comments (17)
src/Menu/OverlayRenderer.h (1)

43-43: LGTM! Reference parameter enables proper font size persistence.

Changing cachedFontSize from pass-by-value to pass-by-reference allows the overlay renderer to properly update the caller's cached value when fonts are reloaded. This aligns with the font size resolution flow where Menu::cachedFontSize needs to persist across frames.

src/Menu/ThemeManager.h (1)

10-12: LGTM! Well-documented resolution-based font sizing API.

The new ResolveFontSize method provides a clean interface for determining effective font size, with clear documentation explaining the dual behavior: dynamic resolution-based sizing when <= 0, or user-defined size when > 0.

src/Menu.h (1)

102-102: LGTM! Sensible default enables dynamic font sizing.

Setting FontSize = 0.0f as the default is a good design choice that triggers resolution-based sizing out of the box. The inline comment clearly documents the behavior.

src/Menu.cpp (3)

179-180: LGTM! Proper font size resolution through ThemeManager.

The code correctly delegates font size computation to ThemeManager::ResolveFontSize, maintaining consistent behavior across the application.


191-192: LGTM! Prevents redundant first-frame font reload.

Good optimization to initialize cachedFontSize with the effective size, avoiding unnecessary font reload on the first overlay render.


419-420: LGTM! Proper parameter passing to overlay renderer.

The code correctly passes both the cached font size (by reference) and the current resolved font size to the overlay renderer, enabling proper change detection and font reloading.

src/Menu/OverlayRenderer.cpp (1)

24-24: LGTM! Reference parameter matches header declaration.

The implementation correctly uses pass-by-reference for cachedFontSize, matching the header declaration and enabling proper font size persistence.

src/Menu/SettingsTabRenderer.cpp (3)

9-9: LGTM! Required include for ThemeManager usage.

The include is necessary for accessing ThemeManager::ResolveFontSize and related constants.


145-154: LGTM! Well-implemented theme reset with immediate font scale application.

The "Restore Theme Defaults" button properly resets the theme to defaults and immediately applies the global font scale. The tooltip clearly describes the action.


202-225: LGTM! Excellent resolution-based font sizing UI implementation.

The implementation provides a clean user experience:

  • Clear checkbox to toggle between auto and manual font sizing
  • Proper state transitions when switching modes
  • Helpful "Effective size" display showing the computed font size
  • Disabled slider in auto mode prevents confusion
  • Good clamping when switching from auto to manual
src/Menu/ThemeManager.cpp (3)

9-9: LGTM! Required include for accessing screen size.

The State.h include is necessary for accessing globals::state->screenSize in the new ResolveFontSize method.


128-129: LGTM! Proper font size resolution and caching.

The implementation correctly:

  1. Uses ResolveFontSize to compute the effective font size
  2. Updates the cached value to enable proper change detection

Also applies to: 144-145


148-166: LGTM! Well-implemented resolution-based font sizing with proper fallback.

The ResolveFontSize implementation is robust:

  • Clear precedence: user-configured size takes priority when > 0
  • Dynamic sizing based on screen height with a sensible ratio (2.5%)
  • Proper bounds clamping to prevent extreme values
  • Fallback to default with warning log when screen size is unavailable
  • Using std::round for the configured value check is appropriate for float comparison
src/Features/PerformanceOverlay.h (1)

132-135: Confirm JSON alias and contract for persistence APIs.

  • Do we have a global using json = nlohmann::json; in scope for both the declaration and base interface? If not, prefer nlohmann::json& to avoid mismatch with the override.
  • Please confirm the contract: does SaveSettings/LoadSettings receive the feature sub-object or the root JSON? This affects how the .cpp should read/write (direct object vs nested under GetShortName()).
src/Features/PerformanceOverlay.cpp (3)

207-213: Restore Defaults control: nice addition.

Button + tooltip reads well and is discoverable. No issues.

Should clicking “Restore Defaults” also clear any captured test data to avoid stale comparisons post‑reset?


221-226: Saving into root vs. feature subkey — verify expected JSON shape.

j = this->settings; will overwrite the passed object. If the caller hands you the root JSON, this can clobber other features. If the caller passes a feature‑scoped object, this is correct. Please confirm and, if needed, write under a subkey:

-void PerformanceOverlay::SaveSettings(json& j)
-{
-  // Persist all overlay settings to JSON
-  j = this->settings;  // uses NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT
-}
+void PerformanceOverlay::SaveSettings(json& j)
+{
+  if (!j.is_object()) j = json::object();
+  // If Save() is given the root object, persist under the short name.
+  // If the contract is feature‑scoped, keep direct assignment instead.
+  j[GetShortName()] = this->settings;
+}

227-240: Clamp and validate loaded settings to prevent pathological allocations and bad UI state.

File: src/Features/PerformanceOverlay.cpp — LoadSettings

Apply this diff:

-void PerformanceOverlay::LoadSettings(json& j)
-{
-  try {
-    // Load all settings from JSON (missing fields use defaults)
-    this->settings = j.get<PerformanceOverlay::Settings>();
-  } catch (...) {
-    // Fallback to defaults if JSON is invalid
-    this->settings = PerformanceOverlay::Settings{};
-  }
-  // Ensure history buffers match loaded size
-  this->state.frameTimeHistory.Resize(this->settings.FrameHistorySize);
-  this->state.postFGFrameTimeHistory.Resize(this->settings.FrameHistorySize);
-}
+void PerformanceOverlay::LoadSettings(json& j)
+{
+  // Accept either a direct block or a nested block under the feature short name.
+  const json* src = &j;
+  if (j.is_object() && j.contains(GetShortName())) {
+    src = &j[GetShortName()];
+  }
+  try {
+    this->settings = src->get<PerformanceOverlay::Settings>();
+  } catch (...) {
+    this->settings = PerformanceOverlay::Settings{};
+  }
+  // Sanitize loaded values
+  this->settings.FrameHistorySize = std::clamp(
+    this->settings.FrameHistorySize,
+    Settings::kMinFrameHistorySize,
+    Settings::kMaxFrameHistorySize);
+  this->settings.UpdateInterval = std::clamp(
+    this->settings.UpdateInterval, 0.001f, Settings::kMaxUpdateInterval);
+  this->settings.TextSize = std::clamp(this->settings.TextSize, 0.5f, 2.0f);
+  this->settings.BackgroundOpacity = std::clamp(this->settings.BackgroundOpacity, 0.0f, 1.0f);
+  // Ensure history buffers match sanitized size
+  this->state.frameTimeHistory.Resize(this->settings.FrameHistorySize);
+  this->state.postFGFrameTimeHistory.Resize(this->settings.FrameHistorySize);
+}

Also consider clamping/restoring Position (or set PositionSet = false) if it would end up off‑screen after a resolution change.

@github-actions
Copy link
Copy Markdown

✅ A pre-release build is available for this PR:
Download

@doodlum doodlum merged commit a2969f8 into community-shaders:dev Sep 22, 2025
15 checks passed
Pentalimbed pushed a commit to Pentalimbed/skyrim-community-shaders that referenced this pull request Dec 16, 2025
* chore(ui): update discord banner (community-shaders#1493)

* fix: use proper filename settingsuser.json (community-shaders#1491)

* chore(upscaling): increase fsr sharpness

* chore: rename d3d12interop to d3d12SwapChainActive (community-shaders#1494)

* feat(llf): remove particle lights (community-shaders#1495)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* feat(llf): move llf to core (community-shaders#1496)

* fix: remove water clamp (community-shaders#1497)

* fix(upscaling): more upscaling fixes (community-shaders#1498)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix: fix some internal errors when debugging (community-shaders#1500)

* fix(ui): fix save settings conflicts & welcome screen (community-shaders#1501)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix(ui): add constraints for discord banner size (community-shaders#1463)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix(VR): fix exiting menu using controllers (community-shaders#1502)

* build: fix warnings (community-shaders#1505)

* feat(UI): allow tooltips for disabled elements (community-shaders#1503)

* feat(upscaling): add downscale percentages (community-shaders#1506)

* perf(ssgi): optimize  (community-shaders#1499)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* feat(ui): font size and perf overlay improvements (community-shaders#1511)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* chore: remove unused hooks (community-shaders#1510)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix: adjust IsInterior to consider kNoSky or kFixedDimensions flags (community-shaders#1512)

* fix(hair): correct hair indirect normal, marschner by default (community-shaders#1515)

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore: mostly revert ISHDR to 1.3.6 (community-shaders#1516)

* chore(upscaling): simplify interop and upscale methods (community-shaders#1514)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix(hair): typo in code (community-shaders#1517)

* feat(ibl): lerp sky ibl using skylighting (community-shaders#1519)

* fix(sss): burley artifacts with effect blend (community-shaders#1518)

* fix(upscaling): fix screenshots when upscaling enabled (community-shaders#1520)

* fix(upscaling): fix mipbias sometimes being wrong (community-shaders#1521)

* fix: fix compile error if snow shader on (community-shaders#1522)

* chore(upscaling): revert fsr to typical settings (community-shaders#1523)

* fix: fix minor ui issues (community-shaders#1524)

* chore(grass collision): simpler grass collision (community-shaders#1525)

* fix: update skylighting and version

* fix(pbr): fix inconsistencies (community-shaders#1526)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: jiayev <l936249247@hotmail.com>

* feat(upscaling): sharpening slider (community-shaders#1527)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* chore: bump versions

* fix(ibl): add ibl to reflection normalization (community-shaders#1528)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix(hair): remove pbr lighting mult for hair (community-shaders#1531)

* chore(upscaling): add back upscale multiplier (community-shaders#1532)

* fix(upscaling): fix minor upscaling issues (community-shaders#1536)

* chore: gamma space normalisation (community-shaders#1535)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* feat(grass collision): implement with texture and history (community-shaders#1539)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore(grass collision): less aggressive (community-shaders#1546)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix(skylighting): fix cell id casting (community-shaders#1544)

* chore(emat): auto detect terrain parallax (community-shaders#1545)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* chore: update versions

* feat(VR): enable upscaling (community-shaders#1507)

* fix(terrain shadows): fix brightened lods (community-shaders#1547)

* chore(upscaling): reduce ghosting near camera (community-shaders#1548)

* fix: fix grass not animating (community-shaders#1549)

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix(grass collision): fix non-standard timescales (community-shaders#1550)

* build: deploy only updated files (community-shaders#1556)

* feat: add Clear Shader Cache to Advanced (community-shaders#1555)

* chore(featureissues): default collapse testing menu (community-shaders#1554)

* fix(VR): use only supported shaders from cache (community-shaders#1553)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* build: use gersemi cmake formatter (community-shaders#1557)

* fix(terrain): vanilla diffuse in pbr terrain cell too bright due to wrong color space (community-shaders#1558)

* docs: add new feature development template guide (community-shaders#1529)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* docs(UI): remove duplicate GPL license statement (community-shaders#1561)

* feat: add renderdoc for debugging (community-shaders#1560)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: alandtse <7086117+alandtse@users.noreply.github.com>
Co-authored-by: Alan Tse <alandtse@gmail.com>

* fix(ui): welcome popup size issues (community-shaders#1573)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* chore(grass collision): minor tweaks (community-shaders#1568)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix(terrain helper): fix conflicting bit (community-shaders#1566)

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* feat(UI): separate theme settings, UI refactor, font support (community-shaders#1571)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* chore: bump versions

* build: fix zipping aio (community-shaders#1579)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix(grass collision): clamp maximum depth of grass (community-shaders#1578)

* feat(UI): enhance shader blocking (community-shaders#1564)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: alandtse <7086117+alandtse@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Alan Tse <alandtse@gmail.com>

* fix: remove duplicate buffer setup (community-shaders#1586)

* feat: update shader compile elapsed time every second (community-shaders#1587)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* build: add cmake install commands (community-shaders#1372)

* feat(perf-overlay): add size controls (community-shaders#1591)

* fix(perf-overlay): fix infinite draw calls table height (community-shaders#1590)

* refactor(perf-overlay): remove collapsible headers (community-shaders#1572)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix(perf-overlay): removed ImGuiTableFlags_ScrollX/Y for scroll bar issues (community-shaders#1594)

* build: fix shader copying to relative paths (community-shaders#1603)

* fix(ibl): apply ibl to cubemap normalisation for non deferred (community-shaders#1604)

* fix(grass): use correct light direction (community-shaders#1602)

* fix(welcome-popup): adjust font size & window spacing (community-shaders#1592)

* feat(lod): add gamma sliders (community-shaders#1588)

* build: correct CodeRabbit schema syntax (community-shaders#1608)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: alandtse <7086117+alandtse@users.noreply.github.com>

* build: add compile-time validation of GPU buffers (community-shaders#1427)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: alandtse <7086117+alandtse@users.noreply.github.com>

* ci: run shader validation on CMake and CI config changes (community-shaders#1606)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: alandtse <7086117+alandtse@users.noreply.github.com>

* feat: procedural sun

* limb darkening

* another darkening

* build(deps): remove orphaned Intel XeSS dependency (community-shaders#1611)

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* fix: accumulate sunlight color in pixel shader output

* fix(ui): enter key now behaves properly when first time popup is open (community-shaders#1615)

* feat(ui): add tabs to advanced settings & PBR search (community-shaders#1599)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* build: add HLSL intellisense (community-shaders#1614)

* refactor(UI): move light limit visualization into debug (community-shaders#1619)

* refactor(ui): add settings for shader block hotkeys (community-shaders#1624)

Co-authored-by: Bruce <44987693+brucenguyen@users.noreply.github.com>

* fix(ui): anchor reset settings button position  (community-shaders#1621)

Co-authored-by: Giovanni Correia <Gistix@users.noreply.github.com>

* fix(hair): use indirect normal for deferred marschner hair (community-shaders#1626)

* build: fix Package-AIO-Manual for fresh pulls (community-shaders#1625)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix(snow): use world space vectors (community-shaders#1618)

* feat(UI): add gaussian blur shader core files (community-shaders#1595)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* feat(ui): add test conditions button (community-shaders#1637)

* fix(ui): blocked shader info overflow in Shader Debug tab (community-shaders#1632)

* fix(upscaling): replace NIS with RCAS for DLSS (community-shaders#1620)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix(dynamic cubemaps): add a check for timeskip (community-shaders#1639)

* refactor: restructure lighting (community-shaders#1633)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* feat(ui): add themes & fonts (community-shaders#1596)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* feat(water): add flowmap parallax (community-shaders#1636)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix cloud shadow setting saving

---------

Co-authored-by: zxcvbn <66063766+zndxcvbn@users.noreply.github.com>
Co-authored-by: davo0411 <davidkehoe0411@outlook.com>
Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Alan Tse <alandtse@users.noreply.github.com>
Co-authored-by: soda <130315225+soda3000@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: ThePagi <32794457+ThePagi@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: alandtse <7086117+alandtse@users.noreply.github.com>
Co-authored-by: Alan Tse <alandtse@gmail.com>
Co-authored-by: Yupeng Zhang <ArcEarth@outlook.com>
Co-authored-by: kuplion <kuplion@hotmail.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: Giovanni Correia <Gistix@users.noreply.github.com>
Co-authored-by: Bruce <44987693+brucenguyen@users.noreply.github.com>
Co-authored-by: Midona <106106405+midona-rhel@users.noreply.github.com>
@coderabbitai coderabbitai Bot mentioned this pull request Mar 2, 2026
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