Retro VFX! (also airboarder works now) (#780)

* Super Retro VFX!

* Updated Screen Jump default

* also airboarder works now

---------

Co-authored-by: minenice55 <star.elementa@gmail.com>
This commit is contained in:
wookywok
2024-03-11 16:21:51 -05:00
committed by GitHub
parent bc93a7ab94
commit 92962fef26
915 changed files with 32248 additions and 73 deletions

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 51d9f4cb6a261b04c9254c8dd98a0e56
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,57 @@
//----------------------------------------------------------------------------------------------------------
// X-PostProcessing Library
// https://github.com/QianMo/X-PostProcessing-Library
// Copyright (C) 2020 QianMo. All rights reserved.
// Licensed under the MIT License
// You may not use this file except in compliance with the License.You may obtain a copy of the License at
// http://opensource.org/licenses/MIT
//----------------------------------------------------------------------------------------------------------
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEditor.Rendering.PostProcessing;
using UnityEngine.Rendering.PostProcessing;
namespace XPostProcessing
{
[PostProcessEditor(typeof(PixelizeSector))]
public sealed class PixelizeSectorEditor : PostProcessEffectEditor<PixelizeSector>
{
SerializedParameterOverride pixelSize;
SerializedParameterOverride circleRadius;
SerializedParameterOverride pixelIntervalX;
SerializedParameterOverride pixelIntervalY;
SerializedParameterOverride BackgroundColor;
public override void OnEnable()
{
pixelSize = FindParameterOverride(x => x.pixelSize);
circleRadius = FindParameterOverride(x => x.circleRadius);
pixelIntervalX = FindParameterOverride(x => x.pixelIntervalX);
pixelIntervalY = FindParameterOverride(x => x.pixelIntervalY);
BackgroundColor = FindParameterOverride(x => x.BackgroundColor);
}
public override string GetDisplayTitle()
{
return XPostProcessingEditorUtility.DISPLAY_TITLE_PREFIX + base.GetDisplayTitle();
}
public override void OnInspectorGUI()
{
EditorUtilities.DrawHeaderLabel("Core Property");
PropertyField(pixelSize);
PropertyField(circleRadius);
PropertyField(BackgroundColor);
EditorUtilities.DrawHeaderLabel("Pixel Interval");
PropertyField(pixelIntervalX);
PropertyField(pixelIntervalY);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8b18c821150f20845b8700a8b66357fd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,75 @@
//----------------------------------------------------------------------------------------------------------
// X-PostProcessing Library
// https://github.com/QianMo/X-PostProcessing-Library
// Copyright (C) 2020 QianMo. All rights reserved.
// Licensed under the MIT License
// You may not use this file except in compliance with the License.You may obtain a copy of the License at
// http://opensource.org/licenses/MIT
//----------------------------------------------------------------------------------------------------------
using System;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.PostProcessing;
namespace XPostProcessing
{
[Serializable]
[PostProcess(typeof(PixelizeSectorRenderer), PostProcessEvent.BeforeStack, "X-PostProcessing/Pixelize/PixelizeSector")]
public class PixelizeSector : PostProcessEffectSettings
{
[Range(0.01f, 1.0f)]
public FloatParameter pixelSize = new FloatParameter { value = 0.8f };
[Range(0.01f, 1.0f)]
public FloatParameter circleRadius = new FloatParameter { value = 0.8f };
[Range(0.2f, 5.0f), Tooltip("Pixel interval X")]
public FloatParameter pixelIntervalX = new FloatParameter { value = 1f };
[Range(0.2f, 5.0f), Tooltip("Pixel interval Y")]
public FloatParameter pixelIntervalY = new FloatParameter { value = 1f };
[ColorUsageAttribute(true, true, 0f, 20f, 0.125f, 3f)]
public ColorParameter BackgroundColor = new ColorParameter { value = new Color(0.0f, 0.0f, 0.0f) };
}
public sealed class PixelizeSectorRenderer : PostProcessEffectRenderer<PixelizeSector>
{
private const string PROFILER_TAG = "X-PixelizeSector";
private Shader shader;
public override void Init()
{
shader = Shader.Find("Hidden/X-PostProcessing/PixelizeSector");
}
public override void Release()
{
base.Release();
}
static class ShaderIDs
{
internal static readonly int Params = Shader.PropertyToID("_Params");
internal static readonly int Params2 = Shader.PropertyToID("_Params2");
}
public override void Render(PostProcessRenderContext context)
{
CommandBuffer cmd = context.command;
PropertySheet sheet = context.propertySheets.Get(shader);
cmd.BeginSample(PROFILER_TAG);
float size = (1.01f - settings.pixelSize) * 300f;
Vector4 parameters = new Vector4(size, ((context.screenWidth * 2 / context.screenHeight) * size / Mathf.Sqrt(3f)), settings.circleRadius, 0f);
sheet.properties.SetVector(ShaderIDs.Params, parameters);
sheet.properties.SetVector(ShaderIDs.Params2, new Vector2(settings.pixelIntervalX, settings.pixelIntervalY));
sheet.properties.SetColor("_BackgroundColor", settings.BackgroundColor);
cmd.BlitFullscreenTriangle(context.source, context.destination, sheet, 0);
cmd.EndSample(PROFILER_TAG);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 428057b2b0564de46885aacb59570a8b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,16 @@
# Pixelize Sector
## Source Code List
- [Shader Code](Shader/PixelizeSector.shader)
- [C# Code](PixelizeSector.cs)
- [Editor Code](Editor/PixelizeSectorEditor.cs)
## Property
![](https://raw.githubusercontent.com/QianMo/X-PostProcessing-Gallery/master/Media/Pixelize/PixelizeSector/PixelizeSectorProperty.jpg)
## Gallery
![](https://raw.githubusercontent.com/QianMo/X-PostProcessing-Gallery/master/Media/Pixelize/PixelizeSector/PixelizeSector.jpg)
![](https://raw.githubusercontent.com/QianMo/X-PostProcessing-Gallery/master/Media/Pixelize/PixelizeSector/PixelizeSector.gif)

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 63478e932c43e904182265205f8473be
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3f62d8a1048c82a499908a4d752c61b3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,74 @@
//----------------------------------------------------------------------------------------------------------
// X-PostProcessing Library
// https://github.com/QianMo/X-PostProcessing-Library
// Copyright (C) 2020 QianMo. All rights reserved.
// Licensed under the MIT License
// You may not use this file except in compliance with the License.You may obtain a copy of the License at
// http://opensource.org/licenses/MIT
//----------------------------------------------------------------------------------------------------------
Shader "Hidden/X-PostProcessing/PixelizeSector"
{
SubShader
{
Cull Off ZWrite Off ZTest Always
Pass
{
HLSLPROGRAM
#pragma vertex VertDefault
#pragma fragment Frag
#include "../../../Shaders/StdLib.hlsl"
#include "../../../Shaders/XPostProcessing.hlsl"
float4 _Params;
float2 _Params2;
half4 _BackgroundColor;
#define _PixelIntervalX _Params2.x
#define _PixelIntervalY _Params2.y
float4 SectorPixelize(float2 uv)
{
float pixelScale = 1.0 / _Params.x;
float ratio = _ScreenParams.y / _ScreenParams.x;
uv.x = uv.x / ratio;
//x和y坐标分别除以缩放系数在用floor向下取整再乘以缩放系数得到分段UV
float2 coord = half2(_PixelIntervalX * floor(uv.x / (pixelScale * _PixelIntervalX)), (_PixelIntervalY)* floor(uv.y / (pixelScale * _PixelIntervalY)));
//设定扇形坐标
float2 circleCenter = coord * pixelScale;
//计算当前uv值隔圆心的距离并乘以缩放系数
float dist = length(uv - circleCenter) * _Params.x;
//圆心坐标乘以缩放系数
circleCenter.x *= ratio;
//采样
float4 screenColor = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, circleCenter);
//对于距离大于半径的像素,替换为背景色
if (dist > _Params.z) screenColor = _BackgroundColor;
return screenColor;
}
float4 Frag(VaryingsDefault i): SV_Target
{
return SectorPixelize(i.texcoord);
}
ENDHLSL
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0aea813750348874496f2226f14e3c8f
ShaderImporter:
externalObjects: {}
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant: