Skip to content

chore: polish Feature menus#82

Merged
doodlum merged 3 commits into
community-shaders:devfrom
TheRiverwoodModder:dev
Sep 7, 2023
Merged

chore: polish Feature menus#82
doodlum merged 3 commits into
community-shaders:devfrom
TheRiverwoodModder:dev

Conversation

@TheRiverwoodModder

Copy link
Copy Markdown
Contributor
  • All options now have tooltips added.
  • Tooltip text in TextWrapped has been converted into tooltips.
  • Some organizational updates to the different sections.

@doodlum doodlum requested a review from alandtse September 3, 2023 01:11
@alandtse alandtse changed the title chore: Some polishing of the Feature menus chore: polish Feature menus Sep 3, 2023

@alandtse alandtse left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM.

@alandtse

alandtse commented Sep 3, 2023

Copy link
Copy Markdown
Contributor

@doodlum you can change it to squash so you can collapse the name to conform with our naming convention.
image

I tend to squash when I want to streamline the history and don't care about all the individual commits that brought it in. I think for large feature branches where we do a lot of work, merge is appropriate but for small ones like this, it's best to clean the history.

@doodlum doodlum merged commit bc9bdb4 into community-shaders:dev Sep 7, 2023
doodlum added a commit that referenced this pull request Sep 13, 2023
* chore: polish Feature menus (#82)

* Some polishing of the Feature menus

* style: 🎨 apply clang-format changes

---------

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

* docs: improve compilation instructions (#85)

* Update README.md

Rework of Readme's instructions to help clarify installation and configuration of requirements to compile Community Shaders.

* Update README.md

* Update README.md

* Update README.md

* Update README.md

Removed explicit install instructions for Vcpkg in the event changes are made upstream to its installation process.

* Update README.md

* feat: add NPC grass collision (#79)

* fix: fix bug where collisionCount always 0

It now will remember the last value from the prior frame.

* feat: add npc grass collision

Allows NPCs to cause grass collisions. This is more costly than the
player only version. However, additional settings have been added to
tune quality over performance. We should ask testers for good defaults.

The commit currently enables NPC collisions by default. We can disable
with maxDistance set to 0.

* style: 🎨 apply clang-format changes

* Some polishing of the Feature menus

* style: 🎨 apply clang-format changes

* chore: convert to popups in menu

---------

Co-authored-by: TheRiverwoodModder <125157333+TheRiverwoodModder@users.noreply.github.com>
Co-authored-by: TheRiverwoodModder <TheRiverwoodModder@users.noreply.github.com>

* feat: improve ShaderCache (#86)

* feat: improve ShaderCache

* Add error message when compiler failure detected. Error may be hidden
but menu will be in red font to indicate failure state.
* Add statistics to compilation message and advanced options, including
estimated completion time and data on failures and cache hits.
* Add setting to change the Compiler Thread count. This may allow users
to avoid crashes and unresponsiveness.
* Fix logic to detect failed shaders appropriately and avoid infinite
compilation bug.
* Fix bug where Shader Defines would not load if loglevel was malformed.

closes #71

* fix: fix hashkey to avoid hashing on descriptor

Remove descriptor from string generated for hashkeys. On 1.5.97, I see
3.8K worth of hits which may be the permutations discussed here (# 72).

* fix: set bLandSpecular to support Terrain Parallax (#88)

* refactor: remove redundant state load

* fix: set bLandSpecular to support Terrain Parallax

bLandSpecular may be disabled by certain mod lists and is necessary for
terrain parallax. This will force the setting to true when Terrain
Parallax is enabled.

* docs: simplify build commands

* build: fix subsurface directory structure

Auto deploy scripts were broken due to missing Shaders subdirectory in
/Features

* build: list features for auto deployment

* feat: enable VR building for SSS

* style: clang format

---------

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>
Co-authored-by: TheRiverwoodModder <125157333+TheRiverwoodModder@users.noreply.github.com>
Co-authored-by: TheRiverwoodModder <TheRiverwoodModder@users.noreply.github.com>
Co-authored-by: AceAmir <73254124+AceAmir@users.noreply.github.com>
Co-authored-by: Pentalimbed <76898260+Pentalimbed@users.noreply.github.com>
alandtse referenced this pull request in alandtse/open-shaders Sep 15, 2023
* chore: polish Feature menus (#82)

* Some polishing of the Feature menus

* style: 🎨 apply clang-format changes

---------

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

* docs: improve compilation instructions (#85)

* Update README.md

Rework of Readme's instructions to help clarify installation and configuration of requirements to compile Community Shaders.

* Update README.md

* Update README.md

* Update README.md

* Update README.md

Removed explicit install instructions for Vcpkg in the event changes are made upstream to its installation process.

* Update README.md

* feat: add NPC grass collision (#79)

* fix: fix bug where collisionCount always 0

It now will remember the last value from the prior frame.

* feat: add npc grass collision

Allows NPCs to cause grass collisions. This is more costly than the
player only version. However, additional settings have been added to
tune quality over performance. We should ask testers for good defaults.

The commit currently enables NPC collisions by default. We can disable
with maxDistance set to 0.

* style: 🎨 apply clang-format changes

* Some polishing of the Feature menus

* style: 🎨 apply clang-format changes

* chore: convert to popups in menu

---------

Co-authored-by: TheRiverwoodModder <125157333+TheRiverwoodModder@users.noreply.github.com>
Co-authored-by: TheRiverwoodModder <TheRiverwoodModder@users.noreply.github.com>

* feat: improve ShaderCache (#86)

* feat: improve ShaderCache

* Add error message when compiler failure detected. Error may be hidden
but menu will be in red font to indicate failure state.
* Add statistics to compilation message and advanced options, including
estimated completion time and data on failures and cache hits.
* Add setting to change the Compiler Thread count. This may allow users
to avoid crashes and unresponsiveness.
* Fix logic to detect failed shaders appropriately and avoid infinite
compilation bug.
* Fix bug where Shader Defines would not load if loglevel was malformed.

closes #71

* fix: fix hashkey to avoid hashing on descriptor

Remove descriptor from string generated for hashkeys. On 1.5.97, I see
3.8K worth of hits which may be the permutations discussed here (# 72).

* fix: set bLandSpecular to support Terrain Parallax (#88)

* refactor: remove redundant state load

* fix: set bLandSpecular to support Terrain Parallax

bLandSpecular may be disabled by certain mod lists and is necessary for
terrain parallax. This will force the setting to true when Terrain
Parallax is enabled.

* docs: simplify build commands

* build: fix subsurface directory structure

Auto deploy scripts were broken due to missing Shaders subdirectory in
/Features

* build: list features for auto deployment

* feat: enable VR building for SSS

* style: clang format

---------

Co-authored-by: doodlum <15017472+doodlum@users.noreply.github.com>
Co-authored-by: TheRiverwoodModder <125157333+TheRiverwoodModder@users.noreply.github.com>
Co-authored-by: TheRiverwoodModder <TheRiverwoodModder@users.noreply.github.com>
Co-authored-by: AceAmir <73254124+AceAmir@users.noreply.github.com>
Co-authored-by: Pentalimbed <76898260+Pentalimbed@users.noreply.github.com>
alandtse referenced this pull request in alandtse/open-shaders Jul 20, 2025
* Some polishing of the Feature menus

* style: 🎨 apply clang-format changes

---------

Co-authored-by: TheRiverwoodModder <TheRiverwoodModder@users.noreply.github.com>
ParticleTroned pushed a commit to ParticleTroned/skyrim-community-shaders that referenced this pull request Jun 11, 2026
…nity-shaders#106)

Adds a diagnostic-only Tracy GPU zone around the engine SSR raymarch
pass (`ISReflectionsRayTracing`), so the pass is visible on the Tracy
GPU timeline. Split out of community-shaders#82 (foveated SSR) since it's independent
profiling infrastructure, not part of the feature.

## What it does

Wraps the SSR raymarch DRAW with a `tracy::D3D11ZoneScope`, opened on
the shader's `PreRender` (vfunc `0x0A`) and closed on `PostRender`
(`0x0B`).

## Why these hook points

RenderDoc callstacks proved the effect renders as a pixel-shader DRAW
issued by the deferred batch renderer through the **non-virtual**
`BSImagespaceShader::Render` — not the `ImageSpaceManager` vtable Render
slot and not `DispatchComputeShader` (both of which were tried first and
never fired). `Render` brackets the draw with the per-shader
`PreRender`/`PostRender` vfuncs, which CommonLib keeps at stable indices
across SE/AE/VR (the VR-only `FakeDispatchComputeShader` inserts at
`0x0D`, after them), so hooking `0x0A`/`0x0B` on the cross-versioned
`ReflectionsRayTracing` vtable wraps exactly the SSR draw on all three
runtimes with no per-version addresses.

## Safety

- `TRACY_ENABLE`-gated — zero impact on shipping builds.
- Behaviour-preserving: each thunk only chains the original vfunc.
- Single raw zone holder is safe: render-thread only, non-nested for
this shader; the `PreRender` thunk defensively closes any prior zone if
`PostRender` were ever skipped.

Verified live (ALL-TRACY build): zone fires ~525/530 frames, ~88us
baseline.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ParticleTroned added a commit to ParticleTroned/skyrim-community-shaders that referenced this pull request Jun 11, 2026
## Summary

Adds **foveated SSR raymarching** for VR: screen-space reflections
raymarch at full cost in the center of view and progressively cheaper
toward the periphery, using the active **Foveated DLSS** region as the
mask. Central reflections are unchanged; peripheral pixels fall back to
the cubemap / water reflection. A net VR GPU-time saving on reflective
scenes, at the cost of peripheral SSR detail.

Ported from the foveation framework in
[ParticleTroned/skyrim-community-shaders](https://github.com/ParticleTroned/skyrim-community-shaders),
**scoped to SSR only** with no dead code (compute-dispatch helpers
omitted).

## How it works

- **Region model:** we keep our existing rectangular DLSS subrect as the
canonical foveation region. `FoveatedRender::GetFoveationProfile()`
synthesizes the centered-superellipse params (coverage / horizontal
scale / per-eye center offset) the mask consumes. We deliberately do
**not** adopt the upstream "oval-as-source" foundation, which would
collide with our PR community-shaders#2096 foveated-DLSS divergence.
- **Mask:** `FoveatedShaderDetail.hlsli` + `FoveatedMask.hlsli`
(superellipse, feathered or hard-cutoff) → a per-pixel 0..1 weight.
- **SSR shader:** in VR, the raymarch + binary-search iteration counts
scale with the weight down to a floor (`minFoveatedIterations = 16` vs
`64`), the SSR alpha is multiplied by the weight, and pixels outside the
mask early-out. **Non-VR is behaviorally identical**: the non-VR branch
sets `rayCount = iterations` / `binCount = binaryIterations` /
`fovWeight = 1.0`, collapsing the (now VR-shared) loop body to the
original constants and weight 1.0. The loop body is shared with the VR
path rather than duplicated, so the source/bytecode is *not*
byte-identical — equivalence is by construction + runtime A/B, not a
bytecode diff.
- **Constants:** two `float4`s added to the shared `PerFrame` cbuffer
(`VRFoveationData0` + `VRFoveationCenterOffsets`), with matching C++
layout under the existing `STATIC_ASSERT_ALIGNAS_16` size check.
- **Control:** VR-only "Foveated Effects" UI with `Foveate SSR
Raymarching` + `Hard Cutoff` toggles, gated (with hints) on Foveated
DLSS being active and SSR enabled.

## Scope decisions (per design discussion)

- **SSR only.** Water/wetterness/SSGI foveation and the compute-dispatch
helpers from the upstream framework are intentionally not ported —
nothing unused ships.
- **Adapter, not full model adoption.** Keeps divergence minimal and
avoids the PR community-shaders#2096 reconciliation; the rect→superellipse synthesis is
approximate but sufficient for a per-pixel center/periphery weight.

## Validation

- `BuildRelease.bat ALL` (universal SE/AE/VR) — clean, exit 0, no
warnings on the changed TUs.
- Targeted `hlslkit` compile of `ISReflectionsRayTracing.hlsl` — **0
errors / 0 warnings** on both the VR and Flatrim configs.
- **Runtime-tested in VR (Tracy GPU A/B).** Measured the
`ISReflectionsRayTracing` GPU zone on an `ALL-TRACY` build, same scene
and camera, Center 50% feathered foveation: the pass drops from ~88 µs
to ~44 µs — a saving of **~44 µs, about 0.4% of the 90 fps frame
budget** (11.1 ms). Small in absolute terms, but reclaimed entirely in
the periphery where reflections aren't scrutinized, and it scales with
how much SSR the scene actually draws (reflective interiors / water gain
more). The rig was present-throttled with the HMD off, so per-pass GPU
time is the signal here, not frame rate.

## Attribution

Foveation framework by ParticleTroned
([ParticleTroned/skyrim-community-shaders](https://github.com/ParticleTroned/skyrim-community-shaders)).

🤖 Generated with [Claude Code](https://claude.com/claude-code)


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* VR foveation for screen-space reflections (SSR): per-pixel foveation
weighting adjusts SSR detail/iteration counts and skips work outside the
foveal center.
* Engine exposes a foveation profile (coverage scale, horizontal scale,
per-eye center offsets) for rendering.

* **UI**
* New "Foveated Effects" settings section with enable toggle,
hard-cutoff vs feathered option, and prerequisite warnings.

* **Settings**
* Added persistent settings to enable SSR foveation and hard-cutoff
behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: ParticleTroned <248299730+ParticleTroned@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
ParticleTroned pushed a commit to ParticleTroned/skyrim-community-shaders that referenced this pull request Jun 11, 2026
…ore VR)

This reverts upstream b48bf24 within the v1.7.0 sync. The plain merge let
community-shaders#2475's VR deletions win silently on ~148 files our dev left unchanged; this
revert restores VR everywhere it was stripped. Conflicts with our newer VR
(foveated SSR community-shaders#82, isVR refactor community-shaders#113, stereo-opts, restored VRStereoOptimizations
and Features/VR/*) were resolved keep-ours -- the merge commit already holds the
correct, current VR state for those files.

Co-Authored-By: Claude Opus 4.8 (1M context) <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