mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-13 17:37:38 +02:00
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:
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 51d9f4cb6a261b04c9254c8dd98a0e56
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8b18c821150f20845b8700a8b66357fd
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 428057b2b0564de46885aacb59570a8b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
16
Assets/X-PostProcessing/Effects/PixelizeSector/README.md
Normal file
16
Assets/X-PostProcessing/Effects/PixelizeSector/README.md
Normal 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
|
||||

|
||||
|
||||
## Gallery
|
||||

|
||||
|
||||

|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 63478e932c43e904182265205f8473be
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3f62d8a1048c82a499908a4d752c61b3
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0aea813750348874496f2226f14e3c8f
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user