mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 19:04:02 +00:00
fix(effects): run no sharpen pass when its slider is at 0 (#1398)
Disable the sharpen pass when its intensity is zero. Contribution by @quanticsoul4772.
This commit is contained in:
1 parent
5103ff672c
commit
a7da90fdfc
4 files changed
+35
-1
No files matched your search
@@ -0,0 +1,2 @@
|
|||||||
|
- The Sharpen slider at 0 now turns the sharpen pass off instead of still
|
||||||
|
sharpening at a low amount (quanticsoul4772, #1398).
|
||||||
@@ -1301,6 +1301,8 @@ Stopping the controller revokes animation before asynchronous UI teardown; final
|
|||||||
destruction removes its stages and restores the borrowed bloom configuration.
|
destruction removes its stages and restores the borrowed bloom configuration.
|
||||||
Snow's sideways sway stays within a fixed range at any session age; Wind scales
|
Snow's sideways sway stays within a fixed range at any session age; Wind scales
|
||||||
its amplitude.
|
its amplitude.
|
||||||
|
Sharpen runs only when enabled with intensity above 0.001. At slider zero its
|
||||||
|
stage is disabled; raising the slider resumes it when sharpen is enabled.
|
||||||
|
|
||||||
## Display control ownership
|
## Display control ownership
|
||||||
|
|
||||||
|
|||||||
+13
-1
@@ -159,18 +159,30 @@ export class VisualEffects {
|
|||||||
this.requestRender('bloom');
|
this.requestRender('bloom');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sharpen runs only when it is on and its slider is above 0, as the style
|
||||||
|
* stages do: the pass costs the same at any amount (~1.5 ms GPU per frame
|
||||||
|
* on the Arc, 2026-10-24), and `0.1 + value * 2` still sharpened at 0.
|
||||||
|
*/
|
||||||
|
syncSharpenEnabled() {
|
||||||
|
if (this.stopped || !this.sharpenStage) return;
|
||||||
|
this.sharpenStage.enabled =
|
||||||
|
this.sharpenEnabled && this.sharpenIntensity > 0.001;
|
||||||
|
}
|
||||||
|
|
||||||
applySharpenIntensity(value) {
|
applySharpenIntensity(value) {
|
||||||
if (this.stopped) return;
|
if (this.stopped) return;
|
||||||
this.sharpenIntensity = value;
|
this.sharpenIntensity = value;
|
||||||
if (this.sharpenStage)
|
if (this.sharpenStage)
|
||||||
this.sharpenStage.uniforms.amount = 0.1 + value * 2.0;
|
this.sharpenStage.uniforms.amount = 0.1 + value * 2.0;
|
||||||
|
this.syncSharpenEnabled();
|
||||||
this.requestRender('sharpen');
|
this.requestRender('sharpen');
|
||||||
}
|
}
|
||||||
|
|
||||||
setSharpenEnabled(enabled) {
|
setSharpenEnabled(enabled) {
|
||||||
if (this.stopped) return;
|
if (this.stopped) return;
|
||||||
this.sharpenEnabled = !!enabled;
|
this.sharpenEnabled = !!enabled;
|
||||||
if (this.sharpenStage) this.sharpenStage.enabled = this.sharpenEnabled;
|
this.syncSharpenEnabled();
|
||||||
this.requestRender('sharpen');
|
this.requestRender('sharpen');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -224,6 +224,24 @@ test('sharpen uses the existing uniform scale and keeps values while disabled',
|
|||||||
f.effects.destroy();
|
f.effects.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('sharpen at 0 runs no pass, and comes back with the slider', () => {
|
||||||
|
const f = fixture();
|
||||||
|
f.effects.initPostProcess(0.49);
|
||||||
|
f.effects.setSharpenEnabled(true);
|
||||||
|
assert.equal(f.effects.sharpenStage.enabled, true);
|
||||||
|
f.effects.applySharpenIntensity(0);
|
||||||
|
assert.equal(
|
||||||
|
f.effects.sharpenStage.enabled,
|
||||||
|
false,
|
||||||
|
'no residual sharpen at 0',
|
||||||
|
);
|
||||||
|
f.effects.setSharpenEnabled(true);
|
||||||
|
assert.equal(f.effects.sharpenStage.enabled, false, 'on at 0 is still off');
|
||||||
|
f.effects.applySharpenIntensity(0.2);
|
||||||
|
assert.equal(f.effects.sharpenStage.enabled, true);
|
||||||
|
f.effects.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
test('stop revokes pending work immediately but retains stages until final destruction', () => {
|
test('stop revokes pending work immediately but retains stages until final destruction', () => {
|
||||||
const f = fixture();
|
const f = fixture();
|
||||||
f.effects.initStyles();
|
f.effects.initStyles();
|
||||||
|
|||||||
Reference in new issue
Block a user