From c254f0f5bbd59f49a9ed488feb593c09d94fae0f Mon Sep 17 00:00:00 2001 From: "ALIENJACK\\alien" Date: Thu, 26 Dec 2024 20:34:56 +0800 Subject: [PATCH] =?UTF-8?q?shader=E5=AE=9E=E9=AA=8C=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UIEffect/Materials/UI-Effect.mat | 70 ++- .../Assets/Scene/AxibugEmuOnline.Client.unity | 16 + .../Assets/Scene/TestFilter.unity | 554 ++++++++++++++++++ .../Assets/Scene/TestFilter.unity.meta | 7 + .../Filter/FilterShaderTemplate.shader | 36 ++ .../Filter/FilterShaderTemplate.shader.meta | 9 + .../Filter/MattiasCRT/MattiasCRT.shader | 1 + .../Script/AppMain/Filter/RetroArch_Glow.meta | 8 + .../Filter/RetroArch_Glow/RetroArch_Glow.mat | 86 +++ .../RetroArch_Glow/RetroArch_Glow.mat.meta | 8 + .../RetroArch_Glow/RetroArch_Glow.shader | 307 ++++++++++ .../RetroArch_Glow/RetroArch_Glow.shader.meta | 9 + .../Filter/RetroArch_Glow/blur_params.cginc | 4 + .../RetroArch_Glow/blur_params.cginc.meta | 7 + .../Assets/Script/TestFilter.cs | 50 ++ .../Assets/Script/TestFilter.cs.meta | 2 + 16 files changed, 1168 insertions(+), 6 deletions(-) create mode 100644 AxibugEmuOnline.Client/Assets/Scene/TestFilter.unity create mode 100644 AxibugEmuOnline.Client/Assets/Scene/TestFilter.unity.meta create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterShaderTemplate.shader create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterShaderTemplate.shader.meta create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow.meta create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.mat create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.mat.meta create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.shader create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.shader.meta create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/blur_params.cginc create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/blur_params.cginc.meta create mode 100644 AxibugEmuOnline.Client/Assets/Script/TestFilter.cs create mode 100644 AxibugEmuOnline.Client/Assets/Script/TestFilter.cs.meta diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Materials/UI-Effect.mat b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Materials/UI-Effect.mat index 3c3817e..75ab7d0 100644 --- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Materials/UI-Effect.mat +++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Materials/UI-Effect.mat @@ -451,7 +451,8 @@ Material: m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] + m_ValidKeywords: + - DETAILBLUR m_InvalidKeywords: [] m_LightmapFlags: 5 m_EnableInstancingVariants: 0 @@ -2530,7 +2531,9 @@ Material: m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] + m_ValidKeywords: + - EX + - MEDIUMBLUR m_InvalidKeywords: [] m_LightmapFlags: 5 m_EnableInstancingVariants: 0 @@ -2998,7 +3001,9 @@ Material: m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] + m_ValidKeywords: + - DETAILBLUR + - EX m_InvalidKeywords: [] m_LightmapFlags: 5 m_EnableInstancingVariants: 0 @@ -3202,7 +3207,8 @@ Material: m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] + m_ValidKeywords: + - FASTBLUR m_InvalidKeywords: [] m_LightmapFlags: 5 m_EnableInstancingVariants: 0 @@ -3646,7 +3652,9 @@ Material: m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] + m_ValidKeywords: + - EX + - FASTBLUR m_InvalidKeywords: [] m_LightmapFlags: 5 m_EnableInstancingVariants: 0 @@ -4922,7 +4930,10 @@ Material: m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] + m_ValidKeywords: + - DETAILBLUR + - EX + - GRAYSCALE m_InvalidKeywords: [] m_LightmapFlags: 5 m_EnableInstancingVariants: 0 @@ -5607,6 +5618,53 @@ Material: - _Color: {r: 1, g: 1, b: 1, a: 1} m_BuildTextureStacks: [] m_AllowLocking: 1 +--- !u!21 &823716364251377293 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 9 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: UI-Effect-Sepia-DetailBlur-Ex + m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - DETAILBLUR + - EX + - SEPIA + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParamTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _ColorMask: 15 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _UseUIAlphaClip: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 --- !u!21 &3053942024298246613 Material: serializedVersion: 8 diff --git a/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity b/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity index f1ceb1f..1c5d6cb 100644 --- a/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity +++ b/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity @@ -1326,6 +1326,14 @@ PrefabInstance: propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} + - target: {fileID: 2521876046310890063, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3} + propertyPath: m_AnchoredPosition.x + value: 30.929993 + objectReference: {fileID: 0} + - target: {fileID: 2522900033012761306, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3} + propertyPath: m_AnchoredPosition.x + value: 30.929993 + objectReference: {fileID: 0} - target: {fileID: 2580867844924924490, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3} propertyPath: m_AnchorMax.y value: 0 @@ -1374,6 +1382,10 @@ PrefabInstance: propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} + - target: {fileID: 2873860005477794326, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3} + propertyPath: m_AnchoredPosition.x + value: 30.929993 + objectReference: {fileID: 0} - target: {fileID: 2921874279820016524, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3} propertyPath: m_AnchorMax.y value: 0 @@ -1426,6 +1438,10 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 3084872378777530071, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3} + propertyPath: m_AnchoredPosition.x + value: 30.929993 + objectReference: {fileID: 0} - target: {fileID: 3201409976408832832, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3} propertyPath: m_AnchorMax.y value: 0 diff --git a/AxibugEmuOnline.Client/Assets/Scene/TestFilter.unity b/AxibugEmuOnline.Client/Assets/Scene/TestFilter.unity new file mode 100644 index 0000000..4b2bf66 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Scene/TestFilter.unity @@ -0,0 +1,554 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.4292453, g: 0.5907795, b: 1, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &33805169 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 33805170} + - component: {fileID: 33805172} + - component: {fileID: 33805171} + m_Layer: 5 + m_Name: Image (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &33805170 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 33805169} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1319295996} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &33805171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 33805169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e043954733c440645ba43b09301ee4a6, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &33805172 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 33805169} + m_CullTransparentMesh: 1 +--- !u!1 &141076932 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141076935} + - component: {fileID: 141076934} + - component: {fileID: 141076933} + m_Layer: 0 + m_Name: Camera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &141076933 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141076932} + m_Enabled: 1 +--- !u!20 &141076934 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141076932} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &141076935 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141076932} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5.3346887, y: -4.3005414, z: 3715.6099} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1319295992 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1319295996} + - component: {fileID: 1319295995} + - component: {fileID: 1319295994} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1319295994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319295992} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1319295995 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319295992} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 141076934} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 1 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1319295996 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319295992} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 33805170} + - {fileID: 1376779137} + - {fileID: 1373072004} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1373072003 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1373072004} + - component: {fileID: 1373072006} + - component: {fileID: 1373072005} + m_Layer: 5 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1373072004 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373072003} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1319295996} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 318.00003, y: 179} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1373072005 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373072003} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e96dacbf1b116f64da658fbad66839e2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_EffectFactor: 1 + m_ColorFactor: 1 + m_BlurFactor: 1 + m_EffectMode: 0 + m_ColorMode: 0 + m_BlurMode: 3 + m_EffectColor: {r: 1, g: 1, b: 1, a: 1} + m_DesamplingRate: 1 + m_ReductionRate: 1 + m_FilterMode: 1 + m_EffectMaterial: {fileID: 21380876918929932, guid: 1a1a8e44196ca754a9a7b9cb80e17573, type: 2} + m_BlurIterations: 3 + m_FitToScreen: 1 + m_CaptureOnEnable: 0 +--- !u!222 &1373072006 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373072003} + m_CullTransparentMesh: 1 +--- !u!1 &1376779136 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1376779137} + - component: {fileID: 1376779139} + - component: {fileID: 1376779140} + - component: {fileID: 1376779141} + m_Layer: 5 + m_Name: filter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1376779137 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376779136} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1319295996} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1376779139 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376779136} + m_CullTransparentMesh: 1 +--- !u!114 &1376779140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376779136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40d1396d19f4da44f98dd2fcf6f0bc56, type: 3} + m_Name: + m_EditorClassIdentifier: + filterMat: {fileID: 2100000, guid: 5965751351debd6499aa27660a1bc92e, type: 2} + img: {fileID: 1376779141} + source: {fileID: 2800000, guid: e043954733c440645ba43b09301ee4a6, type: 3} +--- !u!114 &1376779141 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376779136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 141076935} + - {fileID: 1319295996} diff --git a/AxibugEmuOnline.Client/Assets/Scene/TestFilter.unity.meta b/AxibugEmuOnline.Client/Assets/Scene/TestFilter.unity.meta new file mode 100644 index 0000000..ede26b3 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Scene/TestFilter.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7053096623e85d842aa0a92bcc9944ea +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterShaderTemplate.shader b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterShaderTemplate.shader new file mode 100644 index 0000000..f76643c --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterShaderTemplate.shader @@ -0,0 +1,36 @@ + +Shader "Hidden/TEMPLATE" +{ + Properties + { + _MainTex ("Base (RGB)", 2D) = "white" {} + } + SubShader + { + Pass + { + CGPROGRAM + + #pragma vertex vert_img + #pragma fragment frag + #include "UnityCG.cginc" + + sampler2D _MainTex; + + struct v2f + { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + }; + + fixed4 frag (v2f i) : SV_Target + { + return fixed4(1,1,1,1); + } + ENDCG + } + } +} + + + diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterShaderTemplate.shader.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterShaderTemplate.shader.meta new file mode 100644 index 0000000..f1ae649 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterShaderTemplate.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 28e36f59e5007bc45bf2ab9d1ad62a02 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/MattiasCRT/MattiasCRT.shader b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/MattiasCRT/MattiasCRT.shader index d0ec3c2..56ece40 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/MattiasCRT/MattiasCRT.shader +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/MattiasCRT/MattiasCRT.shader @@ -33,6 +33,7 @@ Shader "Filter/MattiasCRT" float4 mainImage( float2 fragCoord ) { + float4 fragColor = float4(0,0,0,1); float2 q = fragCoord.xy / _iResolution.xy; diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow.meta new file mode 100644 index 0000000..beac7d4 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59751f7f4dc560f47b438056fbc26701 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.mat b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.mat new file mode 100644 index 0000000..494c0bb --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.mat @@ -0,0 +1,86 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RetroArch_Glow + m_Shader: {fileID: 4800000, guid: d9ec870308fa2594badb4f3036d36fd5, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + 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: 0} + 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_Ints: [] + 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 + - _gamma: 2.24 + - _horiz_gauss_width: 1.89 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.mat.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.mat.meta new file mode 100644 index 0000000..0be4b59 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5965751351debd6499aa27660a1bc92e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.shader b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.shader new file mode 100644 index 0000000..bab00f0 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.shader @@ -0,0 +1,307 @@ +Shader "Filter/RetroArch/Glow" +{ + Properties + { + _MainTex ("Texture", 2D) = "white" + _gamma("Input Gamma option: 2.4/2.0/2.6/0.02",float) = 2.4 + _horiz_gauss_width("Gaussian Width option: 0.5/0.4/0.6/0.02",float) = 0.5 + _BOOST("Color Boost option: 1.0/0.5/1.5/0.02",float) = 1.0 + _GLOW_WHITEPOINT("Glow Whitepoint option: 1.0/0.5/1.1/0.02",float) = 1.0 + _GLOW_ROLLOFF("Glow Rolloff option: 3.0 1.2 6.0 0.1",float) = 3.0 + _BLOOM_STRENGTH("Glow Strength option: 0.45/0.0/0.8/0.05",float) = 0.45 + _OUTPUT_GAMMA("Monitor Gamma option: 2.2/1.8/2.6/0.02",float) = 2.2 + } + SubShader + { + Pass + { + Name "linearize" + + CGPROGRAM + + #include "UnityCG.cginc" + #pragma vertex vert_img + #pragma fragment frag + + half _gamma; + sampler2D _MainTex; + float2 _iResolution; + + struct v2f + { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + }; + + + fixed4 frag(v2f i) : SV_Target + { + fixed3 color = tex2D(_MainTex,i.uv); + fixed4 result = fixed4(pow(color,_gamma),1.0); + return result; + } + ENDCG + } + + Pass + { + Name "gauss_horiz" + + CGPROGRAM + + #include "UnityCG.cginc" + #pragma vertex vert_img + #pragma fragment frag + + #define INV_SQRT_2_PI 0.38 + + sampler2D _MainTex; + float2 _iResolution; + float _horiz_gauss_width; + + struct v2f + { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + }; + + fixed4 gauss_horiz(v2f IN){ + float one = 1.0/_iResolution.x; + float pix_no = _iResolution.x*IN.uv.x; + float texel = floor(pix_no); + float phase = pix_no-texel; + float base_phase = phase - 0.5; + float2 tex = float2((texel+0.5)/_iResolution.x,IN.uv.y); + + #define TEX(off_x) tex2D(_MainTex, IN.uv + float2(float(off_x) * one, 0.0)).rgb + + float3 col = float3(0,0,0); + for(int i=-2;i<=2;i++){ + float phase = base_phase - float(i); + float g = INV_SQRT_2_PI * exp(-0.5 * phase * phase / (_horiz_gauss_width * _horiz_gauss_width)) / _horiz_gauss_width; + col+=TEX(i)*g; + } + + return fixed4(col,1); + } + + fixed4 frag (v2f i) : SV_Target + { + fixed4 color=gauss_horiz(i); + + return color; + } + ENDCG + } + + Pass + { + Name "gauss_vert" + + CGPROGRAM + + #pragma shader_feature_local _CRT_GEOM_ON _CRT_GEOM_OFF + + #include "UnityCG.cginc" + #pragma vertex vert_img + #pragma fragment frag + + sampler2D _MainTex; + float2 _iResolution; + float _BOOST; + + struct v2f + { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + }; + + float3 beam(float3 color,float dist){ + #if CRT_GEOM_BEAM + float3 wid = 2.0 + 2.0 * pow(color, 4.0); + float3 weights = float3(abs(dist) / 0.3); + return 2.0 * color * exp(-pow(weights * rsqrt(0.5 * wid), wid)) / (0.6 + 0.2 * wid); + #else + const float width = 0.25; + float3 x = dist / width; + return 2.0 * color * exp(-0.5 * x * x) / width; + #endif + } + + fixed4 frag(v2f IN) : SV_Target + { + float2 pix_no = IN.uv*_iResolution - float2(0,0.5); + float one = 1.0/ _iResolution.y; + + #define TEX(off_y) tex2D(_MainTex, IN.uv + float2(0.0, off_y * one)).rgb + + float2 texel = floor(pix_no); + float phase = pix_no.y - texel.y; + float2 tex = float2(texel + 0.5) / _iResolution; + + float3 top = TEX(0); + float3 bottom = TEX(1); + + float dist0 = phase; + float dist1 = 1.0 - phase; + + float3 scanline = float3(0,0,0); + + scanline += beam(top, dist0); + scanline += beam(bottom, dist1); + + return float4(_BOOST * scanline / 1.15, 1.0); + } + ENDCG + } + + Pass + { + Name "threshold" + + CGPROGRAM + + #include "UnityCG.cginc" + #pragma vertex vert_img + #pragma fragment frag + + sampler2D _MainTex; + float2 _iResolution; + + float _GLOW_WHITEPOINT; + float _GLOW_ROLLOFF; + + struct v2f + { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + }; + + float4 frag(v2f IN) : SV_Target + { + float3 color = 1.15*tex2D(_MainTex,IN.uv).rgb; + float3 factor = saturate(color / _GLOW_WHITEPOINT); + return float4(pow(factor,_GLOW_ROLLOFF),1.0); + } + ENDCG + } + + Pass + { + Name "blur_horiz" + + CGPROGRAM + + #include "UnityCG.cginc" + #pragma vertex vert_img + #pragma fragment frag + + sampler2D _MainTex; + float2 _iResolution; + + struct v2f + { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + }; + + #include "blur_params.cginc" + #define kernel(x) exp(-GLOW_FALLOFF * (x) * (x)) + + float4 frag(v2f IN) : SV_Target + { + float3 col = float3(0,0,0); + float dx = 4.0 / _iResolution.x; // Mipmapped + + float k_total = 0.0; + for (int i = -TAPS; i <= TAPS; i++) + { + float k = kernel(i); + k_total += k; + col += k * tex2D(_MainTex, IN.uv + float2(float(i) * dx, 0.0)).rgb; + } + return float4(col / k_total, 1.0); + } + ENDCG + } + + Pass + { + Name "blur_vert" + + CGPROGRAM + + #include "UnityCG.cginc" + #pragma vertex vert_img + #pragma fragment frag + + sampler2D _MainTex; + float2 _iResolution; + + struct v2f + { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + }; + + #include "blur_params.cginc" + #define kernel(x) exp(-GLOW_FALLOFF * (x) * (x)) + + float4 frag(v2f IN) : SV_Target + { + float3 col = float3(0,0,0); + float dy = 1.0 / _iResolution.y; + + float k_total = 0.0; + for (int i = -TAPS; i <= TAPS; i++) + { + float k = kernel(i); + k_total += k; + col += k * tex2D(_MainTex, IN.uv + float2(0.0, float(i) * dy)).rgb; + } + return float4(col / k_total, 1.0); + } + ENDCG + } + + Pass + { + Name "resolve" + + CGPROGRAM + + #include "UnityCG.cginc" + #pragma vertex vert_img + #pragma fragment frag + + sampler2D _MainTex; + sampler2D _Source; + float2 _iResolution; + + float _BLOOM_STRENGTH; + float _OUTPUT_GAMMA; + + struct v2f + { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + }; + + float4 frag(v2f IN) : SV_Target + { + #if 1 + float3 source = _BLOOM_STRENGTH * tex2D(_MainTex,IN.uv).rgb; + #else + float3 source = 1.15 * tex2D(_Source,IN.uv).rgb; + float3 bloom = tex2D(_MainTex,IN.uv).rgb; + source += _BLOOM_STRENGTH * bloom; + #endif + return float4(pow(saturate(source), 1.0 / _OUTPUT_GAMMA), 1.0); + } + ENDCG + } + } +} + + + diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.shader.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.shader.meta new file mode 100644 index 0000000..4957da8 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/RetroArch_Glow.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d9ec870308fa2594badb4f3036d36fd5 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/blur_params.cginc b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/blur_params.cginc new file mode 100644 index 0000000..120c234 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/blur_params.cginc @@ -0,0 +1,4 @@ +// Higher value, more centered glow. +// Lower values might need more taps. +#define GLOW_FALLOFF 0.35 +#define TAPS 4 \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/blur_params.cginc.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/blur_params.cginc.meta new file mode 100644 index 0000000..8d5d2cd --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/RetroArch_Glow/blur_params.cginc.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8e15245c3d9a7ba4ab348d97af4d5cea +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/TestFilter.cs b/AxibugEmuOnline.Client/Assets/Script/TestFilter.cs new file mode 100644 index 0000000..da04536 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/TestFilter.cs @@ -0,0 +1,50 @@ +#if UNITY_EDITOR +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.UI; + +[ExecuteInEditMode] +public class TestFilter : MonoBehaviour +{ + public Material filterMat; + public RawImage img; + public Texture2D source; + + private RenderTexture rt; + private RenderTexture rtWrap; + + private void Update() + { + if (rt == null) + { + rt = RenderTexture.GetTemporary(Screen.width, Screen.height); + rtWrap = RenderTexture.GetTemporary(Screen.width, Screen.height); + } + else if (rt.width != Screen.width || rt.height != Screen.height) + { + RenderTexture.ReleaseTemporary(rt); + RenderTexture.ReleaseTemporary(rtWrap); + + rt = RenderTexture.GetTemporary(Screen.width, Screen.height); + rtWrap = RenderTexture.GetTemporary(Screen.width, Screen.height); + } + + filterMat.SetVector("_iResolution", new Vector2(rt.width, rt.height)); + filterMat.SetTexture("_Source", source); + + CommandBuffer cmd = new CommandBuffer(); + { + cmd.Blit(source, rt); + for (int i = 0; i < filterMat.shader.passCount; i++) + { + cmd.Blit(rt, rtWrap, filterMat, i); + cmd.Blit(rtWrap, rt); + } + } + Graphics.ExecuteCommandBuffer(cmd); + //cmd.Release(); + + img.texture = rt; + } +} +#endif diff --git a/AxibugEmuOnline.Client/Assets/Script/TestFilter.cs.meta b/AxibugEmuOnline.Client/Assets/Script/TestFilter.cs.meta new file mode 100644 index 0000000..c1453a5 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/TestFilter.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 40d1396d19f4da44f98dd2fcf6f0bc56 \ No newline at end of file