forked from sin365/AxibugEmuOnline
滤镜参数可调
This commit is contained in:
parent
e0a87a2737
commit
adde033fa1
@ -150,25 +150,16 @@ MonoBehaviour:
|
|||||||
m_GameObject: {fileID: 74796456}
|
m_GameObject: {fileID: 74796456}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3}
|
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_MoveRepeatDelay: 0.5
|
m_HorizontalAxis: Horizontal
|
||||||
m_MoveRepeatRate: 0.1
|
m_VerticalAxis: Vertical
|
||||||
m_XRTrackingOrigin: {fileID: 0}
|
m_SubmitButton: Submit
|
||||||
m_ActionsAsset: {fileID: -944628639613478452, guid: eb413fd14a8483440af9652b7e4df5e1, type: 3}
|
m_CancelButton: Cancel
|
||||||
m_PointAction: {fileID: 0}
|
m_InputActionsPerSecond: 10
|
||||||
m_MoveAction: {fileID: 0}
|
m_RepeatDelay: 0.5
|
||||||
m_SubmitAction: {fileID: 0}
|
m_ForceModuleActive: 0
|
||||||
m_CancelAction: {fileID: 0}
|
|
||||||
m_LeftClickAction: {fileID: 0}
|
|
||||||
m_MiddleClickAction: {fileID: 0}
|
|
||||||
m_RightClickAction: {fileID: 0}
|
|
||||||
m_ScrollWheelAction: {fileID: 0}
|
|
||||||
m_TrackedDevicePositionAction: {fileID: 0}
|
|
||||||
m_TrackedDeviceOrientationAction: {fileID: 0}
|
|
||||||
m_DeselectOnBackgroundClick: 1
|
|
||||||
m_PointerBehavior: 0
|
|
||||||
--- !u!114 &74796458
|
--- !u!114 &74796458
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -2508,7 +2499,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 1639091784002085428, guid: 450328d5a907c8249a60bc3980ba66f6, type: 3}
|
- target: {fileID: 1639091784002085428, guid: 450328d5a907c8249a60bc3980ba66f6, type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 1
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 1639091784002085428, guid: 450328d5a907c8249a60bc3980ba66f6, type: 3}
|
- target: {fileID: 1639091784002085428, guid: 450328d5a907c8249a60bc3980ba66f6, type: 3}
|
||||||
propertyPath: m_AnchorMax.x
|
propertyPath: m_AnchorMax.x
|
||||||
@ -13451,8 +13442,8 @@ GameObject:
|
|||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 1475480929}
|
- component: {fileID: 1475480929}
|
||||||
- component: {fileID: 1475480931}
|
- component: {fileID: 1475480931}
|
||||||
- component: {fileID: 1475480930}
|
|
||||||
- component: {fileID: 1475480932}
|
- component: {fileID: 1475480932}
|
||||||
|
- component: {fileID: 1475480930}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: GameCamera
|
m_Name: GameCamera
|
||||||
m_TagString: MainCamera
|
m_TagString: MainCamera
|
||||||
@ -13847,7 +13838,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 1963501579241001456, guid: 334eee9f85f308347844f8f5e99167c3, type: 3}
|
- target: {fileID: 1963501579241001456, guid: 334eee9f85f308347844f8f5e99167c3, type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 3
|
value: 2
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 1963501579241001456, guid: 334eee9f85f308347844f8f5e99167c3, type: 3}
|
- target: {fileID: 1963501579241001456, guid: 334eee9f85f308347844f8f5e99167c3, type: 3}
|
||||||
propertyPath: m_AnchorMax.x
|
propertyPath: m_AnchorMax.x
|
||||||
@ -13956,7 +13947,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3531919739338806919, guid: 1de15a80c8c1aa94486563740a15d91c, type: 3}
|
- target: {fileID: 3531919739338806919, guid: 1de15a80c8c1aa94486563740a15d91c, type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 4
|
value: 3
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3531919739338806919, guid: 1de15a80c8c1aa94486563740a15d91c, type: 3}
|
- target: {fileID: 3531919739338806919, guid: 1de15a80c8c1aa94486563740a15d91c, type: 3}
|
||||||
propertyPath: m_AnchorMax.x
|
propertyPath: m_AnchorMax.x
|
||||||
@ -14109,7 +14100,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4478785627166277610, guid: d3c2508a55398a24db5d68f68d2702ea, type: 3}
|
- target: {fileID: 4478785627166277610, guid: d3c2508a55398a24db5d68f68d2702ea, type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 2
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4478785627166277610, guid: d3c2508a55398a24db5d68f68d2702ea, type: 3}
|
- target: {fileID: 4478785627166277610, guid: d3c2508a55398a24db5d68f68d2702ea, type: 3}
|
||||||
propertyPath: m_AnchorMax.x
|
propertyPath: m_AnchorMax.x
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
using AxibugEmuOnline.Client;
|
||||||
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Rendering.PostProcessing;
|
using UnityEngine.Rendering.PostProcessing;
|
||||||
|
|
||||||
@ -5,7 +7,51 @@ using UnityEngine.Rendering.PostProcessing;
|
|||||||
[PostProcess(typeof(FixingPixelArtGrilleRenderer), PostProcessEvent.BeforeStack, "Filter/FixingPixelArtGrille")]
|
[PostProcess(typeof(FixingPixelArtGrilleRenderer), PostProcessEvent.BeforeStack, "Filter/FixingPixelArtGrille")]
|
||||||
public sealed class FixingPixelArtGrille : PostProcessEffectSettings
|
public sealed class FixingPixelArtGrille : PostProcessEffectSettings
|
||||||
{
|
{
|
||||||
// 在这里可以添加效果的参数
|
public ParameterOverride<EnumMaskStyle> MaskStyle = new ParameterOverride<EnumMaskStyle> { value = EnumMaskStyle.ApertureGrille };
|
||||||
|
|
||||||
|
[Tooltip("Emulated input resolution\nOptimize for resize")]
|
||||||
|
public Vector2Parameter DrawResolution = new Vector2Parameter
|
||||||
|
{
|
||||||
|
value = new Vector2(272, 240)
|
||||||
|
};
|
||||||
|
|
||||||
|
[Tooltip("Hardness of scanline")]
|
||||||
|
[Range(-32, 0)]
|
||||||
|
public FloatParameter HardScan = new FloatParameter { value = -10 };
|
||||||
|
|
||||||
|
[Tooltip("Hardness of pixels in scanline")]
|
||||||
|
[Range(-6, 0)]
|
||||||
|
public FloatParameter HardPix = new FloatParameter { value = -2 };
|
||||||
|
|
||||||
|
[Tooltip("Hardness of short vertical bloom")]
|
||||||
|
[Range(-8, 0)]
|
||||||
|
public FloatParameter HardBloomScan = new FloatParameter { value = -4.0f };
|
||||||
|
|
||||||
|
[Tooltip("Hardness of short horizontal bloom")]
|
||||||
|
[Range(-4, 0)]
|
||||||
|
public FloatParameter HardBloomPix = new FloatParameter { value = -1.5f };
|
||||||
|
|
||||||
|
[Tooltip("Amount of small bloom effect")]
|
||||||
|
[Range(0, 1)]
|
||||||
|
public FloatParameter BloomAmount = new FloatParameter { value = 1 / 16f };
|
||||||
|
|
||||||
|
[Tooltip("Display warp")]
|
||||||
|
public Vector2Parameter Warp = new Vector2Parameter { value = new Vector2(1f / 64f, 1f / 24f) };
|
||||||
|
|
||||||
|
[Tooltip("Amount of shadow mask Light")]
|
||||||
|
[Range(1, 3)]
|
||||||
|
public FloatParameter MaskLight = new FloatParameter { value = 1.5f };
|
||||||
|
[Range(0.1f, 1)]
|
||||||
|
[Tooltip("Amount of shadow mask Dark")]
|
||||||
|
public FloatParameter MaskDrak = new FloatParameter { value = 0.5f };
|
||||||
|
|
||||||
|
public enum EnumMaskStyle
|
||||||
|
{
|
||||||
|
TVStyle,
|
||||||
|
ApertureGrille,
|
||||||
|
StretchedVGA,
|
||||||
|
VGAStyle
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class FixingPixelArtGrilleRenderer : PostProcessEffectRenderer<FixingPixelArtGrille>
|
public sealed class FixingPixelArtGrilleRenderer : PostProcessEffectRenderer<FixingPixelArtGrille>
|
||||||
@ -21,6 +67,39 @@ public sealed class FixingPixelArtGrilleRenderer : PostProcessEffectRenderer<Fix
|
|||||||
|
|
||||||
public override void Render(PostProcessRenderContext context)
|
public override void Render(PostProcessRenderContext context)
|
||||||
{
|
{
|
||||||
|
material.SetVector("_iResolution", new Vector4(Screen.width, Screen.height, 0, 0));
|
||||||
|
var res = settings.DrawResolution;
|
||||||
|
material.SetVector("_res", new Vector4(res.value.x, res.value.y, 0, 0));
|
||||||
|
material.SetFloat("_hardScan", settings.HardScan.value);
|
||||||
|
material.SetFloat("_hardPix", settings.HardPix.value);
|
||||||
|
material.SetFloat("_hardBloomScan", settings.HardBloomScan.value);
|
||||||
|
material.SetFloat("_hardBloomPix", settings.HardBloomPix.value);
|
||||||
|
material.SetFloat("_bloomAmount", settings.BloomAmount.value);
|
||||||
|
material.SetVector("_warp", settings.Warp.value);
|
||||||
|
material.SetFloat("_maskDark", settings.MaskDrak.value);
|
||||||
|
material.SetFloat("_maskLight", settings.MaskLight.value);
|
||||||
|
|
||||||
|
material.DisableKeyword("_MASKSTYLE_VGASTYLE");
|
||||||
|
material.DisableKeyword("_MASKSTYLE_TVSTYLE");
|
||||||
|
material.DisableKeyword("_MASKSTYLE_APERTUREGRILLE");
|
||||||
|
material.DisableKeyword("_MASKSTYLE_STRETCHEDVGA");
|
||||||
|
|
||||||
|
switch (settings.MaskStyle.value)
|
||||||
|
{
|
||||||
|
case FixingPixelArtGrille.EnumMaskStyle.VGAStyle:
|
||||||
|
material.EnableKeyword("_MASKSTYLE_VGASTYLE");
|
||||||
|
break;
|
||||||
|
case FixingPixelArtGrille.EnumMaskStyle.TVStyle:
|
||||||
|
material.EnableKeyword("_MASKSTYLE_TVSTYLE");
|
||||||
|
break;
|
||||||
|
case FixingPixelArtGrille.EnumMaskStyle.ApertureGrille:
|
||||||
|
material.EnableKeyword("_MASKSTYLE_APERTUREGRILLE");
|
||||||
|
break;
|
||||||
|
case FixingPixelArtGrille.EnumMaskStyle.StretchedVGA:
|
||||||
|
material.EnableKeyword("_MASKSTYLE_STRETCHEDVGA");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
context.command.Blit(context.source, context.destination, material);
|
context.command.Blit(context.source, context.destination, material);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,6 +11,7 @@ Shader "PostEffect/FixingPixcelArtGrille"
|
|||||||
{
|
{
|
||||||
CGPROGRAM
|
CGPROGRAM
|
||||||
|
|
||||||
|
#pragma shader_feature_local _MASKSTYLE_TVSTYLE _MASKSTYLE_APERTUREGRILLE _MASKSTYLE_STRETCHEDVGA _MASKSTYLE_VGASTYLE
|
||||||
#pragma vertex vert_img
|
#pragma vertex vert_img
|
||||||
#pragma fragment frag
|
#pragma fragment frag
|
||||||
#include "UnityCG.cginc"
|
#include "UnityCG.cginc"
|
||||||
@ -33,48 +34,48 @@ Shader "PostEffect/FixingPixcelArtGrille"
|
|||||||
// Please take and use, change, or whatever.
|
// Please take and use, change, or whatever.
|
||||||
//
|
//
|
||||||
|
|
||||||
#define iResolution float2(1920,1080)
|
float2 _iResolution = float2(1920,1080);
|
||||||
|
|
||||||
// Emulated input resolution.
|
// Emulated input resolution.
|
||||||
// Optimize for resize.
|
// Optimize for resize.
|
||||||
#define res (float2(272.0,240.0)*1.5)
|
float2 _res = float2(272.0,240.0);
|
||||||
|
|
||||||
// Hardness of scanline.
|
// Hardness of scanline.
|
||||||
// -8.0 = soft
|
// -8.0 = soft
|
||||||
// -16.0 = medium
|
// -16.0 = medium
|
||||||
#define hardScan -10.0
|
float _hardScan = -10.0;
|
||||||
|
|
||||||
// Hardness of pixels in scanline.
|
// Hardness of pixels in scanline.
|
||||||
// -2.0 = soft
|
// -2.0 = soft
|
||||||
// -4.0 = hard
|
// -4.0 = hard
|
||||||
#define hardPix -2.0
|
float _hardPix =-2.0;
|
||||||
|
|
||||||
// Hardness of short vertical bloom.
|
// Hardness of short vertical bloom.
|
||||||
// -1.0 = wide to the point of clipping (bad)
|
// -1.0 = wide to the point of clipping (bad)
|
||||||
// -1.5 = wide
|
// -1.5 = wide
|
||||||
// -4.0 = not very wide at all
|
// -4.0 = not very wide at all
|
||||||
#define hardBloomScan -4.0
|
float _hardBloomScan = -4.0;
|
||||||
|
|
||||||
// Hardness of short horizontal bloom.
|
// Hardness of short horizontal bloom.
|
||||||
// -0.5 = wide to the point of clipping (bad)
|
// -0.5 = wide to the point of clipping (bad)
|
||||||
// -1.0 = wide
|
// -1.0 = wide
|
||||||
// -2.0 = not very wide at all
|
// -2.0 = not very wide at all
|
||||||
#define hardBloomPix -1.5
|
float _hardBloomPix = -1.5;
|
||||||
|
|
||||||
// Amount of small bloom effect.
|
// Amount of small bloom effect.
|
||||||
// 1.0/1.0 = only bloom
|
// 1.0/1.0 = only bloom
|
||||||
// 1.0/16.0 = what I think is a good amount of small bloom
|
// 1.0/16.0 = what I think is a good amount of small bloom
|
||||||
// 0.0 = no bloom
|
// 0.0 = no bloom
|
||||||
#define bloomAmount 1.0/1.0
|
float _bloomAmount = 1.0/16.0;
|
||||||
|
|
||||||
// Display warp.
|
// Display warp.
|
||||||
// 0.0 = none
|
// 0.0 = none
|
||||||
// 1.0/8.0 = extreme
|
// 1.0/8.0 = extreme
|
||||||
#define warp float2(1.0/64.0,1.0/24.0)
|
float2 _warp = float2(1.0/64.0,1.0/24.0);
|
||||||
|
|
||||||
// Amount of shadow mask.
|
// Amount of shadow mask.
|
||||||
#define maskDark 0.5
|
float _maskDark = 0.5;
|
||||||
#define maskLight 1.5
|
float _maskLight = 1.5;
|
||||||
|
|
||||||
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -92,23 +93,18 @@ float3 ToLinear(float3 c){return float3(ToLinear1(c.r),ToLinear1(c.g),ToLinear1(
|
|||||||
float ToSrgb1(float c){return(c<0.0031308?c*12.92:1.055*pow(c,0.41666)-0.055);}
|
float ToSrgb1(float c){return(c<0.0031308?c*12.92:1.055*pow(c,0.41666)-0.055);}
|
||||||
float3 ToSrgb(float3 c){return float3(ToSrgb1(c.r),ToSrgb1(c.g),ToSrgb1(c.b));}
|
float3 ToSrgb(float3 c){return float3(ToSrgb1(c.r),ToSrgb1(c.g),ToSrgb1(c.b));}
|
||||||
|
|
||||||
// Testing only, something to help generate a dark signal for bloom test.
|
|
||||||
// Set to zero, or remove Test() if using this shader.
|
|
||||||
#if 1
|
|
||||||
float3 Test(float3 c){return c*(1.0/64.0)+c*c*c;}
|
float3 Test(float3 c){return c*(1.0/64.0)+c*c*c;}
|
||||||
#else
|
|
||||||
float3 Test(float3 c){return c;}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Nearest emulated sample given floating point position and texel offset.
|
// Nearest emulated sample given floating point position and texel offset.
|
||||||
// Also zero's off screen.
|
// Also zero's off screen.
|
||||||
float3 Fetch( float2 pos,float2 off){
|
float3 Fetch( float2 pos,float2 off){
|
||||||
pos=floor(pos*res+off)/res;
|
pos=floor(pos*_res+off)/_res;
|
||||||
if(max(abs(pos.x-0.5),abs(pos.y-0.5))>0.5)return float3(0.0,0.0,0.0);
|
if(max(abs(pos.x-0.5),abs(pos.y-0.5))>0.5)return float3(0.0,0.0,0.0);
|
||||||
return Test(ToLinear(tex2D(_MainTex,pos.xy).rgb));}
|
return Test(ToLinear(tex2D(_MainTex,pos.xy).rgb));}
|
||||||
|
|
||||||
// Distance in emulated pixels to nearest texel.
|
// Distance in emulated pixels to nearest texel.
|
||||||
float2 Dist(float2 pos){pos=pos*res;return -((pos-floor(pos))-float2(0.5,0.5));}
|
float2 Dist(float2 pos){pos=pos*_res;return -((pos-floor(pos))-float2(0.5,0.5));}
|
||||||
|
|
||||||
// 1D Gaussian.
|
// 1D Gaussian.
|
||||||
float Gaus(float pos,float scale){return exp2(scale*pos*pos);}
|
float Gaus(float pos,float scale){return exp2(scale*pos*pos);}
|
||||||
@ -120,7 +116,7 @@ float3 Horz3(float2 pos,float off){
|
|||||||
float3 d=Fetch(pos,float2( 1.0,off));
|
float3 d=Fetch(pos,float2( 1.0,off));
|
||||||
float dst=Dist(pos).x;
|
float dst=Dist(pos).x;
|
||||||
// Convert distance to weight.
|
// Convert distance to weight.
|
||||||
float scale=hardPix;
|
float scale=_hardPix;
|
||||||
float wb=Gaus(dst-1.0,scale);
|
float wb=Gaus(dst-1.0,scale);
|
||||||
float wc=Gaus(dst+0.0,scale);
|
float wc=Gaus(dst+0.0,scale);
|
||||||
float wd=Gaus(dst+1.0,scale);
|
float wd=Gaus(dst+1.0,scale);
|
||||||
@ -136,7 +132,7 @@ float3 Horz5(float2 pos,float off){
|
|||||||
float3 e=Fetch(pos,float2( 2.0,off));
|
float3 e=Fetch(pos,float2( 2.0,off));
|
||||||
float dst=Dist(pos).x;
|
float dst=Dist(pos).x;
|
||||||
// Convert distance to weight.
|
// Convert distance to weight.
|
||||||
float scale=hardPix;
|
float scale=_hardPix;
|
||||||
float wa=Gaus(dst-2.0,scale);
|
float wa=Gaus(dst-2.0,scale);
|
||||||
float wb=Gaus(dst-1.0,scale);
|
float wb=Gaus(dst-1.0,scale);
|
||||||
float wc=Gaus(dst+0.0,scale);
|
float wc=Gaus(dst+0.0,scale);
|
||||||
@ -156,7 +152,7 @@ float3 Horz7(float2 pos,float off){
|
|||||||
float3 g=Fetch(pos,float2( 3.0,off));
|
float3 g=Fetch(pos,float2( 3.0,off));
|
||||||
float dst=Dist(pos).x;
|
float dst=Dist(pos).x;
|
||||||
// Convert distance to weight.
|
// Convert distance to weight.
|
||||||
float scale=hardBloomPix;
|
float scale=_hardBloomPix;
|
||||||
float wa=Gaus(dst-3.0,scale);
|
float wa=Gaus(dst-3.0,scale);
|
||||||
float wb=Gaus(dst-2.0,scale);
|
float wb=Gaus(dst-2.0,scale);
|
||||||
float wc=Gaus(dst-1.0,scale);
|
float wc=Gaus(dst-1.0,scale);
|
||||||
@ -170,12 +166,12 @@ float3 Horz7(float2 pos,float off){
|
|||||||
// Return scanline weight.
|
// Return scanline weight.
|
||||||
float Scan(float2 pos,float off){
|
float Scan(float2 pos,float off){
|
||||||
float dst=Dist(pos).y;
|
float dst=Dist(pos).y;
|
||||||
return Gaus(dst+off,hardScan);}
|
return Gaus(dst+off,_hardScan);}
|
||||||
|
|
||||||
// Return scanline weight for bloom.
|
// Return scanline weight for bloom.
|
||||||
float BloomScan(float2 pos,float off){
|
float BloomScan(float2 pos,float off){
|
||||||
float dst=Dist(pos).y;
|
float dst=Dist(pos).y;
|
||||||
return Gaus(dst+off,hardBloomScan);}
|
return Gaus(dst+off,_hardBloomScan);}
|
||||||
|
|
||||||
// Allow nearest three lines to effect pixel.
|
// Allow nearest three lines to effect pixel.
|
||||||
float3 Tri(float2 pos){
|
float3 Tri(float2 pos){
|
||||||
@ -205,62 +201,58 @@ float3 Bloom(float2 pos){
|
|||||||
float2 Warp(float2 pos){
|
float2 Warp(float2 pos){
|
||||||
|
|
||||||
pos=pos*2.0-1.0;
|
pos=pos*2.0-1.0;
|
||||||
pos*=float2(1.0+(pos.y*pos.y)*warp.x,1.0+(pos.x*pos.x)*warp.y);
|
pos*=float2(1.0+(pos.y*pos.y)*_warp.x,1.0+(pos.x*pos.x)*_warp.y);
|
||||||
return pos*0.5+0.5;}
|
return pos*0.5+0.5;}
|
||||||
|
|
||||||
#if 0
|
#if defined(_MASKSTYLE_TVSTYLE)
|
||||||
// Very compressed TV style shadow mask.
|
// Very compressed TV style shadow mask.
|
||||||
float3 Mask(float2 pos){
|
float3 Mask(float2 pos){
|
||||||
float line=maskLight;
|
float lineee=_maskLight;
|
||||||
float odd=0.0;
|
float odd=0.0;
|
||||||
if(fract(pos.x/6.0)<0.5)odd=1.0;
|
if(fract(pos.x/6.0)<0.5)odd=1.0;
|
||||||
if(fract((pos.y+odd)/2.0)<0.5)line=maskDark;
|
if(fract((pos.y+odd)/2.0)<0.5) lineee=_maskDark;
|
||||||
pos.x=fract(pos.x/3.0);
|
pos.x=fract(pos.x/3.0);
|
||||||
float3 mask=float3(maskDark,maskDark,maskDark);
|
float3 mask=float3(_maskDark,_maskDark,_maskDark);
|
||||||
if(pos.x<0.333)mask.r=maskLight;
|
if(pos.x<0.333)mask.r=_maskLight;
|
||||||
else if(pos.x<0.666)mask.g=maskLight;
|
else if(pos.x<0.666)mask.g=_maskLight;
|
||||||
else mask.b=maskLight;
|
else mask.b=_maskLight;
|
||||||
mask*=line;
|
mask*=lineee;
|
||||||
return mask;}
|
return mask;
|
||||||
#endif
|
}
|
||||||
|
#elif defined(_MASKSTYLE_APERTUREGRILLE)
|
||||||
#if 1
|
// Aperture-grille.
|
||||||
// Aperture-grille.
|
float3 Mask(float2 pos){
|
||||||
float3 Mask(float2 pos){
|
pos.x=fract(pos.x/3.0);
|
||||||
pos.x=fract(pos.x/3.0);
|
float3 mask=float3(_maskDark,_maskDark,_maskDark);
|
||||||
float3 mask=float3(maskDark,maskDark,maskDark);
|
if(pos.x<0.333)mask.r=_maskLight;
|
||||||
if(pos.x<0.333)mask.r=maskLight;
|
else if(pos.x<0.666)mask.g=_maskLight;
|
||||||
else if(pos.x<0.666)mask.g=maskLight;
|
else mask.b=_maskLight;
|
||||||
else mask.b=maskLight;
|
return mask;}
|
||||||
return mask;}
|
#elif defined(_MASKSTYLE_STRETCHEDVGA)
|
||||||
#endif
|
// Stretched VGA style shadow mask (same as prior shaders).
|
||||||
|
float3 Mask(float2 pos){
|
||||||
#if 0
|
pos.x+=pos.y*3.0;
|
||||||
// Stretched VGA style shadow mask (same as prior shaders).
|
float3 mask=float3(_maskDark,_maskDark,_maskDark);
|
||||||
float3 Mask(float2 pos){
|
pos.x=fract(pos.x/6.0);
|
||||||
pos.x+=pos.y*3.0;
|
if(pos.x<0.333)mask.r=_maskLight;
|
||||||
float3 mask=float3(maskDark,maskDark,maskDark);
|
else if(pos.x<0.666)mask.g=_maskLight;
|
||||||
pos.x=fract(pos.x/6.0);
|
else mask.b=_maskLight;
|
||||||
if(pos.x<0.333)mask.r=maskLight;
|
return mask;}
|
||||||
else if(pos.x<0.666)mask.g=maskLight;
|
#elif defined(_MASKSTYLE_VGASTYLE)
|
||||||
else mask.b=maskLight;
|
|
||||||
return mask;}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
// VGA style shadow mask.
|
// VGA style shadow mask.
|
||||||
float3 Mask(float2 pos){
|
float3 Mask(float2 pos){
|
||||||
pos.xy=floor(pos.xy*float2(1.0,0.5));
|
pos.xy=floor(pos.xy*float2(1.0,0.5));
|
||||||
pos.x+=pos.y*3.0;
|
pos.x+=pos.y*3.0;
|
||||||
float3 mask=float3(maskDark,maskDark,maskDark);
|
float3 mask=float3(_maskDark,_maskDark,_maskDark);
|
||||||
pos.x=fract(pos.x/6.0);
|
pos.x=fract(pos.x/6.0);
|
||||||
if(pos.x<0.333)mask.r=maskLight;
|
if(pos.x<0.333)mask.r=_maskLight;
|
||||||
else if(pos.x<0.666)mask.g=maskLight;
|
else if(pos.x<0.666)mask.g=_maskLight;
|
||||||
else mask.b=maskLight;
|
else mask.b=_maskLight;
|
||||||
return mask;}
|
return mask;}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Draw dividing bars.
|
// Draw dividing bars.
|
||||||
float Bar(float pos,float bar){pos-=bar;return pos*pos<4.0?0.0:1.0;}
|
float Bar(float pos,float bar){pos-=bar;return pos*pos<4.0?0.0:1.0;}
|
||||||
|
|
||||||
@ -268,11 +260,11 @@ float Bar(float pos,float bar){pos-=bar;return pos*pos<4.0?0.0:1.0;}
|
|||||||
float4 mainImage(float2 fragCoord){
|
float4 mainImage(float2 fragCoord){
|
||||||
|
|
||||||
float4 fragColor = float4(1,1,1,1);
|
float4 fragColor = float4(1,1,1,1);
|
||||||
float2 pos=Warp(fragCoord.xy/iResolution.xy);
|
float2 pos=Warp(fragCoord.xy/_iResolution.xy);
|
||||||
|
|
||||||
fragColor.rgb=Tri(pos)*Mask(fragCoord.xy);
|
fragColor.rgb=Tri(pos)*Mask(fragCoord.xy);
|
||||||
|
|
||||||
fragColor.rgb+=Bloom(pos)*bloomAmount;
|
fragColor.rgb+=Bloom(pos)*_bloomAmount;
|
||||||
|
|
||||||
fragColor.a=1.0;
|
fragColor.a=1.0;
|
||||||
fragColor.rgb=ToSrgb(fragColor.rgb);
|
fragColor.rgb=ToSrgb(fragColor.rgb);
|
||||||
@ -288,7 +280,7 @@ float2 pos=Warp(fragCoord.xy/iResolution.xy);
|
|||||||
|
|
||||||
fixed4 frag (v2f i) : SV_Target
|
fixed4 frag (v2f i) : SV_Target
|
||||||
{
|
{
|
||||||
float2 pos = iResolution.xy*i.uv;
|
float2 pos = _iResolution.xy*i.uv;
|
||||||
fixed4 col = mainImage(pos);
|
fixed4 col = mainImage(pos);
|
||||||
return col;
|
return col;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,20 @@
|
|||||||
%YAML 1.1
|
%YAML 1.1
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
--- !u!114 &-3536514882628332180
|
--- !u!114 &11400000
|
||||||
|
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: 8e6292b2c06870d4495f009f912b9600, type: 3}
|
||||||
|
m_Name: GameCamera Profile
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
settings:
|
||||||
|
- {fileID: 8004032914748422304}
|
||||||
|
--- !u!114 &8004032914748422304
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 3
|
m_ObjectHideFlags: 3
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@ -16,17 +30,33 @@ MonoBehaviour:
|
|||||||
enabled:
|
enabled:
|
||||||
overrideState: 1
|
overrideState: 1
|
||||||
value: 1
|
value: 1
|
||||||
--- !u!114 &11400000
|
MaskStyle:
|
||||||
MonoBehaviour:
|
overrideState: 0
|
||||||
m_ObjectHideFlags: 0
|
value: 3
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
DrawResolution:
|
||||||
m_PrefabInstance: {fileID: 0}
|
overrideState: 0
|
||||||
m_PrefabAsset: {fileID: 0}
|
value: {x: 272, y: 240}
|
||||||
m_GameObject: {fileID: 0}
|
HardScan:
|
||||||
m_Enabled: 1
|
overrideState: 0
|
||||||
m_EditorHideFlags: 0
|
value: -10
|
||||||
m_Script: {fileID: 11500000, guid: 8e6292b2c06870d4495f009f912b9600, type: 3}
|
HardPix:
|
||||||
m_Name: GameCamera Profile
|
overrideState: 0
|
||||||
m_EditorClassIdentifier:
|
value: -2
|
||||||
settings:
|
HardBloomScan:
|
||||||
- {fileID: -3536514882628332180}
|
overrideState: 0
|
||||||
|
value: -4.06
|
||||||
|
HardBloomPix:
|
||||||
|
overrideState: 0
|
||||||
|
value: -1.15
|
||||||
|
BloomAmount:
|
||||||
|
overrideState: 0
|
||||||
|
value: 0.483
|
||||||
|
Warp:
|
||||||
|
overrideState: 0
|
||||||
|
value: {x: 0.12, y: 0.04}
|
||||||
|
MaskLight:
|
||||||
|
overrideState: 0
|
||||||
|
value: 3
|
||||||
|
MaskDrak:
|
||||||
|
overrideState: 0
|
||||||
|
value: 0.1
|
||||||
|
@ -98,7 +98,6 @@ namespace AxibugEmuOnline.Client
|
|||||||
public static IKeyListener GetKey(int controllerInput, EnumButtonType nesConBtnType)
|
public static IKeyListener GetKey(int controllerInput, EnumButtonType nesConBtnType)
|
||||||
{
|
{
|
||||||
string configKey = $"NES_{controllerInput}_{nesConBtnType}";
|
string configKey = $"NES_{controllerInput}_{nesConBtnType}";
|
||||||
|
|
||||||
if (PlayerPrefs.HasKey(configKey))
|
if (PlayerPrefs.HasKey(configKey))
|
||||||
{
|
{
|
||||||
return new KeyListener(PlayerPrefs.GetString(configKey));
|
return new KeyListener(PlayerPrefs.GetString(configKey));
|
||||||
|
@ -199,6 +199,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
UnityEditor.EditorUtility.SetDirty(db);
|
UnityEditor.EditorUtility.SetDirty(db);
|
||||||
UnityEditor.AssetDatabase.SaveAssets();
|
UnityEditor.AssetDatabase.SaveAssets();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user