Skip to content

feat(upscaling): integrate Streamline Reflex controls#1958

Merged
alandtse merged 19 commits into
community-shaders:devfrom
ParticleTroned:pr/reflex-integration-upscaler
Mar 26, 2026
Merged

feat(upscaling): integrate Streamline Reflex controls#1958
alandtse merged 19 commits into
community-shaders:devfrom
ParticleTroned:pr/reflex-integration-upscaler

Conversation

@ParticleTroned
Copy link
Copy Markdown
Contributor

@ParticleTroned ParticleTroned commented Mar 6, 2026

- Integrates Nvidia Reflex compiled from Streamline into Upscaler

  • Reasoning and howto in Reflex.md
  • Includes CmakeLists.txt.REFLEX setup to automatically compile dlls from extern for future releases if needed
  • All latest runtime dlls are included to make this compile
  • Not tested extensively in flatrim but in VR it is a difference maker and elminates all stutter !
  • Integrated in Upscaler UI with explanatory tooltips:

--> I will have no time to work on this further this month, but it is pretty straight forward , hopefully well annotated (see Reflex.md and in code), and I do not mind if somebody else brings this over the line if you consider this a win for CS.

pr-reflex1 pr-reflex2

Tests below are from my Skyrim VR modlist with PR compiled AIO:

reflex-overviewPR

Summary by CodeRabbit

  • New Features

    • NVIDIA Reflex controls added to UI (Low Latency Mode, Low Latency Boost, marker optimization, FPS limit 20–240 Hz); per-frame Reflex pacing integrated and gated by frame-generation path and adapter support; UI shows availability/warnings.
  • Bug Fixes

    • Reflex FPS limit validated and clamped at load time with a warning if adjusted.
  • Chores

    • Added NVIDIA Reflex SDK license document.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 6, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds NVIDIA Reflex integration: new public Reflex settings in Upscaling, DX12 frame-generation path checks, runtime Reflex/PCL binding and per-frame pacing via Streamline, UI gating/validation for Reflex and frame-generation paths, and an NVIDIA Reflex license file.

Changes

Cohort / File(s) Summary
API & Settings
src/Features/Upscaling.h, src/Features/Upscaling.cpp
Expose Reflex settings in Upscaling::Settings (low-latency, boost, markers, FPS limit), add IsFrameGenerationDx12PathActive() API, and validate/clamp reflexFPSLimit. UI gating and restart warnings now consider the DX12 frame-generation path.
Streamline implementation
src/Features/Upscaling/Streamline.h, src/Features/Upscaling/Streamline.cpp
Add Reflex/PCL feature flags and function pointers, ReflexOptionsCache, lastReflexSleepFrame, EnsureFrameToken(), UpdateReflex(), change CheckFrameConstants to return bool; implement device post-bind binding, dynamic availability checks, per-frame token handling, option-change detection, slReflexSetOptions and slReflexSleep usage, and PCL marker handling.
Integration hook
src/Hooks.cpp
Invoke UpdateReflex() from the input-polling hook to drive per-frame Reflex pacing and update related comments.
Licensing
features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt
Add NVIDIA SDK / Reflex Low Latency SDK license and supplement file.

Sequence Diagram

sequenceDiagram
    participant UI as Upscaling UI
    participant Device as D3D Device
    participant Streamline as Streamline
    participant Hooks as Input Hook
    participant Reflex as Reflex Runtime

    UI->>Streamline: Save Reflex settings (mode, boost, markers, FPS limit)
    Device->>Streamline: Bind device / post-bind event
    Streamline->>Streamline: CheckBackendFeatures(pAdapter) / bind slReflex*/slPCL*
    Streamline->>Reflex: Query availability

    loop Per frame
        Hooks->>Streamline: UpdateReflex()
        Streamline->>Streamline: EnsureFrameToken()
        Streamline->>Streamline: Compute Reflex options from settings
        alt Options changed && eligible
            Streamline->>Reflex: slReflexSetOptions(...)
        end
        Streamline->>Reflex: slReflexSleep(frameToken)
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • doodlum
  • alandtse

Poem

🐰
I nibble code at break of dawn,
Reflex hums, the frames respawn,
Tokens pulse and pacing sings,
Markers hop and low-latency springs,
Hooray — the shaders run!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 17.86% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(upscaling): integrate Streamline Reflex controls' accurately describes the main objective of the PR, which is to integrate NVIDIA Reflex runtime controls and UI into the Upscaler feature.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 6, 2026

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: 2

🧹 Nitpick comments (3)
CMakeLists.txt.REFLEX (1)

1-10: Clarify the intended usage of this file.

The PR description and Reflex.md indicate this file (CMakeLists.txt.REFLEX) contains "parked" Reflex staging logic that's not active by default. Consider adding a header comment explaining:

  1. This is a reference/template CMake configuration
  2. How it relates to the main CMakeLists.txt
  3. Instructions for maintainers who want to enable automated Streamline builds
📝 Suggested header comment
+# ########################################################################################################################
+# ## CMakeLists.txt.REFLEX - Reference configuration for Streamline/Reflex runtime staging
+# ##
+# ## This file contains CMake logic to automatically build Streamline runtime modules from
+# ## extern/Streamline-DX12. It is NOT used by default - see Reflex.md for integration instructions.
+# ##
+# ## To enable: Merge relevant sections into the main CMakeLists.txt or rename this file.
+# ########################################################################################################################
+
 cmake_minimum_required(VERSION 3.21)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CMakeLists.txt.REFLEX` around lines 1 - 10, Add a top-of-file header comment
in CMakeLists.txt.REFLEX explaining that this is a parked/reference/template
CMake configuration (not active by default), how it relates to the primary
CMakeLists.txt (e.g., used for Reflex staging/Streamline CI and should be
copied/merged into the main CMakeLists when enabling), and concise maintainer
instructions for enabling automated Streamline builds (what to change or which
CI jobs/flags to toggle and any expected side effects); place the comment above
the cmake_minimum_required block and reference the project() entry
(CommunityShaders VERSION 1.4.11) so maintainers immediately see the connection.
src/Features/Upscaling.cpp (1)

398-398: Minor inconsistency in FPS limit validation range.

The UI clamps reflexFPSLimit to [20.0, 240.0], but Streamline::UpdateReflex() (line 616 in Streamline.cpp) uses [1.0, 1000.0] for the microsecond conversion. While the UI range is more user-friendly, consider documenting or unifying these ranges to avoid confusion.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Features/Upscaling.cpp` at line 398, The UI clamps
settings.reflexFPSLimit to [20.0,240.0] but Streamline::UpdateReflex() expects a
wider range ([1.0,1000.0]) for microsecond conversion; to fix, make the
validation consistent by either expanding the clamp in Upscaling.cpp (change
settings.reflexFPSLimit clamp to match Streamline::UpdateReflex's allowed range)
or explicitly document the UI limit near settings.reflexFPSLimit and add a
defensive clamp/validation inside Streamline::UpdateReflex(); reference
settings.reflexFPSLimit and Streamline::UpdateReflex() when making the change so
both places enforce the same range or clearly state the intended limits.
src/Features/Upscaling/Streamline.cpp (1)

616-617: Consider aligning FPS limit clamping with UI constraints.

The conversion uses std::clamp(settings.reflexFPSLimit, 1.0f, 1000.0f), but the UI clamps to [20.0, 240.0]. While this is safely defensive (UI-validated values will always pass), you might consider using matching ranges or extracting constants to avoid future divergence.

💡 Optional: Extract shared constants
// In Streamline.h or a shared location
static constexpr float kReflexFPSLimitMin = 20.0f;
static constexpr float kReflexFPSLimitMax = 240.0f;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Features/Upscaling/Streamline.cpp` around lines 616 - 617, The clamp
range for settings.reflexFPSLimit should match the UI constraints to avoid
drift: replace the hardcoded 1.0f/1000.0f in the fpsLimit calculation (where
fpsLimit, options.frameLimitUs, settings.reflexFPSLimit and
settings.reflexUseFPSLimit are used) with the UI range (20.0f to 240.0f) or,
better, extract shared constants (e.g., kReflexFPSLimitMin and
kReflexFPSLimitMax declared in Streamline.h or a shared header) and use those
constants in Streamline.cpp when computing fpsLimit and frameLimitUs so both UI
and backend use the same bounds.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@Reflex.md`:
- Line 13: Fix the typo in the Markdown heading by changing "Comnpiled runtime
DLLs to keep version-aligned (DEV has 2.10.0, I updated submodules and have
2.10.3)" to "Compiled runtime DLLs to keep version-aligned (DEV has 2.10.0, I
updated submodules and have 2.10.3)"; update the heading text in Reflex.md so
the word "Comnpiled" is corrected to "Compiled" while leaving the rest of the
line unchanged.
- Around line 32-38: Update Reflex.md to clarify the two different locations:
state that the listed "copy" target is for manual pre-build placement inside the
source tree (for local/dev runs), and separately document the CMake install
destination used by CMakeLists.txt.REFLEX (the install() target controlled by
CMAKE_INSTALL_PREFIX, which defaults to ${CMAKE_BINARY_DIR}/aio) as the
runtime/deployment location; mention both locations and which workflow (manual
vs. CMake install) each applies to and reference the install() usage in
CMakeLists.txt.REFLEX so readers know where the files end up after running
install.

---

Nitpick comments:
In `@CMakeLists.txt.REFLEX`:
- Around line 1-10: Add a top-of-file header comment in CMakeLists.txt.REFLEX
explaining that this is a parked/reference/template CMake configuration (not
active by default), how it relates to the primary CMakeLists.txt (e.g., used for
Reflex staging/Streamline CI and should be copied/merged into the main
CMakeLists when enabling), and concise maintainer instructions for enabling
automated Streamline builds (what to change or which CI jobs/flags to toggle and
any expected side effects); place the comment above the cmake_minimum_required
block and reference the project() entry (CommunityShaders VERSION 1.4.11) so
maintainers immediately see the connection.

In `@src/Features/Upscaling.cpp`:
- Line 398: The UI clamps settings.reflexFPSLimit to [20.0,240.0] but
Streamline::UpdateReflex() expects a wider range ([1.0,1000.0]) for microsecond
conversion; to fix, make the validation consistent by either expanding the clamp
in Upscaling.cpp (change settings.reflexFPSLimit clamp to match
Streamline::UpdateReflex's allowed range) or explicitly document the UI limit
near settings.reflexFPSLimit and add a defensive clamp/validation inside
Streamline::UpdateReflex(); reference settings.reflexFPSLimit and
Streamline::UpdateReflex() when making the change so both places enforce the
same range or clearly state the intended limits.

In `@src/Features/Upscaling/Streamline.cpp`:
- Around line 616-617: The clamp range for settings.reflexFPSLimit should match
the UI constraints to avoid drift: replace the hardcoded 1.0f/1000.0f in the
fpsLimit calculation (where fpsLimit, options.frameLimitUs,
settings.reflexFPSLimit and settings.reflexUseFPSLimit are used) with the UI
range (20.0f to 240.0f) or, better, extract shared constants (e.g.,
kReflexFPSLimitMin and kReflexFPSLimitMax declared in Streamline.h or a shared
header) and use those constants in Streamline.cpp when computing fpsLimit and
frameLimitUs so both UI and backend use the same bounds.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 8a6865e3-d573-4e50-9e2b-3f90906f7461

📥 Commits

Reviewing files that changed from the base of the PR and between 6711c51 and 444a696.

⛔ Files ignored due to path filters (5)
  • features/Upscaling/Shaders/Upscaling/Streamline/sl.common.dll is excluded by !**/*.dll
  • features/Upscaling/Shaders/Upscaling/Streamline/sl.dlss.dll is excluded by !**/*.dll
  • features/Upscaling/Shaders/Upscaling/Streamline/sl.interposer.dll is excluded by !**/*.dll
  • features/Upscaling/Shaders/Upscaling/Streamline/sl.pcl.dll is excluded by !**/*.dll
  • features/Upscaling/Shaders/Upscaling/Streamline/sl.reflex.dll is excluded by !**/*.dll
📒 Files selected for processing (7)
  • CMakeLists.txt.REFLEX
  • Reflex.md
  • src/Features/Upscaling.cpp
  • src/Features/Upscaling.h
  • src/Features/Upscaling/Streamline.cpp
  • src/Features/Upscaling/Streamline.h
  • src/Hooks.cpp

Comment thread Reflex.md Outdated
Comment thread Reflex.md Outdated
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 7, 2026

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

Copy link
Copy Markdown
Collaborator

@doodlum doodlum left a comment

Choose a reason for hiding this comment

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

reflex cannot be combined with framegen/dx12 swapchain

why are random files dumped in the repo root folder

Copy link
Copy Markdown
Collaborator

@alandtse alandtse left a comment

Choose a reason for hiding this comment

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

If the dlls are a build artifact, they probably shouldn't be included in the repo anymore but built for distribution. Also, please make sure you use our existing dependency structure which is vcpkg or submodules. You must integrate using that and not a new cmake system. Otherwise the ci wont' be able to handle it cleanly. I can't tell what version of the streamline dlls you're building. We should be very thoughtful about building developer or unsigned version of official dlls.

@ParticleTroned
Copy link
Copy Markdown
Contributor Author

ParticleTroned commented Mar 16, 2026

If the dlls are a build artifact, they probably shouldn't be included in the repo anymore but built for distribution. Also, please make sure you use our existing dependency structure which is vcpkg or submodules. You must integrate using that and not a new cmake system. Otherwise the ci wont' be able to handle it cleanly. I can't tell what version of the streamline dlls you're building. We should be very thoughtful about building developer or unsigned version of official dlls.

I only included the reflex cmakelist.txt (and the reflex.md) FYI only - probably should have attached it here, sorry: So no change of any cmake vcpkg intented - I just wanted to show how I complied the dlls that this is transparent and can be reproduced.

I build the two new sl.pcl.dll and sl.reflex.dll from updated extern for this cause I wanted latest versions for reflex. Since they where 2.10.3 and the sl.common.dll, sl.dlss.dll and sl.interposer.dll you had in dev where 2.10.0 I updated them as well to 2.10.3. Both new dlls are still covered by the license and use conditions you have in CS to my understanding.

I noticed that reflex is not recognised when dll are not signed - so I needed to build in dev mode. Where did you get the singed dlls from - when you build them they are not singend as well, no?? And what are the issues with dev mod? Miss-classfication as a virus I suppose or also legal issues?

Thus, I need advise where to take the dlls from. Then they can be just provided via upscaling feature and I can conlude the PR.

@ParticleTroned ParticleTroned force-pushed the pr/reflex-integration-upscaler branch from 444a696 to 08b06ca Compare March 18, 2026 01:05
@ParticleTroned
Copy link
Copy Markdown
Contributor Author

reflex cannot be combined with framegen/dx12 swapchain

---> Addressed by 1fe3a3b which gates Reflex on NVIDIA and disable it on DX12 framegen path

why are random files dumped in the repo root folder
deleted in 8fa5cd5

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: 1

🧹 Nitpick comments (4)
features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt (2)

1-189: PR metadata suggestion: conventional title + issue linkage

Suggested title: feat(upscaling): integrate streamline reflex controls
Suggested issue linkage in PR body (if applicable): Implements #<issue> or Addresses #<issue>.

As per coding guidelines, when reviewing PRs, provide suggestions for Conventional Commit Titles and Issue References.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt` around
lines 1 - 189, The PR is missing a Conventional Commit style title and explicit
issue linkage; update the PR title to the suggested conventional commit format
(e.g. "feat(upscaling): integrate streamline reflex controls") and add an issue
reference in the PR body like "Implements #<issue>" or "Addresses #<issue>" so
reviewers and CI can track the work; ensure the PR description also mentions the
change scope (upscaling/Streamline Reflex) and any required release notes or UI
guidance referenced in the reflex.license.txt supplement.

140-153: Trim excessive blank lines

Large blank blocks reduce readability and create noisy diffs in future edits. Please collapse these to a single separator line between sections.

Also applies to: 178-189

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt` around
lines 140 - 153, Collapse consecutive blank lines in reflex.license.txt so that
each logical section is separated by a single blank line; remove the large empty
blocks shown around the reviewed area and replace them with one separator line,
and apply the same trimming to the other reported span (around lines 178-189) to
improve readability and reduce noisy diffs.
src/Features/Upscaling/Streamline.cpp (1)

667-668: Minor: FPS limit clamp range differs from UI bounds.

The clamp here uses [1.0f, 1000.0f] while the UI and LoadSettings() use [20.0f, 240.0f]. This is safe (UI bounds are stricter), but for consistency you could align them:

-	const float fpsLimit = std::clamp(settings.reflexFPSLimit, 1.0f, 1000.0f);
+	const float fpsLimit = std::clamp(settings.reflexFPSLimit, 20.0f, 240.0f);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Features/Upscaling/Streamline.cpp` around lines 667 - 668, The clamp for
reflex FPS uses [1.0f, 1000.0f] which is inconsistent with the UI and
LoadSettings() bounds; change the clamp on settings.reflexFPSLimit (used to
compute fpsLimit) to std::clamp(settings.reflexFPSLimit, 20.0f, 240.0f) so
options.frameLimitUs (and the fpsLimit variable) align with the UI/LoadSettings
constraints (leave the reflexUseFPSLimit/ options.frameLimitUs computation
as-is).
src/Features/Upscaling.cpp (1)

554-554: Consider adding a warning log for out-of-range reflexFPSLimit.

For consistency with other setting validations in this function (lines 539-552), consider logging when reflexFPSLimit is clamped:

+	if (settings.reflexFPSLimit < 20.0f || settings.reflexFPSLimit > 240.0f) {
+		logger::warn("[Upscaling] Loaded reflexFPSLimit {} out of range, clamping to [{}, {}]", settings.reflexFPSLimit, 20.0f, 240.0f);
+	}
 	settings.reflexFPSLimit = std::clamp(settings.reflexFPSLimit, 20.0f, 240.0f);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Features/Upscaling.cpp` at line 554, When clamping
settings.reflexFPSLimit, detect when the original value differs from the clamped
value and emit the same validation warning used elsewhere in this function (same
logging mechanism as the checks around the other settings) to indicate the input
was out of range; i.e., store the original value, apply std::clamp to
settings.reflexFPSLimit, and if changed, call the existing warning logger with a
concise message that includes the original and clamped values and mentions
reflexFPSLimit.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt`:
- Line 3: The license file contains mojibake replacement characters ("�") in
multiple places (e.g., in the first line and the other line groups called out)
which corrupts legal wording; replace the entire contents of
features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt with the
exact upstream NVIDIA license text copied from the authoritative source encoded
as UTF-8 (do not manually patch individual characters), ensuring all straight
and curly quotes/apostrophes and special characters are preserved correctly and
that occurrences at the reported locations (lines 3, 9-11, 35, 39, 49-50, 85,
89, 91-93, 97, 101, 111, 129-131, 157, 165, 168-170) are fixed.

---

Nitpick comments:
In `@features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt`:
- Around line 1-189: The PR is missing a Conventional Commit style title and
explicit issue linkage; update the PR title to the suggested conventional commit
format (e.g. "feat(upscaling): integrate streamline reflex controls") and add an
issue reference in the PR body like "Implements #<issue>" or "Addresses
#<issue>" so reviewers and CI can track the work; ensure the PR description also
mentions the change scope (upscaling/Streamline Reflex) and any required release
notes or UI guidance referenced in the reflex.license.txt supplement.
- Around line 140-153: Collapse consecutive blank lines in reflex.license.txt so
that each logical section is separated by a single blank line; remove the large
empty blocks shown around the reviewed area and replace them with one separator
line, and apply the same trimming to the other reported span (around lines
178-189) to improve readability and reduce noisy diffs.

In `@src/Features/Upscaling.cpp`:
- Line 554: When clamping settings.reflexFPSLimit, detect when the original
value differs from the clamped value and emit the same validation warning used
elsewhere in this function (same logging mechanism as the checks around the
other settings) to indicate the input was out of range; i.e., store the original
value, apply std::clamp to settings.reflexFPSLimit, and if changed, call the
existing warning logger with a concise message that includes the original and
clamped values and mentions reflexFPSLimit.

In `@src/Features/Upscaling/Streamline.cpp`:
- Around line 667-668: The clamp for reflex FPS uses [1.0f, 1000.0f] which is
inconsistent with the UI and LoadSettings() bounds; change the clamp on
settings.reflexFPSLimit (used to compute fpsLimit) to
std::clamp(settings.reflexFPSLimit, 20.0f, 240.0f) so options.frameLimitUs (and
the fpsLimit variable) align with the UI/LoadSettings constraints (leave the
reflexUseFPSLimit/ options.frameLimitUs computation as-is).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 280415d2-e3d2-47c3-bf73-840a425e7367

📥 Commits

Reviewing files that changed from the base of the PR and between 444a696 and 0d3e35e.

⛔ Files ignored due to path filters (6)
  • features/Upscaling/Shaders/Upscaling/Streamline/nvngx_dlss.dll is excluded by !**/*.dll
  • features/Upscaling/Shaders/Upscaling/Streamline/sl.common.dll is excluded by !**/*.dll
  • features/Upscaling/Shaders/Upscaling/Streamline/sl.dlss.dll is excluded by !**/*.dll
  • features/Upscaling/Shaders/Upscaling/Streamline/sl.interposer.dll is excluded by !**/*.dll
  • features/Upscaling/Shaders/Upscaling/Streamline/sl.pcl.dll is excluded by !**/*.dll
  • features/Upscaling/Shaders/Upscaling/Streamline/sl.reflex.dll is excluded by !**/*.dll
📒 Files selected for processing (5)
  • features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt
  • src/Features/Upscaling.cpp
  • src/Features/Upscaling.h
  • src/Features/Upscaling/Streamline.cpp
  • src/Features/Upscaling/Streamline.h
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/Features/Upscaling.h

Comment thread features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt Outdated
@ParticleTroned
Copy link
Copy Markdown
Contributor Author

Commit: 08b06ca removes for users missleading messager:

Frame Generation is not available on your system. This requires either NVIDIA DLSS-G or AMD FSR 3.1 Frame Generation support and D3D12 interop.

This message implies that something is missing (confusing users), eventhough framegen is explicitly disabled for VR by
!globals::game::isVR in Upscaling.cpp

This change cleans up an already busy UI for VR users removing irrelevant info.

@ParticleTroned
Copy link
Copy Markdown
Contributor Author

ParticleTroned commented Mar 18, 2026

in this build I cannot reproduce the Issue: Dlss overloading the gpu on boot in VR #1964.

--> should be confirmed by another tester.

EDIT:

the reason for issue #1964 is that #1837 maps default for TRX 40/ 50 cards to M the most heavy profle that is meant for preformance and ultra peformance settings but not for balanced/quality/DLAA modes that 90% of the user base uses. This is +2ms for these modes and bad quality.

@ParticleTroned
Copy link
Copy Markdown
Contributor Author

If the dlls are a build artifact, they probably shouldn't be included in the repo anymore but built for distribution. Also, please make sure you use our existing dependency structure which is vcpkg or submodules. You must integrate using that and not a new cmake system. Otherwise the ci wont' be able to handle it cleanly. I can't tell what version of the streamline dlls you're building. We should be very thoughtful about building developer or unsigned version of official dlls.

Addressed by: 8fa5cd5

How: I took the latest offcially signed dlls from NVIDIA repo https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.10.3 (bin/x64) and replaced (in features/Upscaling/Shaders/Upscaling/Streamline):

nvngx_dlss.dll
sl.common.dll
sl.dlss.dll
sl.interposer.dll

I added:
sl.pcl.dll
sl.reflex.dll
reflex.license.txt

--> nvngx_dlss.dll is now 310.5.2 (was 310.5.0 before)
--> all others are 2.10.3

-->cmake, vcpkg or submodules are untouched, root repo fodler now clean (deleted reflex.md and reflex cmake txt)

@ParticleTroned ParticleTroned force-pushed the pr/reflex-integration-upscaler branch from 0d3e35e to b070d64 Compare March 18, 2026 02:02
@ParticleTroned
Copy link
Copy Markdown
Contributor Author

nitpick issue 3: FPS limit clamp range differs from UI bounds.*

nitpick issue 4: Consider adding a warning log for out-of-range reflexFPSLimit

Both are addressed in b070d64

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: 1

🧹 Nitpick comments (1)
features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt (1)

1-1: Consider tightening PR metadata to match repo guidance.

Optional polish: shorten the PR title to <=50 chars (e.g., feat(upscaling): add streamline reflex integration) and add an issue keyword reference if there is a tracked ticket (e.g., Addresses #<id>).

As per coding guidelines, “provide suggestions for Conventional Commit Titles … [and] Issue References.”

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt` at line
1, PR metadata (title and description) should follow repo guidance: shorten the
PR title to <=50 characters using a Conventional Commit style like
"feat(upscaling): add streamline reflex integration" and include an issue
reference line in the PR body such as "Addresses #<id>" or "Fixes #<id>" if a
ticket exists; also add a brief one-line summary and optional longer description
in the PR body following the Conventional Commit title to explain scope and any
migration or usage notes.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Features/Upscaling/Streamline.cpp`:
- Around line 321-345: EnsureFrameToken can null out frameToken on failure and
CheckFrameConstants currently returns void, causing callers to continue and
dereference *frameToken; change CheckFrameConstants to return bool, have it call
EnsureFrameToken and return false immediately if it fails, and only perform
DLSS/frame-token dependent work when true; update the declaration in
Streamline.h (CheckFrameConstants signature) and update all call sites that used
the old void function to check the returned bool and skip DLSS evaluation when
false so no null dereference occurs.

---

Nitpick comments:
In `@features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt`:
- Line 1: PR metadata (title and description) should follow repo guidance:
shorten the PR title to <=50 characters using a Conventional Commit style like
"feat(upscaling): add streamline reflex integration" and include an issue
reference line in the PR body such as "Addresses #<id>" or "Fixes #<id>" if a
ticket exists; also add a brief one-line summary and optional longer description
in the PR body following the Conventional Commit title to explain scope and any
migration or usage notes.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 915cf943-c84d-4d90-be70-61f38bda2f3c

📥 Commits

Reviewing files that changed from the base of the PR and between 0d3e35e and a0bd467.

📒 Files selected for processing (4)
  • features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt
  • src/Features/Upscaling.cpp
  • src/Features/Upscaling/Streamline.cpp
  • src/Features/Upscaling/Streamline.h

Comment thread src/Features/Upscaling/Streamline.cpp
@ParticleTroned ParticleTroned force-pushed the pr/reflex-integration-upscaler branch from a0bd467 to ca837a0 Compare March 18, 2026 02:40
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: 2

🧹 Nitpick comments (1)
src/Features/Upscaling/Streamline.cpp (1)

116-120: Deduplicate identical feature arrays to avoid drift.

featuresToLoad and featuresToLoadVR currently contain the same entries. Keeping one array removes maintenance divergence risk with no behavior change.

Suggested refactor
-	sl::Feature featuresToLoad[] = { sl::kFeatureDLSS, sl::kFeatureReflex, sl::kFeaturePCL };
-	sl::Feature featuresToLoadVR[] = { sl::kFeatureDLSS, sl::kFeatureReflex, sl::kFeaturePCL };
-
-	pref.featuresToLoad = REL::Module::IsVR() ? featuresToLoadVR : featuresToLoad;
-	pref.numFeaturesToLoad = REL::Module::IsVR() ? _countof(featuresToLoadVR) : _countof(featuresToLoad);
+	sl::Feature featuresToLoad[] = { sl::kFeatureDLSS, sl::kFeatureReflex, sl::kFeaturePCL };
+	pref.featuresToLoad = featuresToLoad;
+	pref.numFeaturesToLoad = _countof(featuresToLoad);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Features/Upscaling/Streamline.cpp` around lines 116 - 120, Both arrays
featuresToLoad and featuresToLoadVR are identical; remove duplication by keeping
a single array (e.g., featuresToLoad) and use that for both VR and non‑VR cases
in the assignments to pref.featuresToLoad and pref.numFeaturesToLoad; update
uses of REL::Module::IsVR() to select the same array (or remove the ternary
entirely) and call _countof(featuresToLoad) for the element count so there is
one source of truth to avoid drift.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Features/Upscaling/Streamline.cpp`:
- Around line 673-675: The marker optimization flag is effectively a no-op
because slPCLSetMarker is never called; update the code to invoke the
slPCLSetMarker(...) function pointer at appropriate runtime points (for example
before and after the upscaling/optimization critical sections inside the
Streamline processing flow) whenever options.useMarkersToOptimize is true and
settings.reflexUseMarkersToOptimize is enabled so markers are actually emitted;
also simplify the enabling logic by removing the redundant `featurePCL &&
slPCLSetMarker` check and rely on the existing featurePCL (which is only true
when slPCLSetMarker was bound) together with settings.reflexUseMarkersToOptimize
to set options.useMarkersToOptimize. Ensure calls check the function pointer is
non-null and pass meaningful marker IDs/messages corresponding to the processing
stage.
- Around line 671-673: The code uses std::clamp on settings.reflexFPSLimit
without guarding against NaN, which can lead to undefined behavior when
computing options.frameLimitUs; update the logic around fpsLimit (the variable
initialized on the clamp line) to first check
std::isfinite(settings.reflexFPSLimit) and if not finite use a safe default
(e.g., 60.0f), then clamp that finite value into the 20–240 range before
computing options.frameLimitUs; modify the branch that sets options.frameLimitUs
(the line that does std::round(1000000.0f / fpsLimit) and the ternary on
settings.reflexUseFPSLimit) so it uses the validated/clamped fpsLimit value to
avoid casting non-finite results to uint32_t.

---

Nitpick comments:
In `@src/Features/Upscaling/Streamline.cpp`:
- Around line 116-120: Both arrays featuresToLoad and featuresToLoadVR are
identical; remove duplication by keeping a single array (e.g., featuresToLoad)
and use that for both VR and non‑VR cases in the assignments to
pref.featuresToLoad and pref.numFeaturesToLoad; update uses of
REL::Module::IsVR() to select the same array (or remove the ternary entirely)
and call _countof(featuresToLoad) for the element count so there is one source
of truth to avoid drift.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ffa61ae0-5e09-4490-b458-65b07ef8af5b

📥 Commits

Reviewing files that changed from the base of the PR and between a0bd467 and 0c32da8.

📒 Files selected for processing (3)
  • features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt
  • src/Features/Upscaling/Streamline.cpp
  • src/Features/Upscaling/Streamline.h
🚧 Files skipped from review as they are similar to previous changes (1)
  • features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt

Comment thread src/Features/Upscaling/Streamline.cpp Outdated
Comment thread src/Features/Upscaling/Streamline.cpp Outdated
Copy link
Copy Markdown
Collaborator

@alandtse alandtse left a comment

Choose a reason for hiding this comment

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

Seems to compile fine in VR/AE but not sure how to test it. Needs to be brought to dev because of the commonlib bump and coderabbit needs to be resolved.

@ParticleTroned
Copy link
Copy Markdown
Contributor Author

ParticleTroned commented Mar 18, 2026

Seems to compile fine in VR/AE but not sure how to test it. Needs to be brought to dev because of the commonlib bump and coderabbit needs to be resolved.

  1. will udpate to dev . EDIT: DONE

  2. Testing is Black and white in VR: e.g. set weather to storm/rain and walk from Whiterrun market to Dragonreach door and back. Without REFLEX on you wills ee spikes and a more noisy CPU frametime. With Reflex on this stops almost completely and frametime for CPU drops,

  3. best test is like I did above with fpsVR:
    set a shortcut to start measurement in game. Load into save and perform for 1min + any defined action outside, e.g. walk from walk from Whiterrun market to Dragonreach door back and forth for >1 min.

  4. repeat with REFLEX on

  5. use fpsVR viewer (in my Games/fpsVR folder) to look at results like I posted above

--> for flat somebody else should test this, but in VR it is super clear that it works!

Another good test is, if you turn around quickly, you usually see your CPU time spiking - much reduced or absent with REFLEX on.
This is for me on of the biggest difference makers recently performance-wise (and not bc I PRed it) - makes VR much more smooth and could do same with flat I suppose, like with less effect as flat is not as challenging

BTW - I noticed that you kept the wide verrsus legacy toggle in upscaler UI. I do not mind - your decision, but this is confusing: the wide kernel is only used in dlss settings <quality and you ether want to hardcode one or the other option imo. I only included the toggle as debug for doodlum since he insited so much, but my recomendation was to remove this.

@ParticleTroned ParticleTroned force-pushed the pr/reflex-integration-upscaler branch from 0c32da8 to ffba845 Compare March 18, 2026 07:50
pre-commit-ci Bot and others added 2 commits March 18, 2026 07:51
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
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.

🧹 Nitpick comments (1)
src/Features/Upscaling/Streamline.cpp (1)

116-117: Minor redundancy: VR and non-VR feature arrays are identical.

Both featuresToLoad and featuresToLoadVR contain the same features. This is fine if you anticipate future VR-specific feature exclusions; otherwise, a single array would suffice.

Optional simplification
-	sl::Feature featuresToLoad[] = { sl::kFeatureDLSS, sl::kFeatureReflex, sl::kFeaturePCL };
-	sl::Feature featuresToLoadVR[] = { sl::kFeatureDLSS, sl::kFeatureReflex, sl::kFeaturePCL };
-
-	pref.featuresToLoad = REL::Module::IsVR() ? featuresToLoadVR : featuresToLoad;
-	pref.numFeaturesToLoad = REL::Module::IsVR() ? _countof(featuresToLoadVR) : _countof(featuresToLoad);
+	sl::Feature featuresToLoad[] = { sl::kFeatureDLSS, sl::kFeatureReflex, sl::kFeaturePCL };
+	pref.featuresToLoad = featuresToLoad;
+	pref.numFeaturesToLoad = _countof(featuresToLoad);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Features/Upscaling/Streamline.cpp` around lines 116 - 117, The two
feature arrays featuresToLoad and featuresToLoadVR are identical (both contain
sl::kFeatureDLSS, sl::kFeatureReflex, sl::kFeaturePCL); remove the redundancy by
consolidating them into a single array (e.g., featuresToLoad) and update any
code that referenced featuresToLoadVR to use the consolidated symbol, or keep a
VR alias that references the single array if explicit VR naming is desired;
update references to sl::Feature featuresToLoadVR and ensure no behavior changes
in functions that consume these arrays.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@src/Features/Upscaling/Streamline.cpp`:
- Around line 116-117: The two feature arrays featuresToLoad and
featuresToLoadVR are identical (both contain sl::kFeatureDLSS,
sl::kFeatureReflex, sl::kFeaturePCL); remove the redundancy by consolidating
them into a single array (e.g., featuresToLoad) and update any code that
referenced featuresToLoadVR to use the consolidated symbol, or keep a VR alias
that references the single array if explicit VR naming is desired; update
references to sl::Feature featuresToLoadVR and ensure no behavior changes in
functions that consume these arrays.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 5b75d31a-b1ce-429d-8fed-2142da2c29ca

📥 Commits

Reviewing files that changed from the base of the PR and between 0c32da8 and d3359ef.

📒 Files selected for processing (5)
  • features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt
  • src/Features/Upscaling.cpp
  • src/Features/Upscaling/Streamline.cpp
  • src/Features/Upscaling/Streamline.h
  • src/Hooks.cpp
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/Hooks.cpp
  • features/Upscaling/Shaders/Upscaling/Streamline/reflex.license.txt

@alandtse
Copy link
Copy Markdown
Collaborator

BTW - I noticed that you kept the wide verrsus legacy toggle in upscaler UI. I do not mind - your decision, but this is confusing: the wide kernel is only used in dlss settings <quality and you ether want to hardcode one or the other option imo. I only included the toggle as debug for doodlum since he insited so much, but my recomendation was to remove this.

Go ahead and remove it. I don't recall you actually removing it but maybe I missed it with one of the conflict merges. I normally do not remove PR functionality when I help get it over the line.

@ParticleTroned
Copy link
Copy Markdown
Contributor Author

ParticleTroned commented Mar 18, 2026

BTW - I noticed that you kept the wide verrsus legacy toggle in upscaler UI. I do not mind - your decision, but this is confusing: the wide kernel is only used in dlss settings <quality and you ether want to hardcode one or the other option imo. I only included the toggle as debug for doodlum since he insited so much, but my recomendation was to remove this.

Go ahead and remove it. I don't recall you actually removing it but maybe I missed it with one of the conflict merges. I normally do not remove PR functionality when I help get it over the line.

--> OK will do tonight.

Edit:
In commit [155b760] I removed the "legacy" 3x3 kernel that I had implement in favour of the from doodlum much preferred gathered approach from #1858. The diffence in performance to my approach was negligible anyways. Gathered now computes depth using four offset GatherRed 2x2 fetches during VR depth upscaling. --> this is to clean up the UI and remove an option that meant for PR testing only.

@ParticleTroned ParticleTroned requested a review from alandtse March 18, 2026 18:48
@ParticleTroned
Copy link
Copy Markdown
Contributor Author

should be conlcuded now if all are happy

@alandtse alandtse changed the title feat(upscaling): integrate Streamline Reflex controls and runtime staging feat(upscaling): integrate Streamline Reflex controls Mar 19, 2026
@alandtse
Copy link
Copy Markdown
Collaborator

@doodlum please approve. The root is cleaned up.

@alandtse
Copy link
Copy Markdown
Collaborator

Btw, failing tests are me just making sure the new CI works. They shouldn't impact this PR's mergability which I'll handle after all ci tests are fixed.

@alandtse alandtse merged commit 8664201 into community-shaders:dev Mar 26, 2026
15 checks passed
davo0411 added a commit to davo0411/skyrim-community-shaders that referenced this pull request Mar 28, 2026
* fix(weather overrides): ensure json format for features (community-shaders#1748)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* perf(terrain blending): tweak defaults (community-shaders#1771)

* fix(lighting): vanilla envcolor mult the correct value (community-shaders#1775)

* fix(water): remove final colour saturate (community-shaders#1778)

* fix(unified-water): LOD water cache mismatch (community-shaders#1779)

* fix(weather editor): override desync with weather transitions (community-shaders#1782)

* fix(weather editor): no-override weather file deletion (community-shaders#1777)

* fix(weather editor): apply weather settings post-load (community-shaders#1776)

* fix(weather editor): handling of weathers without overrides (community-shaders#1773)

* feat(UI): feature headings (community-shaders#1786)

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

* feat(VR): add wand pointing (community-shaders#1790)

* chore(UI): theme consistency (community-shaders#1787)

* fix(upscaling): warn about max nvidia resolution (community-shaders#1795)

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

* chore(linear lighting): UI settings changes (community-shaders#1785)

Co-authored-by: Jiaye <l936249247@hotmail.com>

* fix(grass-lighting) better basic grass brightness default (community-shaders#1780)

* chore(UI): remove settings and about tabs (community-shaders#1794)

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

* fix(terrain shadows): fix compiler warnings (community-shaders#1798)

* fix: fix flickering particles (community-shaders#1791)

* fix(terrain blending): disable vr support (community-shaders#1799)

* refactor(upscaling): standardize behavior and tune settings (community-shaders#1783)

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

* feat(UI): add auto-hide featurelist option (community-shaders#1793)

* fix: match grass brightness of vanilla (community-shaders#1801)

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

* refactor(perfoverlay): remove color from "Other" and "Total" (community-shaders#1806)

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

* fix(unified water): fix for mesh water jitter (community-shaders#1809)

* fix: clear shader cache on plugin version change (community-shaders#1739)

* feat(filewatcher): add hlsli tracking (community-shaders#1796)

* feat(linear lighting): add ambient multiplier (community-shaders#1805)

* fix(unified-water): underwater fog flicker (community-shaders#1807)

* fix(UI): conflicting esc key on welcome hotkey dialogue (community-shaders#1811)

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

* chore(UI): add subtext font to tooltips (community-shaders#1810)

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

* build: bump streamline to 2.10.3 (community-shaders#1813)

* build: resolve shader warnings (community-shaders#1818)

* feat(ui): add combo hotkey support (community-shaders#1808)

* feat: add feature constraints (community-shaders#1804)

* build: update version to 1.4.8 (community-shaders#1802)

* fix(VR): apply per eye upscaling (community-shaders#1819)

- Split upscaling across each eye for correctness and to avoid DLSS failing over 8k x 8k limit
- Changes HMD mask color to black to hide artifacts with fast movement

* build: bump common lib to 4.2.0 (community-shaders#1821)

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>

* fix(grass collision): catch trashed actor pointers (community-shaders#1765)

* fix(weather editor): desynced override transitions (community-shaders#1820)

* fix(upscaling): fix preset and allocation handling (community-shaders#1824)

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

* build: remove linear lighting from core whilst in development (community-shaders#1826)

* chore: bump version to 1.4.9 (community-shaders#1827)

* fix: add back LLF core file and remove LL core file (community-shaders#1828)

* fix: dont save shader debug toggles (community-shaders#1831)

* fix: remove IBL from core, unfinished (community-shaders#1830)

* chore: update version to 1.4.10 (community-shaders#1832)

* chore(dynamic cubemaps): lessen normalisation darkening (community-shaders#1833)

* chore(llf): remove LightsVisualisationMode settings loading (community-shaders#1834)

* revert: "fix: dont save shader debug toggles (community-shaders#1831)"

This reverts commit f55f195.

* revert: "chore(llf): remove LightsVisualisationMode settings loading (community-shaders#1834)"

This reverts commit b3db5a7.

* fix: default enabledClasses true

* build: bump version

* feat(upscaling): custom DLSS preset (community-shaders#1837)

* fix(weather editor): sync UI for full transition (community-shaders#1822)

* fix(linearlighting): return correct buffer when ll feature off (community-shaders#1838)

* fix(PBR): skip IrradianceToLinear on specular in vanilla (community-shaders#1839)

* feat(weather editor): adjust slider ranges (community-shaders#1847)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* feat(weather editor): replace volumetric Lighting RGB sliders with color picker (community-shaders#1846)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* fix(grass collision): collision radius math  (community-shaders#1849)

* chore: move new feature information into docs (community-shaders#1848)

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>

* fix(ui): background blur with upscaling (community-shaders#1815)

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

* refactor: move some features to core (community-shaders#1852)

* fix: fix blown out water specular (community-shaders#1853)

* feat(weather editor): toggle hotkey (community-shaders#1856)

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

* feat(color picker): add an original color reference to all color pickers (community-shaders#1857)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* perf(emat): alternate tweaks (community-shaders#1850)

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

* feat(weather-editor): merge weather picker and editor (community-shaders#1845)

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

* chore(llf): remove LLF settings loading (community-shaders#1859)

* feat: exponential height fog (community-shaders#1708)

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

* feat(weather editor): block editor access in loading screens (community-shaders#1871)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* feat(weather editor): improve weather picker UI and functionality (community-shaders#1863)

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

* feat(weather editor): repurpose unsaved changes tracking (community-shaders#1860)

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

* fix: sync grass lighting defaults to match ENB (community-shaders#1844)

* fix: stop shader compilation on game exit (community-shaders#1867)

closes community-shaders#1130

* fix(weather editor): prevent inputs when editor is open (community-shaders#1872)

* fix(weather editor): add ctd guards (community-shaders#1864)

* feat(weather editor): remove WorldSpace widget and associated code (community-shaders#1878)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* feat(vr): add OpenComposite menu support (community-shaders#1880)

* revert: "feat(vr): add OpenComposite VR menu" (community-shaders#1881)

* revert: "fix: stop shader compilation on game exit" (community-shaders#1882)

* feat(vr): add OpenComposite menu support (community-shaders#1883)

* feat(weather editor): add time controls (community-shaders#1877)

* feat: add shadowmap rasterizer override (community-shaders#1690)

* fix(weather editor): clear feature overrides with revert (community-shaders#1884)

* feat(UI): Interior Only (community-shaders#1854)

* fix(VR): fix Shadowmap Cascade Rasterizer (community-shaders#1888)

* fix(unified water): distance calculation for raindrops & LOD fade (community-shaders#1890)

* refactor: clarify core feature version mismatch text (community-shaders#1886)

* fix: stop shader compilation on game exit (community-shaders#1885)

* build: exclude hlsl tests from packaging (community-shaders#1894)

* chore: disable feature constraints in dev mode (community-shaders#1893)

* fix(vr): improve stereo UV handling (community-shaders#1899)

* fix(weather editor): move esc key to native input system (community-shaders#1897)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* fix: move ResolveMonoUVForEye outside VR guard (community-shaders#1906)

* fix(grass collision): validate actor  (community-shaders#1905)

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>

* fix(terrain shadows): height map regression (community-shaders#1911)

* fix: util vertical fov math (community-shaders#1904)

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>

* test: add float4 overload test (community-shaders#1902)

* refactor: move all features to globals::game::calendar (community-shaders#1909)

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

* fix(UI): resolution based font (community-shaders#1907)

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

* feat(weather editor): make objects window be independently scrollable (community-shaders#1908)

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

* feat(UI): consolidate searchbar to util and add to weather editor (community-shaders#1898)

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

* feat(weather editor): add filled star for favourites. (community-shaders#1913)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* feat(weather editor): add delete json button to objects window (community-shaders#1914)

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

* fix(VR): resolution-based font (community-shaders#1923)

* refactor: use depthbuffer helper (community-shaders#1925)

* refactor: move TurboColormap into Color.hlsli (community-shaders#1924)

* fix(weather editor): expand clickable area of feature override (community-shaders#1921)

* feat(weather editor): enable snapping to viewport (community-shaders#1917)

* feat(weather editor): highlight enabled cloud layers (community-shaders#1916)

* fix(VR): SSGI discrepancies (community-shaders#1926)

* feat: volumetric shadows (community-shaders#1874)

* ci: enhance feature version audit (community-shaders#1927)

* feat(weather editor): add filter options for objects window (community-shaders#1922)

* feat(weather editor): sticky headers and scrollable content (community-shaders#1930)

* fix(UI): ImGui scaling for borderless mode (community-shaders#1929)

* ci: don't fail on feature audits (community-shaders#1934)

* fix(pbr): use scrap heap allocation (community-shaders#1928)

* chore(UI): add subsurface scattering to Interior Only (community-shaders#1932)

* fix(weather editor): align highlights, fix tooltip (community-shaders#1918)

* fix(ssgi): guard VR only compilation (community-shaders#1938)

* build: update template to avoid extra directory (community-shaders#1812)

* style: fix hlsl formatting (community-shaders#1939)

* fix(UI): improve theme management UI flow (community-shaders#1933)

closes community-shaders#1919

* build(deps): update pre-commit hooks (community-shaders#1768)

* feat(UI): delete theme button (community-shaders#1940)

* feat(UI): open log file button (community-shaders#1942)

* fix(hair): marschner volumetric shadow tint (community-shaders#1944)

* fix(VR): screen space shadows desync (community-shaders#1946)

closes community-shaders#1840

* fix(VR): depth culling during upscaling/Terrain Blending (community-shaders#1858)

* feat(VR): add edge detection for stereo blending (community-shaders#1948)

* refactor: allocate trampoline once (community-shaders#1951)

* fix(UI): PBR MATO color scale RGB settings corrected (community-shaders#1957)

* fix(weather editor): guard against loadorder changes (community-shaders#1953)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: davo0411 <davidkehoe0411@outlook.com>

* fix(UI): feature description text wrapping (community-shaders#1960)

* fix(VR): exponential height fog stereo mismatch (community-shaders#1961)

* chore: pbr consistency changes (community-shaders#1841)

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>

* fix(skylighting): remove PBR lighting scale (community-shaders#1963)

* fix(skysync): effect mesh blackout during shadow caster transitions (community-shaders#1965)

* ci: fix wiki deletion with buffer update (community-shaders#1967)

* feat(weather-editor): option to hide viewport (community-shaders#1970)

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

* test(shader): fallback to warp on invalidarg (community-shaders#1956)

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

* feat: triplanar projected materials (community-shaders#1950)

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

* fix(ao): better ao calculations (community-shaders#1968)

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

* fix(pbr): fix improper kD terms (community-shaders#1971)

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

* perf(emat): tweak fade and shadow intensity (community-shaders#1892)

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

* feat(ibl): revamp ibl and dalc sh (community-shaders#1947)

* build: bump commonlib to 4.7.1 (community-shaders#1977)

* fix: upscaling monitor detection fixes (community-shaders#1978)

* fix(weather editor): prevent overrides resetting settings (community-shaders#1980)

* fix(VR): bad llf offset (community-shaders#1984)

* perf: cache frequent ui checks (community-shaders#1985)

* fix: preserve vanilla water TAA when no upscaler is active (community-shaders#1986)

Co-authored-by: jturnley <jturnley@users.noreply.github.com>

* fix(UI): first-time dialog fade affects all overlays (community-shaders#1976)

* fix(skysync): remove sunlight fade and volumetric lighting overrides (community-shaders#1966)

* refactor(HLSL): standardize epsilon constants (community-shaders#1992)

closes community-shaders#1227

* feat(UI): require Shift to dock windows (community-shaders#1989)

* fix(UI): input spam after alt-tab (community-shaders#1993)

* fix(sky sync): early return for invalid cells (community-shaders#1991)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>
Co-authored-by: jiayev <l936249247@hotmail.com>

* fix(sky sync): remove undeclared variable (community-shaders#1994)

* refactor(pbr): clear up semantics (community-shaders#1995)

* fix(UI): scale layout values for high-DPI (community-shaders#1987)

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

* fix(water): hdr water taa blend (community-shaders#1988)

* refactor(color): clarify gamma conversion functions (community-shaders#1996)

* feat(ISL-editor): add light counters and fix filtering (community-shaders#1997)

* fix(UI): DPI-aware window layouts (community-shaders#2000)

* fix(weather-editor): save color palette window (community-shaders#2001)

* refactor: centralize feature category names (community-shaders#2007)

closes community-shaders#1265

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* chore: bump versions (community-shaders#2010)

* fix(water): sample history mask from current mask (community-shaders#2011)

* chore(wetness-effects): set default MaxPuddleWetness to 1.5 (community-shaders#1981)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* feat(weather-editor): add free camera and play mode (community-shaders#2008)

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

* build: bump versions and reduce false positives (community-shaders#2013)

* fix(VR): LLF cluster building and culling (community-shaders#2012)

* build: update to VS 2026 (community-shaders#1990)

* ci: fix preset in vs2022 mode (community-shaders#2015)

* ci: remove v2022 from shader jobs (community-shaders#2016)

* feat(upscaling): integrate Streamline Reflex controls (community-shaders#1958)

* fix(unified-water): BSWaterShaderProperty.plane (community-shaders#1998)

---------

Co-authored-by: Skrubby Skrub In A Shrub <87662196+SkrubbySkrubInAShrub@users.noreply.github.com>
Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>
Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>
Co-authored-by: jiayev <l936249247@hotmail.com>
Co-authored-by: Dlizzio <77717521+Dlizzio@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@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Bruce <44987693+brucenguyen@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Dawntic <197450198+Dawntic@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Alan Tse <alandtse@gmail.com>
Co-authored-by: Vanni Giachin <vanni.giachin@qlik.com>
Co-authored-by: zxcvbn <66063766+zndxcvbn@users.noreply.github.com>
Co-authored-by: ParticleTroned <248299730+ParticleTroned@users.noreply.github.com>
Co-authored-by: soda <130315225+soda3000@users.noreply.github.com>
Co-authored-by: YtzyFvra <59631290+YtzyFvra@users.noreply.github.com>
Co-authored-by: LukeFrankio <lorenzogrutzmann@gmail.com>
Co-authored-by: LukeFrankio <loren@example.com>
Co-authored-by: jturnley <32892261+jturnley@users.noreply.github.com>
Co-authored-by: jturnley <jturnley@users.noreply.github.com>
Co-authored-by: Igor Alan Albuquerque de Sousa <50077829+IgorAlanAlbuquerque@users.noreply.github.com>
Co-authored-by: Matt Van Horn <mvanhorn@users.noreply.github.com>
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
davo0411 added a commit to davo0411/skyrim-community-shaders that referenced this pull request Mar 29, 2026
* fix(weather overrides): ensure json format for features (community-shaders#1748)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* perf(terrain blending): tweak defaults (community-shaders#1771)

* fix(lighting): vanilla envcolor mult the correct value (community-shaders#1775)

* fix(water): remove final colour saturate (community-shaders#1778)

* fix(unified-water): LOD water cache mismatch (community-shaders#1779)

* fix(weather editor): override desync with weather transitions (community-shaders#1782)

* fix(weather editor): no-override weather file deletion (community-shaders#1777)

* fix(weather editor): apply weather settings post-load (community-shaders#1776)

* fix(weather editor): handling of weathers without overrides (community-shaders#1773)

* feat(UI): feature headings (community-shaders#1786)

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

* feat(VR): add wand pointing (community-shaders#1790)

* chore(UI): theme consistency (community-shaders#1787)

* fix(upscaling): warn about max nvidia resolution (community-shaders#1795)

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

* chore(linear lighting): UI settings changes (community-shaders#1785)

Co-authored-by: Jiaye <l936249247@hotmail.com>

* fix(grass-lighting) better basic grass brightness default (community-shaders#1780)

* chore(UI): remove settings and about tabs (community-shaders#1794)

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

* fix(terrain shadows): fix compiler warnings (community-shaders#1798)

* fix: fix flickering particles (community-shaders#1791)

* fix(terrain blending): disable vr support (community-shaders#1799)

* refactor(upscaling): standardize behavior and tune settings (community-shaders#1783)

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

* feat(UI): add auto-hide featurelist option (community-shaders#1793)

* fix: match grass brightness of vanilla (community-shaders#1801)

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

* refactor(perfoverlay): remove color from "Other" and "Total" (community-shaders#1806)

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

* fix(unified water): fix for mesh water jitter (community-shaders#1809)

* fix: clear shader cache on plugin version change (community-shaders#1739)

* feat(filewatcher): add hlsli tracking (community-shaders#1796)

* feat(linear lighting): add ambient multiplier (community-shaders#1805)

* fix(unified-water): underwater fog flicker (community-shaders#1807)

* fix(UI): conflicting esc key on welcome hotkey dialogue (community-shaders#1811)

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

* chore(UI): add subtext font to tooltips (community-shaders#1810)

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

* build: bump streamline to 2.10.3 (community-shaders#1813)

* build: resolve shader warnings (community-shaders#1818)

* feat(ui): add combo hotkey support (community-shaders#1808)

* feat: add feature constraints (community-shaders#1804)

* build: update version to 1.4.8 (community-shaders#1802)

* fix(VR): apply per eye upscaling (community-shaders#1819)

- Split upscaling across each eye for correctness and to avoid DLSS failing over 8k x 8k limit
- Changes HMD mask color to black to hide artifacts with fast movement

* build: bump common lib to 4.2.0 (community-shaders#1821)

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>

* fix(grass collision): catch trashed actor pointers (community-shaders#1765)

* fix(weather editor): desynced override transitions (community-shaders#1820)

* fix(upscaling): fix preset and allocation handling (community-shaders#1824)

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

* build: remove linear lighting from core whilst in development (community-shaders#1826)

* chore: bump version to 1.4.9 (community-shaders#1827)

* fix: add back LLF core file and remove LL core file (community-shaders#1828)

* fix: dont save shader debug toggles (community-shaders#1831)

* fix: remove IBL from core, unfinished (community-shaders#1830)

* chore: update version to 1.4.10 (community-shaders#1832)

* chore(dynamic cubemaps): lessen normalisation darkening (community-shaders#1833)

* chore(llf): remove LightsVisualisationMode settings loading (community-shaders#1834)

* revert: "fix: dont save shader debug toggles (community-shaders#1831)"

This reverts commit f55f195.

* revert: "chore(llf): remove LightsVisualisationMode settings loading (community-shaders#1834)"

This reverts commit b3db5a7.

* fix: default enabledClasses true

* build: bump version

* feat(upscaling): custom DLSS preset (community-shaders#1837)

* fix(weather editor): sync UI for full transition (community-shaders#1822)

* fix(linearlighting): return correct buffer when ll feature off (community-shaders#1838)

* fix(PBR): skip IrradianceToLinear on specular in vanilla (community-shaders#1839)

* feat(weather editor): adjust slider ranges (community-shaders#1847)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* feat(weather editor): replace volumetric Lighting RGB sliders with color picker (community-shaders#1846)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* fix(grass collision): collision radius math  (community-shaders#1849)

* chore: move new feature information into docs (community-shaders#1848)

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>

* fix(ui): background blur with upscaling (community-shaders#1815)

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

* refactor: move some features to core (community-shaders#1852)

* fix: fix blown out water specular (community-shaders#1853)

* feat(weather editor): toggle hotkey (community-shaders#1856)

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

* feat(color picker): add an original color reference to all color pickers (community-shaders#1857)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* perf(emat): alternate tweaks (community-shaders#1850)

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

* feat(weather-editor): merge weather picker and editor (community-shaders#1845)

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

* chore(llf): remove LLF settings loading (community-shaders#1859)

* feat: exponential height fog (community-shaders#1708)

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

* feat(weather editor): block editor access in loading screens (community-shaders#1871)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* feat(weather editor): improve weather picker UI and functionality (community-shaders#1863)

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

* feat(weather editor): repurpose unsaved changes tracking (community-shaders#1860)

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

* fix: sync grass lighting defaults to match ENB (community-shaders#1844)

* fix: stop shader compilation on game exit (community-shaders#1867)

closes community-shaders#1130

* fix(weather editor): prevent inputs when editor is open (community-shaders#1872)

* fix(weather editor): add ctd guards (community-shaders#1864)

* feat(weather editor): remove WorldSpace widget and associated code (community-shaders#1878)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* feat(vr): add OpenComposite menu support (community-shaders#1880)

* revert: "feat(vr): add OpenComposite VR menu" (community-shaders#1881)

* revert: "fix: stop shader compilation on game exit" (community-shaders#1882)

* feat(vr): add OpenComposite menu support (community-shaders#1883)

* feat(weather editor): add time controls (community-shaders#1877)

* feat: add shadowmap rasterizer override (community-shaders#1690)

* fix(weather editor): clear feature overrides with revert (community-shaders#1884)

* feat(UI): Interior Only (community-shaders#1854)

* fix(VR): fix Shadowmap Cascade Rasterizer (community-shaders#1888)

* fix(unified water): distance calculation for raindrops & LOD fade (community-shaders#1890)

* refactor: clarify core feature version mismatch text (community-shaders#1886)

* fix: stop shader compilation on game exit (community-shaders#1885)

* build: exclude hlsl tests from packaging (community-shaders#1894)

* chore: disable feature constraints in dev mode (community-shaders#1893)

* fix(vr): improve stereo UV handling (community-shaders#1899)

* fix(weather editor): move esc key to native input system (community-shaders#1897)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* fix: move ResolveMonoUVForEye outside VR guard (community-shaders#1906)

* fix(grass collision): validate actor  (community-shaders#1905)

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>

* fix(terrain shadows): height map regression (community-shaders#1911)

* fix: util vertical fov math (community-shaders#1904)

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>

* test: add float4 overload test (community-shaders#1902)

* refactor: move all features to globals::game::calendar (community-shaders#1909)

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

* fix(UI): resolution based font (community-shaders#1907)

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

* feat(weather editor): make objects window be independently scrollable (community-shaders#1908)

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

* feat(UI): consolidate searchbar to util and add to weather editor (community-shaders#1898)

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

* feat(weather editor): add filled star for favourites. (community-shaders#1913)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* feat(weather editor): add delete json button to objects window (community-shaders#1914)

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

* fix(VR): resolution-based font (community-shaders#1923)

* refactor: use depthbuffer helper (community-shaders#1925)

* refactor: move TurboColormap into Color.hlsli (community-shaders#1924)

* fix(weather editor): expand clickable area of feature override (community-shaders#1921)

* feat(weather editor): enable snapping to viewport (community-shaders#1917)

* feat(weather editor): highlight enabled cloud layers (community-shaders#1916)

* fix(VR): SSGI discrepancies (community-shaders#1926)

* feat: volumetric shadows (community-shaders#1874)

* ci: enhance feature version audit (community-shaders#1927)

* feat(weather editor): add filter options for objects window (community-shaders#1922)

* feat(weather editor): sticky headers and scrollable content (community-shaders#1930)

* fix(UI): ImGui scaling for borderless mode (community-shaders#1929)

* ci: don't fail on feature audits (community-shaders#1934)

* fix(pbr): use scrap heap allocation (community-shaders#1928)

* chore(UI): add subsurface scattering to Interior Only (community-shaders#1932)

* fix(weather editor): align highlights, fix tooltip (community-shaders#1918)

* fix(ssgi): guard VR only compilation (community-shaders#1938)

* build: update template to avoid extra directory (community-shaders#1812)

* style: fix hlsl formatting (community-shaders#1939)

* fix(UI): improve theme management UI flow (community-shaders#1933)

closes community-shaders#1919

* build(deps): update pre-commit hooks (community-shaders#1768)

* feat(UI): delete theme button (community-shaders#1940)

* feat(UI): open log file button (community-shaders#1942)

* fix(hair): marschner volumetric shadow tint (community-shaders#1944)

* fix(VR): screen space shadows desync (community-shaders#1946)

closes community-shaders#1840

* fix(VR): depth culling during upscaling/Terrain Blending (community-shaders#1858)

* feat(VR): add edge detection for stereo blending (community-shaders#1948)

* refactor: allocate trampoline once (community-shaders#1951)

* fix(UI): PBR MATO color scale RGB settings corrected (community-shaders#1957)

* fix(weather editor): guard against loadorder changes (community-shaders#1953)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: davo0411 <davidkehoe0411@outlook.com>

* fix(UI): feature description text wrapping (community-shaders#1960)

* fix(VR): exponential height fog stereo mismatch (community-shaders#1961)

* chore: pbr consistency changes (community-shaders#1841)

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>

* fix(skylighting): remove PBR lighting scale (community-shaders#1963)

* fix(skysync): effect mesh blackout during shadow caster transitions (community-shaders#1965)

* ci: fix wiki deletion with buffer update (community-shaders#1967)

* feat(weather-editor): option to hide viewport (community-shaders#1970)

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

* test(shader): fallback to warp on invalidarg (community-shaders#1956)

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

* feat: triplanar projected materials (community-shaders#1950)

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

* fix(ao): better ao calculations (community-shaders#1968)

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

* fix(pbr): fix improper kD terms (community-shaders#1971)

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

* perf(emat): tweak fade and shadow intensity (community-shaders#1892)

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

* feat(ibl): revamp ibl and dalc sh (community-shaders#1947)

* build: bump commonlib to 4.7.1 (community-shaders#1977)

* fix: upscaling monitor detection fixes (community-shaders#1978)

* fix(weather editor): prevent overrides resetting settings (community-shaders#1980)

* fix(VR): bad llf offset (community-shaders#1984)

* perf: cache frequent ui checks (community-shaders#1985)

* fix: preserve vanilla water TAA when no upscaler is active (community-shaders#1986)

Co-authored-by: jturnley <jturnley@users.noreply.github.com>

* fix(UI): first-time dialog fade affects all overlays (community-shaders#1976)

* fix(skysync): remove sunlight fade and volumetric lighting overrides (community-shaders#1966)

* refactor(HLSL): standardize epsilon constants (community-shaders#1992)

closes community-shaders#1227

* feat(UI): require Shift to dock windows (community-shaders#1989)

* fix(UI): input spam after alt-tab (community-shaders#1993)

* fix(sky sync): early return for invalid cells (community-shaders#1991)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>
Co-authored-by: jiayev <l936249247@hotmail.com>

* fix(sky sync): remove undeclared variable (community-shaders#1994)

* refactor(pbr): clear up semantics (community-shaders#1995)

* fix(UI): scale layout values for high-DPI (community-shaders#1987)

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

* fix(water): hdr water taa blend (community-shaders#1988)

* refactor(color): clarify gamma conversion functions (community-shaders#1996)

* feat(ISL-editor): add light counters and fix filtering (community-shaders#1997)

* fix(UI): DPI-aware window layouts (community-shaders#2000)

* fix(weather-editor): save color palette window (community-shaders#2001)

* refactor: centralize feature category names (community-shaders#2007)

closes community-shaders#1265

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* chore: bump versions (community-shaders#2010)

* fix(water): sample history mask from current mask (community-shaders#2011)

* chore(wetness-effects): set default MaxPuddleWetness to 1.5 (community-shaders#1981)

Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>

* feat(weather-editor): add free camera and play mode (community-shaders#2008)

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

* build: bump versions and reduce false positives (community-shaders#2013)

* fix(VR): LLF cluster building and culling (community-shaders#2012)

* build: update to VS 2026 (community-shaders#1990)

* ci: fix preset in vs2022 mode (community-shaders#2015)

* ci: remove v2022 from shader jobs (community-shaders#2016)

* feat(upscaling): integrate Streamline Reflex controls (community-shaders#1958)

* fix(unified-water): BSWaterShaderProperty.plane (community-shaders#1998)

---------

Co-authored-by: Skrubby Skrub In A Shrub <87662196+SkrubbySkrubInAShrub@users.noreply.github.com>
Co-authored-by: SkrubbySkrubInAShrub <skrubbyskrubinashrub@gmail.com>
Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>
Co-authored-by: jiayev <l936249247@hotmail.com>
Co-authored-by: Dlizzio <77717521+Dlizzio@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@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Bruce <44987693+brucenguyen@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Dawntic <197450198+Dawntic@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Alan Tse <alandtse@gmail.com>
Co-authored-by: Vanni Giachin <vanni.giachin@qlik.com>
Co-authored-by: zxcvbn <66063766+zndxcvbn@users.noreply.github.com>
Co-authored-by: ParticleTroned <248299730+ParticleTroned@users.noreply.github.com>
Co-authored-by: soda <130315225+soda3000@users.noreply.github.com>
Co-authored-by: YtzyFvra <59631290+YtzyFvra@users.noreply.github.com>
Co-authored-by: LukeFrankio <lorenzogrutzmann@gmail.com>
Co-authored-by: LukeFrankio <loren@example.com>
Co-authored-by: jturnley <32892261+jturnley@users.noreply.github.com>
Co-authored-by: jturnley <jturnley@users.noreply.github.com>
Co-authored-by: Igor Alan Albuquerque de Sousa <50077829+IgorAlanAlbuquerque@users.noreply.github.com>
Co-authored-by: Matt Van Horn <mvanhorn@users.noreply.github.com>
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
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.

3 participants