Pixelize VFX! (#895)
Finally, the dark days of zooming the camera and viewport are over...
This commit is contained in:
parent
2128310b92
commit
5d51d3be0f
|
@ -1412,7 +1412,7 @@ MonoBehaviour:
|
|||
overrideState: 0
|
||||
value: 0
|
||||
intervalType:
|
||||
overrideState: 0
|
||||
overrideState: 1
|
||||
value: 0
|
||||
frequency:
|
||||
overrideState: 0
|
||||
|
@ -1446,6 +1446,37 @@ MonoBehaviour:
|
|||
fastMode:
|
||||
overrideState: 0
|
||||
value: 0
|
||||
--- !u!114 &-2221949593409771698
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 3
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: bcc23458a58ff384c82bd27e09aa0cc6, type: 3}
|
||||
m_Name: PixelizeQuad
|
||||
m_EditorClassIdentifier:
|
||||
active: 1
|
||||
enabled:
|
||||
overrideState: 1
|
||||
value: 1
|
||||
pixelSize:
|
||||
overrideState: 1
|
||||
value: 0.184
|
||||
useAutoScreenRatio:
|
||||
overrideState: 1
|
||||
value: 0
|
||||
pixelRatio:
|
||||
overrideState: 1
|
||||
value: 1
|
||||
pixelScaleX:
|
||||
overrideState: 1
|
||||
value: 1
|
||||
pixelScaleY:
|
||||
overrideState: 1
|
||||
value: 1
|
||||
--- !u!114 &-1752554079016775041
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 3
|
||||
|
@ -1469,7 +1500,7 @@ MonoBehaviour:
|
|||
overrideState: 1
|
||||
value: {r: 0, g: 0, b: 0, a: 1}
|
||||
center:
|
||||
overrideState: 0
|
||||
overrideState: 1
|
||||
value: {x: 0.5, y: 0.5}
|
||||
intensity:
|
||||
overrideState: 1
|
||||
|
@ -1540,6 +1571,7 @@ MonoBehaviour:
|
|||
- {fileID: -44530092333175149}
|
||||
- {fileID: -6672723021951195849}
|
||||
- {fileID: 6617679330616591269}
|
||||
- {fileID: -2221949593409771698}
|
||||
--- !u!114 &190338221448500764
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 3
|
||||
|
@ -1589,7 +1621,7 @@ MonoBehaviour:
|
|||
value: 1
|
||||
intensity:
|
||||
overrideState: 1
|
||||
value: 0
|
||||
value: 0.5
|
||||
size:
|
||||
overrideState: 1
|
||||
value: 1
|
||||
|
|
|
@ -14,8 +14,8 @@ RenderTexture:
|
|||
m_DownscaleFallback: 0
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 5
|
||||
m_Width: 1249
|
||||
m_Height: 703
|
||||
m_Width: 1920
|
||||
m_Height: 1080
|
||||
m_AntiAliasing: 2
|
||||
m_MipCount: -1
|
||||
m_DepthStencilFormat: 92
|
||||
|
|
|
@ -14,8 +14,8 @@ RenderTexture:
|
|||
m_DownscaleFallback: 0
|
||||
m_IsAlphaChannelOptional: 0
|
||||
serializedVersion: 5
|
||||
m_Width: 1873
|
||||
m_Height: 1054
|
||||
m_Width: 2880
|
||||
m_Height: 1620
|
||||
m_AntiAliasing: 1
|
||||
m_MipCount: -1
|
||||
m_DepthStencilFormat: 92
|
||||
|
|
|
@ -13155,7 +13155,7 @@ MonoBehaviour:
|
|||
m_TargetGraphic: {fileID: 171581557}
|
||||
m_HandleRect: {fileID: 171581556}
|
||||
m_Direction: 2
|
||||
m_Value: 1
|
||||
m_Value: 0
|
||||
m_Size: 1
|
||||
m_NumberOfSteps: 0
|
||||
m_OnValueChanged:
|
||||
|
@ -25414,8 +25414,8 @@ MonoBehaviour:
|
|||
m_TargetGraphic: {fileID: 1589389272}
|
||||
m_HandleRect: {fileID: 1589389271}
|
||||
m_Direction: 2
|
||||
m_Value: 1
|
||||
m_Size: 0.99995804
|
||||
m_Value: 0
|
||||
m_Size: 0.99392056
|
||||
m_NumberOfSteps: 0
|
||||
m_OnValueChanged:
|
||||
m_PersistentCalls:
|
||||
|
@ -31580,7 +31580,7 @@ RectTransform:
|
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.5}
|
||||
m_AnchorMax: {x: 1, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 122.12238}
|
||||
m_AnchoredPosition: {x: 0, y: 199.0612}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 1}
|
||||
--- !u!222 &1154875945
|
||||
|
@ -41326,8 +41326,8 @@ MonoBehaviour:
|
|||
m_TargetGraphic: {fileID: 1220118245}
|
||||
m_HandleRect: {fileID: 1220118244}
|
||||
m_Direction: 2
|
||||
m_Value: 1.0000005
|
||||
m_Size: 0.61358607
|
||||
m_Value: 1
|
||||
m_Size: 1
|
||||
m_NumberOfSteps: 0
|
||||
m_OnValueChanged:
|
||||
m_PersistentCalls:
|
||||
|
|
|
@ -1188,6 +1188,26 @@ namespace HeavenStudio
|
|||
}
|
||||
},
|
||||
|
||||
new GameAction("pixelQuad", "Pixelize")
|
||||
{
|
||||
resizable = true,
|
||||
parameters = new()
|
||||
{
|
||||
new("pixelSizeStart", new EntityTypes.Float(0.00f, 1f, 0.00f), "Start Pixel Size", "Set the pixel size at the start of the event."),
|
||||
new("pixelSizeEnd", new EntityTypes.Float(0.00f, 1f, 0.5f), "End Pixel Size", "Set the pixel size at the end of the event."),
|
||||
new("ratioStart", new EntityTypes.Float(0.2f, 5f, 1f), "Start Pixel Ratio", "Set the pixel ratio at the start of the event."),
|
||||
new("ratioEnd", new EntityTypes.Float(0.2f, 5f, 1f), "End Pixel Ratio", "Set the pixel ratio at the end of the event."),
|
||||
new("xScaleStart", new EntityTypes.Float(0.2f, 5f, 1f), "Start X Scale", "Set the X scale of the pixels at the start of the event."),
|
||||
new("xScaleEnd", new EntityTypes.Float(0.2f, 5f, 1f), "End X Scale", "Set the X scale of the pixels at the end of the event."),
|
||||
new("yScaleStart", new EntityTypes.Float(0.2f, 5f, 1f), "Start Y Scale", "Set the Y scale of the pixels at the start of the event."),
|
||||
new("yScaleEnd", new EntityTypes.Float(0.2f, 5f, 1f), "End Y Scale", "Set the Y scale of the pixels at the end of the event."),
|
||||
new("ease", Util.EasingFunction.Ease.Linear, "Ease", "Set the easing of the action.", new()
|
||||
{
|
||||
new((x, y) => (Util.EasingFunction.Ease)x != Util.EasingFunction.Ease.Instant, new string[] { "pixelSizeStart", "ratioStart", "xScaleStart", "yScaleStart" })
|
||||
}),
|
||||
}
|
||||
},
|
||||
|
||||
new GameAction("retroTv", "Retro TV")
|
||||
{
|
||||
resizable = true,
|
||||
|
|
|
@ -24,12 +24,15 @@ namespace HeavenStudio
|
|||
private List<RiqEntity> _analogNoises = new();
|
||||
private List<RiqEntity> _screenJumps = new();
|
||||
private List<RiqEntity> _sobelNeons = new();
|
||||
private List<RiqEntity> _pixelizeQuads = new();
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_volume = GetComponent<PostProcessVolume>();
|
||||
UpdateRetroTV();
|
||||
UpdateAnalogNoise();
|
||||
UpdateSobelNeons();
|
||||
UpdatePixelizes();
|
||||
|
||||
}
|
||||
|
||||
|
@ -52,6 +55,7 @@ namespace HeavenStudio
|
|||
_analogNoises = EventCaller.GetAllInGameManagerList("vfx", new string[] {"analogNoise"});
|
||||
_screenJumps = EventCaller.GetAllInGameManagerList("vfx", new string[] {"screenJump"});
|
||||
_sobelNeons = EventCaller.GetAllInGameManagerList("vfx", new string[] {"sobelNeon"});
|
||||
_pixelizeQuads = EventCaller.GetAllInGameManagerList("vfx", new string [] {"pixelQuad"});
|
||||
|
||||
UpdateVignette();
|
||||
UpdateChromaticAbberations();
|
||||
|
@ -65,6 +69,7 @@ namespace HeavenStudio
|
|||
UpdateAnalogNoise();
|
||||
UpdateScreenJumps();
|
||||
UpdateSobelNeons();
|
||||
UpdatePixelizes();
|
||||
|
||||
}
|
||||
|
||||
|
@ -82,6 +87,7 @@ namespace HeavenStudio
|
|||
UpdateAnalogNoise();
|
||||
UpdateScreenJumps();
|
||||
UpdateSobelNeons();
|
||||
UpdatePixelizes();
|
||||
|
||||
}
|
||||
|
||||
|
@ -399,6 +405,38 @@ namespace HeavenStudio
|
|||
|
||||
}
|
||||
|
||||
private void UpdatePixelizes()
|
||||
{
|
||||
if (!_volume.profile.TryGetSettings<PixelizeQuad>(out var pq)) return;
|
||||
pq.enabled.Override(false);
|
||||
foreach (var e in _pixelizeQuads)
|
||||
{
|
||||
float normalized = Conductor.instance.GetPositionFromBeat(e.beat, e.length);
|
||||
if (normalized < 0) break;
|
||||
|
||||
float clampNormal = Mathf.Clamp01(normalized);
|
||||
var func = Util.EasingFunction.GetEasingFunction((Util.EasingFunction.Ease)e["ease"]);
|
||||
|
||||
float newPixelSize = func(e["pixelSizeStart"], e["pixelSizeEnd"], clampNormal);
|
||||
pq.enabled.Override(newPixelSize != 0);
|
||||
if (!pq.enabled) continue;
|
||||
pq.pixelSize.Override(newPixelSize);
|
||||
|
||||
float newPixelRatio = func(e["ratioStart"], e["ratioEnd"], clampNormal);
|
||||
if (!pq.enabled) continue;
|
||||
pq.pixelRatio.Override(newPixelRatio);
|
||||
|
||||
float newPixelXScale = func(e["xScaleStart"], e["xScaleEnd"], clampNormal);
|
||||
if (!pq.enabled) continue;
|
||||
pq.pixelScaleX.Override(newPixelXScale);
|
||||
|
||||
float newPixelYScale = func(e["yScaleStart"], e["yScaleEnd"], clampNormal);
|
||||
if (!pq.enabled) continue;
|
||||
pq.pixelScaleY.Override(newPixelYScale);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private Color ColorEase(Color start, Color end, float time, Util.EasingFunction.Function func)
|
||||
{
|
||||
float newR = func(start.r, end.r, time);
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace XPostProcessing
|
|||
public class PixelizeQuad : PostProcessEffectSettings
|
||||
{
|
||||
|
||||
[Range(0.01f, 1.0f)]
|
||||
[Range(0.00f, 1.0f)]
|
||||
public FloatParameter pixelSize = new FloatParameter { value = 0.5f };
|
||||
|
||||
public BoolParameter useAutoScreenRatio = new BoolParameter { value = true };
|
||||
|
|
Loading…
Reference in a new issue