123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- using System.Linq;
- using Controller.Bicycle;
- using SicknessReduction.Visual.Rendering;
- using UnityEditor.Recorder.Input;
- using UnityEngine;
- using UnityEngine.Rendering.Universal;
- namespace SicknessReduction.Visual.Vignetting
- {
- public class DynamicVignetting : DynamicReductionSource
- {
-
-
-
- [Header("Unity Objects")] public ForwardRendererData forwardRenderer;
- public Transform hmd;
-
- [Range(0, 1)] public float distInnerOuterRadius = .05f;
-
- private MaterialBlitFeature blitFeature;
- private Material blitFeatureMaterial;
- private bool blitFeatureAvailable;
- protected override void Start()
- {
- blitFeature = (MaterialBlitFeature) forwardRenderer.rendererFeatures.FirstOrDefault(f =>
- f is MaterialBlitFeature && f.name.Equals("VignetteBlitFilter"));
- blitFeatureAvailable = blitFeature != null;
- if (!blitFeatureAvailable) return;
-
- blitFeatureMaterial = blitFeature.settings.MaterialToBlit;
- base.Start();
- }
- protected override void Update()
- {
- if (!blitFeatureAvailable) return;
- base.Update();
- var correctedRestriction = Mathf.Clamp(currentValue + change, 0, 1);
- if (correctedRestriction > 0f)
- {
- blitFeature.SetActive(true);
- UpdateMaterial(correctedRestriction);
- return;
- }
- blitFeature.SetActive(false);
- }
- private void UpdateMaterial(float restriction)
- {
- currentValue = restriction;
- var r = Mathf.Clamp(1 - restriction, 0, 1);
- blitFeatureMaterial.SetFloat("_OFOV", r);
- blitFeatureMaterial.SetFloat("_IFOV", Mathf.Clamp(r - distInnerOuterRadius, 0, 1));
- }
- private void OnDestroy()
- {
- if (!blitFeatureAvailable) return;
- blitFeature.SetActive(false);
- }
- }
- }
|