Investigate: built-in ReShade-style user shader effects (load .fx effects in our post chain) #186
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#186
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Investigate a built-in, ReShade-style user shader post-processing stack: load community effect files and run them inside our own frame, instead of people injecting ReShade on top of the viewer.
Why built in beats injected ReShade
What to investigate
.fx) directly? ReShade's effect compiler (reshadefx, BSD-3) emits SPIR-V. Check: license compatibility (LGPL viewer), build it as a 3p lib or vendor it, how much of the FX runtime semantics (techniques, passes, render targets,uniformannotations,source =special values like timer / frame count / mouse) we need to host. Alternative: our own simpler GLSL effect format (less compatible, less work).ReShade::BackBuffer/DepthBufferconventions -> our HDR scene / tonemapped image / display depth (#181recordDepthUpscale) / normals / motion. HDR vs LDR expectations of existing effects.Output
A short design note + a go/no-go and size estimate, then implementation tickets.
Related: Lightbox (#111, #112), render scale (#181), temporal pipeline (#84), photo later (#118), device-lost handling (#135).
Investigation done. Design note + plan: epic #542.
Go / no-go:
lightSurface(), an avatar-id mask from the GPU-driven pre-pass, and a pre-TAA outline compute. It doesn't depend on the ReShade runtime (#549, #550).Key findings:
prepareFinal(force)). That keeps it pre-snapshot-capture and pre-HUD/UI.displayDepth()is jittered at render scale 1 under TAA, so FX depth needs the depth-upscale unjitter at 1:1 too.BUFFER_WIDTH/HEIGHTare compile-time, so custom-size snapshots need a recompile + targets.Licensing:
ReShade.fxhis CC0, so both can ship.ReShadeUI.fxhhas no licence, so we write a clean-room copy.Leaving this open for the owner's decision.
Investigation complete: go/no-go and design plan are written up in epic #542 (cel shading and ReShade FX phases are tracked as #543-#551).