Compare commits

..

No commits in common. "3c04d26c50d2a690c4124d47518722f47fb9ed4a" and "570419e2cc67c3b20bc697dfe36f59e0563e99c9" have entirely different histories.

51 changed files with 817 additions and 4478 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -1,117 +0,0 @@
fileFormatVersion: 2
guid: 7becc278ccc2a664d9482f042623c95f
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -1,117 +0,0 @@
fileFormatVersion: 2
guid: 8e43e435573541c41940d99f99f03582
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -1,117 +0,0 @@
fileFormatVersion: 2
guid: 3025a046e62dd884b92dde0a71bf62b0
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -1,117 +0,0 @@
fileFormatVersion: 2
guid: 8b18487f95d9f874cb71f073bf85c0ad
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,117 +0,0 @@
fileFormatVersion: 2
guid: d8d5accbc2f9ca84cae3db84ab86ca96
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -1,117 +0,0 @@
fileFormatVersion: 2
guid: c018ffaba8708f64684883876932c38d
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,117 +0,0 @@
fileFormatVersion: 2
guid: 6157ffb6d56b8a14bbc93ee13d42319e
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1,117 +0,0 @@
fileFormatVersion: 2
guid: 8cd798b4dcab9ba4880e3189f88679c5
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1,117 +0,0 @@
fileFormatVersion: 2
guid: ab8d52ee69dbdc54c9a75891603dbc38
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 128
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -677,14 +677,6 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6030618878828304669, guid: d3c2508a55398a24db5d68f68d2702ea, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6030618878828304669, guid: d3c2508a55398a24db5d68f68d2702ea, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6100013163502236362, guid: d3c2508a55398a24db5d68f68d2702ea, type: 3}
propertyPath: m_AnchorMax.y
value: 0

View File

@ -648,84 +648,6 @@ MonoBehaviour:
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!1 &5328855647670170521
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4076923977615567036}
- component: {fileID: 37888837119744512}
- component: {fileID: 5535502572802983660}
m_Layer: 5
m_Name: "\u2196"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4076923977615567036
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5328855647670170521}
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:
- {fileID: 2180787260962546873}
m_Father: {fileID: 5353336693430589123}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!114 &37888837119744512
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5328855647670170521}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 8
m_Right: 2
m_Top: 8
m_Bottom: 0
m_ChildAlignment: 2
m_Spacing: 10
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 1
m_ChildControlHeight: 1
m_ChildScaleWidth: 1
m_ChildScaleHeight: 1
m_ReverseArrangement: 0
--- !u!114 &5535502572802983660
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5328855647670170521}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 2
m_VerticalFit: 2
--- !u!1 &5568161260996910275
GameObject:
m_ObjectHideFlags: 0
@ -756,7 +678,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5681144522345305637}
- {fileID: 4076923977615567036}
- {fileID: 6362836288749559125}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -978,77 +899,6 @@ MonoBehaviour:
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.3137255}
m_EffectDistance: {x: 3, y: -3}
m_UseGraphicAlpha: 1
--- !u!1 &5841225593175283174
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3401503803137628060}
- component: {fileID: 209050608986704394}
- component: {fileID: 7323849352792172416}
m_Layer: 5
m_Name: TEMPLATE
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3401503803137628060
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5841225593175283174}
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:
- {fileID: 5173410857689853898}
m_Father: {fileID: 2180787260962546873}
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.5, y: 0.5}
--- !u!114 &209050608986704394
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5841225593175283174}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: 60
m_PreferredHeight: 60
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &7323849352792172416
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5841225593175283174}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b1135cda2fa7d714f9d4b8a2a3130b4d, type: 3}
m_Name:
m_EditorClassIdentifier:
UI_Icon: {fileID: 2750845858210034251}
--- !u!1 &6140890295709974557
GameObject:
m_ObjectHideFlags: 0
@ -1124,81 +974,6 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &6564643175566609500
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5173410857689853898}
- component: {fileID: 7508341607458121823}
- component: {fileID: 2750845858210034251}
m_Layer: 5
m_Name: Icon
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5173410857689853898
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6564643175566609500}
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: 3401503803137628060}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -0.000061035156, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7508341607458121823
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6564643175566609500}
m_CullTransparentMesh: 1
--- !u!114 &2750845858210034251
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6564643175566609500}
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: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 8b18487f95d9f874cb71f073bf85c0ad, 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!1 &6819636247886330503
GameObject:
m_ObjectHideFlags: 0
@ -1281,83 +1056,6 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_HorizontalFit: 2
m_VerticalFit: 2
--- !u!1 &7293448547499054900
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2180787260962546873}
- component: {fileID: 8293546264338150520}
- component: {fileID: 193311971021743745}
m_Layer: 5
m_Name: DevicesBar
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2180787260962546873
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7293448547499054900}
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:
- {fileID: 3401503803137628060}
m_Father: {fileID: 4076923977615567036}
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.5}
--- !u!114 &8293546264338150520
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7293448547499054900}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e8b33a9300654744488a5dd3d4810dc2, type: 3}
m_Name:
m_EditorClassIdentifier:
ITEM_TEMPLATE: {fileID: 7323849352792172416}
--- !u!114 &193311971021743745
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7293448547499054900}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 0
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 1
m_ChildControlHeight: 1
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1 &7520417476292222346
GameObject:
m_ObjectHideFlags: 0

View File

@ -145,7 +145,7 @@ Transform:
m_GameObject: {fileID: 408101310}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 1.5490109, y: -3.056903, z: -0.117817014}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
@ -210,18 +210,14 @@ MonoBehaviour:
m_EditorClassIdentifier:
SHADER:
- {fileID: 4800000, guid: e44382c7b3957134cb4533224ff9eeaa, type: 3}
- {fileID: 4800000, guid: d0063c32001ef9945888b38bb4932cf6, type: 3}
- {fileID: 4800000, guid: e36189d8343a744ff946d70df1adb684, type: 3}
- {fileID: 4800000, guid: 1fed85d45421d45a6ac770579285b756, type: 3}
- {fileID: 4800000, guid: 8e9191ac23b05c14fa2a62f037ce8261, type: 3}
- {fileID: 4800000, guid: d96e49db3173e49a4a0fcf6125cc7f4e, type: 3}
- {fileID: 4800000, guid: 57c38351364c92e45aef2dc17245b3ce, type: 3}
- {fileID: 4800000, guid: bab7d8f2e62367743930d118a37e824a, type: 3}
- {fileID: 4800000, guid: 5dd9160e7dde4dd4db07347ce4780217, type: 3}
- {fileID: 4800000, guid: d7b367e99136835468184ea471e79e02, type: 3}
- {fileID: 4800000, guid: f63497435389f8548ab973da8535e1b5, type: 3}
- {fileID: 4800000, guid: bef4d98671a3c524f9bfdba0d25e5991, type: 3}
- {fileID: 4800000, guid: 8e9191ac23b05c14fa2a62f037ce8261, type: 3}
- {fileID: 4800000, guid: fdf9f1937116ab84c97a58a4cf82fbf8, type: 3}
- {fileID: 4800000, guid: e36189d8343a744ff946d70df1adb684, type: 3}
- {fileID: 4800000, guid: 1fed85d45421d45a6ac770579285b756, type: 3}
- {fileID: 4800000, guid: d96e49db3173e49a4a0fcf6125cc7f4e, type: 3}
IMPORTENT: {fileID: 4747871931704546037, guid: e6f56a07c0ec38946a0257a1e0b8926d, type: 3}
debugger: {fileID: 408101312}
bTestSkipWebApiToConServer: 0

View File

@ -3,23 +3,23 @@ Shader "Filter/crt-easymode"
{
Properties
{
BRIGHT_BOOST("BRIGHT_BOOST", Float) = 1.2
DILATION("DILATION", Float) = 1.0
GAMMA_INPUT("GAMMA_INPUT", Float) = 2.0
GAMMA_OUTPUT("GAMMA_OUTPUT", Float) = 1.8
MASK_SIZE("MASK_SIZE", Float) = 1.0
MASK_STAGGER("MASK_STAGGER", Float) = 0.0
MASK_STRENGTH("MASK_STRENGTH", Float) = 0.3
MASK_DOT_HEIGHT("MASK_DOT_HEIGHT", Float) = 1.0
MASK_DOT_WIDTH("MASK_DOT_WIDTH", Float) = 1.0
SCANLINE_CUTOFF("SCANLINE_CUTOFF", Float) = 400.0
SCANLINE_BEAM_WIDTH_MAX("SCANLINE_BEAM_WIDTH_MAX", Float) = 1.5
SCANLINE_BEAM_WIDTH_MIN("SCANLINE_BEAM_WIDTH_MIN", Float) = 1.5
SCANLINE_BRIGHT_MAX("SCANLINE_BRIGHT_MAX", Float) = 0.65
SCANLINE_BRIGHT_MIN("SCANLINE_BRIGHT_MIN", Float) = 0.35
SCANLINE_STRENGTH("SCANLINE_STRENGTH", Float) = 1.0
SHARPNESS_H("SHARPNESS_H", Float) = 0.5
SHARPNESS_V("SHARPNESS_V", Float) = 1.0
BRIGHT_BOOST("BRIGHT_BOOST",Float) = 1.2
DILATION("DILATION",Float) = 1.0
GAMMA_INPUT("GAMMA_INPUT",Float) = 2.0
GAMMA_OUTPUT("GAMMA_OUTPUT",Float) = 1.8
MASK_SIZE("MASK_SIZE",Float) = 1.0
MASK_STAGGER("MASK_STAGGER",Float) = 0.0
MASK_STRENGTH("MASK_STRENGTH",Float) = 0.3
MASK_DOT_HEIGHT("MASK_DOT_HEIGHT",Float) = 1.0
MASK_DOT_WIDTH("MASK_DOT_WIDTH",Float) = 1.0
SCANLINE_CUTOFF("SCANLINE_CUTOFF",Float) = 400.0
SCANLINE_BEAM_WIDTH_MAX("SCANLINE_BEAM_WIDTH_MAX",Float) = 1.5
SCANLINE_BEAM_WIDTH_MIN("SCANLINE_BEAM_WIDTH_MIN",Float) = 1.5
SCANLINE_BRIGHT_MAX("SCANLINE_BRIGHT_MAX",Float) = 0.65
SCANLINE_BRIGHT_MIN("SCANLINE_BRIGHT_MIN",Float) = 0.35
SCANLINE_STRENGTH("SCANLINE_STRENGTH",Float) = 1.0
SHARPNESS_H("SHARPNESS_H",Float) = 0.5
SHARPNESS_V("SHARPNESS_V",Float) = 1.0
}
SubShader
{
@ -29,7 +29,7 @@ Shader "Filter/crt-easymode"
#pragma vertex vert_img
#pragma fragment main
#include "UnityCG.cginc"
#include "../FilterChain.cginc"
#include "../FilterChain.cginc"
float BRIGHT_BOOST;
float DILATION;
@ -47,7 +47,7 @@ Shader "Filter/crt-easymode"
float SCANLINE_BRIGHT_MIN;
float SCANLINE_STRENGTH;
float SHARPNESS_H;
float SHARPNESS_V;
float SHARPNESS_V;
struct v2f
{
@ -60,18 +60,19 @@ Shader "Filter/crt-easymode"
vec4 dilate(vec4 col)
{
vec4 x = mix(vec4(1.0, 1.0, 1.0, 1.0), col, DILATION);
vec4 x = mix(vec4(1.0,1.0,1.0,1.0), col, DILATION);
return col * x;
}
float curve_distance(float x, float sharp)
{
/*
apply half - circle s - curve to distance for sharper (more pixelated) interpolation
single line formula for Graph Toy :
/*
apply half-circle s-curve to distance for sharper (more pixelated) interpolation
single line formula for Graph Toy:
0.5 - sqrt(0.25 - (x - step(0.5, x)) * (x - step(0.5, x))) * sign(0.5 - x)
*/
*/
float x_step = step(0.5, x);
float curve = 0.5 - sqrt(0.25 - (x - x_step) * (x - x_step)) * sign(0.5 - x);
@ -81,13 +82,12 @@ Shader "Filter/crt-easymode"
mat4x4 get_color_matrix(vec2 co, vec2 dx)
{
return mat4x4(TEX2D(co - dx), TEX2D(co), TEX2D(co + dx), TEX2D(co + 2.0 * dx));
}
vec3 filter_lanczos(vec4 coeffs, mat4x4 color_matrix)
{
vec4 col = mul(color_matrix, coeffs);
vec4 col = mul(color_matrix,coeffs);
vec4 sample_min = min(color_matrix[1], color_matrix[2]);
vec4 sample_max = max(color_matrix[1], color_matrix[2]);
@ -107,25 +107,25 @@ Shader "Filter/crt-easymode"
vec3 col, col2;
#if TRUE
curve_x = curve_distance(dist.x, SHARPNESS_H * SHARPNESS_H);
curve_x = curve_distance(dist.x, SHARPNESS_H * SHARPNESS_H);
vec4 coeffs = PI * vec4(1.0 + curve_x, curve_x, 1.0 - curve_x, 2.0 - curve_x);
vec4 coeffs = PI * vec4(1.0 + curve_x, curve_x, 1.0 - curve_x, 2.0 - curve_x);
coeffs = FIX(coeffs);
coeffs = 2.0 * sin(coeffs) * sin(coeffs * 0.5) / (coeffs * coeffs);
coeffs /= dot(coeffs, vec4(1.0));
coeffs = FIX(coeffs);
coeffs = 2.0 * sin(coeffs) * sin(coeffs * 0.5) / (coeffs * coeffs);
coeffs /= dot(coeffs, vec4(1.0));
col = filter_lanczos(coeffs, get_color_matrix(tex_co, dx));
col2 = filter_lanczos(coeffs, get_color_matrix(tex_co + dy, dx));
col = filter_lanczos(coeffs, get_color_matrix(tex_co, dx));
col2 = filter_lanczos(coeffs, get_color_matrix(tex_co + dy, dx));
#else
curve_x = curve_distance(dist.x, SHARPNESS_H);
curve_x = curve_distance(dist.x, SHARPNESS_H);
col = mix(TEX2D(tex_co).rgb, TEX2D(tex_co + dx).rgb, curve_x);
col2 = mix(TEX2D(tex_co + dy).rgb, TEX2D(tex_co + dx + dy).rgb, curve_x);
col = mix(TEX2D(tex_co).rgb, TEX2D(tex_co + dx).rgb, curve_x);
col2 = mix(TEX2D(tex_co + dy).rgb, TEX2D(tex_co + dx + dy).rgb, curve_x);
#endif
col = mix(col, col2, curve_distance(dist.y, SHARPNESS_V));
col = pow(col, vec3(GAMMA_INPUT / (DILATION + 1.0), GAMMA_INPUT / (DILATION + 1.0), GAMMA_INPUT / (DILATION + 1.0)));
col = pow(col, vec3(GAMMA_INPUT / (DILATION + 1.0),GAMMA_INPUT / (DILATION + 1.0),GAMMA_INPUT / (DILATION + 1.0)));
float luma = dot(vec3(0.2126, 0.7152, 0.0722), col);
float bright = (max(col.r, max(col.g, col.b)) + luma) * 0.5;
@ -139,19 +139,19 @@ Shader "Filter/crt-easymode"
vec3 mask_weight;
if (dot_no == 0) mask_weight = vec3(1.0, mask, mask);
else if (dot_no == 1) mask_weight = vec3(mask, 1.0, mask);
else mask_weight = vec3(mask, mask, 1.0);
else if (dot_no == 1) mask_weight = vec3(mask, 1.0, mask);
else mask_weight = vec3(mask, mask, 1.0);
if (SourceSize.y >= SCANLINE_CUTOFF)
scan_weight = 1.0;
scan_weight = 1.0;
col2 = col.rgb;
col *= vec3(scan_weight, scan_weight, scan_weight);
col *= vec3(scan_weight,scan_weight,scan_weight);
col = mix(col, col2, scan_bright);
col *= mask_weight;
col = pow(col, vec3(1.0 / GAMMA_OUTPUT, 1.0 / GAMMA_OUTPUT, 1.0 / GAMMA_OUTPUT));
col = pow(col, vec3(1.0 / GAMMA_OUTPUT,1.0 / GAMMA_OUTPUT,1.0 / GAMMA_OUTPUT));
col = col * BRIGHT_BOOST;
col = col* BRIGHT_BOOST;
vec4 FragColor = vec4(col, 1.0);
@ -161,3 +161,6 @@ Shader "Filter/crt-easymode"
}
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 2d28d800dbf30c84da9e5d605a4f9896
guid: b5c1ebe19e88e8840b17582b45643281
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -0,0 +1,162 @@
using Assets.Script.AppMain.Filter;
using UnityEngine;
namespace AxibugEmuOnline.Client.Filters
{
[Strip(RuntimePlatform.PSP2)]
public class RLPRO_CRT : FilterEffect
{
public override string Name => nameof(RLPRO_CRT);
protected override string ShaderName => null;
#region BleedPass_Param
public FilterParameter<EnumBleedMode> BleedMode = EnumBleedMode.NTSCOld3Phase;
[Range(0, 15)]
public FloatParameter BleedAmount = 1f;
#endregion
#region CRTAperture_Param
[Range(0, 5)]
public FloatParameter GlowHalation = 0.1f;
[Range(0, 2)]
public FloatParameter GlowDifusion = 0.05f;
[Range(0, 2)]
public FloatParameter MaskColors = 2.0f;
[Range(0, 1)]
public FloatParameter MaskStrength = 0.3f;
[Range(0, 5)]
public FloatParameter GammaInput = 2.4f;
[Range(0, 5)]
public FloatParameter GammaOutput = 2.4f;
[Range(0, 2.5f)]
public FloatParameter Brightness = 1.5f;
#endregion
#region TV_Effect_Param
public FilterParameter<EnumWrapMode> WrapMode = EnumWrapMode.SimpleWrap;
[Range(0f, 2f)]
public FloatParameter maskDark = 0.5f;
[Range(0f, 2f)]
public FloatParameter maskLight = 1.5f;
[Range(-8f, -16f)]
public FloatParameter hardScan = -8.0f;
[Range(-3f, 1f)]
public FloatParameter hardPix = -3.0f;
public FloatParameter warpX = 0.03125f;
public FloatParameter warpY = 0.04166f;
[Range(1f, 16f)]
public FloatParameter resScale = 4f;
[Range(0.5f, 5f)]
public FloatParameter scale = 1f;
[Range(0f, 1f)]
public FloatParameter fade = 1f;
#endregion
Material m_bleedMat;
Material m_crtApertureMat;
Material m_tvEffectMat;
protected override void OnInit(Material renderMat)
{
m_bleedMat = new Material(Shader.Find("Filter/RLPro_Bleed"));
m_crtApertureMat = new Material(Shader.Find("Filter/RLPro_CRT_Aperture"));
m_tvEffectMat = new Material(Shader.Find("Filter/RLPro_TV_Effect"));
}
protected override void OnRenderer(Material renderMat, Texture src, RenderTexture result)
{
var rt1 = BleedPass(src);
var rt2 = CRT_AperturePass(rt1);
var rt3 = TV_Effect_Pass(rt2);
Graphics.Blit(rt3, result);
RenderTexture.ReleaseTemporary(rt1);
RenderTexture.ReleaseTemporary(rt2);
RenderTexture.ReleaseTemporary(rt3);
}
private RenderTexture BleedPass(Texture src)
{
var rt = RenderTexture.GetTemporary(src.width, src.height);
m_bleedMat.DisableKeyword("_NTSCOld3Phase");
m_bleedMat.DisableKeyword("_NTSC3Phase");
m_bleedMat.DisableKeyword("_NTSC2Phase");
switch (BleedMode.GetValue())
{
case EnumBleedMode.NTSCOld3Phase:
m_bleedMat.EnableKeyword("_NTSCOld3Phase");
break;
case EnumBleedMode.NTSC3Phase:
m_bleedMat.EnableKeyword("_NTSC3Phase");
break;
case EnumBleedMode.NTSC2Phase:
m_bleedMat.EnableKeyword("_NTSC2Phase");
break;
}
m_bleedMat.SetFloat("bleedAmount", BleedAmount.GetValue());
Graphics.Blit(src, rt, m_bleedMat);
return rt;
}
private RenderTexture CRT_AperturePass(Texture src)
{
var rt = RenderTexture.GetTemporary(src.width, src.height);
m_crtApertureMat.SetFloat("GLOW_HALATION", GlowHalation.GetValue());
m_crtApertureMat.SetFloat("GLOW_DIFFUSION", GlowDifusion.GetValue());
m_crtApertureMat.SetFloat("MASK_COLORS", MaskColors.GetValue());
m_crtApertureMat.SetFloat("MASK_STRENGTH", MaskStrength.GetValue());
m_crtApertureMat.SetFloat("GAMMA_INPUT", GammaInput.GetValue());
m_crtApertureMat.SetFloat("GAMMA_OUTPUT", GammaOutput.GetValue());
m_crtApertureMat.SetFloat("BRIGHTNESS", Brightness.GetValue());
Graphics.Blit(src, rt, m_crtApertureMat);
return rt;
}
private RenderTexture TV_Effect_Pass(Texture src)
{
var rt = RenderTexture.GetTemporary(src.width, src.height);
m_tvEffectMat.DisableKeyword("_SimpleWrap");
m_tvEffectMat.DisableKeyword("_CubicDistortion");
switch (WrapMode.GetValue())
{
case EnumWrapMode.SimpleWrap:
m_tvEffectMat.EnableKeyword("_SimpleWrap"); break;
case EnumWrapMode.CubicDistortion:
m_tvEffectMat.EnableKeyword("_CubicDistortion"); break;
}
m_tvEffectMat.SetFloat("maskDark", maskDark);
m_tvEffectMat.SetFloat("maskLight", maskLight);
m_tvEffectMat.SetFloat("hardScan", hardScan);
m_tvEffectMat.SetFloat("hardPix", hardPix);
m_tvEffectMat.SetVector("warp", new Vector4(warpX, warpY));
m_tvEffectMat.SetFloat("resScale", resScale);
m_tvEffectMat.SetFloat("scale", scale);
m_tvEffectMat.SetFloat("fade", fade);
Graphics.Blit(src, rt, m_tvEffectMat);
return rt;
}
public enum EnumBleedMode
{
NTSCOld3Phase,
NTSC3Phase,
NTSC2Phase,
}
public enum EnumWrapMode
{
SimpleWrap,
CubicDistortion
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: fcc83c5bfa946f748811247794560a56

View File

@ -0,0 +1,175 @@
Shader "Filter/RLPro_Bleed"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader
{
Pass
{
CGPROGRAM
#pragma shader_feature_local _NTSCOld3Phase _NTSC3Phase _NTSC2Phase
#pragma vertex vert_img
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float4 _MainTex_TexelSize;
float2 _iResolution;
float bleedAmount = 1.0;
int bleedLength = 21;
struct v2f
{
float4 pos : POSITION;
float2 uv : TEXCOORD0;
};
half3 rgb2yiq(half3 c)
{
return half3(
(0.2989 * c.x + 0.5959 * c.y + 0.2115 * c.z),
(0.5870 * c.x - 0.2744 * c.y - 0.5229 * c.z),
(0.1140 * c.x - 0.3216 * c.y + 0.3114 * c.z)
);
}
half3 yiq2rgb(half3 c)
{
return half3(
(1.0 * c.x + 1.0 * c.y + 1.0 * c.z),
(0.956 * c.x - 0.2720 * c.y - 1.1060 * c.z),
(0.6210 * c.x - 0.6474 * c.y + 1.7046 * c.z)
);
}
half3 t2d(float2 p)
{
half3 col = tex2D(_MainTex, p).rgb;
return rgb2yiq(col);
}
#define fixCoord (p - float2( 0.5 * ONE_X, 0.0))
#define fetch_offset(offset, one_x) t2d(fixCoord + float2( (offset) * (ONE_X), 0.0));
#define get_t2d(offset, one_x) tex2D(_MainTex, p + (offset)*(one_x)).rgb;
float4 FragNTSCOld3Phase(v2f i) : COLOR
{
float2 uv = i.uv;
float2 p = uv;
float ONE_X = 1.0 / _ScreenParams.x;
ONE_X *= bleedAmount;
bleedLength = 25;
float maxTexLength = 50.0;
float luma_filter[25]; luma_filter[0] = -0.000071070; luma_filter[1] = -0.000032816; luma_filter[2] = 0.000128784; luma_filter[3] = 0.000134711; luma_filter[4] = -0.000226705; luma_filter[5] = -0.000777988; luma_filter[6] = -0.000997809; luma_filter[7] = -0.000522802; luma_filter[8] = 0.000344691; luma_filter[9] = 0.000768930; luma_filter[10] = 0.000275591; luma_filter[11] = -0.000373434; luma_filter[12] = 0.000522796; luma_filter[13] = 0.003813817; luma_filter[14] = 0.007502825; luma_filter[15] = 0.006786001; luma_filter[16] = -0.002636726; luma_filter[17] = -0.019461182; luma_filter[18] = -0.033792479; luma_filter[19] = -0.029921972; luma_filter[20] = 0.005032552; luma_filter[21] = 0.071226466; luma_filter[22] = 0.151755921; luma_filter[23] = 0.218166470; luma_filter[24] = 0.243902439;
float chroma_filter[24 + 1]; chroma_filter[0] = 0.001845562; chroma_filter[1] = 0.002381606; chroma_filter[2] = 0.003040177; chroma_filter[3] = 0.003838976; chroma_filter[4] = 0.004795341; chroma_filter[5] = 0.005925312; chroma_filter[6] = 0.007242534; chroma_filter[7] = 0.008757043; chroma_filter[8] = 0.010473987; chroma_filter[9] = 0.012392365; chroma_filter[10] = 0.014503872; chroma_filter[11] = 0.016791957; chroma_filter[12] = 0.019231195; chroma_filter[13] = 0.021787070; chroma_filter[14] = 0.024416251; chroma_filter[15] = 0.027067414; chroma_filter[16] = 0.029682613; chroma_filter[17] = 0.032199202; chroma_filter[18] = 0.034552198; chroma_filter[19] = 0.036677005; chroma_filter[20] = 0.038512317; chroma_filter[21] = 0.040003044; chroma_filter[22] = 0.041103048; chroma_filter[23] = 0.041777517; chroma_filter[24] = 0.042004791;
half3 signal = half3(0.0,0.0,0.0);
half3 norm = half3(0.0,0.0,0.0);
half3 adj = half3(0.0,0.0,0.0);
int taps = bleedLength - 4;
for (int ii = 0; ii < taps % 1023; ii++)
{
float offset = float(ii);
half3 sums = fetch_offset(offset - float(taps), ONE_X) + fetch_offset(float(taps) - offset, ONE_X);
adj = half3(luma_filter[ii + 3], chroma_filter[ii], chroma_filter[ii]);
signal += sums * adj;
norm += adj;
}
adj = half3(luma_filter[taps], chroma_filter[taps], chroma_filter[taps]);
half4 col23 = tex2D(_MainTex, fixCoord);
signal += rgb2yiq(col23.rgb) * adj;
norm += adj;
signal = signal / norm;
float3 rgb = yiq2rgb(signal);
float alpha = col23.a + (rgb.r + rgb.g + rgb.b) / 3;
return half4(rgb, alpha);
}
float4 FragNTSC3Phase(v2f i) : COLOR
{
float2 uv = i.uv;
float2 p = uv;
float ONE_X = 1.0 / _iResolution.x;
ONE_X *= bleedAmount;
bleedLength = 25;
float maxTexLength = 50.0;
float luma_filter[25]; luma_filter[0] = -0.000012020; luma_filter[1] = -0.000022146; luma_filter[2] = -0.000013155; luma_filter[3] = -0.000012020; luma_filter[4] = -0.000049979; luma_filter[5] = -0.000113940; luma_filter[6] = -0.000122150; luma_filter[7] = -0.000005612; luma_filter[8] = 0.000170516; luma_filter[9] = 0.000237199; luma_filter[10] = 0.000169640; luma_filter[11] = 0.000285688; luma_filter[12] = 0.000984574; luma_filter[13] = 0.002018683; luma_filter[14] = 0.002002275; luma_filter[15] = -0.000909882; luma_filter[16] = -0.007049081; luma_filter[17] = -0.013222860; luma_filter[18] = -0.012606931; luma_filter[19] = 0.002460860; luma_filter[20] = 0.035868225; luma_filter[21] = 0.084016453; luma_filter[22] = 0.135563500; luma_filter[23] = 0.175261268; luma_filter[24] = 0.190176552;
float chroma_filter[25]; chroma_filter[0] = -0.000118847; chroma_filter[1] = -0.000271306; chroma_filter[2] = -0.000502642; chroma_filter[3] = -0.000930833; chroma_filter[4] = -0.001451013; chroma_filter[5] = -0.002064744; chroma_filter[6] = -0.002700432; chroma_filter[7] = -0.003241276; chroma_filter[8] = -0.003524948; chroma_filter[9] = -0.003350284; chroma_filter[10] = -0.002491729; chroma_filter[11] = -0.000721149; chroma_filter[12] = 0.002164659; chroma_filter[13] = 0.006313635; chroma_filter[14] = 0.011789103; chroma_filter[15] = 0.018545660; chroma_filter[16] = 0.026414396; chroma_filter[17] = 0.035100710; chroma_filter[18] = 0.044196567; chroma_filter[19] = 0.053207202; chroma_filter[20] = 0.061590275; chroma_filter[21] = 0.068803602; chroma_filter[22] = 0.074356193; chroma_filter[23] = 0.077856564; chroma_filter[24] = 0.079052396;
half3 signal = half3(0.0,0.0,0.0);
half3 norm = half3(0.0,0.0,0.0);
half3 adj = half3(0.0,0.0,0.0);
int taps = bleedLength - 4;
for (int ii = 0; ii < taps % 1023; ii++)
{
float offset = float(ii);
half3 sums = fetch_offset(offset - float(taps), ONE_X) + fetch_offset(float(taps) - offset, ONE_X);
adj = half3(luma_filter[ii + 3], chroma_filter[ii], chroma_filter[ii]);
signal += sums * adj;
norm += adj;
}
adj = half3(luma_filter[taps], chroma_filter[taps], chroma_filter[taps]);
half4 col23 = tex2D(_MainTex, fixCoord);
signal += rgb2yiq(col23.rgb) * adj;
norm += adj;
signal = signal / norm;
float3 rgb = yiq2rgb(signal);
float alpha = col23.a + (rgb.r + rgb.g + rgb.b) / 3;
return half4(rgb, alpha);
}
float4 FragNTSC2Phase(v2f i) : COLOR
{
float2 uv = i.uv;
float2 p = uv;
float ONE_X = 1.0 / _ScreenParams.x;
ONE_X *= bleedAmount;
bleedLength = 33;
float maxTexLength = 50.0;
float luma_filter[33]; luma_filter[0] = -0.000174844; luma_filter[1] = -0.000205844; luma_filter[2] = -0.000149453; luma_filter[3] = -0.000051693; luma_filter[4] = 0.000000000; luma_filter[5] = -0.000066171; luma_filter[6] = -0.000245058; luma_filter[7] = -0.000432928; luma_filter[8] = -0.000472644; luma_filter[9] = -0.000252236; luma_filter[10] = 0.000198929; luma_filter[11] = 0.000687058; luma_filter[12] = 0.000944112; luma_filter[13] = 0.000803467; luma_filter[14] = 0.000363199; luma_filter[15] = 0.000013422; luma_filter[16] = 0.000253402; luma_filter[17] = 0.001339461; luma_filter[18] = 0.002932972; luma_filter[19] = 0.003983485; luma_filter[20] = 0.003026683; luma_filter[21] = -0.001102056; luma_filter[22] = -0.008373026; luma_filter[23] = -0.016897700; luma_filter[24] = -0.022914480; luma_filter[25] = -0.021642347; luma_filter[26] = -0.008863273; luma_filter[27] = 0.017271957; luma_filter[28] = 0.054921920; luma_filter[29] = 0.098342579; luma_filter[30] = 0.139044281; luma_filter[31] = 0.168055832; luma_filter[32] = 0.178571429;
float chroma_filter[33]; chroma_filter[0] = 0.001384762; chroma_filter[1] = 0.001678312; chroma_filter[2] = 0.002021715; chroma_filter[3] = 0.002420562; chroma_filter[4] = 0.002880460; chroma_filter[5] = 0.003406879; chroma_filter[6] = 0.004004985; chroma_filter[7] = 0.004679445; chroma_filter[8] = 0.005434218; chroma_filter[9] = 0.006272332; chroma_filter[10] = 0.007195654; chroma_filter[11] = 0.008204665; chroma_filter[12] = 0.009298238; chroma_filter[13] = 0.010473450; chroma_filter[14] = 0.011725413; chroma_filter[15] = 0.013047155; chroma_filter[16] = 0.014429548; chroma_filter[17] = 0.015861306; chroma_filter[18] = 0.017329037; chroma_filter[19] = 0.018817382; chroma_filter[20] = 0.020309220; chroma_filter[21] = 0.021785952; chroma_filter[22] = 0.023227857; chroma_filter[23] = 0.024614500; chroma_filter[24] = 0.025925203; chroma_filter[25] = 0.027139546; chroma_filter[26] = 0.028237893; chroma_filter[27] = 0.029201910; chroma_filter[28] = 0.030015081; chroma_filter[29] = 0.030663170; chroma_filter[30] = 0.031134640; chroma_filter[31] = 0.031420995; chroma_filter[32] = 0.031517031;
half3 signal = half3(0.0,0.0,0.0);
half3 norm = half3(0.0,0.0,0.0);
half3 adj = half3(0.0,0.0,0.0);
int taps = bleedLength - 4;
for (int ii = 0; ii < taps % 1023; ii++)
{
float offset = float(ii);
half3 sums = fetch_offset(offset - float(taps), ONE_X) + fetch_offset(float(taps) - offset, ONE_X);
adj = half3(luma_filter[ii + 3], chroma_filter[ii], chroma_filter[ii]);
signal += sums * adj;
norm += adj;
}
adj = half3(luma_filter[taps], chroma_filter[taps], chroma_filter[taps]);
half4 col23 = tex2D(_MainTex, fixCoord);
signal += rgb2yiq(col23.rgb) * adj;
norm += adj;
signal = signal / norm;
float3 rgb = yiq2rgb(signal);
float alpha = col23.a + (rgb.r + rgb.g + rgb.b) / 3;
return half4(rgb, alpha);
}
fixed4 frag (v2f i) : SV_Target
{
#if _NTSCOld3Phase
return FragNTSCOld3Phase(i);
#elif _NTSC3Phase
return FragNTSC3Phase(i);
#else
return FragNTSC2Phase(i);
#endif
}
ENDCG
}
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 467a95e560665c641ad8a0925e03a93c
guid: d7b367e99136835468184ea471e79e02
ShaderImporter:
externalObjects: {}
defaultTextures: []

View File

@ -0,0 +1,144 @@
Shader "Filter/RLPro_CRT_Aperture"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader
{
Pass
{
CGPROGRAM
#pragma shader_feature_local _NTSCOld3Phase _NTSC3Phase _NTSC2Phase
#pragma vertex vert_img
#pragma fragment Frag0
#include "UnityCG.cginc"
#define FIX(c) max(abs(c), 1e-5)
#define saturate(c) clamp(c, 0.0, 1.0)
#define PI 3.14159265359
sampler2D _MainTex;
float4 _MainTex_TexelSize;
float2 _iResolution;
float GLOW_HALATION = 0.1;
float GLOW_DIFFUSION = 0.05;
float MASK_COLORS = 2.0;
float MASK_STRENGTH = 0.3;
float GAMMA_INPUT = 2.4;
float GAMMA_OUTPUT = 2.4;
float BRIGHTNESS = 1.5;
struct v2f
{
float4 pos : POSITION;
float2 uv : TEXCOORD0;
};
float mod(float x, float y)
{
return x - y * floor(x / y);
}
float fract(float x)
{
return x - floor(x);
}
float2 fract(float2 x)
{
return x - floor(x);
}
float4 fract(float4 x)
{
return x - floor(x);
}
float3 TEX2D(float2 c)
{
return pow(abs(tex2D(_MainTex, c).rgb), float3(GAMMA_INPUT, GAMMA_INPUT, GAMMA_INPUT)).xyz;
}
float3x3 get_color_matrix(float2 co, float2 dx)
{
return float3x3(TEX2D(co - dx), TEX2D(co), TEX2D(co + dx));
}
float3 blur(float3x3 m, float dist, float rad)
{
float3 x = float3(dist - 1.0, dist, dist + 1.0) / rad;
float3 w = exp2(x * x * -1.0);
return (m[0] * w.x + m[1] * w.y + m[2] * w.z) / (w.x + w.y + w.z);
}
float3 filter_gaussian(float2 co, float2 tex_size)
{
float2 dx = float2(1.0 / tex_size.x, 0.0);
float2 dy = float2(0.0, 1.0 / tex_size.y);
float2 pix_co = co * tex_size;
float2 tex_co = (floor(pix_co) + 0.5) / tex_size;
float2 dist = (fract(pix_co) - 0.5) * -1.0;
float3x3 line0 = get_color_matrix(tex_co - dy, dx);
float3x3 line1 = get_color_matrix(tex_co, dx);
float3x3 line2 = get_color_matrix(tex_co + dy, dx);
float3x3 column = float3x3(blur(line0, dist.x, 0.5), blur(line1, dist.x, 0.5), blur(line2, dist.x, 0.5));
return blur(column, dist.y, 0.5);
}
float3 filter_lanczos(float2 co, float2 tex_size, float sharp)
{
tex_size.x *= sharp;
float2 dx = float2(1.0 / tex_size.x, 0.0);
float2 pix_co = co * tex_size - float2(0.5, 0.0);
float2 tex_co = (floor(pix_co) + float2(0.5, 0.001)) / tex_size;
float2 dist = fract(pix_co);
float4 coef = PI * float4(dist.x + 1.0, dist.x, dist.x - 1.0, dist.x - 2.0);
coef = FIX(coef);
coef = 2.0 * sin(coef) * sin(coef / 2.0) / (coef * coef);
coef /= dot(coef, float4(1.0, 1.0, 1.0, 1.0));
float4 col1 = float4(TEX2D(tex_co), 1.0);
float4 col2 = float4(TEX2D(tex_co + dx), 1.0);
float4x4 fkfk = mul(coef.x, float4x4(col1, col1, col2, col2));
float4x4 fkfks = mul(coef.y, float4x4(col1, col1, col2, col2));
float4x4 fkfkb = mul(coef.z, float4x4(col1, col1, col2, col2));
return float3(fkfk[0].x, fkfk[0].y, fkfk[0].z);
}
float3 mix(float3 x, float3 y, float3 a) {
return float3(x * (1 - a) + y * a);
}
float3 get_mask_weight(float x)
{
float i = mod(floor(x), MASK_COLORS);
if (i == 0.0) return mix(float3(1.0, 0.0, 1.0), float3(1.0, 0.0, 0.0), MASK_COLORS - 2.0);
else if (i == 1.0) return float3(0.0, 1.0, 0.0);
else return float3(0.0, 0.0, 1.0);
}
float4 Frag0(v2f i) : SV_Target
{
float2 pos = i.uv;
float3 col_glow = filter_gaussian(pos, _ScreenParams.xy);
float3 col_soft = filter_lanczos(pos, _ScreenParams.xy, 1);
float3 col_sharp = filter_lanczos(pos, _ScreenParams.xy, 3);
float3 col = sqrt(col_sharp * col_soft);
col_glow = saturate(col_glow - col);
col += col_glow * col_glow * GLOW_HALATION;
col = mix(col, col * get_mask_weight(pos.x) * MASK_COLORS, MASK_STRENGTH);
col += col_glow * GLOW_DIFFUSION;
col = pow(abs(col * BRIGHTNESS), float3(1.0 / GAMMA_OUTPUT, 1.0 / GAMMA_OUTPUT, 1.0 / GAMMA_OUTPUT));
half4 col1 = tex2D(_MainTex, pos);
float fade = 1;
return lerp(col1,float4(col, col1.a+(col.r+col.g+col.b)/3),fade);
}
ENDCG
}
}
}

View File

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

View File

@ -0,0 +1,162 @@
Shader "Filter/RLPro_TV_Effect"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader
{
Pass
{
CGPROGRAM
#pragma shader_feature_local _SimpleWrap _CubicDistortion
#pragma vertex vert_img
#pragma fragment Frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float4 _MainTex_TexelSize;
float2 _iResolution;
float maskDark = 0.5;
float maskLight = 1.5;
float hardScan = -8.0;
float hardPix = -3.0;
float2 warp = float2(1.0 / 32.0, 1.0 / 24.0);
float2 res;
float resScale;
float scale;
float fade;
struct v2f
{
float4 pos : POSITION;
float2 uv : TEXCOORD0;
};
float3 Fetch(float2 pos, float2 off)
{
pos = floor(pos * res + off) / res;
return tex2Dlod(_MainTex, float4(pos.xy, 0, -16.0)).rgb;
}
float2 Dist(float2 pos) { pos = pos * res; return -((pos - floor(pos)) - float2(0.5, 0.5)); }
float Gaus(float pos, float scale) { return exp2(scale * pos * pos); }
float3 Horz3(float2 pos, float off)
{
float3 b = Fetch(pos, float2(-1.0, off));
float3 c = Fetch(pos, float2(0.0, off));
float3 d = Fetch(pos, float2(1.0, off));
float dst = Dist(pos).x;
float scale = hardPix;
float wb = Gaus(dst - 1.0, scale);
float wc = Gaus(dst + 0.0, scale);
float wd = Gaus(dst + 1.0, scale);
return (b * wb + c * wc + d * wd) / (wb + wc + wd);
}
float3 Horz5(float2 pos, float off)
{
float3 a = Fetch(pos, float2(-2.0, off));
float3 b = Fetch(pos, float2(-1.0, off));
float3 c = Fetch(pos, float2(0.0, off));
float3 d = Fetch(pos, float2(1.0, off));
float3 e = Fetch(pos, float2(2.0, off));
float dst = Dist(pos).x;
float scale = hardPix;
float wa = Gaus(dst - 2.0, scale);
float wb = Gaus(dst - 1.0, scale);
float wc = Gaus(dst + 0.0, scale);
float wd = Gaus(dst + 1.0, scale);
float we = Gaus(dst + 2.0, scale);
return (a * wa + b * wb + c * wc + d * wd + e * we) / (wa + wb + wc + wd + we);
}
float Scan(float2 pos, float off)
{
float dst = Dist(pos).y;
return Gaus(dst + off, hardScan);
}
float3 Tri(float2 pos)
{
float3 a = Horz3(pos, -1.0);
float3 b = Horz5(pos, 0.0);
float3 c = Horz3(pos, 1.0);
float wa = Scan(pos, -1.0);
float wb = Scan(pos, 0.0);
float wc = Scan(pos, 1.0);
return a * wa + b * wb + c * wc;
}
float2 Warp(float2 pos)
{
float2 h = pos - float2(0.5, 0.5);
float r2 = dot(h, h);
float f = 1.0 + r2 * (warp.x + warp.y * sqrt(r2));
return f * scale * h + 0.5;
}
float2 Warp1(float2 pos)
{
pos = pos * 2.0 - 1.0;
pos *= float2(1.0 + (pos.y * pos.y) * warp.x, 1.0 + (pos.x * pos.x) * warp.y);
return pos * scale + 0.5;
}
float3 Mask(float2 pos)
{
pos.x += pos.y * 3.0;
float3 mask = float3(maskDark, maskDark, maskDark);
pos.x = frac(pos.x / 6.0);
if (pos.x < 0.333)mask.r = maskLight;
else if (pos.x < 0.666)mask.g = maskLight;
else mask.b = maskLight;
return mask;
}
float4 SimpleWrapFrag(v2f i)
{
float2 uv = i.uv;
float4 col = tex2D(_MainTex,uv);
res = _ScreenParams.xy / resScale;
float2 fragCoord = uv * _ScreenParams.xy;
float4 fragColor = 0;
float2 pos = Warp1(fragCoord.xy / _ScreenParams.xy);
fragColor.rgb = Tri(pos) * Mask(fragCoord);
fragColor.a = tex2D(_MainTex,pos).a;
return lerp(col,fragColor,fade);
}
float4 CubicDistortionFrag(v2f i)
{
float2 uv = i.uv;
float4 col = tex2D(_MainTex,uv);
res = _iResolution.xy / resScale;
float2 fragCoord = uv * _ScreenParams.xy;
float4 fragColor = 0;
float2 pos = Warp(fragCoord.xy / _ScreenParams.xy);
fragColor.rgb = Tri(pos) * Mask(fragCoord);
fragColor.a = tex2D(_MainTex,pos).a;
return lerp(col,fragColor,fade);
}
float4 Frag(v2f i) : SV_Target
{
#if _SimpleWrap
return SimpleWrapFrag(i);
#else
return CubicDistortionFrag(i);
#endif
}
ENDCG
}
}
}

View File

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

View File

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

View File

@ -1,60 +0,0 @@
using Assets.Script.AppMain.Filter;
using UnityEngine;
namespace AxibugEmuOnline.Client.Filters
{
public class RealisticCRT : FilterEffect
{
public override string Name => nameof(RealisticCRT);
protected override string ShaderName => "Filter/RealisticCRT";
[Range(0, 1)] public FloatParameter scan_line_amount = 1.0f;
[Range(0, 5)] public FloatParameter warp_amount = 0.1f;
[Range(0.0f, 0.3f)] public FloatParameter noise_amount = 0.03f;
[Range(0.0f, 1.0f)] public FloatParameter interference_amount = 0.2f;
[Range(0.0f, 1.0f)] public FloatParameter grille_amount = 0.1f;
[Range(1.0f, 5.0f)] public FloatParameter grille_size = 1.0f;
[Range(0.0f, 2.0f)] public FloatParameter vignette_amount = 0.6f;
[Range(0.0f, 1.0f)] public FloatParameter vignette_intensity = 0.4f;
[Range(0.0f, 1.0f)] public FloatParameter aberation_amount = 0.5f;
[Range(0.0f, 1.0f)] public FloatParameter roll_line_amount = 0.3f;
[Range(-8.0f, 8.0f)] public FloatParameter roll_speed = 1.0f;
[Range(-12.0f, -1.0f)] public FloatParameter scan_line_strength = -8.0f;
[Range(-4.0f, 0.0f)] public FloatParameter pixel_strength = 2.0f;
int scan_line_amount_p = Shader.PropertyToID("scan_line_amount");
int warp_amount_p = Shader.PropertyToID("warp_amount");
int noise_amount_p = Shader.PropertyToID("noise_amount");
int interference_amount_p = Shader.PropertyToID("interference_amount");
int grille_amount_p = Shader.PropertyToID("grille_amount");
int grille_size_p = Shader.PropertyToID("grille_size");
int vignette_amount_p = Shader.PropertyToID("vignette_amount");
int vignette_intensity_p = Shader.PropertyToID("vignette_intensity");
int aberation_amount_p = Shader.PropertyToID("aberation_amount");
int roll_line_amount_p = Shader.PropertyToID("roll_line_amount");
int roll_speed_p = Shader.PropertyToID("roll_speed");
int scan_line_strength_p = Shader.PropertyToID("scan_line_strength");
int pixel_strength_p = Shader.PropertyToID("pixel_strength");
protected override void OnRenderer(Material renderMat, Texture src, RenderTexture result)
{
renderMat.SetFloat(scan_line_amount_p, scan_line_amount);
renderMat.SetFloat(warp_amount_p, warp_amount);
renderMat.SetFloat(noise_amount_p, noise_amount);
renderMat.SetFloat(interference_amount_p, interference_amount);
renderMat.SetFloat(grille_amount_p, grille_amount);
renderMat.SetFloat(grille_size_p, grille_size);
renderMat.SetFloat(vignette_amount_p, vignette_amount);
renderMat.SetFloat(vignette_intensity_p, vignette_intensity);
renderMat.SetFloat(aberation_amount_p, aberation_amount);
renderMat.SetFloat(roll_line_amount_p, roll_line_amount);
renderMat.SetFloat(roll_speed_p, roll_speed);
renderMat.SetFloat(scan_line_strength_p, scan_line_strength);
renderMat.SetFloat(pixel_strength_p, pixel_strength);
Graphics.Blit(src, result, renderMat);
}
}
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: c976303d1b991604184e1220f40ebb31

View File

@ -1,202 +0,0 @@
Shader "Filter/RealisticCRT"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
scan_line_amount ("scan_line_amount",Range(0,1)) = 1.0
warp_amount ("warp_amount",Range(0,5)) = 0.1
noise_amount ("noise_amount",Range(0.0, 0.3)) = 0.03
interference_amount ("interference_amount",Range(0.0, 1.0)) = 0.2
grille_amount ("grille_amount",Range(0.0, 1.0)) = 0.1
grille_size ("grille_size",Range(1.0, 5.0)) = 1.0
vignette_amount ("vignette_amount",Range(0.0, 2.0)) = 0.6
vignette_intensity ("vignette_intensity",Range (0.0, 1.0)) = 0.4
aberation_amount ("aberation_amount",Range(0.0, 1.0)) = 0.5
roll_line_amount ("roll_line_amount",Range(0.0, 1.0)) = 0.3
roll_speed ("roll_speed",Range(-8.0, 8.0)) = 1.0
scan_line_strength ("scan_line_strength",Range(-12.0, -1.0))= -8.0
pixel_strength ("pixel_strength",Range(-4.0, 0.0))= -2.0
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#include "UnityCG.cginc"
struct v2f
{
float4 pos : POSITION;
float2 uv : TEXCOORD0;
};
sampler2D _MainTex;
float2 _iResolution;
#define resolution float2(320.0,180.0)
#define PI 3.14159268
float scan_line_amount;
float warp_amount;
float noise_amount;
float interference_amount;
float grille_amount;
float grille_size;
float vignette_amount;
float vignette_intensity;
float aberation_amount;
float roll_line_amount;
float roll_speed;
float scan_line_strength;
float pixel_strength;
float random(float2 uv){
return frac(cos(uv.x * 83.4827 + uv.y * 92.2842) * 43758.5453123);
}
float3 fetch_pixel(float2 uv, float2 off)
{
float2 pos = floor(uv * resolution + off) / resolution + float2(0.5,0.5) / resolution;
float noise = 0.0;
if(noise_amount > 0.0){
noise = random(pos + frac(_Time.x)) * noise_amount;
}
if(max(abs(pos.x - 0.5), abs(pos.y - 0.5)) > 0.5){
return float3(0.0, 0.0, 0.0);
}
float3 clr = tex2D(_MainTex,pos).rgb + noise;
return clr;
}
// Distance in emulated pixels to nearest texel.
float2 Dist(float2 pos){
pos = pos * resolution;
return - ((pos - floor(pos)) - float2(0.5,0.5));
}
// 1D Gaussian.
float Gaus(float pos, float scale){ return exp2(scale * pos * pos); }
// 3-tap Gaussian filter along horz line.
float3 Horz3(float2 pos, float off){
float3 b = fetch_pixel(pos, float2(-1.0, off));
float3 c = fetch_pixel(pos, float2( 0.0, off));
float3 d = fetch_pixel(pos, float2( 1.0, off));
float dst = Dist(pos).x;
// Convert distance to weight.
float scale = pixel_strength;
float wb = Gaus(dst - 1.0, scale);
float wc = Gaus(dst + 0.0, scale);
float wd = Gaus(dst + 1.0, scale);
// Return filtered sample.
return (b * wb + c * wc + d * wd) / (wb + wc + wd);
}
// Return scanline weight.
float Scan(float2 pos, float off){
float dst = Dist(pos).y;
return Gaus(dst + off, scan_line_strength);
}
// Allow nearest three lines to effect pixel.
float3 Tri(float2 pos){
float3 clr = fetch_pixel(pos, float2(0.0,0.0));
if(scan_line_amount > 0.0){
float3 a = Horz3(pos,-1.0);
float3 b = Horz3(pos, 0.0);
float3 c = Horz3(pos, 1.0);
float wa = Scan(pos,-1.0);
float wb = Scan(pos, 0.0);
float wc = Scan(pos, 1.0);
float3 scanlines = a * wa + b * wb + c * wc;
clr = lerp(clr, scanlines, scan_line_amount);
}
return clr;
}
// Takes in the UV and warps the edges, creating the spherized effect
float2 warp(float2 uv){
float2 delta = uv - 0.5;
float delta2 = dot(delta.xy, delta.xy);
float delta4 = delta2 * delta2;
float delta_offset = delta4 * warp_amount;
float2 warped = uv + delta * delta_offset;
return (warped - 0.5) / lerp(1.0,1.2,warp_amount/5.0) + 0.5;
}
float vignette(float2 uv){
uv *= 1.0 - uv.xy;
float vignette = uv.x * uv.y * 15.0;
return pow(vignette, vignette_intensity * vignette_amount);
}
float floating_mod(float a, float b){
return a - b * floor(a/b);
}
float3 grille(float2 uv){
float unit = PI / 3.0;
float scale = 2.0*unit/grille_size;
float r = smoothstep(0.5, 0.8, cos(uv.x*scale - unit));
float g = smoothstep(0.5, 0.8, cos(uv.x*scale + unit));
float b = smoothstep(0.5, 0.8, cos(uv.x*scale + 3.0*unit));
return lerp(float3(1.0,1.0,1.0), float3(r,g,b), grille_amount);
}
float roll_line(float2 uv){
float x = uv.y * 3.0 - _Time.x * roll_speed;
float f = cos(x) * cos(x * 2.35 + 1.1) * cos(x * 4.45 + 2.3);
float roll_line = smoothstep(0.5, 0.9, f);
return roll_line * roll_line_amount;
}
fixed4 frag (v2f i) : SV_Target
{
float2 pix = _iResolution.xy*i.uv;
float2 pos = warp(i.uv);
float tLine = 0.0;
if(roll_line_amount > 0.0){
tLine = roll_line(pos);
}
float2 sq_pix = floor(pos * resolution) / resolution + float2(0.5,0.5) / resolution;
if(interference_amount + roll_line_amount > 0.0){
float interference = random(sq_pix.yy + frac(_Time.x));
pos.x += (interference * (interference_amount + tLine * 6.0)) / resolution.x;
}
float3 clr = Tri(pos);
if(aberation_amount > 0.0){
float chromatic = aberation_amount + tLine * 2.0;
float2 chromatic_x = float2(chromatic,0.0) / resolution.x;
float2 chromatic_y = float2(0.0, chromatic/2.0) / resolution.y;
float r = Tri(pos - chromatic_x).r;
float g = Tri(pos + chromatic_y).g;
float b = Tri(pos + chromatic_x).b;
clr = float3(r,g,b);
}
if(grille_amount > 0.0)clr *= grille(pix);
clr *= 1.0 + scan_line_amount * 0.6 + tLine * 3.0 + grille_amount * 2.0;
if(vignette_amount > 0.0)clr *= vignette(pos);
return fixed4(clr,1.0);
}
ENDCG
}
}
}

View File

@ -48,10 +48,11 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
/// <summary> 获取指定设备的注册Binder对象 </summary>
/// <param name="device"></param>
/// <returns>返回首个匹配对象</returns>
ControllerBinder GetRegistedBinder(InputDevice_D device)
public ControllerBinder GetRegistedBinder(InputDevice_D device)
{
foreach (var binding in m_controllerBinders)
{
if (device.Exclusive && GetRegistedBinder(device) != null) continue;
if (binding.IsRegisted(device)) return binding;
}
@ -62,7 +63,6 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
{
foreach (var binding in m_controllerBinders)
{
if (connectDevice.Exclusive && GetRegistedBinder(connectDevice) != null) continue;
binding.RegistInputDevice(connectDevice);
}
}

View File

@ -1,13 +1,8 @@
using AxibugProtobuf;
namespace AxibugEmuOnline.Client.InputDevices
namespace AxibugEmuOnline.Client.InputDevices
{
/// <summary> PS3,PS4控制器 </summary>
public class DualShockController_D : InputDevice_D
{
GamePadType m_gamePadType;
public override GamePadType PadType => m_gamePadType;
public Button_C Circle;
public Button_C Triangle;
public Button_C Cross;
@ -28,12 +23,6 @@ namespace AxibugEmuOnline.Client.InputDevices
public Stick_C LeftStick;
public Stick_C RightStick;
public DualShockController_D(InputResolver resolver, bool ps3 = false, bool ps4 = false, bool ps5 = false) : base(resolver)
{
if (ps3) m_gamePadType = GamePadType.Ds3Control;
else if (ps4) m_gamePadType = GamePadType.Ds4Control;
else if (ps5) m_gamePadType = GamePadType.Ds5Control;
else m_gamePadType = GamePadType.GlobalGamePad;
}
public DualShockController_D(InputResolver resolver) : base(resolver) { }
}
}

View File

@ -1,14 +1,10 @@
using AxibugProtobuf;
namespace AxibugEmuOnline.Client.InputDevices
namespace AxibugEmuOnline.Client.InputDevices
{
/// <summary>
/// 通用游戏控制器
/// </summary>
public class GamePad_D : InputDevice_D
{
public override GamePadType PadType => GamePadType.GlobalGamePad;
public Button_C Up;
public Button_C Down;
public Button_C Left;

View File

@ -1,5 +1,4 @@
using AxibugProtobuf;
using System;
using System;
using System.Collections.Generic;
using System.Reflection;
@ -10,8 +9,7 @@ namespace AxibugEmuOnline.Client.InputDevices
/// <summary> 指示该设备是否只能由一个Binder独占 </summary>
public virtual bool Exclusive => true;
public string UniqueName => m_resolver.GetDeviceName(this);
/// <summary> 指示该设备类型,这个类型将与服务器类型对齐 </summary>
public abstract GamePadType PadType { get; }
/// <summary> 指示该设备是否在线 </summary>
public bool Online => m_resolver.CheckOnline(this);
/// <summary> 指示该设备当前帧是否有任意控件被激发 </summary>

View File

@ -1,5 +1,4 @@
using AxibugProtobuf;
using System.Collections.Generic;
using System.Collections.Generic;
namespace AxibugEmuOnline.Client.InputDevices
{
@ -8,8 +7,6 @@ namespace AxibugEmuOnline.Client.InputDevices
/// </summary>
public class Keyboard_D : InputDevice_D
{
public override GamePadType PadType => GamePadType.Keyboard;
public Button_C A;
public Button_C B;
public Button_C C;

View File

@ -1,11 +1,7 @@
using AxibugProtobuf;
namespace AxibugEmuOnline.Client.InputDevices
namespace AxibugEmuOnline.Client.InputDevices
{
public class PSVController_D : InputDevice_D
{
public override GamePadType PadType => GamePadType.PsvitaControl;
public Button_C Cross;
public Button_C Circle;
public Button_C Square;

View File

@ -1,5 +1,4 @@
using AxibugProtobuf;
using AxiInputSP;
using AxiInputSP;
using AxiInputSP.UGUI;
using System.Collections.Generic;
using UnityEngine;
@ -8,8 +7,6 @@ namespace AxibugEmuOnline.Client.InputDevices
{
public class ScreenGamepad_D : InputDevice_D
{
public override GamePadType PadType => GamePadType.TouchPanel;
public Button_C UP;
public Button_C DOWN;
public Button_C LEFT;

View File

@ -1,11 +1,7 @@
using AxibugProtobuf;
namespace AxibugEmuOnline.Client.InputDevices
namespace AxibugEmuOnline.Client.InputDevices
{
public class XboxController_D : InputDevice_D
{
public override GamePadType PadType => GamePadType.Xboxonecontrol;
public Button_C X;
public Button_C Y;
public Button_C A;

View File

@ -2,7 +2,6 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Android;
using UnityEngine.InputSystem.DualShock;
using UnityEngine.InputSystem.XInput;
@ -24,18 +23,8 @@ namespace AxibugEmuOnline.Client.InputDevices.ForInputSystem
{
InputDevice_D newDevice = null;
if (ipdev is Keyboard) newDevice = new Keyboard_D(this);
else if (ipdev is DualShockGamepad)
{
if (ipdev is DualShock3GamepadHID) newDevice = new DualShockController_D(this, ps3: true);
else if (ipdev is DualShock4GamepadHID) newDevice = new DualShockController_D(this, ps4: true);
else if (ipdev is DualSenseGamepadHID) newDevice = new DualShockController_D(this, ps5: true);
else newDevice = new DualShockController_D(this);
}
else if (ipdev is XInputController)
{
newDevice = new XboxController_D(this);
}
else if (ipdev is DualShockGamepad) newDevice = new DualShockController_D(this);
else if (ipdev is XInputController) newDevice = new XboxController_D(this);
else if (ipdev is Gamepad) newDevice = new GamePad_D(this); //注意Gamepad的优先级,因为任何手柄,Inputsystem中的基类都是GamePad
if (newDevice != null)
@ -50,9 +39,9 @@ namespace AxibugEmuOnline.Client.InputDevices.ForInputSystem
{
if (m_devices.TryGetValue(ipdev, out var device))
{
m_devices.Remove(ipdev);
RemoveDeviceMapper(device);
RaiseDeviceLost(device);
m_devices.Remove(ipdev);
}
}
@ -67,7 +56,7 @@ namespace AxibugEmuOnline.Client.InputDevices.ForInputSystem
var ipdev = GetInputSystemDevice<InputDevice>(inputDevice);
Debug.Assert(ipdev != null, "不能对已离线的设备获取名称");
return $"{ipdev.description}_{ipdev.deviceId}";
return $"{ipdev.description.deviceClass}_{ipdev.description.interfaceName}_{ipdev.deviceId}";
}
protected override bool OnCheckOnline(InputDevice_D device)

View File

@ -1,105 +1,105 @@
using DG.Tweening;
using DG.Tweening.Core;
using DG.Tweening.Plugins.Options;
using UnityEngine;
namespace AxibugEmuOnline.Client
{
using DG.Tweening;
using DG.Tweening.Core;
using DG.Tweening.Plugins.Options;
using UnityEngine;
namespace AxibugEmuOnline.Client
{
/// <summary>
/// 选择指示器,用于控制RectTransform在屏幕坐标上的高宽和位置同步,同时带有过度动画
/// </summary>
public class Selector : MonoBehaviour
{
[SerializeField]
private Animator animator;
private RectTransform m_rect => transform as RectTransform;
private RectTransform m_target;
public RectTransform Target
{
get => m_target;
set
{
if (m_target == value) return;
m_target = value;
if (m_target == null)
{
if (m_trackTween != null)
{
m_trackTween.Kill();
m_trackTween = null;
}
return;
}
var itemUIRect = m_target.transform as RectTransform;
m_rect.pivot = itemUIRect.pivot;
m_rect.SetAsLastSibling();
animator.SetTrigger("reactive");
if (m_trackTween != null)
{
m_trackTween.Kill();
m_trackTween = null;
}
var startSize = m_rect.sizeDelta;
var startPos = m_rect.position;
m_trackTween = DOTween.To(
() => 0f,
/// </summary>
public class Selector : MonoBehaviour
{
[SerializeField]
private Animator animator;
private RectTransform m_rect => transform as RectTransform;
private RectTransform m_target;
public RectTransform Target
{
get => m_target;
set
{
if (m_target == value) return;
m_target = value;
if (m_target == null)
{
if (m_trackTween != null)
{
m_trackTween.Kill();
m_trackTween = null;
}
return;
}
var itemUIRect = m_target.transform as RectTransform;
m_rect.pivot = itemUIRect.pivot;
m_rect.SetAsLastSibling();
animator.SetTrigger("reactive");
if (m_trackTween != null)
{
m_trackTween.Kill();
m_trackTween = null;
}
var startSize = m_rect.sizeDelta;
var startPos = m_rect.position;
m_trackTween = DOTween.To(
() => 0f,
(_value) =>
{
var progress = _value;
m_rect.position = Vector3.Lerp(startPos, itemUIRect.position, progress);
m_rect.sizeDelta = Vector2.Lerp(startSize, itemUIRect.rect.size, progress);
},
1f,
0.125f);
1f,
0.125f);
m_trackTween.onComplete = () =>
{
m_trackTween = null;
};
}
}
};
}
}
private bool m_active;
private TweenerCore<float, float, FloatOptions> m_trackTween;
public bool Active
{
get => m_active;
set
{
if (m_active == value) return;
m_active = value;
animator.SetBool("active", value);
}
}
public void RefreshPosition()
{
if (Target != null)
{
m_rect.position = Target.position;
}
}
public bool Active
{
get => m_active;
set
{
if (m_active == value) return;
m_active = value;
animator.SetBool("active", value);
}
}
public void RefreshPosition()
{
if (Target != null)
{
m_rect.position = Target.position;
}
}
struct TrackTarget
{
Vector3 pos;
Vector2 size;
}
Vector3 pos;
Vector2 size;
}
struct TrackTargetOption : IPlugOptions
{
public void Reset()
{
}
}
}
}
}
}
}

View File

@ -1,64 +0,0 @@
using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.InputDevices;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace AxibugEmuOnline.Client.UI
{
/// <summary>
/// xmbÐÅÏ¢Ìõ,É豸ÐÅÏ¢ÌõUI
/// </summary>
public class DevicesBar : MonoBehaviour
{
[SerializeField]
DevicesInfoItem ITEM_TEMPLATE;
List<DevicesInfoItem> m_runtimeItemUI = new List<DevicesInfoItem>();
private void Awake()
{
ITEM_TEMPLATE.gameObject.SetActiveEx(false);
}
void OnEnable()
{
App.input.OnDeviceConnected += Input_OnDeviceConnected;
App.input.OnDeviceLost += Input_OnDeviceLost;
foreach (var device in App.input.GetDevices())
{
AddDeviceItemUI(device);
}
}
private void OnDisable()
{
App.input.OnDeviceConnected -= Input_OnDeviceConnected;
App.input.OnDeviceLost -= Input_OnDeviceLost;
foreach (var itemUI in m_runtimeItemUI)
{
Destroy(itemUI.gameObject);
}
m_runtimeItemUI.Clear();
}
private void AddDeviceItemUI(InputDevice_D device)
{
var newItemUI = GameObject.Instantiate(ITEM_TEMPLATE.gameObject, ITEM_TEMPLATE.transform.parent).GetComponent<DevicesInfoItem>();
newItemUI.gameObject.SetActiveEx(true);
newItemUI.SetData(device);
m_runtimeItemUI.Add(newItemUI);
}
void Input_OnDeviceConnected(InputDevice_D connectDevice)
{
AddDeviceItemUI(connectDevice);
}
private void Input_OnDeviceLost(InputDevice_D lostDevice)
{
var targetUI = m_runtimeItemUI.FirstOrDefault(itemUI => itemUI.Datacontext == lostDevice);
Destroy(targetUI.gameObject);
m_runtimeItemUI.Remove(targetUI);
}
}
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: e8b33a9300654744488a5dd3d4810dc2

View File

@ -1,25 +0,0 @@
using AxibugEmuOnline.Client.InputDevices;
using UnityEngine;
using UnityEngine.UI;
namespace AxibugEmuOnline.Client.UI
{
/// <summary>
/// 设备信息条 ItemUI
/// </summary>
public class DevicesInfoItem : MonoBehaviour
{
[SerializeField]
Image UI_Icon;
public InputDevice_D Datacontext { get; private set; }
internal void SetData(InputDevice_D device)
{
Datacontext = device;
string resourcePath = $"Icons/DevicesIcons/{device.PadType}";
UI_Icon.sprite = Resources.Load<Sprite>(resourcePath);
}
}
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: b1135cda2fa7d714f9d4b8a2a3130b4d

View File

@ -389,9 +389,6 @@ PlayerSettings:
- m_BuildTarget: AndroidPlayer
m_APIs: 0b000000
m_Automatic: 0
- m_BuildTarget: WindowsStandaloneSupport
m_APIs: 0200000012000000
m_Automatic: 0
m_BuildTargetVRSettings: []
m_DefaultShaderChunkSizeInMB: 16
m_DefaultShaderChunkCount: 0
@ -404,7 +401,6 @@ PlayerSettings:
iPhone: 1
tvOS: 1
m_BuildTargetGroupLightmapEncodingQuality: []
m_BuildTargetGroupHDRCubemapEncodingQuality: []
m_BuildTargetGroupLightmapSettings: []
m_BuildTargetGroupLoadStoreDebugModeSettings: []
m_BuildTargetNormalMapEncoding: []
@ -668,12 +664,12 @@ PlayerSettings:
webGLMemoryLinearGrowthStep: 16
webGLMemoryGeometricGrowthStep: 0.2
webGLMemoryGeometricGrowthCap: 96
webGLEnableWebGPU: 0
webGLPowerPreference: 2
webGLWebAssemblyTable: 0
webGLWebAssemblyBigInt: 0
webGLCloseOnQuit: 0
webWasm2023: 0
webEnableSubmoduleStrippingCompatibility: 0
scriptingDefineSymbols:
Android: DOTWEEN;ODIN_INSPECTOR;ODIN_INSPECTOR_3;ODIN_INSPECTOR_3_1;ODIN_INSPECTOR_EDITOR_ONLY;UNITY_POST_PROCESSING_STACK_V2
EmbeddedLinux: UNITY_POST_PROCESSING_STACK_V2
@ -820,4 +816,3 @@ PlayerSettings:
insecureHttpOption: 2
androidVulkanDenyFilterList: []
androidVulkanAllowFilterList: []
androidVulkanDeviceFilterListAsset: {fileID: 0}