diff options
12 files changed, 179 insertions, 27 deletions
diff --git a/Assets/Bundle/Materials/Unit/ImageEffect/unit_img_glitch.mat b/Assets/Bundle/Materials/Unit/ImageEffect/unit_img_glitch.mat new file mode 100644 index 00000000..e999362f --- /dev/null +++ b/Assets/Bundle/Materials/Unit/ImageEffect/unit_img_glitch.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: unit_img_glitch + m_Shader: {fileID: 4800000, guid: f1567ae3bc1c0964cb12b2cf79240e61, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 8600000, guid: 183fd8602e9304d46ae2ce82856d08c7, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Bundle/Materials/Unit/ImageEffect/unit_img_glitch.mat.meta b/Assets/Bundle/Materials/Unit/ImageEffect/unit_img_glitch.mat.meta new file mode 100644 index 00000000..f675e8e4 --- /dev/null +++ b/Assets/Bundle/Materials/Unit/ImageEffect/unit_img_glitch.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e25e334493e9fd34585cd75b58ad2cc4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity b/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity index 11eec290..bce02def 100644 --- a/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity +++ b/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity @@ -62425,7 +62425,7 @@ MonoBehaviour: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 687023027} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 948f4100a11a5c24981795d21301da5c, type: 3} m_Name: @@ -62433,7 +62433,7 @@ MonoBehaviour: volumeTrigger: {fileID: 687023028} volumeLayer: serializedVersion: 2 - m_Bits: 512 + m_Bits: 768 stopNaNPropagation: 1 finalBlitToCameraTarget: 0 antialiasingMode: 0 diff --git a/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_glitch.shader b/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_glitch.shader index 2e2c9fa2..62f75459 100644 --- a/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_glitch.shader +++ b/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_glitch.shader @@ -1,4 +1,4 @@ -Shader "Unlit/unit_effect_glitch"
+Shader "Erika/Unit/ImageEffect/unit_img_glitch"
{
Properties
{
@@ -6,16 +6,19 @@ }
SubShader
{
- Tags { "RenderType"="Opaque" }
- LOD 100
+ Tags { "RenderType" = "Opaque" "Queue" = "Transparent-1"} + LOD 100 + + ZWrite Off + ZTest LEqual + + Blend SrcAlpha OneMinusSrcAlpha Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
- // make fog work
- #pragma multi_compile_fog
#include "UnityCG.cginc"
@@ -28,7 +31,6 @@ struct v2f
{
float2 uv : TEXCOORD0;
- UNITY_FOG_COORDS(1)
float4 vertex : SV_POSITION;
};
@@ -40,17 +42,19 @@ v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
- UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
+ float amount = 0.01;
// sample the texture
- fixed4 col = tex2D(_MainTex, i.uv);
- // apply fog
- UNITY_APPLY_FOG(i.fogCoord, col);
- return col;
+ fixed4 col = tex2D(_MainTex, i.uv + fixed2(0, 0));
+ fixed4 col2 = tex2D(_MainTex, i.uv + fixed2(amount, 0));
+ fixed4 col3 = tex2D(_MainTex, i.uv + fixed2(-amount, 0));
+ fixed4 col4 = tex2D(_MainTex, i.uv + fixed2(0, 0));
+ fixed4 color = fixed4(col.r, col2.g, col3.b, col4.a);
+ return color;
}
ENDCG
}
diff --git a/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_motionBlur.shader b/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_motionBlur.shader index e3308547..c5cfcf26 100644 --- a/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_motionBlur.shader +++ b/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_motionBlur.shader @@ -11,7 +11,7 @@ Shader "Erika/Unit/ImageEffect/unit_img_motionBlur" } SubShader { - Tags { "RenderType"="Opaque" "Queue" = "Geometry"} + Tags { "RenderType"="Opaque" "Queue" = "Transparent-1"} LOD 100 ZWrite Off @@ -63,7 +63,7 @@ Shader "Erika/Unit/ImageEffect/unit_img_motionBlur" { fixed2 uv = i.uv; fixed2 offset = fixed2(0.05, 0.05);
- const float sampleCount = 20;
+ const float sampleCount = 30;
fixed4 color = fixed4(0,0,0,0);
float radian = radians(_Angle);
float distance = _Distance;
diff --git a/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Dash.asset b/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Dash.asset index fca27ca9..4e3ed5f6 100644 --- a/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Dash.asset +++ b/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Dash.asset @@ -19,8 +19,8 @@ MonoBehaviour: - {fileID: 0} - {fileID: 0} - {fileID: 114895186165284124} - - {fileID: 114829983908477250} - - {fileID: 114461861979665892} + - {fileID: 114100994216008508} + - {fileID: 114514857844340108} hurtBoxes: - collider: type: 0 @@ -167,6 +167,20 @@ MonoBehaviour: properties: m_keys: m_values: [] +--- !u!114 &114100994216008508 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: a4957372b8a4fd946b86016c20f83750, type: 3} + m_Name: EventMesh_VisibilityInMainCamera + m_EditorClassIdentifier: + startFrame: 5 + isVisible: 0 --- !u!114 &114163276615738028 MonoBehaviour: m_ObjectHideFlags: 0 @@ -243,6 +257,20 @@ MonoBehaviour: m_EditorClassIdentifier: startFrame: 21 isVisible: 1 +--- !u!114 &114514857844340108 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: a4957372b8a4fd946b86016c20f83750, type: 3} + m_Name: EventMesh_VisibilityInMainCamera + m_EditorClassIdentifier: + startFrame: 20 + isVisible: 1 --- !u!114 &114677701672343994 MonoBehaviour: m_ObjectHideFlags: 0 @@ -300,6 +328,6 @@ MonoBehaviour: m_Name: EventMesh_ImageEffect_MotionBlur m_EditorClassIdentifier: startFrame: 4 - lifeTime: 0.1 + lifeTime: 0.2 angle: 10 - distance: 0.4 + distance: 0.3 diff --git a/Assets/Scripts/Managers/ResourceManager_Materials.cs b/Assets/Scripts/Managers/ResourceManager_Materials.cs index 410fb844..39b90606 100644 --- a/Assets/Scripts/Managers/ResourceManager_Materials.cs +++ b/Assets/Scripts/Managers/ResourceManager_Materials.cs @@ -8,10 +8,12 @@ public partial class ResourceManager : Singleton<ResourceManager> { MotionBlur, Glitch, + ColorDrift, } public readonly Dictionary<EImageEffectMaterails, string/*path*/> imageEffectMaterails = new Dictionary<EImageEffectMaterails, string>() { { EImageEffectMaterails.MotionBlur, "Assets/Bundle/Materials/Unit/ImageEffect/unit_img_motionBlur.mat"}, + { EImageEffectMaterails.Glitch, "Assets/Bundle/Materials/Unit/ImageEffect/unit_img_glitch.mat"}, }; }
\ No newline at end of file diff --git a/Assets/Scripts/Unit/Components/UnitImageEffect.cs b/Assets/Scripts/Unit/Components/UnitImageEffect.cs index 999740f3..a2689ca1 100644 --- a/Assets/Scripts/Unit/Components/UnitImageEffect.cs +++ b/Assets/Scripts/Unit/Components/UnitImageEffect.cs @@ -31,10 +31,13 @@ public class UnitImageEffectHandle public class UnitImageEffect : UnitComponent { public List<UnitImageEffectHandle> effects = new List<UnitImageEffectHandle>(); - public static GameObject effectPlane; + + public static GameObject effectPlane; private Dictionary<float/*size*/, List<UnitImageEffectHolder>/*pool*/> m_HolderPool = new Dictionary<float, List<UnitImageEffectHolder>>(); + private ObjectPool<UnitImageEffectHandle> m_HandlePool = new ObjectPool<UnitImageEffectHandle>(null, null); + public override void OnUpdate() { base.OnUpdate(); @@ -55,6 +58,7 @@ public class UnitImageEffect : UnitComponent temp[j].holder.gameObject.SetActive(false); ReleaseHolder(ref temp[j].holder); effects.Remove(temp[j]); + m_HandlePool.Release(temp[j]); } ListPool<UnitImageEffectHandle>.Release(temp); } @@ -123,7 +127,8 @@ public class UnitImageEffect : UnitComponent public void ShowMotionBlur(float lifeTime, float angle, float distance) { - UnitImageEffectHandle handle = new UnitImageEffectHandle(); + UnitImageEffectHandle handle = m_HandlePool.Get(); + handle.lifeTime = lifeTime; handle.curTime = 0; float size = UnitManager.Instance.pc.unitDetail.snapshotBound; @@ -143,13 +148,41 @@ public class UnitImageEffect : UnitComponent handle.holder.gameObject.transform.position = UnitManager.Instance.pc.center; handle.holder.renderer.GetPropertyBlock(block); - block.SetFloat("_Distance", (normalTime) * distance); + block.SetFloat("_Distance", /*(normalTime) * */distance); + handle.holder.renderer.SetPropertyBlock(block); + }; + + effects.Add(handle); + } + + public void ShowGlitch(float lifeTime) + { + UnitImageEffectHandle handle = m_HandlePool.Get(); + + handle.lifeTime = lifeTime; + handle.curTime = 0; + float size = UnitManager.Instance.pc.unitDetail.snapshotBound; + handle.holder = ClaimHolder(size); + handle.holder.gameObject.SetActive(true); + string matPath = ResourceManager.Instance.imageEffectMaterails[ResourceManager.EImageEffectMaterails.Glitch]; + handle.holder.renderer.sharedMaterial = ResourceManager.Instance.LoadAsset<Material>(matPath); + + MaterialPropertyBlock block = new MaterialPropertyBlock(); + handle.holder.renderer.GetPropertyBlock(block); + handle.holder.renderer.SetPropertyBlock(block); + + handle.stepFunc = (float normalTime) => + { + handle.holder.gameObject.transform.position = UnitManager.Instance.pc.center; + + handle.holder.renderer.GetPropertyBlock(block); handle.holder.renderer.SetPropertyBlock(block); }; effects.Add(handle); } - #endregion + + #endregion }
\ No newline at end of file diff --git a/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs b/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs index a55ba99b..0bb8df5c 100644 --- a/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs +++ b/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs @@ -180,7 +180,8 @@ public partial class TimelineEventProxy return;
float angle = motionBlur.angle;
angle = owner.isTowardRight ? angle : 180 - angle;
- ((PCController)owner).unitImageEffect.ShowMotionBlur(motionBlur.lifeTime, angle, motionBlur.distance);
+ // ((PCController)owner).unitImageEffect.ShowMotionBlur(motionBlur.lifeTime, angle, motionBlur.distance);
+ ((PCController)owner).unitImageEffect.ShowGlitch(motionBlur.lifeTime);
}
#endregion diff --git a/Assets/Scripts/Unit/UnitDetail.cs b/Assets/Scripts/Unit/UnitDetail.cs index 03d26fdd..3d075451 100644 --- a/Assets/Scripts/Unit/UnitDetail.cs +++ b/Assets/Scripts/Unit/UnitDetail.cs @@ -140,7 +140,6 @@ public class UnitDetail : MonoBehaviour }
}
-
public Vector3 center
{
get
diff --git a/Assets/Scripts/Utils/ListPool.cs b/Assets/Scripts/Utils/ListPool.cs index b9fbd2b8..9819aa48 100644 --- a/Assets/Scripts/Utils/ListPool.cs +++ b/Assets/Scripts/Utils/ListPool.cs @@ -21,7 +21,7 @@ public static class ListPool<T> });
}
-internal class ObjectPool<T> where T : new()
+public class ObjectPool<T> where T : new()
{
private readonly Stack<T> m_Stack = new Stack<T>();
private readonly UnityAction<T> m_ActionOnGet;
diff --git a/Assets/ThirdParty/VRM/VRMShaders/MToon/MToon/Resources/Shaders/MToon.shader b/Assets/ThirdParty/VRM/VRMShaders/MToon/MToon/Resources/Shaders/MToon.shader index 496ac558..dafcf557 100644 --- a/Assets/ThirdParty/VRM/VRMShaders/MToon/MToon/Resources/Shaders/MToon.shader +++ b/Assets/ThirdParty/VRM/VRMShaders/MToon/MToon/Resources/Shaders/MToon.shader @@ -51,7 +51,7 @@ Shader "VRM/MToon" // for SM 3.0 SubShader { - Tags { "RenderType" = "Opaque" "Queue" = "Geometry" } + Tags { "RenderType" = "Opaque" /* "Queue" = "Geometry" */ "Queue"="Transparent"} // Forward Base Pass |