├── .gitattributes ├── .gitignore ├── Editor.meta ├── Editor ├── Ascii.Editor.asmdef ├── Ascii.Editor.asmdef.meta ├── CurveRangePropertyDrawer.cs ├── CurveRangePropertyDrawer.cs.meta ├── CurveValueDraver.cs ├── CurveValueDraver.cs.meta ├── GradientDrawer.cs ├── GradientDrawer.cs.meta ├── OptionalDrawer.cs ├── OptionalDrawer.cs.meta ├── PassDrawer.cs └── PassDrawer.cs.meta ├── LICENSE.md ├── LICENSE.md.meta ├── README.md ├── README.md.meta ├── Runtime.meta ├── Runtime ├── Ascii.Runtime.asmdef ├── Ascii.Runtime.asmdef.meta ├── Ascii.meta ├── Ascii │ ├── Ascii.shader │ ├── Ascii.shader.meta │ ├── AsciiPass.cs │ ├── AsciiPass.cs.meta │ ├── AsciiVol.cs │ ├── AsciiVol.cs.meta │ ├── Data.meta │ └── Data │ │ ├── Gradient.meta │ │ ├── Gradient │ │ ├── ascii-gradient-a-1.png │ │ ├── ascii-gradient-a-1.png.meta │ │ ├── ascii-gradient-b-2(noise).png │ │ ├── ascii-gradient-b-2(noise).png.meta │ │ ├── ascii-gradient-c-1(pixelation).png │ │ ├── ascii-gradient-c-1(pixelation).png.meta │ │ ├── ascii-gradient-d-3(color temperature).png │ │ ├── ascii-gradient-d-3(color temperature).png.meta │ │ ├── ascii-gradient-e-1(signs).png │ │ ├── ascii-gradient-e-1(signs).png.meta │ │ ├── ascii-gradient-f-4 (shadow grain).png │ │ ├── ascii-gradient-f-4 (shadow grain).png.meta │ │ └── ascii-gradient-g-1.png │ │ ├── Palette.meta │ │ └── Palette │ │ ├── ascii-aap-64-1x.png │ │ ├── ascii-aap-64-1x.png.meta │ │ ├── ascii-astria-solseturs-1x.png │ │ ├── ascii-astria-solseturs-1x.png.meta │ │ ├── ascii-blk-nx64-1x.png │ │ ├── ascii-blk-nx64-1x.png.meta │ │ ├── ascii-borkfest-1x.png │ │ ├── ascii-borkfest-1x.png.meta │ │ ├── ascii-candied-heart-1x.png │ │ ├── ascii-candied-heart-1x.png.meta │ │ ├── ascii-chasm-1x.png │ │ ├── ascii-chasm-1x.png.meta │ │ ├── ascii-citrink-1x.png │ │ ├── ascii-citrink-1x.png.meta │ │ ├── ascii-dream-haze-8-1x.png │ │ ├── ascii-dream-haze-8-1x.png.meta │ │ ├── ascii-fuzzyfour-1x.png │ │ ├── ascii-fuzzyfour-1x.png.meta │ │ ├── ascii-inkpink-1x.png │ │ ├── ascii-inkpink-1x.png.meta │ │ ├── ascii-oil-6-1x.png │ │ ├── ascii-oil-6-1x.png.meta │ │ ├── ascii-one-bit-bw-1x.png │ │ ├── ascii-one-bit-bw-1x.png.meta │ │ ├── ascii-pollen8-1x.png │ │ ├── ascii-pollen8-1x.png.meta │ │ ├── ascii-sirens-at-night-1x.png │ │ ├── ascii-sirens-at-night-1x.png.meta │ │ ├── ascii-synthwave-9-1x.png │ │ ├── ascii-synthwave-9-1x.png.meta │ │ ├── ascii-twilight-5-1x.png │ │ ├── ascii-twilight-5-1x.png.meta │ │ ├── ascii-windows-95-256-colours-1x.png │ │ └── ascii-windows-95-256-colours-1x.png.meta ├── AsciiFx.cs ├── AsciiFx.cs.meta ├── Common.meta └── Common │ ├── CurveParameter.cs │ ├── CurveParameter.cs.meta │ ├── CurveRangeAttribute.cs │ ├── CurveRangeAttribute.cs.meta │ ├── CurveValue.cs │ ├── CurveValue.cs.meta │ ├── GradientParameter.cs │ ├── GradientParameter.cs.meta │ ├── GradientValue.cs │ ├── GradientValue.cs.meta │ ├── Optional.cs │ ├── Optional.cs.meta │ ├── RenderTarget.cs │ ├── RenderTarget.cs.meta │ ├── ShaderNameAttribute.cs │ ├── ShaderNameAttribute.cs.meta │ ├── Utils.cs │ ├── Utils.cs.meta │ ├── VolFx.Pass.cs │ └── VolFx.Pass.cs.meta ├── Samples~ ├── Ascii 0.asset ├── Ascii 0.asset.meta ├── Ascii 1.asset ├── Ascii 1.asset.meta ├── Ascii 2.asset ├── Ascii 2.asset.meta ├── Ascii 3.asset ├── Ascii 3.asset.meta ├── Ascii 4.asset ├── Ascii 4.asset.meta ├── Ascii 5.asset ├── Ascii 5.asset.meta ├── Ascii.unity ├── Ascii.unity.meta ├── Idol.png ├── Idol.png.meta ├── UrpAscii.asset ├── UrpAscii.asset.meta ├── UrpAscii_Renderer.asset └── UrpAscii_Renderer.asset.meta ├── package.json └── package.json.meta /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | Readme.docx 3 | Readme.docx.meta 4 | Readme.pdf 5 | Readme.pdf.meta 6 | Samples.meta 7 | Samples/ -------------------------------------------------------------------------------- /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df16ba73dc109144a96cef6cced5ecc8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Ascii.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ascii.Editor", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:26d22eb588a19c54187b906c9461bfef" 6 | ], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [ 17 | { 18 | "name": "www.nulltale.volfx", 19 | "expression": "1", 20 | "define": "VOL_FX" 21 | } 22 | ], 23 | "noEngineReferences": false 24 | } -------------------------------------------------------------------------------- /Editor/Ascii.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a965e07c15394484385863060fc7b9b1 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor/CurveRangePropertyDrawer.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx.Editor 8 | { 9 | [CustomPropertyDrawer(typeof(CurveRangeAttribute))] 10 | public class CurveRangePropertyDrawer : PropertyDrawer 11 | { 12 | public override float GetPropertyHeight(SerializedProperty property, GUIContent label) 13 | { 14 | return EditorGUIUtility.singleLineHeight; 15 | } 16 | 17 | public override void OnGUI(Rect rect, SerializedProperty property, GUIContent label) 18 | { 19 | EditorGUI.BeginProperty(rect, label, property); 20 | 21 | var curveRangeAttribute = (CurveRangeAttribute)attribute; 22 | var curveRanges = new Rect( 23 | curveRangeAttribute.Min.x, 24 | curveRangeAttribute.Min.y, 25 | curveRangeAttribute.Max.x - curveRangeAttribute.Min.x, 26 | curveRangeAttribute.Max.y - curveRangeAttribute.Min.y); 27 | 28 | EditorGUI.CurveField( 29 | rect, 30 | property, 31 | Color.green, 32 | curveRanges, 33 | label); 34 | 35 | EditorGUI.EndProperty(); 36 | } 37 | } 38 | } 39 | 40 | #endif -------------------------------------------------------------------------------- /Editor/CurveRangePropertyDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1d4e5587cc7c3f04da727c3fab99924c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/CurveValueDraver.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx.Editor 8 | { 9 | [CustomPropertyDrawer(typeof(CurveValue))] 10 | public class CurveValueDraver : PropertyDrawer 11 | { 12 | public override float GetPropertyHeight(SerializedProperty property, GUIContent label) 13 | { 14 | return UnityEditor.EditorGUIUtility.singleLineHeight; 15 | } 16 | 17 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 18 | { 19 | var curve = property.FindPropertyRelative("_curve"); 20 | EditorGUI.BeginChangeCheck(); 21 | EditorGUI.CurveField(position, curve, Color.green, new Rect(0, 0, 1, 1), label); 22 | if (EditorGUI.EndChangeCheck()) 23 | { 24 | var pixels = property.FindPropertyRelative("_pixels"); 25 | var val = curve.animationCurveValue; 26 | for (var n = 0; n < GradientValue.k_Width; n++) 27 | { 28 | var c = val.Evaluate(n / (float)(GradientValue.k_Width - 1)); 29 | pixels.GetArrayElementAtIndex(n).colorValue = new Color(c, c, c, c); 30 | } 31 | } 32 | } 33 | } 34 | } 35 | 36 | #endif -------------------------------------------------------------------------------- /Editor/CurveValueDraver.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d08967a594da601429d1bd5613663843 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/GradientDrawer.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx.Editor 8 | { 9 | [CustomPropertyDrawer(typeof(GradientValue))] 10 | public class GradientValueDraver : PropertyDrawer 11 | { 12 | public override float GetPropertyHeight(SerializedProperty property, GUIContent label) 13 | { 14 | return UnityEditor.EditorGUIUtility.singleLineHeight; 15 | } 16 | 17 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 18 | { 19 | var grad = property.FindPropertyRelative("_grad"); 20 | EditorGUI.BeginChangeCheck(); 21 | EditorGUI.PropertyField(position, grad, label); 22 | if (EditorGUI.EndChangeCheck()) 23 | { 24 | var pixels = property.FindPropertyRelative("_pixels"); 25 | var val = _getGradient(grad); 26 | for (var n = 0; n < GradientValue.k_Width; n++) 27 | pixels.GetArrayElementAtIndex(n).colorValue = val.Evaluate(n / (float)(GradientValue.k_Width - 1)); 28 | } 29 | 30 | // ======================================================================= 31 | Gradient _getGradient(SerializedProperty gradientProperty) 32 | { 33 | #if UNITY_2022_1_OR_NEWER 34 | return grad.gradientValue; 35 | #else 36 | System.Reflection.PropertyInfo propertyInfo = typeof(SerializedProperty).GetProperty("gradientValue", 37 | System.Reflection.BindingFlags.Public | 38 | System.Reflection.BindingFlags.NonPublic | 39 | System.Reflection.BindingFlags.Instance); 40 | 41 | return propertyInfo.GetValue(gradientProperty, null) as Gradient; 42 | #endif 43 | } 44 | } 45 | } 46 | } 47 | 48 | #endif -------------------------------------------------------------------------------- /Editor/GradientDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4b5ffdd2c62f4a94790bbf473d4b3218 3 | timeCreated: 1699537045 -------------------------------------------------------------------------------- /Editor/OptionalDrawer.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using UnityEditor; 4 | using UnityEditorInternal; 5 | using UnityEngine; 6 | 7 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 8 | namespace VolFx.Editor 9 | { 10 | [CustomPropertyDrawer(typeof(Optional<>))] 11 | public class OptionalDrawer : PropertyDrawer 12 | { 13 | private const float k_ToggleWidth = 18; 14 | 15 | // ======================================================================= 16 | public override float GetPropertyHeight(SerializedProperty property, GUIContent label) 17 | { 18 | var valueProperty = property.FindPropertyRelative("value"); 19 | return EditorGUI.GetPropertyHeight(valueProperty); 20 | } 21 | 22 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 23 | { 24 | var valueProperty = property.FindPropertyRelative("value"); 25 | var enabledProperty = property.FindPropertyRelative("enabled"); 26 | 27 | position.width -= k_ToggleWidth; 28 | using (new EditorGUI.DisabledGroupScope(!enabledProperty.boolValue)) 29 | { 30 | // hardcore fix!#@ (for some reason PropertyField working with LayerMask in new unity version) 31 | if (valueProperty.propertyType == SerializedPropertyType.LayerMask) 32 | valueProperty.intValue = InternalEditorUtility.ConcatenatedLayersMaskToLayerMask(EditorGUI.MaskField(position, label, InternalEditorUtility.LayerMaskToConcatenatedLayersMask(valueProperty.intValue), InternalEditorUtility.layers)); 33 | else 34 | EditorGUI.PropertyField(position, valueProperty, label, true); 35 | } 36 | 37 | var indent = EditorGUI.indentLevel; 38 | EditorGUI.indentLevel = 0; 39 | 40 | var togglePos = new Rect(position.x + position.width + EditorGUIUtility.standardVerticalSpacing, position.y, k_ToggleWidth, EditorGUIUtility.singleLineHeight); 41 | EditorGUI.PropertyField(togglePos, enabledProperty, GUIContent.none); 42 | 43 | EditorGUI.indentLevel = indent; 44 | } 45 | } 46 | } 47 | 48 | #endif -------------------------------------------------------------------------------- /Editor/OptionalDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fc2c7d2d934059f4f956745a1e40607f 3 | timeCreated: 1697616861 -------------------------------------------------------------------------------- /Editor/PassDrawer.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using UnityEditor; 5 | using UnityEngine; 6 | using Object = UnityEngine.Object; 7 | 8 | // AsciiFx © NullTale - https://x.com/NullTale 9 | namespace VolFx.Editor 10 | { 11 | [CustomPropertyDrawer(typeof(VolFx.Pass), true)] 12 | public class PassDrawer : PropertyDrawer 13 | { 14 | // ======================================================================= 15 | public override float GetPropertyHeight(SerializedProperty property, GUIContent label) 16 | { 17 | return GetObjectReferenceHeight(property); 18 | } 19 | 20 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 21 | { 22 | var pass = property.objectReferenceValue; 23 | if (pass == null) 24 | { 25 | pass = ScriptableObject.CreateInstance(fieldInfo.FieldType); 26 | pass.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector; 27 | 28 | if (string.IsNullOrEmpty(AssetDatabase.GetAssetPath(property.serializedObject.targetObject)) == false) 29 | { 30 | AssetDatabase.AddObjectToAsset(pass, property.serializedObject.targetObject); 31 | property.objectReferenceValue = pass; 32 | 33 | EditorUtility.SetDirty(property.serializedObject.targetObject); 34 | EditorUtility.SetDirty(pass); 35 | 36 | property.serializedObject.ApplyModifiedPropertiesWithoutUndo(); 37 | AssetDatabase.SaveAssets(); 38 | } 39 | } 40 | 41 | DrawObjectReference(property, position); 42 | } 43 | 44 | // ======================================================================= 45 | public static float GetObjectReferenceHeight(SerializedProperty element) 46 | { 47 | return GetObjectReferenceHeight(element.objectReferenceValue, element.isExpanded); 48 | } 49 | 50 | public static float GetObjectReferenceHeight(Object obj, bool isExpanded, Predicate filter = null) 51 | { 52 | if (obj == null) 53 | return EditorGUIUtility.singleLineHeight; 54 | 55 | using var so = new SerializedObject(obj); 56 | var totalHeight = 0f; 57 | 58 | using (var iterator = so.GetIterator()) 59 | { 60 | if (iterator.NextVisible(true)) 61 | { 62 | do 63 | { 64 | var childProperty = so.FindProperty(iterator.name); 65 | 66 | if (childProperty.name.Equals("m_Script", System.StringComparison.Ordinal)) 67 | continue; 68 | 69 | if (childProperty.name.Equals("_active", System.StringComparison.Ordinal)) 70 | continue; 71 | 72 | if (filter != null && filter.Invoke(childProperty) == false) 73 | continue; 74 | 75 | // if (NaughtyAttributes.Editor.PropertyUtility.IsVisible(childProperty) == false) 76 | // continue; 77 | 78 | totalHeight += EditorGUI.GetPropertyHeight(childProperty); 79 | } 80 | while (iterator.NextVisible(false)); 81 | } 82 | } 83 | 84 | totalHeight += EditorGUIUtility.standardVerticalSpacing; 85 | return totalHeight; 86 | } 87 | 88 | public static void DrawObjectReference(SerializedProperty element, Rect position) 89 | { 90 | DrawObjectReference(element.objectReferenceValue, element.isExpanded, position); 91 | } 92 | 93 | public static void DrawObjectReference(Object obj, bool isExpanded, Rect position, bool decorativeBox = false, Predicate filter = null) 94 | { 95 | if (obj == null) 96 | return; 97 | 98 | using var so = new SerializedObject(obj); 99 | 100 | EditorGUI.BeginChangeCheck(); 101 | 102 | using (var iterator = so.GetIterator()) 103 | { 104 | var yOffset = EditorGUIUtility.standardVerticalSpacing; 105 | if (iterator.NextVisible(true)) 106 | { 107 | do 108 | { 109 | var childProperty = so.FindProperty(iterator.name); 110 | if (filter != null && filter.Invoke(childProperty) == false) 111 | continue; 112 | 113 | if (childProperty.name.Equals("m_Script", StringComparison.Ordinal)) 114 | continue; 115 | 116 | if (childProperty.name.Equals("_active", System.StringComparison.Ordinal)) 117 | continue; 118 | 119 | var childHeight = EditorGUI.GetPropertyHeight(childProperty); 120 | var childRect = new Rect() 121 | { 122 | x = position.x, 123 | y = position.y + yOffset, 124 | width = position.width, 125 | height = childHeight 126 | }; 127 | 128 | EditorGUI.PropertyField(childRect, iterator, true); 129 | 130 | yOffset += childHeight + EditorGUIUtility.standardVerticalSpacing; 131 | } 132 | while (iterator.NextVisible(false)); 133 | } 134 | 135 | if (decorativeBox) 136 | { 137 | var pos = position; 138 | pos.x = 0f; 139 | pos.y += EditorGUIUtility.singleLineHeight; 140 | pos.width += 100f; 141 | pos.height = yOffset - EditorGUIUtility.singleLineHeight; 142 | 143 | GUI.Box(pos, GUIContent.none); 144 | } 145 | 146 | if (EditorGUI.EndChangeCheck()) 147 | so.ApplyModifiedProperties(); 148 | } 149 | } 150 | 151 | [InitializeOnLoadMethod] 152 | public static void CopyrightInfo() 153 | { 154 | var type = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name.Replace(".Editor", ""); 155 | var link = "https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/280821"; 156 | 157 | var ssc = SessionState.GetInt($"CopyrightInfo_{type}_33", UnityEngine.Random.Range(3, 7 + 1)); 158 | SessionState.SetInt($"CopyrightInfo_{type}_33", ssc + 1); 159 | 160 | if (SessionState.GetBool($"CopyrightInfo_{type}", false) == false || ssc == 333) 161 | { 162 | Debug.Log($"• You are using a Non-Commercial version of {type} developed by NullTale.\n" + 163 | "When using this version, please remember to specify Author Attribution according to the Licence used.\n" + 164 | "------------- - - - - - -\n" + 165 | $"A full use Licence can be acquired on Asset Store or negotiated with the Author in cases of special licensing.\n \n"); 166 | 167 | SessionState.SetBool($"CopyrightInfo_{type}", true); 168 | } 169 | } 170 | } 171 | } 172 | 173 | #endif 174 | -------------------------------------------------------------------------------- /Editor/PassDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: afceba07810e3a442b9f8e8a16a6015d 3 | timeCreated: 1697620992 -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2023 NullTale
2 | License for Non-Commercial Use with Author Attribution
3 | 4 | • For commercial use, consider purchasing a license from the Asset Store, or contact the author.
5 | 6 | • This product cannot be used in any commercial projects or activities with monetization purposes.
7 | • You may not sell, publish, or distribute the source code or any modifications of this product as your own.
8 | • The source code cannot be used to create other tools, be ported to other engines, or included in any commercial product.
9 | • Attribution ("Copyright (c) 2023 NullTale") must be retained in the final version of the product, including in executable or distributed forms.
10 | 11 | • You are free to use this product in non-commercial jam games, studies, and applications.
12 | • You may tweak or modify the product for personal use, without the right to distribute.
13 | 14 | • Any violation of the terms of this license may result in legal consequences.
15 | 16 | The software is provided "as is," without warranty of any kind, express or implied.
17 | The author disclaims any responsibility for illegal use and is not liable for any consequences arising from such use.
18 | 19 | ml: nulltale@gmail.com
20 | sm: https://x.com/nulltale
21 | ds: https://discord.gg/CkdQvtA5un
22 | -------------------------------------------------------------------------------- /LICENSE.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 58df61283fad01d40bdaecf5321cf72f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AsciiFx 2 | Dev by NullTale
3 | [![Itch](https://img.shields.io/badge/Web-Itch?logo=Itch.io&color=white)](https://nulltale.itch.io) 4 | [![Twitter](https://img.shields.io/badge/Twitter-Twitter?logo=X&color=red)](https://twitter.com/NullTale) 5 | [![Tg](https://img.shields.io/badge/Tg-Telegram?logo=telegram&color=white)](https://t.me/nulltalescape)
6 | [![Asset Store](https://img.shields.io/badge/Asset%20Store-asd?logo=Unity&color=blue)](https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/280821) 7 | 8 | Variable Ascii effect for Unity Urp, controlled via volume profile
9 | Works as render feature or a pass for selective post processing [VolFx](https://github.com/NullTale/VolFx) 10 | 11 | ![_cover](https://github.com/NullTale/AsciiFx/assets/1497430/c1eec0da-d88d-4aaf-af3d-9dc33b5d9f57) 12 | 13 | ## Features 14 | * Animated signs 15 | * Smooth interpolation 16 | * Variable background and signs colorization 17 | * Custom palettes 18 | 19 | ![_cover](https://github.com/NullTale/AsciiFx/assets/1497430/78fb6997-3ff1-40c0-bc32-866280090e61)
20 | ![_cover](https://github.com/NullTale/AsciiFx/assets/1497430/6f75fa3a-1772-47c0-a12a-ca2cf6fba22c)
21 | 22 | ## Part of Artwork Project 23 | 24 | * [Vhs](https://github.com/NullTale/VhsFx) 25 | * [OldMovie](https://github.com/NullTale/OldMovieFx) 26 | * [GradientMap](https://github.com/NullTale/GradientMapFilter) 27 | * [Outline](https://github.com/NullTale/OutlineFilter) 28 | * [Flow](https://github.com/NullTale/FlowFx) 29 | * [Pixelation](https://github.com/NullTale/PixelationFx) 30 | * [Ascii] 31 | * [Dither](https://github.com/NullTale/DitherFx) 32 | * ... 33 | 34 | ## Usage 35 | Install via Unity [PackageManager](https://docs.unity3d.com/Manual/upm-ui-giturl.html)
36 | Add `AsciiFx` feature to the UrpRenderer, control via volume profile 37 | 38 | ``` 39 | https://github.com/NullTale/AsciiFx.git 40 | ``` 41 | 42 | Render feature contains a few global parameters
43 | to control default settings and animation noise resolution
44 | 45 |
46 | 47 | ## Volume settings: 48 | * Ascii color - signs color multiplyer interpolated by alpha beetween originial image color and defined in settings 49 | * Image color - cell color multiplyer 50 | * Gradient - custom signs gradient 51 | * Depth - gradient height in case if used atimated signs atlas or for glitch effect 52 | * Fps - animation frame rate, applied via screen space noise defined in render feature 53 | * Platte - custom pallet for color replacement 54 | * Impact - impact of the custom palette, interpolation between original image color and graded via palette 55 | 56 | > One of the volumes from PackageManager Samples 57 | 58 |
59 | 60 | 61 | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ff2589cd801bb54f932d7baa191d4f3 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9927f008b7cc6b646be4c7d6f9347a13 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Ascii.Runtime.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ascii.Runtime", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:df380645f10b7bc4b97d4f5eb6303d95", 6 | "GUID:15fc0a57446b3144c949da3e2b9737a9", 7 | "GUID:dc4014d4779276744964fcb5a4a453d9", 8 | "GUID:90b40cd545ffe604cb2f7e5fae44f47c" 9 | ], 10 | "includePlatforms": [], 11 | "excludePlatforms": [], 12 | "allowUnsafeCode": false, 13 | "overrideReferences": false, 14 | "precompiledReferences": [], 15 | "autoReferenced": true, 16 | "defineConstraints": [], 17 | "versionDefines": [ 18 | { 19 | "name": "www.nulltale.volfx", 20 | "expression": "1", 21 | "define": "VOL_FX" 22 | } 23 | ], 24 | "noEngineReferences": false 25 | } -------------------------------------------------------------------------------- /Runtime/Ascii.Runtime.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 26d22eb588a19c54187b906c9461bfef 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime/Ascii.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ba659a26328ea7479cb7bdb49d16d9e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Ascii/Ascii.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/VolFx/Ascii" 2 | { 3 | SubShader 4 | { 5 | Cull Off 6 | ZWrite Off 7 | ZTest Always 8 | ZClip false 9 | 10 | Pass // 0 11 | { 12 | Name "Ascii" 13 | 14 | HLSLPROGRAM 15 | 16 | #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" 17 | #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" 18 | 19 | #pragma vertex vert 20 | #pragma fragment frag 21 | 22 | #pragma multi_compile_local USE_PALETTE _ 23 | 24 | sampler2D _MainTex; 25 | sampler2D _GradTex; 26 | sampler2D _NoiseTex; 27 | sampler2D _PaletteTex; 28 | 29 | uniform float _Dither; 30 | 31 | uniform float4 _DitherMad; 32 | uniform float4 _GradData; // x, y - pixels, z - 1 / gradient lenght 33 | uniform float4 _AsciiColor; 34 | uniform float4 _ImageColor; 35 | uniform float4 _NoiseMad; 36 | uniform float _LutWeight; 37 | 38 | struct vert_in 39 | { 40 | float4 vertex : POSITION; 41 | float2 uv : TEXCOORD0; 42 | }; 43 | 44 | struct frag_in 45 | { 46 | float2 uv : TEXCOORD0; 47 | float4 vertex : SV_POSITION; 48 | }; 49 | 50 | frag_in vert(vert_in v) 51 | { 52 | frag_in o; 53 | o.vertex = v.vertex; 54 | o.uv = v.uv - float2(.5, .5); 55 | return o; 56 | } 57 | 58 | half3 GetLinearToSRGB(half3 c) 59 | { 60 | #if _USE_FAST_SRGB_LINEAR_CONVERSION 61 | return FastLinearToSRGB(c); 62 | #else 63 | return LinearToSRGB(c); 64 | #endif 65 | } 66 | 67 | half3 GetSRGBToLinear(half3 c) 68 | { 69 | #if _USE_FAST_SRGB_LINEAR_CONVERSION 70 | return FastSRGBToLinear(c); 71 | #else 72 | return SRGBToLinear(c); 73 | #endif 74 | } 75 | 76 | #define LUT_SIZE 16. 77 | #define LUT_SIZE_MINUS (16. - 1.) 78 | 79 | float3 lut_sample(in half3 col, const sampler2D tex) 80 | { 81 | //col *= .99; 82 | #if !defined(UNITY_COLORSPACE_GAMMA) 83 | float3 uvw = GetLinearToSRGB(col); 84 | #else 85 | float3 uvw = col; 86 | #endif 87 | float2 uv; 88 | 89 | // get replacement color from the lut set 90 | uv.y = uvw.y * (LUT_SIZE_MINUS / LUT_SIZE) + .5 * (1. / LUT_SIZE); 91 | uv.x = uvw.x * (LUT_SIZE_MINUS / (LUT_SIZE * LUT_SIZE)) + .5 * (1. / (LUT_SIZE * LUT_SIZE)) + floor(uvw.z * LUT_SIZE) / LUT_SIZE; 92 | 93 | float3 lutColor = tex2D(tex, uv).rgb; 94 | 95 | #if !defined(UNITY_COLORSPACE_GAMMA) 96 | lutColor = GetSRGBToLinear(lutColor.xyz); 97 | #endif 98 | 99 | return lutColor; 100 | } 101 | 102 | // sample single line gradient 103 | float4 grad_sample(in float2 uv, const in float val, const sampler2D tex) 104 | { 105 | // xy - pix * aspect, z - sample scale, w - sample count 106 | uv.x *= _GradData.z; 107 | uv.x += floor(val * _GradData.w) * _GradData.z; 108 | 109 | return tex2D(tex, uv); 110 | } 111 | 112 | float4 grad_sample(in float2 uv, const in float val, const in float ramp, const sampler2D tex) 113 | { 114 | // xy - pix * aspect, z - sample scale, w - sample count 115 | uv.x *= _GradData.z; 116 | uv.x += floor(val / _GradData.z) * _GradData.z; 117 | 118 | uv.y *= _GradData.w; 119 | uv.y += floor((ramp) / _GradData.w) * _GradData.w; 120 | 121 | return tex2D(tex, uv); 122 | } 123 | 124 | half luma(half3 rgb) 125 | { 126 | return dot(rgb, half3(.299, .585, .114)); 127 | } 128 | 129 | half4 frag(frag_in i) : COLOR 130 | { 131 | float2 set = float2(i.uv.x * _GradData.x, i.uv.y * _GradData.y); 132 | float2 suv = frac(set - .5); 133 | float2 puv = float2(round(set.x) / _GradData.x + .5 , round(set.y) / _GradData.y + .5); 134 | 135 | half4 col = saturate(tex2D(_MainTex, puv)); 136 | float noise = tex2D(_NoiseTex, mad(puv, _NoiseMad.xy, _NoiseMad.zw)); 137 | float4 asciiCol = grad_sample(suv, pow(luma(col), .7), noise, _GradTex); 138 | #ifdef USE_PALETTE 139 | col.rgb = lerp(col.rgb, lut_sample(col.rgb, _PaletteTex), _LutWeight); 140 | #endif 141 | asciiCol.rgb *= lerp(col.rgb, _AsciiColor.rgb, _AsciiColor.a); 142 | asciiCol.a *= col.a; 143 | 144 | col *= _ImageColor; 145 | return lerp(col, asciiCol, asciiCol.a); 146 | } 147 | ENDHLSL 148 | } 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /Runtime/Ascii/Ascii.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f1dac63214cc5a04abaeb35ca448e492 3 | timeCreated: 1696967500 -------------------------------------------------------------------------------- /Runtime/Ascii/AsciiPass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using UnityEngine; 6 | using Random = UnityEngine.Random; 7 | 8 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 9 | namespace VolFx 10 | { 11 | [ShaderName("Hidden/VolFx/Ascii")] 12 | public class AsciiPass : VolFx.Pass 13 | { 14 | private static readonly int s_GradData = Shader.PropertyToID("_GradData"); 15 | private static readonly int s_GradTex = Shader.PropertyToID("_GradTex"); 16 | private static readonly int s_AsciiColor = Shader.PropertyToID("_AsciiColor"); 17 | private static readonly int s_ImageColor = Shader.PropertyToID("_ImageColor"); 18 | private static readonly int s_NoiseTex = Shader.PropertyToID("_NoiseTex"); 19 | private static readonly int s_NoiseMad = Shader.PropertyToID("_NoiseMad"); 20 | private static readonly int s_PaletteLut = Shader.PropertyToID("_PaletteTex"); 21 | private static readonly int s_LutWeight = Shader.PropertyToID("_LutWeight"); 22 | 23 | [Range(0, 1)] 24 | [Tooltip("Screen noise scale")] 25 | public float _noiseScale = .5f; 26 | 27 | [Header("Default volume overrides")] 28 | [Tooltip("Default sign texture")] 29 | public Texture2D _gradient; 30 | [Tooltip("Default palette texture")] 31 | public Optional _palette = new Optional(null, false); 32 | [Range(1, 7)] 33 | [Tooltip("Height of the animated gradient in signs(triggered by screen noise)")] 34 | public int _depth = 1; 35 | [Range(0, 1)] 36 | [Tooltip("Default Image scale")] 37 | public float _scale = 1f; 38 | [Tooltip("Scale interpolation curve, used for smooth transition")] 39 | [CurveRange(0, 0, 1, .5f)] 40 | public AnimationCurve _scaleLerp = new AnimationCurve(new Keyframe[] 41 | { 42 | new Keyframe(0, 0, .0369f, 0.0369f, .0f, .8459f), 43 | new Keyframe(1, .5f, 56.8515f, 56.8515f, .0104f, .0f) 44 | }); 45 | [Range(0, 120)] 46 | [Tooltip("Default Signs anime frame rate")] 47 | public int _frameRate; 48 | [Tooltip("Default Signs color")] 49 | public Color _ascii = Color.white; 50 | [Tooltip("Default Image color")] 51 | public Color _image = Color.black; 52 | 53 | private int _frame; 54 | private Texture2D _noiseTex; 55 | private Vector4 _noiseMad = new Vector4(1, 1, 0, 0); 56 | 57 | private Dictionary _paletteCache = new Dictionary(); 58 | 59 | // ======================================================================= 60 | public override void Init() 61 | { 62 | _frame = 0; 63 | _paletteCache.Clear(); 64 | } 65 | 66 | public override bool Validate(Material mat) 67 | { 68 | var settings = Stack.GetComponent(); 69 | 70 | if (settings.IsActive() == false) 71 | return false; 72 | 73 | // access the palette 74 | var palette = settings.m_Palette.value as Texture2D; 75 | if (palette == null) 76 | palette = _palette.GetValueOrDefault(); 77 | 78 | Texture2D paletteLut = null; 79 | if (palette != null && _paletteCache.TryGetValue(palette, out paletteLut) == false) 80 | { 81 | paletteLut = LutGenerator.Generate(palette); 82 | _paletteCache.Add(palette, paletteLut); 83 | } 84 | var usePalette = palette != null && settings.m_Impact.value > 0f; 85 | validatePalette(usePalette); 86 | if (usePalette) 87 | { 88 | mat.SetTexture(s_PaletteLut, paletteLut); 89 | mat.SetFloat(s_LutWeight, settings.m_Impact.value); 90 | } 91 | 92 | var fps = settings.m_Fps.overrideState ? settings.m_Fps.value : _frameRate; 93 | var curFrame = Mathf.FloorToInt(Time.unscaledTime / (1f / fps)); 94 | var nextFrame = _frame != curFrame; 95 | if (nextFrame) 96 | _frame = curFrame; 97 | 98 | var scale = _scaleLerp.Evaluate(settings.m_Scale.overrideState ? settings.m_Scale.value : _scale); 99 | 100 | var grad = settings.m_Gradient.value; 101 | if (grad == null) 102 | grad = _gradient; 103 | var depth = settings.m_Depth.overrideState ? settings.m_Depth.value : _depth; 104 | 105 | mat.SetTexture(s_GradTex, grad); 106 | 107 | var signHeight = grad.height / depth; 108 | var gradWidth = (float)(grad.width / signHeight); 109 | var gradHeight = (float)depth; 110 | mat.SetVector(s_GradData, new Vector4(Screen.width * scale, Screen.height * scale, 1f / gradWidth, 1f / gradHeight)); 111 | 112 | var asciiCol = settings.m_Ascii.overrideState ? settings.m_Ascii.value : _ascii; 113 | var imageCol = settings.m_Image.overrideState ? settings.m_Image.value : _image; 114 | 115 | mat.SetColor(s_AsciiColor, asciiCol); 116 | mat.SetColor(s_ImageColor, imageCol); 117 | 118 | _validateNoise(); 119 | mat.SetTexture(s_NoiseTex, _noiseTex); 120 | 121 | if (nextFrame) 122 | { 123 | _noiseMad.z = Random.value; 124 | _noiseMad.w = Random.value; 125 | } 126 | _noiseMad.x = _noiseScale; 127 | _noiseMad.y = _noiseScale; 128 | 129 | mat.SetVector(s_NoiseMad, _noiseMad); 130 | 131 | return true; 132 | 133 | // ----------------------------------------------------------------------- 134 | void validatePalette(bool isOn) 135 | { 136 | if (mat.IsKeywordEnabled("USE_PALETTE") == isOn) 137 | return; 138 | 139 | if (isOn) mat.EnableKeyword("USE_PALETTE"); 140 | else mat.DisableKeyword("USE_PALETTE"); 141 | } 142 | 143 | void _validateNoise() 144 | { 145 | var width = Screen.width / 2; 146 | var height = Screen.height / 2; 147 | 148 | if (_noiseTex == null || _noiseTex.width != width || _noiseTex.height != height) 149 | { 150 | _noiseTex = new Texture2D(width, height); 151 | _noiseTex.filterMode = FilterMode.Bilinear; 152 | _noiseTex.wrapMode = TextureWrapMode.Repeat; 153 | 154 | var pix = new Color[_noiseTex.width * _noiseTex.height]; 155 | for (var n = 0; n < _noiseTex.width * _noiseTex.height; n++) 156 | { 157 | var val = Random.value; 158 | pix[n] = new Color(val, val, val, 1f); 159 | } 160 | 161 | _noiseTex.SetPixels(pix); 162 | _noiseTex.Apply(); 163 | } 164 | } 165 | } 166 | 167 | protected override bool _editorValidate => _gradient == null || (_palette != null && _palette.Value == null); 168 | protected override void _editorSetup(string folder, string asset) 169 | { 170 | #if UNITY_EDITOR 171 | var sep = Path.DirectorySeparatorChar; 172 | 173 | if (_gradient == null) 174 | _gradient = UnityEditor.AssetDatabase.LoadAssetAtPath($"{folder}{sep}Data{sep}Gradient{sep}ascii-gradient-a-1.png"); 175 | 176 | if (_palette.Value == null) 177 | _palette.Value = UnityEditor.AssetDatabase.LoadAssetAtPath($"{folder}{sep}Data{sep}Palette{sep}ascii-one-bit-bw-1x.png"); 178 | #endif 179 | } 180 | // ======================================================================= 181 | 182 | public static class LutGenerator 183 | { 184 | private static Texture2D _lut16; 185 | private static Texture2D _lut32; 186 | private static Texture2D _lut64; 187 | 188 | // ======================================================================= 189 | [Serializable] 190 | public enum LutSize 191 | { 192 | x16, 193 | x32, 194 | x64 195 | } 196 | 197 | [Serializable] 198 | public enum Gamma 199 | { 200 | rec601, 201 | rec709, 202 | rec2100, 203 | average, 204 | } 205 | 206 | // ======================================================================= 207 | public static Texture2D Generate(Texture2D _palette, LutSize lutSize = LutSize.x16, Gamma gamma = Gamma.rec601) 208 | { 209 | var clean = _getLut(lutSize); 210 | var lut = clean.GetPixels(); 211 | var colors = _palette.GetPixels(); 212 | 213 | var _lutPalette = new Texture2D(clean.width, clean.height, TextureFormat.ARGB32, false); 214 | 215 | // grade colors from lut to palette by rgb 216 | var palette = lut.Select(lutColor => colors.Select(gradeColor => (grade: compare(lutColor, gradeColor), color: gradeColor)).OrderBy(n => n.grade).First()) 217 | .Select(n => n.color) 218 | .ToArray(); 219 | 220 | _lutPalette.SetPixels(palette); 221 | _lutPalette.filterMode = FilterMode.Point; 222 | _lutPalette.wrapMode = TextureWrapMode.Clamp; 223 | _lutPalette.Apply(); 224 | 225 | return _lutPalette; 226 | 227 | // ----------------------------------------------------------------------- 228 | float compare(Color a, Color b) 229 | { 230 | // compare colors by grayscale distance 231 | var weight = gamma switch 232 | { 233 | Gamma.rec601 => new Vector3(0.299f, 0.587f, 0.114f), 234 | Gamma.rec709 => new Vector3(0.2126f, 0.7152f, 0.0722f), 235 | Gamma.rec2100 => new Vector3(0.2627f, 0.6780f, 0.0593f), 236 | Gamma.average => new Vector3(0.33333f, 0.33333f, 0.33333f), 237 | _ => throw new ArgumentOutOfRangeException() 238 | }; 239 | 240 | // var c = a.ToVector3().Mul(weight) - b.ToVector3().Mul(weight); 241 | var c = new Vector3(a.r * weight.x, a.g * weight.y, a.b * weight.z) - new Vector3(b.r * weight.x, b.g * weight.y, b.b * weight.z); 242 | 243 | return c.magnitude; 244 | } 245 | } 246 | 247 | // ======================================================================= 248 | internal static int _getLutSize(LutSize lutSize) 249 | { 250 | return lutSize switch 251 | { 252 | LutSize.x16 => 16, 253 | LutSize.x32 => 32, 254 | LutSize.x64 => 64, 255 | _ => throw new ArgumentOutOfRangeException() 256 | }; 257 | } 258 | 259 | internal static Texture2D _getLut(LutSize lutSize) 260 | { 261 | var size = _getLutSize(lutSize); 262 | var _lut = lutSize switch 263 | { 264 | LutSize.x16 => _lut16, 265 | LutSize.x32 => _lut32, 266 | LutSize.x64 => _lut64, 267 | _ => throw new ArgumentOutOfRangeException(nameof(lutSize), lutSize, null) 268 | }; 269 | 270 | if (_lut != null && _lut.height == size) 271 | return _lut; 272 | 273 | _lut = new Texture2D(size * size, size, TextureFormat.RGBA32, 0, false); 274 | _lut.filterMode = FilterMode.Point; 275 | 276 | for (var y = 0; y < size; y++) 277 | for (var x = 0; x < size * size; x++) 278 | _lut.SetPixel(x, y, _lutAt(x, y)); 279 | 280 | _lut.Apply(); 281 | return _lut; 282 | 283 | // ----------------------------------------------------------------------- 284 | Color _lutAt(int x, int y) 285 | { 286 | return new Color((x % size) / (size - 1f), y / (size - 1f), Mathf.FloorToInt(x / (float)size) * (1f / (size - 1f)), 1f); 287 | } 288 | } 289 | } 290 | } 291 | } 292 | -------------------------------------------------------------------------------- /Runtime/Ascii/AsciiPass.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce280e1cc6cb7f245989788c986a5df6 3 | timeCreated: 1696967500 -------------------------------------------------------------------------------- /Runtime/Ascii/AsciiVol.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using UnityEngine.Rendering; 4 | using UnityEngine.Rendering.Universal; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx 8 | { 9 | [Serializable, VolumeComponentMenu("VolFx/Ascii")] 10 | public sealed class AsciiVol : VolumeComponent, IPostProcessComponent 11 | { 12 | public ClampedFloatParameter m_Scale = new ClampedFloatParameter(1, 0, 1); 13 | public ColorParameter m_Ascii = new ColorParameter(new Color(1, 1, 1, 0), false); 14 | public ColorParameter m_Image = new ColorParameter(Color.white, false); 15 | 16 | public Texture2DParameter m_Gradient = new Texture2DParameter(null, false); 17 | public NoInterpClampedIntParameter m_Depth = new NoInterpClampedIntParameter(1, 1, 7); 18 | public ClampedIntParameter m_Fps = new ClampedIntParameter(0, 0, 120); 19 | public Texture2DParameter m_Palette = new Texture2DParameter(null, false); 20 | public ClampedFloatParameter m_Impact = new ClampedFloatParameter(0, 0, 1); 21 | 22 | // ======================================================================= 23 | public bool IsActive() => active && (m_Scale.value < 1f || m_Impact.value > 0f); 24 | 25 | public bool IsTileCompatible() => false; 26 | } 27 | } -------------------------------------------------------------------------------- /Runtime/Ascii/AsciiVol.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 40a23474bda613d49a02ce73101f45d1 3 | timeCreated: 1696967500 -------------------------------------------------------------------------------- /Runtime/Ascii/Data.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ab9ddf61dd74c24a8fd4144d6ff44e9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0a4b13c66d44b3044b4a037176520c3a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-a-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Gradient/ascii-gradient-a-1.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-a-1.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 31cbf367fc7af7740ad97f1ef54ee0f0 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 2 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Standalone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Server 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 5e97eb03825dee720800000000000000 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | nameFileIdTable: {} 136 | mipmapLimitGroupName: 137 | pSDRemoveMatte: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-b-2(noise).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Gradient/ascii-gradient-b-2(noise).png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-b-2(noise).png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3a56f0d105434de46b2380d408fa0c3f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 1 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 2 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Standalone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Server 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 5e97eb03825dee720800000000000000 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | nameFileIdTable: {} 136 | mipmapLimitGroupName: 137 | pSDRemoveMatte: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-c-1(pixelation).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Gradient/ascii-gradient-c-1(pixelation).png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-c-1(pixelation).png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2f8a4131aa1f6b74f9b9db4c918db924 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 2 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Standalone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Server 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 5e97eb03825dee720800000000000000 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | nameFileIdTable: {} 136 | mipmapLimitGroupName: 137 | pSDRemoveMatte: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-d-3(color temperature).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Gradient/ascii-gradient-d-3(color temperature).png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-d-3(color temperature).png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1df1bb83fc198ac4b9943c4ab39bc915 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 2 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Standalone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Server 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 5e97eb03825dee720800000000000000 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | nameFileIdTable: {} 136 | mipmapLimitGroupName: 137 | pSDRemoveMatte: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-e-1(signs).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Gradient/ascii-gradient-e-1(signs).png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-e-1(signs).png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86ac5935aceb6d14cb007ad625acef34 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 1 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 2 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Standalone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Server 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 5e97eb03825dee720800000000000000 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | nameFileIdTable: {} 136 | mipmapLimitGroupName: 137 | pSDRemoveMatte: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-f-4 (shadow grain).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Gradient/ascii-gradient-f-4 (shadow grain).png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-f-4 (shadow grain).png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d82489adb903cec4a8a2416a2b070b65 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 2 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Standalone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Server 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 5e97eb03825dee720800000000000000 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | nameFileIdTable: {} 136 | mipmapLimitGroupName: 137 | pSDRemoveMatte: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Gradient/ascii-gradient-g-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Gradient/ascii-gradient-g-1.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a5a4f11603c72854d80713b56973ba69 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-aap-64-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-aap-64-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-aap-64-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fff323118d4c4aa42aaf584b74e2956f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-astria-solseturs-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-astria-solseturs-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-astria-solseturs-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 10293a02acc8a76409f10b8a8d4c316e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-blk-nx64-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-blk-nx64-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-blk-nx64-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5645e76a8cec6a645a70f39a11947c3d 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-borkfest-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-borkfest-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-borkfest-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99fee0b758edf1647ad6ff6f92ba92e2 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-candied-heart-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-candied-heart-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-candied-heart-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 14e522626f60b144e950449bd0dba1aa 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-chasm-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-chasm-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-chasm-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3cb78c2b6b7c03145b3da9a617568ae8 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-citrink-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-citrink-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-citrink-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d93938d10d0d493449d084ea8873f914 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-dream-haze-8-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-dream-haze-8-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-dream-haze-8-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0b066e9db8eeb634ea22840f06822878 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-fuzzyfour-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-fuzzyfour-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-fuzzyfour-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9e808f799489ea44899585021fdac471 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-inkpink-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-inkpink-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-inkpink-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a1f1eb0bebb69ed4cbdd8a5cc922cd8e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-oil-6-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-oil-6-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-oil-6-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c1ac0e2166921341ba44515750c711d 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-one-bit-bw-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-one-bit-bw-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-one-bit-bw-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 48e11582d13cc59429b5c8c9b77f31f3 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-pollen8-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-pollen8-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-pollen8-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 499338a63bc6ecb4489d1c526e1b8771 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-sirens-at-night-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-sirens-at-night-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-sirens-at-night-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f6d3a4ad10d9b7943a779a23333175e8 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-synthwave-9-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-synthwave-9-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-synthwave-9-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 90d113327982d7146bc25ef001a50aa5 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-twilight-5-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-twilight-5-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-twilight-5-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: feea8a54d38faa842bd97c20cc4dd3fc 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-windows-95-256-colours-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Runtime/Ascii/Data/Palette/ascii-windows-95-256-colours-1x.png -------------------------------------------------------------------------------- /Runtime/Ascii/Data/Palette/ascii-windows-95-256-colours-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d34237a63d524c84597a5182ae2e97f6 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 0 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | forceMaximumCompressionQuality_BC6H_BC7: 0 82 | - serializedVersion: 3 83 | buildTarget: Standalone 84 | maxTextureSize: 2048 85 | resizeAlgorithm: 0 86 | textureFormat: -1 87 | textureCompression: 1 88 | compressionQuality: 50 89 | crunchedCompression: 0 90 | allowsAlphaSplitting: 0 91 | overridden: 0 92 | androidETC2FallbackOverride: 0 93 | forceMaximumCompressionQuality_BC6H_BC7: 0 94 | - serializedVersion: 3 95 | buildTarget: Server 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 1 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | forceMaximumCompressionQuality_BC6H_BC7: 0 106 | - serializedVersion: 3 107 | buildTarget: WebGL 108 | maxTextureSize: 2048 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | forceMaximumCompressionQuality_BC6H_BC7: 0 118 | spriteSheet: 119 | serializedVersion: 2 120 | sprites: [] 121 | outline: [] 122 | physicsShape: [] 123 | bones: [] 124 | spriteID: 5e97eb03825dee720800000000000000 125 | internalID: 0 126 | vertices: [] 127 | indices: 128 | edges: [] 129 | weights: [] 130 | secondaryTextures: [] 131 | nameFileIdTable: {} 132 | mipmapLimitGroupName: 133 | pSDRemoveMatte: 0 134 | userData: 135 | assetBundleName: 136 | assetBundleVariant: 137 | -------------------------------------------------------------------------------- /Runtime/AsciiFx.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using System.Collections.Generic; 5 | using UnityEngine; 6 | using UnityEngine.Rendering; 7 | using UnityEngine.Rendering.Universal; 8 | 9 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 10 | namespace VolFx 11 | { 12 | public class AsciiFx : ScriptableRendererFeature 13 | { 14 | protected static List k_ShaderTags; 15 | 16 | public static int s_BlitTexId = Shader.PropertyToID("_BlitTexture"); 17 | public static int s_BlitScaleBiasId = Shader.PropertyToID("_BlitScaleBias"); 18 | 19 | [Tooltip("When to execute")] 20 | public RenderPassEvent _event = RenderPassEvent.AfterRenderingPostProcessing; 21 | 22 | public AsciiPass _pass; 23 | 24 | [HideInInspector] 25 | public Shader _blitShader; 26 | 27 | [NonSerialized] 28 | public Material _blit; 29 | 30 | [NonSerialized] 31 | public PassExecution _execution; 32 | 33 | // ======================================================================= 34 | public class PassExecution : ScriptableRenderPass 35 | { 36 | public AsciiFx _owner; 37 | private RenderTarget _output; 38 | 39 | // ======================================================================= 40 | public void Init() 41 | { 42 | renderPassEvent = _owner._event; 43 | 44 | _output = new RenderTarget().Allocate(_owner.name); 45 | } 46 | 47 | public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) 48 | { 49 | _owner._pass.Validate(); 50 | if (_owner._pass.IsActive == false) 51 | return; 52 | 53 | // allocate stuff 54 | var cmd = CommandBufferPool.Get(_owner.name); 55 | ref var cameraData = ref renderingData.cameraData; 56 | ref var desc = ref cameraData.cameraTargetDescriptor; 57 | _output.Get(cmd, in desc); 58 | 59 | var source = _getCameraTex(ref renderingData); 60 | 61 | // draw post process chain 62 | _owner._pass.Invoke(cmd, source, _output.Handle, context, ref renderingData); 63 | _owner.Blit(cmd, _output.Handle, source); 64 | 65 | context.ExecuteCommandBuffer(cmd); 66 | cmd.Clear(); 67 | CommandBufferPool.Release(cmd); 68 | 69 | // ----------------------------------------------------------------------- 70 | RTHandle _getCameraTex(ref RenderingData renderingData) 71 | { 72 | ref var cameraData = ref renderingData.cameraData; 73 | #if UNITY_2022_1_OR_NEWER 74 | return cameraData.renderer.cameraColorTargetHandle; 75 | #else 76 | return RTHandles.Alloc(cameraData.renderer.cameraColorTarget); 77 | #endif 78 | } 79 | } 80 | 81 | public override void FrameCleanup(CommandBuffer cmd) 82 | { 83 | _output.Release(cmd); 84 | _output.Release(cmd); 85 | _owner._pass.Cleanup(cmd); 86 | } 87 | } 88 | 89 | // ======================================================================= 90 | public void Blit(CommandBuffer cmd, RTHandle source, RTHandle destination) 91 | { 92 | cmd.SetGlobalVector(s_BlitScaleBiasId, new Vector4(1, 1, 0)); 93 | cmd.SetGlobalTexture(s_BlitTexId, source); 94 | cmd.SetRenderTarget(destination, 0); 95 | cmd.DrawMesh(Utils.FullscreenMesh, Matrix4x4.identity, _blit, 0, 0); 96 | } 97 | 98 | public override void Create() 99 | { 100 | #if UNITY_EDITOR 101 | _blitShader = Shader.Find("Hidden/Universal Render Pipeline/Blit"); 102 | 103 | UnityEditor.EditorUtility.SetDirty(this); 104 | #endif 105 | _blit = new Material(_blitShader); 106 | _execution = new PassExecution() { _owner = this }; 107 | _execution.Init(); 108 | 109 | if (_pass != null) 110 | _pass._init(); 111 | 112 | if (k_ShaderTags == null) 113 | { 114 | k_ShaderTags = new List(new[] 115 | { 116 | new ShaderTagId("SRPDefaultUnlit"), 117 | new ShaderTagId("UniversalForward"), 118 | new ShaderTagId("UniversalForwardOnly") 119 | }); 120 | } 121 | } 122 | 123 | private void Reset() 124 | { 125 | #if UNITY_EDITOR 126 | if (_pass != null) 127 | { 128 | UnityEditor.AssetDatabase.RemoveObjectFromAsset(_pass); 129 | UnityEditor.AssetDatabase.SaveAssets(); 130 | _pass = null; 131 | } 132 | #endif 133 | } 134 | 135 | public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) 136 | { 137 | if (renderingData.cameraData.cameraType != CameraType.Game) 138 | return; 139 | #if UNITY_EDITOR 140 | if (_blit == null) 141 | _blit = new Material(_blitShader); 142 | 143 | if (_pass == null) 144 | return; 145 | #endif 146 | renderer.EnqueuePass(_execution); 147 | } 148 | 149 | private void OnDestroy() 150 | { 151 | #if UNITY_EDITOR 152 | if (_pass != null) 153 | { 154 | UnityEditor.AssetDatabase.RemoveObjectFromAsset(_pass); 155 | UnityEditor.AssetDatabase.SaveAssets(); 156 | _pass = null; 157 | } 158 | #endif 159 | } 160 | } 161 | } 162 | 163 | #endif -------------------------------------------------------------------------------- /Runtime/AsciiFx.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43b25b61d905aa7419c090926a80d551 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Common.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d40e8d1fc9b57b4a80bb1da500ba116 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Common/CurveParameter.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using UnityEngine.Rendering; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx 8 | { 9 | [Serializable] 10 | public class CurveParameter : VolumeParameter 11 | { 12 | public CurveParameter(CurveValue value, bool overrideState) : base(value, overrideState) { } 13 | 14 | public override void Interp(CurveValue from, CurveValue to, float t) 15 | { 16 | m_Value.Blend(from, to, t); 17 | } 18 | 19 | public override void SetValue(VolumeParameter parameter) 20 | { 21 | m_Value.SetValue(((VolumeParameter)parameter).value); 22 | } 23 | } 24 | } 25 | 26 | #endif -------------------------------------------------------------------------------- /Runtime/Common/CurveParameter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 42afba94f1aecfc4d88d687543fbd6eb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Common/CurveRangeAttribute.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using UnityEngine; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx 8 | { 9 | [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] 10 | public class CurveRangeAttribute : PropertyAttribute 11 | { 12 | public Vector2 Min { get; private set; } 13 | public Vector2 Max { get; private set; } 14 | 15 | // ======================================================================= 16 | public CurveRangeAttribute() : this(new Vector2(0, 0), new Vector2(1, 1)) 17 | { 18 | } 19 | 20 | public CurveRangeAttribute(Vector2 min, Vector2 max) 21 | { 22 | Min = min; 23 | Max = max; 24 | } 25 | 26 | public CurveRangeAttribute(float minX, float minY, float maxX, float maxY) 27 | : this(new Vector2(minX, minY), new Vector2(maxX, maxY)) 28 | { 29 | } 30 | } 31 | } 32 | 33 | #endif -------------------------------------------------------------------------------- /Runtime/Common/CurveRangeAttribute.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fdea607f1f18dc8458a331394677714e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Common/CurveValue.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using UnityEngine; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx 8 | { 9 | [Serializable] 10 | public class CurveValue 11 | { 12 | public const int k_Width = 32; 13 | 14 | public AnimationCurve _curve; 15 | public Color[] _pixels; 16 | private bool _build; 17 | 18 | // ======================================================================= 19 | internal void SetValue(CurveValue val) 20 | { 21 | if (val._build == false) 22 | val.Build(); 23 | 24 | _curve = val._curve; 25 | val._pixels.CopyTo(_pixels, 0); 26 | } 27 | public void Blend(CurveValue a, CurveValue b, float t) 28 | { 29 | for (var x = 0; x < k_Width; x++) 30 | _pixels[x] = Color.LerpUnclamped(a._pixels[x], b._pixels[x], t); 31 | } 32 | 33 | public CurveValue(AnimationCurve curve) 34 | { 35 | _curve = curve; 36 | _pixels = new Color[k_Width]; 37 | for (var n = 0; n < k_Width; n++) 38 | { 39 | var val = _curve.Evaluate(n / (float)(k_Width - 1)); 40 | _pixels[n] = new Color(val, val, val, val); 41 | } 42 | } 43 | 44 | public Texture2D GetTexture(ref Texture2D tex) 45 | { 46 | if (tex == null) 47 | { 48 | tex = new Texture2D(k_Width, 1, TextureFormat.RGBA32, false); 49 | tex.wrapMode = TextureWrapMode.Clamp; 50 | tex.filterMode = FilterMode.Bilinear; 51 | } 52 | 53 | tex.SetPixels(_pixels); 54 | tex.Apply(); 55 | 56 | return tex; 57 | } 58 | 59 | public void Build() 60 | { 61 | if (_build) 62 | return; 63 | 64 | _build = true; 65 | 66 | _pixels = new Color[k_Width]; 67 | for (var n = 0; n < k_Width; n++) 68 | { 69 | var val = _curve.Evaluate(n / (float)(k_Width - 1)); 70 | _pixels[n] = new Color(val, val, val, val); 71 | } 72 | } 73 | } 74 | } 75 | 76 | #endif -------------------------------------------------------------------------------- /Runtime/Common/CurveValue.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fc0193fda5f2cce4f976c81bff9e0cf1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Common/GradientParameter.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using UnityEngine.Rendering; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx 8 | { 9 | [Serializable] 10 | public class GradientParameter : VolumeParameter 11 | { 12 | public GradientParameter(GradientValue value, bool overrideState) : base(value, overrideState) { } 13 | 14 | public override void Interp(GradientValue from, GradientValue to, float t) 15 | { 16 | m_Value.Blend(from, to, t); 17 | } 18 | 19 | public override void SetValue(VolumeParameter parameter) 20 | { 21 | m_Value.SetValue(((VolumeParameter)parameter).value); 22 | } 23 | } 24 | } 25 | 26 | #endif -------------------------------------------------------------------------------- /Runtime/Common/GradientParameter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b542fa926a669904ba3daf423969bd70 3 | timeCreated: 1699537019 -------------------------------------------------------------------------------- /Runtime/Common/GradientValue.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using UnityEngine; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx 8 | { 9 | [Serializable] 10 | public class GradientValue 11 | { 12 | public const int k_Width = 32; 13 | 14 | public Gradient _grad; 15 | public Color[] _pixels; 16 | 17 | internal bool _build; 18 | 19 | public static GradientValue White 20 | { 21 | get 22 | { 23 | var grad = new Gradient(); 24 | grad.SetKeys(new []{new GradientColorKey(Color.white, 0f), new GradientColorKey(Color.white, 1f)}, new GradientAlphaKey[]{new GradientAlphaKey(1f, 0f), new GradientAlphaKey(1f, 0f)}); 25 | 26 | return new GradientValue(grad); 27 | } 28 | } 29 | 30 | // ======================================================================= 31 | public void Build(GradientMode _mode) 32 | { 33 | _build = true; 34 | 35 | _grad.mode = _mode; 36 | _pixels = new Color[k_Width]; 37 | 38 | for (var x = 0; x < k_Width; x++) 39 | _pixels[x] = _grad.Evaluate(x / (float)(k_Width - 1)); 40 | } 41 | 42 | internal void SetValue(GradientValue val) 43 | { 44 | if (val._build == false) 45 | val.Build(val._grad.mode); 46 | 47 | _grad = val._grad; 48 | val._pixels.CopyTo(_pixels, 0); 49 | } 50 | 51 | public void Blend(GradientValue a, GradientValue b, float t) 52 | { 53 | _build = true; 54 | 55 | for (var x = 0; x < k_Width; x++) 56 | _pixels[x] = Color.LerpUnclamped(a._pixels[x], b._pixels[x], t); 57 | 58 | _grad.mode = t < .5f ? a._grad.mode : b._grad.mode; 59 | } 60 | 61 | public Texture2D GetTexture(ref Texture2D tex) 62 | { 63 | if (tex == null) 64 | { 65 | tex = new Texture2D(GradientValue.k_Width, 1, TextureFormat.RGBA32, false); 66 | tex.wrapMode = TextureWrapMode.Clamp; 67 | tex.filterMode = FilterMode.Bilinear; 68 | } 69 | 70 | tex.SetPixels(_pixels); 71 | tex.Apply(); 72 | 73 | return tex; 74 | } 75 | 76 | public GradientValue(Gradient grad) 77 | { 78 | _grad = grad; 79 | _pixels = new Color[k_Width]; 80 | for (var n = 0; n < k_Width; n++) 81 | _pixels[n] = grad.Evaluate(n / (float)(k_Width - 1)); 82 | } 83 | } 84 | } 85 | 86 | #endif -------------------------------------------------------------------------------- /Runtime/Common/GradientValue.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 57bd27fb3739ce24882050dd5bf86058 3 | timeCreated: 1699537111 -------------------------------------------------------------------------------- /Runtime/Common/Optional.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using UnityEngine; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx 8 | { 9 | [Serializable] 10 | public sealed class Optional 11 | { 12 | [SerializeField] 13 | internal bool enabled; 14 | 15 | [SerializeField] 16 | internal T value = default!; 17 | 18 | public bool Enabled 19 | { 20 | get => enabled; 21 | set => enabled = value; 22 | } 23 | 24 | public T Value 25 | { 26 | get => value; 27 | set => this.value = value; 28 | } 29 | 30 | // ======================================================================= 31 | public Optional(bool enabled) 32 | { 33 | this.enabled = enabled; 34 | } 35 | 36 | public Optional(T value, bool enabled) 37 | { 38 | this.enabled = enabled; 39 | this.value = value; 40 | } 41 | 42 | public T GetValue(T disabledValue) 43 | { 44 | return enabled ? value : disabledValue; 45 | } 46 | 47 | public T GetValueOrDefault() 48 | { 49 | return enabled ? value : default; 50 | } 51 | 52 | public T GetValueOrDefault(T fallback) 53 | { 54 | return enabled ? value : fallback; 55 | } 56 | 57 | public static implicit operator bool(Optional opt) 58 | { 59 | return opt.enabled; 60 | } 61 | 62 | public static implicit operator T(Optional opt) 63 | { 64 | return opt.value; 65 | } 66 | } 67 | } 68 | 69 | #endif -------------------------------------------------------------------------------- /Runtime/Common/Optional.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c9a40c300d16034c8ebe5114d705444 3 | timeCreated: 1697616851 -------------------------------------------------------------------------------- /Runtime/Common/RenderTarget.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using UnityEngine; 4 | using UnityEngine.Rendering; 5 | 6 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx 8 | { 9 | public class RenderTarget 10 | { 11 | public RTHandle Handle; 12 | public int Id; 13 | private bool _allocated; 14 | 15 | // ======================================================================= 16 | public RenderTarget Allocate(RenderTexture rt, string name) 17 | { 18 | Handle = RTHandles.Alloc(rt, name); 19 | Id = Shader.PropertyToID(name); 20 | return this; 21 | } 22 | 23 | public RenderTarget Allocate(string name) 24 | { 25 | Handle = RTHandles.Alloc(name, name: name); 26 | Id = Shader.PropertyToID(name); 27 | return this; 28 | } 29 | 30 | public void Get(CommandBuffer cmd, in RenderTextureDescriptor desc) 31 | { 32 | _allocated = true; 33 | cmd.GetTemporaryRT(Id, desc); 34 | } 35 | 36 | public void Get(CommandBuffer cmd, in RenderTextureDescriptor desc, FilterMode filter) 37 | { 38 | _allocated = true; 39 | cmd.GetTemporaryRT(Id, desc, filter); 40 | } 41 | 42 | public void Release(CommandBuffer cmd) 43 | { 44 | if (_allocated == false) 45 | return; 46 | 47 | _allocated = false; 48 | cmd.ReleaseTemporaryRT(Id); 49 | } 50 | 51 | public static implicit operator RTHandle(RenderTarget rt) => rt.Handle; 52 | } 53 | } 54 | 55 | #endif -------------------------------------------------------------------------------- /Runtime/Common/RenderTarget.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e3dbfc23cd183a43a544a394ecf834c 3 | timeCreated: 1697618098 -------------------------------------------------------------------------------- /Runtime/Common/ShaderNameAttribute.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | 5 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 6 | namespace VolFx 7 | { 8 | /// 9 | /// Used to get shader link for pass material 10 | /// 11 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] 12 | public class ShaderNameAttribute : Attribute 13 | { 14 | public string _name; 15 | 16 | public ShaderNameAttribute(string name) 17 | { 18 | _name = name; 19 | } 20 | } 21 | } 22 | 23 | #endif -------------------------------------------------------------------------------- /Runtime/Common/ShaderNameAttribute.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 06a4defa39551f04386a0e6533a68dcd 3 | timeCreated: 1697614508 -------------------------------------------------------------------------------- /Runtime/Common/Utils.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using System.Collections.Generic; 5 | using UnityEngine; 6 | using UnityEngine.Rendering; 7 | using Random = UnityEngine.Random; 8 | 9 | // AsciiFx © NullTale - https://twitter.com/NullTale/ 10 | namespace VolFx 11 | { 12 | public static class Utils 13 | { 14 | public static int s_MainTexId = Shader.PropertyToID("_MainTex"); 15 | 16 | private static Mesh s_FullscreenQuad; 17 | private static Mesh s_FullscreenTriangle; 18 | public static Mesh FullscreenMesh 19 | { 20 | get 21 | { 22 | _initFullScreenMeshes(); 23 | return s_FullscreenTriangle; 24 | } 25 | } 26 | 27 | public static Matrix4x4 s_IndentityInvert = new Matrix4x4(new Vector4(1, 0, 0, 0), new Vector4(0, -1, 0, 0), new Vector4(0, 0, 1, 0), new Vector4(0, 0, 0, 1)); 28 | 29 | // ======================================================================= 30 | private static void _initFullScreenMeshes() 31 | { 32 | // quad 33 | if (s_FullscreenQuad == null) 34 | { 35 | s_FullscreenQuad = new Mesh { name = "Fullscreen Quad" }; 36 | s_FullscreenQuad.SetVertices(new List 37 | { 38 | new Vector3(-1.0f, -1.0f, 0.0f), 39 | new Vector3(-1.0f, 1.0f, 0.0f), 40 | new Vector3(1.0f, -1.0f, 0.0f), 41 | new Vector3(1.0f, 1.0f, 0.0f) 42 | }); 43 | 44 | s_FullscreenQuad.SetUVs(0, new List 45 | { 46 | new Vector2(0.0f, 1f), 47 | new Vector2(0.0f, 0f), 48 | new Vector2(1.0f, 1f), 49 | new Vector2(1.0f, 0f) 50 | }); 51 | 52 | s_FullscreenQuad.SetIndices(new[] { 0, 1, 2, 2, 1, 3 }, MeshTopology.Triangles, 0, false); 53 | s_FullscreenQuad.UploadMeshData(true); 54 | } 55 | 56 | // triangle 57 | if (s_FullscreenTriangle == null) 58 | { 59 | s_FullscreenTriangle = new Mesh() { name = "Fullscreen Triangle" }; 60 | s_FullscreenTriangle.vertices = _verts(0f); 61 | s_FullscreenTriangle.uv = _texCoords(); 62 | s_FullscreenTriangle.triangles = new int[3] { 0, 1, 2 }; 63 | 64 | s_FullscreenTriangle.UploadMeshData(true); 65 | 66 | // ----------------------------------------------------------------------- 67 | Vector3[] _verts(float z) 68 | { 69 | var r = new Vector3[3]; 70 | for (var i = 0; i < 3; i++) 71 | { 72 | var uv = new Vector2((i << 1) & 2, i & 2); 73 | r[i] = new Vector3(uv.x * 2f - 1f, uv.y * 2f - 1f, z); 74 | } 75 | 76 | return r; 77 | } 78 | 79 | Vector2[] _texCoords() 80 | { 81 | var r = new Vector2[3]; 82 | for (var i = 0; i < 3; i++) 83 | { 84 | if (SystemInfo.graphicsUVStartsAtTop) 85 | r[i] = new Vector2((i << 1) & 2, 1.0f - (i & 2)); 86 | else 87 | r[i] = new Vector2((i << 1) & 2, i & 2); 88 | } 89 | 90 | return r; 91 | } 92 | } 93 | } 94 | 95 | public static void Blit(CommandBuffer cmd, RTHandle source, RTHandle destination, Material material, int pass = 0, bool invert = false) 96 | { 97 | cmd.SetGlobalTexture(s_MainTexId, source); 98 | cmd.SetRenderTarget(destination, 0); 99 | cmd.DrawMesh(FullscreenMesh, invert ? s_IndentityInvert : Matrix4x4.identity, material, 0, pass); 100 | } 101 | 102 | public static Vector2 ToNormal(this float rad) 103 | { 104 | return new Vector2(Mathf.Cos(rad), Mathf.Sin(rad)); 105 | } 106 | 107 | public static float Round(this float f) 108 | { 109 | return Mathf.Round(f); 110 | } 111 | 112 | public static float Clamp01(this float f) 113 | { 114 | return Mathf.Clamp01(f); 115 | } 116 | 117 | public static float OneMinus(this float f) 118 | { 119 | return 1f - f; 120 | } 121 | 122 | public static float Remap(this float f, float min, float max) 123 | { 124 | return min + (max - min) * f; 125 | } 126 | 127 | public static Color Color() 128 | { 129 | return new Color(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), 130 | Random.Range(0.0f, 1.0f), 1.0f); 131 | } 132 | 133 | public static Vector3 WithZ(this Vector3 vector, float z) 134 | { 135 | return new Vector3(vector.x, vector.y, z); 136 | } 137 | 138 | public static Vector2 To2DXY(this Vector3 vector) 139 | { 140 | return new Vector2(vector.x, vector.y); 141 | } 142 | 143 | public static Vector3 To3DXZ(this Vector2 vector) 144 | { 145 | return vector.To3DXZ(0); 146 | } 147 | 148 | public static Vector3 To3DXZ(this Vector2 vector, float y) 149 | { 150 | return new Vector3(vector.x, y, vector.y); 151 | } 152 | 153 | public static Vector3 To3DXY(this Vector2 vector, float z) 154 | { 155 | return new Vector3(vector.x, vector.y, z); 156 | } 157 | 158 | public static Vector2 ToVector2XY(this float value) 159 | { 160 | return new Vector2(value, value); 161 | } 162 | 163 | public static Color MulA(this Color color, float a) 164 | { 165 | return new Color(color.r, color.g, color.b, color.a * a); 166 | } 167 | 168 | public static Rect GetRect(this Texture2D texture) 169 | { 170 | return new Rect(0, 0, texture.width, texture.height); 171 | } 172 | 173 | public static int RoundToInt(this float f) 174 | { 175 | return Mathf.RoundToInt(f); 176 | } 177 | 178 | public static TKey MaxOrDefault(this IEnumerable source, Func selector, TSource noOptionsValue = default) 179 | { 180 | var result = source.MaxOrDefault(selector, Comparer.Default, noOptionsValue); 181 | if (Equals(result, default)) 182 | return default; 183 | 184 | return selector(result); 185 | } 186 | 187 | public static TSource MaxOrDefault(this IEnumerable source, Func selector, IComparer comparer, TSource fallback = default) 188 | { 189 | using (var sourceIterator = source.GetEnumerator()) 190 | { 191 | if (sourceIterator.MoveNext() == false) 192 | return fallback; 193 | 194 | var max = sourceIterator.Current; 195 | var maxKey = selector(max); 196 | 197 | while (sourceIterator.MoveNext()) 198 | { 199 | var candidate = sourceIterator.Current; 200 | var candidateProjected = selector(candidate); 201 | 202 | if (comparer.Compare(candidateProjected, maxKey) > 0) 203 | { 204 | max = candidate; 205 | maxKey = candidateProjected; 206 | } 207 | } 208 | return max; 209 | } 210 | } 211 | } 212 | } 213 | 214 | #endif -------------------------------------------------------------------------------- /Runtime/Common/Utils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1620485106330a040a6acf0d17113bd3 3 | timeCreated: 1697614648 -------------------------------------------------------------------------------- /Runtime/Common/VolFx.Pass.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using System.IO; 5 | using System.Linq; 6 | using UnityEngine; 7 | using UnityEngine.Rendering; 8 | using UnityEngine.Rendering.Universal; 9 | 10 | // AsciiFx © NullTale - https://x.com/NullTale 11 | namespace VolFx 12 | { 13 | public static class VolFx 14 | { 15 | [Serializable] 16 | public abstract class Pass : ScriptableObject 17 | { 18 | [NonSerialized] 19 | public AsciiFx _owner; 20 | [SerializeField] 21 | internal bool _active = true; 22 | [SerializeField] [HideInInspector] 23 | private Shader _shader; 24 | protected Material _material; 25 | private bool _isActive; 26 | 27 | protected VolumeStack Stack => VolumeManager.instance.stack; 28 | 29 | protected virtual bool Invert => false; 30 | 31 | // ======================================================================= 32 | internal bool IsActive 33 | { 34 | get => _isActive && _active && _material != null; 35 | set => _isActive = value; 36 | } 37 | 38 | public void SetActive(bool isActive) 39 | { 40 | _active = isActive; 41 | } 42 | 43 | internal void _init() 44 | { 45 | #if UNITY_EDITOR 46 | 47 | #if !UNITY_2022_1_OR_NEWER 48 | Debug.LogError($"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name} require Unity 2022 or higher"); 49 | #endif 50 | if (_shader == null || _material == null) 51 | { 52 | var shaderName = GetType().GetCustomAttributes(typeof(ShaderNameAttribute), true).FirstOrDefault() as ShaderNameAttribute; 53 | if (shaderName != null) 54 | { 55 | _shader = Shader.Find(shaderName._name); 56 | UnityEditor.EditorUtility.SetDirty(this); 57 | } 58 | } 59 | #endif 60 | 61 | if (_shader != null) 62 | _material = new Material(_shader); 63 | 64 | Init(); 65 | } 66 | 67 | public virtual void Invoke(CommandBuffer cmd, RTHandle source, RTHandle dest, ScriptableRenderContext context, ref RenderingData renderingData) 68 | { 69 | Utils.Blit(cmd, source, dest, _material, 0, Invert); 70 | } 71 | 72 | public void Validate() 73 | { 74 | #if UNITY_EDITOR 75 | if (_shader == null || _editorValidate) 76 | { 77 | var shaderName = GetType().GetCustomAttributes(typeof(ShaderNameAttribute), true).FirstOrDefault() as ShaderNameAttribute; 78 | if (shaderName != null) 79 | { 80 | _shader = Shader.Find(shaderName._name); 81 | var assetPath = UnityEditor.AssetDatabase.GetAssetPath(_shader); 82 | if (string.IsNullOrEmpty(assetPath) == false) 83 | _editorSetup(Path.GetDirectoryName(assetPath), Path.GetFileNameWithoutExtension(assetPath)); 84 | 85 | UnityEditor.EditorUtility.SetDirty(this); 86 | } 87 | } 88 | 89 | if ((_material == null || _material.shader != _shader) && _shader != null) 90 | { 91 | _material = new Material(_shader); 92 | Init(); 93 | } 94 | #endif 95 | 96 | IsActive = Validate(_material); 97 | } 98 | 99 | /// 100 | /// called to initialize pass when material is created 101 | /// 102 | public virtual void Init() 103 | { 104 | } 105 | 106 | /// 107 | /// called each frame to check is render is required and setup render material 108 | /// 109 | public abstract bool Validate(Material mat); 110 | 111 | /// 112 | /// frame clean up function used if implemented custom Invoke function to release resources 113 | /// 114 | public virtual void Cleanup(CommandBuffer cmd) 115 | { 116 | } 117 | 118 | /// 119 | /// used for optimization purposes, returns true if we need to call _editorSetup function 120 | /// 121 | protected virtual bool _editorValidate => false; 122 | 123 | /// 124 | /// editor validation function, used to gather additional references 125 | /// 126 | protected virtual void _editorSetup(string folder, string asset) 127 | { 128 | } 129 | } 130 | } 131 | } 132 | #endif -------------------------------------------------------------------------------- /Runtime/Common/VolFx.Pass.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fec4e712a0657024892aaa75441c5e5e 3 | timeCreated: 1697796247 -------------------------------------------------------------------------------- /Samples~/Ascii 0.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 13 | m_Name: Ascii 0 14 | m_EditorClassIdentifier: 15 | components: 16 | - {fileID: 2488624477101843384} 17 | --- !u!114 &2488624477101843384 18 | MonoBehaviour: 19 | m_ObjectHideFlags: 3 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_GameObject: {fileID: 0} 24 | m_Enabled: 1 25 | m_EditorHideFlags: 0 26 | m_Script: {fileID: 11500000, guid: 40a23474bda613d49a02ce73101f45d1, type: 3} 27 | m_Name: AsciiVol 28 | m_EditorClassIdentifier: 29 | active: 1 30 | m_Scale: 31 | m_OverrideState: 1 32 | m_Value: 0.893 33 | m_Ascii: 34 | m_OverrideState: 1 35 | m_Value: {r: 1, g: 1, b: 1, a: 0} 36 | m_Image: 37 | m_OverrideState: 1 38 | m_Value: {r: 0.33, g: 0.33, b: 0.33, a: 0} 39 | m_Gradient: 40 | m_OverrideState: 0 41 | m_Value: {fileID: 0} 42 | m_Depth: 43 | m_OverrideState: 0 44 | m_Value: 1 45 | m_Fps: 46 | m_OverrideState: 0 47 | m_Value: 0 48 | m_Palette: 49 | m_OverrideState: 1 50 | m_Value: {fileID: 2800000, guid: d34237a63d524c84597a5182ae2e97f6, type: 3} 51 | m_Impact: 52 | m_OverrideState: 1 53 | m_Value: 1 54 | -------------------------------------------------------------------------------- /Samples~/Ascii 0.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1d020d550e5ef8942b34ce72b1adac91 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Ascii 1.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-9062873740694462885 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 3 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 40a23474bda613d49a02ce73101f45d1, type: 3} 13 | m_Name: AsciiVol 14 | m_EditorClassIdentifier: 15 | active: 1 16 | m_Scale: 17 | m_OverrideState: 1 18 | m_Value: 0.897 19 | m_Ascii: 20 | m_OverrideState: 1 21 | m_Value: {r: 1, g: 1, b: 1, a: 0} 22 | m_Image: 23 | m_OverrideState: 1 24 | m_Value: {r: 0, g: 0, b: 0, a: 1} 25 | m_Gradient: 26 | m_OverrideState: 1 27 | m_Value: {fileID: 2800000, guid: d82489adb903cec4a8a2416a2b070b65, type: 3} 28 | m_Depth: 29 | m_OverrideState: 1 30 | m_Value: 4 31 | m_Fps: 32 | m_OverrideState: 1 33 | m_Value: 3 34 | m_Palette: 35 | m_OverrideState: 0 36 | m_Value: {fileID: 2800000, guid: d34237a63d524c84597a5182ae2e97f6, type: 3} 37 | m_Impact: 38 | m_OverrideState: 0 39 | m_Value: 1 40 | --- !u!114 &11400000 41 | MonoBehaviour: 42 | m_ObjectHideFlags: 0 43 | m_CorrespondingSourceObject: {fileID: 0} 44 | m_PrefabInstance: {fileID: 0} 45 | m_PrefabAsset: {fileID: 0} 46 | m_GameObject: {fileID: 0} 47 | m_Enabled: 1 48 | m_EditorHideFlags: 0 49 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 50 | m_Name: Ascii 1 51 | m_EditorClassIdentifier: 52 | components: 53 | - {fileID: -9062873740694462885} 54 | -------------------------------------------------------------------------------- /Samples~/Ascii 1.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f8e780bb18f1b0946988eef01787356e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Ascii 2.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 13 | m_Name: Ascii 2 14 | m_EditorClassIdentifier: 15 | components: 16 | - {fileID: 6407893349161204490} 17 | --- !u!114 &6407893349161204490 18 | MonoBehaviour: 19 | m_ObjectHideFlags: 3 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_GameObject: {fileID: 0} 24 | m_Enabled: 1 25 | m_EditorHideFlags: 0 26 | m_Script: {fileID: 11500000, guid: 40a23474bda613d49a02ce73101f45d1, type: 3} 27 | m_Name: AsciiVol 28 | m_EditorClassIdentifier: 29 | active: 1 30 | m_Scale: 31 | m_OverrideState: 1 32 | m_Value: 0.897 33 | m_Ascii: 34 | m_OverrideState: 1 35 | m_Value: {r: 1, g: 1, b: 1, a: 1} 36 | m_Image: 37 | m_OverrideState: 1 38 | m_Value: {r: 0.801, g: 0.801, b: 0.801, a: 0} 39 | m_Gradient: 40 | m_OverrideState: 1 41 | m_Value: {fileID: 2800000, guid: 1df1bb83fc198ac4b9943c4ab39bc915, type: 3} 42 | m_Depth: 43 | m_OverrideState: 1 44 | m_Value: 3 45 | m_Fps: 46 | m_OverrideState: 1 47 | m_Value: 116 48 | m_Palette: 49 | m_OverrideState: 0 50 | m_Value: {fileID: 2800000, guid: d34237a63d524c84597a5182ae2e97f6, type: 3} 51 | m_Impact: 52 | m_OverrideState: 0 53 | m_Value: 1 54 | -------------------------------------------------------------------------------- /Samples~/Ascii 2.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 54796c1174523934c9c600ba60c511dd 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Ascii 3.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-1833119282731699192 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 3 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 40a23474bda613d49a02ce73101f45d1, type: 3} 13 | m_Name: AsciiVol 14 | m_EditorClassIdentifier: 15 | active: 1 16 | m_Scale: 17 | m_OverrideState: 1 18 | m_Value: 0.897 19 | m_Ascii: 20 | m_OverrideState: 1 21 | m_Value: {r: 1, g: 1, b: 1, a: 0} 22 | m_Image: 23 | m_OverrideState: 1 24 | m_Value: {r: 0, g: 0, b: 0, a: 1} 25 | m_Gradient: 26 | m_OverrideState: 1 27 | m_Value: {fileID: 2800000, guid: 3a56f0d105434de46b2380d408fa0c3f, type: 3} 28 | m_Depth: 29 | m_OverrideState: 1 30 | m_Value: 2 31 | m_Fps: 32 | m_OverrideState: 1 33 | m_Value: 116 34 | m_Palette: 35 | m_OverrideState: 0 36 | m_Value: {fileID: 2800000, guid: d34237a63d524c84597a5182ae2e97f6, type: 3} 37 | m_Impact: 38 | m_OverrideState: 0 39 | m_Value: 1 40 | --- !u!114 &11400000 41 | MonoBehaviour: 42 | m_ObjectHideFlags: 0 43 | m_CorrespondingSourceObject: {fileID: 0} 44 | m_PrefabInstance: {fileID: 0} 45 | m_PrefabAsset: {fileID: 0} 46 | m_GameObject: {fileID: 0} 47 | m_Enabled: 1 48 | m_EditorHideFlags: 0 49 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 50 | m_Name: Ascii 3 51 | m_EditorClassIdentifier: 52 | components: 53 | - {fileID: -1833119282731699192} 54 | -------------------------------------------------------------------------------- /Samples~/Ascii 3.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a7fb20fff084b64bb2a11043a1fdd42 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Ascii 4.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 13 | m_Name: Ascii 4 14 | m_EditorClassIdentifier: 15 | components: 16 | - {fileID: 5659822179044080968} 17 | --- !u!114 &5659822179044080968 18 | MonoBehaviour: 19 | m_ObjectHideFlags: 3 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_GameObject: {fileID: 0} 24 | m_Enabled: 1 25 | m_EditorHideFlags: 0 26 | m_Script: {fileID: 11500000, guid: 40a23474bda613d49a02ce73101f45d1, type: 3} 27 | m_Name: AsciiVol 28 | m_EditorClassIdentifier: 29 | active: 1 30 | m_Scale: 31 | m_OverrideState: 1 32 | m_Value: 0.897 33 | m_Ascii: 34 | m_OverrideState: 1 35 | m_Value: {r: 1, g: 1, b: 1, a: 0} 36 | m_Image: 37 | m_OverrideState: 1 38 | m_Value: {r: 0, g: 0, b: 0, a: 1} 39 | m_Gradient: 40 | m_OverrideState: 1 41 | m_Value: {fileID: 2800000, guid: 2f8a4131aa1f6b74f9b9db4c918db924, type: 3} 42 | m_Depth: 43 | m_OverrideState: 1 44 | m_Value: 1 45 | m_Fps: 46 | m_OverrideState: 1 47 | m_Value: 116 48 | m_Palette: 49 | m_OverrideState: 1 50 | m_Value: {fileID: 2800000, guid: 6c1ac0e2166921341ba44515750c711d, type: 3} 51 | m_Impact: 52 | m_OverrideState: 0 53 | m_Value: 1 54 | -------------------------------------------------------------------------------- /Samples~/Ascii 4.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 20a4134117b1bb04a8c17d49b6c16be8 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Ascii 5.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-1914943770002819279 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 3 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 40a23474bda613d49a02ce73101f45d1, type: 3} 13 | m_Name: AsciiVol 14 | m_EditorClassIdentifier: 15 | active: 1 16 | m_Scale: 17 | m_OverrideState: 1 18 | m_Value: 0.966 19 | m_Ascii: 20 | m_OverrideState: 1 21 | m_Value: {r: 1, g: 1, b: 1, a: 0} 22 | m_Image: 23 | m_OverrideState: 1 24 | m_Value: {r: 0, g: 0, b: 0, a: 1} 25 | m_Gradient: 26 | m_OverrideState: 1 27 | m_Value: {fileID: 2800000, guid: 2f8a4131aa1f6b74f9b9db4c918db924, type: 3} 28 | m_Depth: 29 | m_OverrideState: 1 30 | m_Value: 3 31 | m_Fps: 32 | m_OverrideState: 1 33 | m_Value: 106 34 | m_Palette: 35 | m_OverrideState: 1 36 | m_Value: {fileID: 2800000, guid: 9e808f799489ea44899585021fdac471, type: 3} 37 | m_Impact: 38 | m_OverrideState: 1 39 | m_Value: 1 40 | --- !u!114 &11400000 41 | MonoBehaviour: 42 | m_ObjectHideFlags: 0 43 | m_CorrespondingSourceObject: {fileID: 0} 44 | m_PrefabInstance: {fileID: 0} 45 | m_PrefabAsset: {fileID: 0} 46 | m_GameObject: {fileID: 0} 47 | m_Enabled: 1 48 | m_EditorHideFlags: 0 49 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 50 | m_Name: Ascii 5 51 | m_EditorClassIdentifier: 52 | components: 53 | - {fileID: -1914943770002819279} 54 | -------------------------------------------------------------------------------- /Samples~/Ascii 5.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b966d112d54f1044e85152aaf8c25b0f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Ascii.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 17f50dbfeae27cc43b4037c014118ab4 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/Idol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/AsciiFx/2abb1ff37b4a3558a82436ef9df6bb1916ccdf0b/Samples~/Idol.png -------------------------------------------------------------------------------- /Samples~/Idol.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5177a7632dc69e54daaa0aaf96959969 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 1 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Standalone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Server 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | spriteSheet: 123 | serializedVersion: 2 124 | sprites: [] 125 | outline: [] 126 | physicsShape: [] 127 | bones: [] 128 | spriteID: 5e97eb03825dee720800000000000000 129 | internalID: 0 130 | vertices: [] 131 | indices: 132 | edges: [] 133 | weights: [] 134 | secondaryTextures: [] 135 | nameFileIdTable: {} 136 | mipmapLimitGroupName: 137 | pSDRemoveMatte: 0 138 | userData: 139 | assetBundleName: 140 | assetBundleVariant: 141 | -------------------------------------------------------------------------------- /Samples~/UrpAscii.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} 13 | m_Name: UrpAscii 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 11 16 | k_AssetPreviousVersion: 11 17 | m_RendererType: 1 18 | m_RendererData: {fileID: 0} 19 | m_RendererDataList: 20 | - {fileID: 11400000, guid: d0c777aa83d7af143bb2cc261c15736b, type: 2} 21 | m_DefaultRendererIndex: 0 22 | m_RequireDepthTexture: 0 23 | m_RequireOpaqueTexture: 0 24 | m_OpaqueDownsampling: 1 25 | m_SupportsTerrainHoles: 1 26 | m_SupportsHDR: 0 27 | m_HDRColorBufferPrecision: 0 28 | m_MSAA: 1 29 | m_RenderScale: 1 30 | m_UpscalingFilter: 0 31 | m_FsrOverrideSharpness: 0 32 | m_FsrSharpness: 0.92 33 | m_EnableLODCrossFade: 1 34 | m_LODCrossFadeDitheringType: 1 35 | m_ShEvalMode: 0 36 | m_MainLightRenderingMode: 1 37 | m_MainLightShadowsSupported: 1 38 | m_MainLightShadowmapResolution: 2048 39 | m_AdditionalLightsRenderingMode: 1 40 | m_AdditionalLightsPerObjectLimit: 4 41 | m_AdditionalLightShadowsSupported: 0 42 | m_AdditionalLightsShadowmapResolution: 2048 43 | m_AdditionalLightsShadowResolutionTierLow: 256 44 | m_AdditionalLightsShadowResolutionTierMedium: 512 45 | m_AdditionalLightsShadowResolutionTierHigh: 1024 46 | m_ReflectionProbeBlending: 0 47 | m_ReflectionProbeBoxProjection: 0 48 | m_ShadowDistance: 50 49 | m_ShadowCascadeCount: 1 50 | m_Cascade2Split: 0.25 51 | m_Cascade3Split: {x: 0.1, y: 0.3} 52 | m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} 53 | m_CascadeBorder: 0.2 54 | m_ShadowDepthBias: 1 55 | m_ShadowNormalBias: 1 56 | m_AnyShadowsSupported: 1 57 | m_SoftShadowsSupported: 0 58 | m_ConservativeEnclosingSphere: 1 59 | m_NumIterationsEnclosingSphere: 64 60 | m_SoftShadowQuality: 2 61 | m_AdditionalLightsCookieResolution: 2048 62 | m_AdditionalLightsCookieFormat: 3 63 | m_UseSRPBatcher: 1 64 | m_SupportsDynamicBatching: 0 65 | m_MixedLightingSupported: 1 66 | m_SupportsLightCookies: 1 67 | m_SupportsLightLayers: 0 68 | m_DebugLevel: 0 69 | m_StoreActionsOptimization: 0 70 | m_EnableRenderGraph: 0 71 | m_UseAdaptivePerformance: 1 72 | m_ColorGradingMode: 0 73 | m_ColorGradingLutSize: 32 74 | m_UseFastSRGBLinearConversion: 0 75 | m_SupportDataDrivenLensFlare: 1 76 | m_ShadowType: 1 77 | m_LocalShadowsSupported: 0 78 | m_LocalShadowsAtlasResolution: 256 79 | m_MaxPixelLights: 0 80 | m_ShadowAtlasResolution: 256 81 | m_VolumeFrameworkUpdateMode: 0 82 | m_Textures: 83 | blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} 84 | bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} 85 | m_PrefilteringModeMainLightShadows: 3 86 | m_PrefilteringModeAdditionalLight: 3 87 | m_PrefilteringModeAdditionalLightShadows: 0 88 | m_PrefilterXRKeywords: 1 89 | m_PrefilteringModeForwardPlus: 0 90 | m_PrefilteringModeDeferredRendering: 0 91 | m_PrefilteringModeScreenSpaceOcclusion: 0 92 | m_PrefilterDebugKeywords: 1 93 | m_PrefilterWriteRenderingLayers: 1 94 | m_PrefilterHDROutput: 1 95 | m_PrefilterSSAODepthNormals: 1 96 | m_PrefilterSSAOSourceDepthLow: 1 97 | m_PrefilterSSAOSourceDepthMedium: 1 98 | m_PrefilterSSAOSourceDepthHigh: 1 99 | m_PrefilterSSAOInterleaved: 1 100 | m_PrefilterSSAOBlueNoise: 1 101 | m_PrefilterSSAOSampleCountLow: 1 102 | m_PrefilterSSAOSampleCountMedium: 1 103 | m_PrefilterSSAOSampleCountHigh: 1 104 | m_PrefilterDBufferMRT1: 1 105 | m_PrefilterDBufferMRT2: 1 106 | m_PrefilterDBufferMRT3: 1 107 | m_PrefilterScreenCoord: 1 108 | m_PrefilterNativeRenderPass: 1 109 | m_ShaderVariantLogLevel: 0 110 | m_ShadowCascades: 0 111 | -------------------------------------------------------------------------------- /Samples~/UrpAscii.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 111c7ef0fb81bde49a0426601e88738e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/UrpAscii_Renderer.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8819233593321629058 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: eca2e8d1c8fb13a4abc7116bfb2ef274, type: 3} 13 | m_Name: Dither 14 | m_EditorClassIdentifier: 15 | m_Active: 1 16 | _event: 600 17 | _pass: {fileID: -2027628800465215574} 18 | _blitShader: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 19 | --- !u!114 &-4350255237909425121 20 | MonoBehaviour: 21 | m_ObjectHideFlags: 3 22 | m_CorrespondingSourceObject: {fileID: 0} 23 | m_PrefabInstance: {fileID: 0} 24 | m_PrefabAsset: {fileID: 0} 25 | m_GameObject: {fileID: 0} 26 | m_Enabled: 1 27 | m_EditorHideFlags: 0 28 | m_Script: {fileID: 11500000, guid: ce280e1cc6cb7f245989788c986a5df6, type: 3} 29 | m_Name: 30 | m_EditorClassIdentifier: 31 | _active: 1 32 | _shader: {fileID: 4800000, guid: f1dac63214cc5a04abaeb35ca448e492, type: 3} 33 | _noiseScale: 0.5 34 | _gradient: {fileID: 2800000, guid: 31cbf367fc7af7740ad97f1ef54ee0f0, type: 3} 35 | _palette: 36 | enabled: 0 37 | value: {fileID: 2800000, guid: 48e11582d13cc59429b5c8c9b77f31f3, type: 3} 38 | _depth: 1 39 | _scale: 1 40 | _scaleLerp: 41 | serializedVersion: 2 42 | m_Curve: 43 | - serializedVersion: 3 44 | time: 0 45 | value: 0 46 | inSlope: 0.0369 47 | outSlope: 0.0369 48 | tangentMode: 0 49 | weightedMode: 3 50 | inWeight: 0 51 | outWeight: 0.8459 52 | - serializedVersion: 3 53 | time: 1 54 | value: 0.5 55 | inSlope: 56.8515 56 | outSlope: 56.8515 57 | tangentMode: 0 58 | weightedMode: 3 59 | inWeight: 0.0104 60 | outWeight: 0 61 | m_PreInfinity: 2 62 | m_PostInfinity: 2 63 | m_RotationOrder: 4 64 | _frameRate: 0 65 | _ascii: {r: 1, g: 1, b: 1, a: 1} 66 | _image: {r: 0, g: 0, b: 0, a: 1} 67 | --- !u!114 &-4296426367644365929 68 | MonoBehaviour: 69 | m_ObjectHideFlags: 0 70 | m_CorrespondingSourceObject: {fileID: 0} 71 | m_PrefabInstance: {fileID: 0} 72 | m_PrefabAsset: {fileID: 0} 73 | m_GameObject: {fileID: 0} 74 | m_Enabled: 1 75 | m_EditorHideFlags: 0 76 | m_Script: {fileID: 11500000, guid: 43b25b61d905aa7419c090926a80d551, type: 3} 77 | m_Name: AsciiFx 78 | m_EditorClassIdentifier: 79 | m_Active: 1 80 | _event: 600 81 | _pass: {fileID: -4350255237909425121} 82 | _blitShader: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 83 | --- !u!114 &-2027628800465215574 84 | MonoBehaviour: 85 | m_ObjectHideFlags: 3 86 | m_CorrespondingSourceObject: {fileID: 0} 87 | m_PrefabInstance: {fileID: 0} 88 | m_PrefabAsset: {fileID: 0} 89 | m_GameObject: {fileID: 0} 90 | m_Enabled: 1 91 | m_EditorHideFlags: 0 92 | m_Script: {fileID: 11500000, guid: 96d4fad2d3344ba6804ecaba4fda3570, type: 3} 93 | m_Name: 94 | m_EditorClassIdentifier: 95 | _active: 1 96 | _shader: {fileID: 4800000, guid: 37430ae71ba54bd390a4ca51906fd972, type: 3} 97 | _noiseScale: 0.5 98 | _scaleRange: {x: 1, y: 100} 99 | _palette: {fileID: 0} 100 | _pattern: {fileID: 0} 101 | _noiseMode: 1 102 | _pixelate: 1 103 | _scale: 0.735 104 | _frameRate: 0 105 | --- !u!114 &11400000 106 | MonoBehaviour: 107 | m_ObjectHideFlags: 0 108 | m_CorrespondingSourceObject: {fileID: 0} 109 | m_PrefabInstance: {fileID: 0} 110 | m_PrefabAsset: {fileID: 0} 111 | m_GameObject: {fileID: 0} 112 | m_Enabled: 1 113 | m_EditorHideFlags: 0 114 | m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} 115 | m_Name: UrpAscii_Renderer 116 | m_EditorClassIdentifier: 117 | debugShaders: 118 | debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3} 119 | hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} 120 | m_RendererFeatures: 121 | - {fileID: -4296426367644365929} 122 | m_RendererFeatureMap: 978bef68fb0660c4 123 | m_UseNativeRenderPass: 0 124 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} 125 | xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} 126 | shaders: 127 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 128 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} 129 | screenSpaceShadowPS: {fileID: 0} 130 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} 131 | stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} 132 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} 133 | fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} 134 | materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} 135 | coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} 136 | coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3} 137 | blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} 138 | cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3} 139 | objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, type: 3} 140 | dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3} 141 | m_AssetVersion: 2 142 | m_OpaqueLayerMask: 143 | serializedVersion: 2 144 | m_Bits: 4294967295 145 | m_TransparentLayerMask: 146 | serializedVersion: 2 147 | m_Bits: 4294967295 148 | m_DefaultStencilState: 149 | overrideStencilState: 0 150 | stencilReference: 0 151 | stencilCompareFunction: 8 152 | passOperation: 2 153 | failOperation: 0 154 | zFailOperation: 0 155 | m_ShadowTransparentReceive: 1 156 | m_RenderingMode: 0 157 | m_DepthPrimingMode: 0 158 | m_CopyDepthMode: 1 159 | m_AccurateGbufferNormals: 0 160 | m_IntermediateTextureMode: 1 161 | -------------------------------------------------------------------------------- /Samples~/UrpAscii_Renderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0c777aa83d7af143bb2cc261c15736b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "www.nulltale.asciifx", 3 | "displayName": "AsciiFx", 4 | "version": "1.0.0", 5 | "unity": "2022.1", 6 | "description": "Ascii effect for Unity Urp and VolFx", 7 | "author": { 8 | "name": "NullTale", 9 | "email": "nulltale@gmail.com", 10 | "url": "https://twitter.com/NullTale" 11 | }, 12 | "dependencies": { 13 | "com.unity.render-pipelines.universal": "14.0.6" 14 | }, 15 | "samples": [ 16 | { 17 | "displayName": "Samples", 18 | "description": "Sample scene vis various volume settings and configured UrpAsset", 19 | "path": "Samples~" 20 | } 21 | ], 22 | "hideInEditor": false 23 | } 24 | -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 624315883da2f3d4c9d8443e9809139d 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------