├── .gitattributes ├── .gitignore ├── Editor.meta ├── Editor ├── CurveRangePropertyDrawer.cs ├── CurveRangePropertyDrawer.cs.meta ├── OptionalDrawer.cs ├── OptionalDrawer.cs.meta ├── PassDrawer.cs ├── PassDrawer.cs.meta ├── Pixelation.Editor.asmdef └── Pixelation.Editor.asmdef.meta ├── LICENSE.md ├── LICENSE.md.meta ├── README.md ├── README.md.meta ├── Runtime.meta ├── Runtime ├── Common.meta ├── Common │ ├── CurveRangeAttribute.cs │ ├── CurveRangeAttribute.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 ├── Pixelation.Runtime.asmdef ├── Pixelation.Runtime.asmdef.meta ├── Pixelation.cs ├── Pixelation.cs.meta ├── Pixelation.meta └── Pixelation │ ├── Palettes.meta │ ├── Palettes │ ├── pix-astria-solseturs-1x.png │ ├── pix-astria-solseturs-1x.png.meta │ ├── pix-blackrock-palette-1x.png │ ├── pix-blackrock-palette-1x.png.meta │ ├── pix-chasm-1x.png │ ├── pix-chasm-1x.png.meta │ ├── pix-citrink-1x.png │ ├── pix-citrink-1x.png.meta │ ├── pix-demichrome-1x.png │ ├── pix-demichrome-1x.png.meta │ ├── pix-fuzzyfour-1x.png │ ├── pix-fuzzyfour-1x.png.meta │ ├── pix-homework-1x.png │ ├── pix-homework-1x.png.meta │ ├── pix-look-of-horror-1x.png │ ├── pix-look-of-horror-1x.png.meta │ ├── pix-lospec500-1x.png │ ├── pix-lospec500-1x.png.meta │ ├── pix-oil-6-1x.png │ ├── pix-oil-6-1x.png.meta │ ├── pix-one-bit-bw-1x.png │ ├── pix-one-bit-bw-1x.png.meta │ ├── pix-one-bit-moonbeam-1x.png │ ├── pix-one-bit-moonbeam-1x.png.meta │ ├── pix-sirens-at-night-1x.png │ ├── pix-sirens-at-night-1x.png.meta │ ├── pix-synthwave-9-1x.png │ ├── pix-synthwave-9-1x.png.meta │ ├── pix-tiefling20-1x.png │ ├── pix-tiefling20-1x.png.meta │ ├── pix-twilight-5-1x.png │ ├── pix-twilight-5-1x.png.meta │ ├── pix-windows-95-256-colours-1x.png │ └── pix-windows-95-256-colours-1x.png.meta │ ├── Pixelation.shader │ ├── Pixelation.shader.meta │ ├── PixelationAdj.cs │ ├── PixelationAdj.cs.meta │ ├── PixelationPass.cs │ ├── PixelationPass.cs.meta │ ├── PixelationVol.cs │ └── PixelationVol.cs.meta ├── Samples.meta ├── Samples~ ├── Pixelation.asset ├── Pixelation.asset.meta ├── Pixelation.unity ├── Pixelation.unity.meta ├── TheFall.png ├── TheFall.png.meta ├── UrpPixelation.asset ├── UrpPixelation.asset.meta ├── UrpPixelation_Renderer.asset └── UrpPixelation_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 7 | Samples.meta 8 | Samples.meta 9 | -------------------------------------------------------------------------------- /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e13bb6eb26f9194794cfd3837060c66 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/CurveRangePropertyDrawer.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | // Pixelation © 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: 9ca7f81bd08554646a7d0c5025724ba9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/OptionalDrawer.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using UnityEditor; 4 | using UnityEditorInternal; 5 | using UnityEngine; 6 | 7 | // Pixelation © 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: 07ba0a94255516b4a8c644debccb4b3f 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 | // Pixelation © 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/271730"; 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: eab7da97c90c8b04094c8eb2d18dfe99 3 | timeCreated: 1697620992 -------------------------------------------------------------------------------- /Editor/Pixelation.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Pixelation.Editor", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:36012c93722d7264b93ffeee174d47b0" 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/Pixelation.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a7454c7e95fc417478cdf6b841cf1cf7 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /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](https://assetstore.unity.com/packages/tools/particles-effects/270928), 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: c592a9aed871bb54cb8e14829ba74c54 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PixelationFx 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/271730) 7 | 8 | Pixelation post 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/PixelationFx/assets/1497430/bae56685-73f5-4f0a-b87b-581ec462debd) 12 | 13 | 3D pixelation with palettes (more pixelart palettes at [lospec](https://lospec.com/palette-list)) 14 | 15 | ![_cover](https://github.com/NullTale/PixelationFx/assets/1497430/52071f6f-6e48-4d05-89ba-7a313a75ab0e) 16 | 17 | ## Part of Artwork Project 18 | 19 | * [Vhs](https://github.com/NullTale/VhsFx) 20 | * [OldMovie](https://github.com/NullTale/OldMovieFx) 21 | * [GradientMap](https://github.com/NullTale/GradientMapFilter) 22 | * [Outline](https://github.com/NullTale/OutlineFilter) 23 | * [Flow](https://github.com/NullTale/FlowFx) 24 | * [Pixelation] 25 | * [Ascii](https://github.com/NullTale/AsciiFx) 26 | * [Dither](https://github.com/NullTale/DitherFx) 27 | * ... 28 | 29 | ## Usage 30 | Install via Unity [PackageManager](https://docs.unity3d.com/Manual/upm-ui-giturl.html)
31 | Add `Pixelation` feature to the UrpRenderer, control via volume profile 32 | 33 | ``` 34 | https://github.com/NullTale/PixelationFx.git 35 | ``` 36 | 37 | Render feature contains a few global parameters
38 | to control interpolation behavior and some settings
39 | 40 | ![_demo](https://github.com/NullTale/PixelationFx/assets/1497430/d698b113-8168-4d14-8f35-bc0f64a34a85) 41 | 42 | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: afde248a97eaf4149be37fde606f9d3e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e50f09bff8356ab44b2c1b5c03225cd4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Common.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4847cc9c15d7ab64d870f3af6ce9e798 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Common/CurveRangeAttribute.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using UnityEngine; 5 | 6 | // Pixelation © 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: e60bcac1bde1e384db66cad298e24be8 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/Optional.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | using UnityEngine; 5 | 6 | // Pixelation © 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: 4d85183ebd1f50a439a549efa9498a79 3 | timeCreated: 1697616851 -------------------------------------------------------------------------------- /Runtime/Common/RenderTarget.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using UnityEngine; 4 | using UnityEngine.Rendering; 5 | 6 | // Pixelation © 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: 01983ff90dca049489e3d509ea16e298 3 | timeCreated: 1697618098 -------------------------------------------------------------------------------- /Runtime/Common/ShaderNameAttribute.cs: -------------------------------------------------------------------------------- 1 | #if !VOL_FX 2 | 3 | using System; 4 | 5 | // Pixelation © 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: 14715937fc71f2049853cf811a0cbc60 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 | // Pixelation © 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: fb58e39cd65ea1f46bf33bd952b9c3ea 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 | // Pixelation © NullTale - https://twitter.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 Pixelation _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 | #if !UNITY_2022_1_OR_NEWER 47 | Debug.LogError($"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name} require Unity 2022 or higher"); 48 | #endif 49 | if (_shader == null || _material == null) 50 | { 51 | var shaderName = GetType().GetCustomAttributes(typeof(ShaderNameAttribute), true).FirstOrDefault() as ShaderNameAttribute; 52 | if (shaderName != null) 53 | { 54 | _shader = Shader.Find(shaderName._name); 55 | UnityEditor.EditorUtility.SetDirty(this); 56 | } 57 | } 58 | #endif 59 | 60 | if (_shader != null) 61 | _material = new Material(_shader); 62 | 63 | Init(); 64 | } 65 | 66 | public virtual void Invoke(CommandBuffer cmd, RTHandle source, RTHandle dest, ScriptableRenderContext context, ref RenderingData renderingData) 67 | { 68 | Utils.Blit(cmd, source, dest, _material, 0, Invert); 69 | } 70 | 71 | public void Validate() 72 | { 73 | #if UNITY_EDITOR 74 | if (_shader == null || _editorValidate) 75 | { 76 | var shaderName = GetType().GetCustomAttributes(typeof(ShaderNameAttribute), true).FirstOrDefault() as ShaderNameAttribute; 77 | if (shaderName != null) 78 | { 79 | _shader = Shader.Find(shaderName._name); 80 | var assetPath = UnityEditor.AssetDatabase.GetAssetPath(_shader); 81 | if (string.IsNullOrEmpty(assetPath) == false) 82 | _editorSetup(Path.GetDirectoryName(assetPath), Path.GetFileNameWithoutExtension(assetPath)); 83 | 84 | UnityEditor.EditorUtility.SetDirty(this); 85 | } 86 | } 87 | 88 | if ((_material == null || _material.shader != _shader) && _shader != null) 89 | { 90 | _material = new Material(_shader); 91 | Init(); 92 | } 93 | #endif 94 | 95 | IsActive = Validate(_material); 96 | } 97 | 98 | /// 99 | /// called to initialize pass when material is created 100 | /// 101 | public virtual void Init() 102 | { 103 | } 104 | 105 | /// 106 | /// called each frame to check is render is required and setup render material 107 | /// 108 | public abstract bool Validate(Material mat); 109 | 110 | /// 111 | /// frame clean up function used if implemented custom Invoke function to release resources 112 | /// 113 | public virtual void Cleanup(CommandBuffer cmd) 114 | { 115 | } 116 | 117 | /// 118 | /// used for optimization purposes, returns true if we need to call _editorSetup function 119 | /// 120 | protected virtual bool _editorValidate => false; 121 | 122 | /// 123 | /// editor validation function, used to gather additional references 124 | /// 125 | protected virtual void _editorSetup(string folder, string asset) 126 | { 127 | } 128 | } 129 | } 130 | } 131 | #endif -------------------------------------------------------------------------------- /Runtime/Common/VolFx.Pass.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d11c6a0fd4960d44a5a591775def022 3 | timeCreated: 1697796247 -------------------------------------------------------------------------------- /Runtime/Pixelation.Runtime.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Pixelation.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 | "name": "www.nulltale.artistictools", 25 | "expression": "1", 26 | "define": "ARTISTIC_TOOLS" 27 | } 28 | ], 29 | "noEngineReferences": false 30 | } -------------------------------------------------------------------------------- /Runtime/Pixelation.Runtime.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 36012c93722d7264b93ffeee174d47b0 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime/Pixelation.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 | // Pixelation © NullTale - https://twitter.com/NullTale/ 10 | namespace VolFx 11 | { 12 | public class Pixelation : 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.BeforeRenderingPostProcessing; 21 | 22 | public PixelationPass _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 Pixelation _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 | #endif -------------------------------------------------------------------------------- /Runtime/Pixelation.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8fb609ae800d4ad4ea60345e8437077c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Pixelation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5e81956384d734e4b8a9ba2818ed8f23 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 97a4e0f86a76be24ab20fb2920466a03 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-astria-solseturs-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-astria-solseturs-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-astria-solseturs-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 13f456a9ec12ef042a6de6c1472c4ce1 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: 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 | 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/Pixelation/Palettes/pix-blackrock-palette-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-blackrock-palette-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-blackrock-palette-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 03410b64efeaafa4085c3064672040a8 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: 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 | 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/Pixelation/Palettes/pix-chasm-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-chasm-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-chasm-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e21796cdef5dc8b43b96743cab5a656c 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: 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 | 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/Pixelation/Palettes/pix-citrink-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-citrink-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-citrink-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 913dbbd7afdcea349b72049939bafb15 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: 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 | 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/Pixelation/Palettes/pix-demichrome-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-demichrome-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-demichrome-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b8ce095d5466f2648816b077ffcef9c9 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: 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 | 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/Pixelation/Palettes/pix-fuzzyfour-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-fuzzyfour-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-fuzzyfour-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: caa511dbc2ebceb408f4e5c8a97aaf0e 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: 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 | 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/Pixelation/Palettes/pix-homework-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-homework-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-homework-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b94bcee517ee7046acadcdcbe14de85 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: 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 | 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/Pixelation/Palettes/pix-look-of-horror-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-look-of-horror-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-look-of-horror-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 53206034ef1a1bb4bb396617e6fe79c0 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: 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 | 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/Pixelation/Palettes/pix-lospec500-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-lospec500-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-lospec500-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3a85faa8100955147b5eacf0b9e27dfd 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: 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 | 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/Pixelation/Palettes/pix-oil-6-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-oil-6-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-oil-6-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ef75f08eac64c894eb7d23bb25c11532 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: 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 | 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/Pixelation/Palettes/pix-one-bit-bw-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-one-bit-bw-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-one-bit-bw-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b6b295dd57a8dbf4e87b2eda06333267 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: 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 | 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/Pixelation/Palettes/pix-one-bit-moonbeam-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-one-bit-moonbeam-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-one-bit-moonbeam-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b79a80ff8aec2644b8cc350ea7fe7216 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: 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 | 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/Pixelation/Palettes/pix-sirens-at-night-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-sirens-at-night-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-sirens-at-night-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f54e019d9faca77439fd8af4410fc554 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: 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 | 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/Pixelation/Palettes/pix-synthwave-9-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-synthwave-9-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-synthwave-9-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5c444952e96533945b02d5fefa436b29 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: 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 | 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/Pixelation/Palettes/pix-tiefling20-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-tiefling20-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-tiefling20-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c458d1a94c864a544a03b9b8e41c297b 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: 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 | 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/Pixelation/Palettes/pix-twilight-5-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-twilight-5-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-twilight-5-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6bc3a127ef49a4846acaa99eaea8c32e 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: 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 | 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/Pixelation/Palettes/pix-windows-95-256-colours-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Runtime/Pixelation/Palettes/pix-windows-95-256-colours-1x.png -------------------------------------------------------------------------------- /Runtime/Pixelation/Palettes/pix-windows-95-256-colours-1x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ccf260e839dca0f4fb949ee0784edaaa 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: 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 | 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/Pixelation/Pixelation.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/Vol/Pixelation" 2 | { 3 | Properties 4 | { 5 | _Pixels("Pixels", Vector) = (1, 1, 0, 1) 6 | _Color("Color", Color) = (0, 0, 0, 0) 7 | } 8 | 9 | SubShader 10 | { 11 | Tags { "RenderType"="Transparent" "RenderPipeline" = "UniversalPipeline" } 12 | LOD 0 13 | 14 | ZTest Always 15 | ZWrite Off 16 | ZClip false 17 | Cull Off 18 | 19 | Pass 20 | { 21 | name "Pixelation" 22 | 23 | HLSLPROGRAM 24 | 25 | #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" 26 | #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" 27 | 28 | #pragma vertex vert 29 | #pragma fragment frag 30 | 31 | #pragma multi_compile_local _SQUARE _CIRCLE 32 | #pragma multi_compile_local _ _CRISP 33 | #pragma multi_compile_local _ _USE_PALETTE 34 | 35 | sampler2D _MainTex; 36 | sampler2D _LutTex; 37 | 38 | float4 _Pixels; // x, y - desired resolution, z - gap, w - posterization 39 | float4 _Color; 40 | float _Roundness; 41 | #ifdef _CRISP 42 | float4 _MainTex_TexelSize; 43 | #endif 44 | 45 | struct vert_in 46 | { 47 | float4 vertex : POSITION; 48 | float2 uv : TEXCOORD0; 49 | }; 50 | 51 | struct frag_in 52 | { 53 | float4 vertex : SV_POSITION; 54 | float2 uv : TEXCOORD0; 55 | }; 56 | 57 | frag_in vert(const vert_in v) 58 | { 59 | frag_in o; 60 | o.vertex = v.vertex; 61 | o.uv = v.uv; 62 | return o; 63 | } 64 | 65 | half3 GetLinearToSRGB(half3 c) 66 | { 67 | #if _USE_FAST_SRGB_LINEAR_CONVERSION 68 | return FastLinearToSRGB(c); 69 | #else 70 | return LinearToSRGB(c); 71 | #endif 72 | } 73 | 74 | real3 GetSRGBToLinear(real3 c) 75 | { 76 | #if _USE_FAST_SRGB_LINEAR_CONVERSION 77 | return FastSRGBToLinear(c); 78 | #else 79 | return SRGBToLinear(c); 80 | #endif 81 | } 82 | 83 | #define LUT_SIZE 16. 84 | #define LUT_SIZE_MINUS (16. - 1.) 85 | 86 | float3 lut_sample(in float3 col, const sampler2D tex) 87 | { 88 | #if !defined(UNITY_COLORSPACE_GAMMA) 89 | float3 uvw = GetLinearToSRGB(col); 90 | #else 91 | float3 uvw = col; 92 | #endif 93 | float2 uv; 94 | 95 | // get replacement color from the lut set 96 | uv.y = uvw.y * (LUT_SIZE_MINUS / LUT_SIZE) + .5 * (1. / LUT_SIZE); 97 | uv.x = uvw.x * (LUT_SIZE_MINUS / (LUT_SIZE * LUT_SIZE)) + .5 * (1. / (LUT_SIZE * LUT_SIZE)) + floor(uvw.z * LUT_SIZE) / LUT_SIZE; 98 | 99 | float3 lutColor = tex2D(tex, uv).rgb; 100 | 101 | #if !defined(UNITY_COLORSPACE_GAMMA) 102 | lutColor = GetSRGBToLinear(lutColor.xyz); 103 | #endif 104 | 105 | return lutColor; 106 | } 107 | 108 | half luma(half3 rgb) 109 | { 110 | return dot(rgb, half3(0.299, 0.587, 0.114)); 111 | } 112 | 113 | inline float2 uvSnap(float2 uv) 114 | { 115 | #ifdef _CRISP 116 | float2 res = float2(round((uv.x - 0.5) * _Pixels.x) / _Pixels.x + 0.5, round((uv.y - 0.5) * _Pixels.y) / _Pixels.y + 0.5); 117 | 118 | // snap pixel to the center of the main tex 119 | res.x -= res.x % _MainTex_TexelSize.x; 120 | res.x += _MainTex_TexelSize.x * .5; 121 | 122 | res.y -= res.y % _MainTex_TexelSize.y; 123 | res.y += _MainTex_TexelSize.y * .5; 124 | 125 | return res; 126 | #else 127 | return float2(round((uv.x - 0.5) * _Pixels.x) / _Pixels.x + 0.5, round((uv.y - 0.5) * _Pixels.y) / _Pixels.y + 0.5); 128 | #endif 129 | } 130 | 131 | half4 frag(const frag_in i) : SV_Target 132 | { 133 | float2 snap = uvSnap(i.uv); 134 | float2 offset = abs(i.uv - snap) * _Pixels.xy; 135 | half4 sample = tex2D(_MainTex, snap); 136 | 137 | #ifdef _USE_PALETTE 138 | sample.rgb = lerp(sample.rgb, lut_sample(sample.rgb, _LutTex), _Pixels.w); 139 | #endif 140 | float shape = 1 - step(length(offset), _Pixels.z * _Roundness) * step(max(offset.x, offset.y), _Pixels.z); 141 | return lerp(sample, _Color, shape); 142 | } 143 | ENDHLSL 144 | } 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /Runtime/Pixelation/Pixelation.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2bf2830f83506eb4097cdebfd30a7bb8 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Runtime/Pixelation/PixelationAdj.cs: -------------------------------------------------------------------------------- 1 | #if ARTISTIC_TOOLS 2 | using System; 3 | using System.Linq; 4 | using UnityEngine; 5 | 6 | namespace VolFx 7 | { 8 | [AddComponentMenu("Layers/Mod/Pixelation")] 9 | public class PixelationAdj : ArtisticTools.Layer.Adjustment 10 | { 11 | private static readonly int s_Pixels = Shader.PropertyToID("_Pixels"); 12 | private static readonly int s_Color = Shader.PropertyToID("_Color"); 13 | private static readonly int s_Roundness = Shader.PropertyToID("_Roundness"); 14 | 15 | public override string ShaderName => "Hidden/Vol/Pixelation"; 16 | 17 | [Range(0, 1)] 18 | public float m_Scale = 1f; 19 | [Range(0, 1)] 20 | public float m_Grid = 1f; 21 | [Range(0, 1)] 22 | public float m_Roundness = .5f; 23 | [HideInInspector] 24 | public Color m_Color = Color.clear; 25 | 26 | [HideInInspector] 27 | [CurveRange(0, .005f, 1, 1)] [Tooltip("Scale interpolation relative to the volume scale parameter")] 28 | public AnimationCurve _scaleLerp = new AnimationCurve(new Keyframe[] 29 | { 30 | new Keyframe(0, 0.0049f, .0508f, 0.0508f, .0f, .742f), 31 | new Keyframe(1, 0.5095f, 3.6093f, 3.6093f, .1646f, .0f) 32 | }); 33 | 34 | [HideInInspector] 35 | [Range(0, 1)] [Tooltip("At what scale level does the grid become visible")] 36 | public float _gridReveal = 0.45f; 37 | [HideInInspector] 38 | [Tooltip("Grid impact discretization to reduce transition artifacts")] 39 | public bool _gridDiscrete = true; 40 | [Tooltip("Pixelate without texture sampling, keep colors, but parts of the image may disappear")] 41 | public bool _crisp = true; 42 | 43 | private bool _posterLast; 44 | private bool _crispLast; 45 | private bool _firstRun; 46 | 47 | // ======================================================================= 48 | public override void Init() 49 | { 50 | _firstRun = true; 51 | } 52 | 53 | public override bool Validate(Material mat) 54 | { 55 | _validateMat(mat, false, _crisp); 56 | 57 | var scale = _scaleLerp.Evaluate(m_Scale); 58 | var height = _scaleLerp.Evaluate(m_Scale) * Screen.height; 59 | var epsilon = 1f / (float)Screen.height; 60 | if (height < epsilon) 61 | height = epsilon; 62 | 63 | var roundness = m_Roundness; 64 | var aspect = Screen.width / (float)Screen.height; 65 | var gridMul = Mathf.Lerp(1f, 1.4142f, roundness); 66 | var gridscale = m_Grid * gridMul; 67 | 68 | if (_gridDiscrete) 69 | { 70 | var gridspace = 1f / Mathf.Floor(1f / scale); 71 | if (gridscale % gridspace > gridspace * .5f) 72 | gridscale += gridspace - gridscale % gridspace; 73 | else 74 | gridscale -= gridscale % gridspace; 75 | 76 | // do not override screen with black color if grid not zero 77 | if (gridscale == 0f && m_Grid > 0f) 78 | gridscale = gridspace; 79 | } 80 | 81 | var pixels = new Vector4(height * aspect, height, gridscale * .5f, 64f); 82 | 83 | mat.SetVector(s_Pixels, pixels); 84 | mat.SetFloat(s_Roundness, Mathf.Lerp(1.4142f, 1f, roundness)); 85 | mat.SetColor(s_Color, (height / Screen.height) < _gridReveal ? m_Color : Color.clear); 86 | return true; 87 | } 88 | 89 | private void _validateMat(Material mat, bool poster, bool crisp) 90 | { 91 | if (_firstRun) 92 | { 93 | // always apply parameters if first run 94 | _firstRun = false; 95 | 96 | poster = !_posterLast; 97 | crisp = !_crispLast; 98 | } 99 | 100 | if (_crispLast != crisp) 101 | { 102 | _crispLast = _crisp; 103 | 104 | if (_crisp) mat.EnableKeyword("_CRISP"); 105 | else mat.DisableKeyword("_CRISP"); 106 | } 107 | 108 | if (_posterLast != poster) 109 | { 110 | _posterLast = poster; 111 | 112 | if (poster) mat.EnableKeyword("_POSTER"); 113 | else mat.DisableKeyword("_POSTER"); 114 | } 115 | } 116 | } 117 | } 118 | #endif -------------------------------------------------------------------------------- /Runtime/Pixelation/PixelationAdj.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb21429d55df40b19038ef8dabd844a0 3 | timeCreated: 1704880620 -------------------------------------------------------------------------------- /Runtime/Pixelation/PixelationPass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using UnityEngine; 5 | 6 | // Pixelation © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx 8 | { 9 | [ShaderName("Hidden/Vol/Pixelation")] 10 | public class PixelationPass : VolFx.Pass 11 | { 12 | private static readonly int s_Pixels = Shader.PropertyToID("_Pixels"); 13 | private static readonly int s_Color = Shader.PropertyToID("_Color"); 14 | private static readonly int s_Roundness = Shader.PropertyToID("_Roundness"); 15 | private static readonly int s_LutTex = Shader.PropertyToID("_LutTex"); 16 | 17 | [CurveRange(0, .005f, 1, 1)] [Tooltip("Scale interpolation relative to the volume scale parameter")] 18 | public AnimationCurve _scaleLerp = new AnimationCurve(new Keyframe[] 19 | { 20 | new Keyframe(0, 0.0049f, .0508f, 0.0508f, .0f, .742f), 21 | new Keyframe(1, 0.5095f, 3.6093f, 3.6093f, .1646f, .0f) 22 | }); 23 | 24 | [Range(0, 1)] [Tooltip("At what scale level does the grid become visible")] 25 | public float _gridReveal = 0.45f; 26 | [Tooltip("Grid impact discretization to reduce transition artifacts")] 27 | public bool _gridDiscrete = true; 28 | [Tooltip("Pixelate without texture sampling, keep colors, but parts of the image may disappear")] 29 | public bool _crisp; 30 | [Range(0, 1)] [Tooltip("Default roundness if override is not set, volume roundness can be used for volume interpolations")] 31 | public float _roundnessDefault = 1f; 32 | [Tooltip("Default palette texture")] 33 | public Optional _palette; 34 | 35 | private bool _paletteLast; 36 | private bool _crispLast; 37 | private bool _firstRun; 38 | private Dictionary _paletteCache = new Dictionary(); 39 | 40 | // ======================================================================= 41 | public static class LutGenerator 42 | { 43 | private static Texture2D _lut16; 44 | private static Texture2D _lut32; 45 | private static Texture2D _lut64; 46 | 47 | // ======================================================================= 48 | [Serializable] 49 | public enum LutSize 50 | { 51 | x16, 52 | x32, 53 | x64 54 | } 55 | 56 | [Serializable] 57 | public enum Gamma 58 | { 59 | rec601, 60 | rec709, 61 | rec2100, 62 | average, 63 | } 64 | 65 | // ======================================================================= 66 | public static Texture2D Generate(Texture2D _palette, LutSize lutSize = LutSize.x16, Gamma gamma = Gamma.rec601) 67 | { 68 | var clean = _getLut(lutSize); 69 | var lut = clean.GetPixels(); 70 | var colors = _palette.GetPixels(); 71 | 72 | var _lutPalette = new Texture2D(clean.width, clean.height, TextureFormat.ARGB32, false); 73 | 74 | // grade colors from lut to palette by rgb 75 | var palette = lut.Select(lutColor => colors.Select(gradeColor => (grade: compare(lutColor, gradeColor), color: gradeColor)).OrderBy(n => n.grade).First()) 76 | .Select(n => n.color) 77 | .ToArray(); 78 | 79 | _lutPalette.SetPixels(palette); 80 | _lutPalette.filterMode = FilterMode.Point; 81 | _lutPalette.wrapMode = TextureWrapMode.Clamp; 82 | _lutPalette.Apply(); 83 | 84 | return _lutPalette; 85 | 86 | // ----------------------------------------------------------------------- 87 | float compare(Color a, Color b) 88 | { 89 | // compare colors by grayscale distance 90 | var weight = gamma switch 91 | { 92 | Gamma.rec601 => new Vector3(0.299f, 0.587f, 0.114f), 93 | Gamma.rec709 => new Vector3(0.2126f, 0.7152f, 0.0722f), 94 | Gamma.rec2100 => new Vector3(0.2627f, 0.6780f, 0.0593f), 95 | Gamma.average => new Vector3(0.33333f, 0.33333f, 0.33333f), 96 | _ => throw new ArgumentOutOfRangeException() 97 | }; 98 | 99 | // var c = a.ToVector3().Mul(weight) - b.ToVector3().Mul(weight); 100 | 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); 101 | 102 | return c.magnitude; 103 | } 104 | } 105 | 106 | // ======================================================================= 107 | internal static int _getLutSize(LutSize lutSize) 108 | { 109 | return lutSize switch 110 | { 111 | LutSize.x16 => 16, 112 | LutSize.x32 => 32, 113 | LutSize.x64 => 64, 114 | _ => throw new ArgumentOutOfRangeException() 115 | }; 116 | } 117 | 118 | internal static Texture2D _getLut(LutSize lutSize) 119 | { 120 | var size = _getLutSize(lutSize); 121 | var _lut = lutSize switch 122 | { 123 | LutSize.x16 => _lut16, 124 | LutSize.x32 => _lut32, 125 | LutSize.x64 => _lut64, 126 | _ => throw new ArgumentOutOfRangeException(nameof(lutSize), lutSize, null) 127 | }; 128 | 129 | if (_lut != null && _lut.height == size) 130 | return _lut; 131 | 132 | _lut = new Texture2D(size * size, size, TextureFormat.RGBA32, 0, false); 133 | _lut.filterMode = FilterMode.Point; 134 | 135 | for (var y = 0; y < size; y++) 136 | for (var x = 0; x < size * size; x++) 137 | _lut.SetPixel(x, y, _lutAt(x, y)); 138 | 139 | _lut.Apply(); 140 | return _lut; 141 | 142 | // ----------------------------------------------------------------------- 143 | Color _lutAt(int x, int y) 144 | { 145 | return new Color((x % size) / (size - 1f), y / (size - 1f), Mathf.FloorToInt(x / (float)size) * (1f / (size - 1f)), 1f); 146 | } 147 | } 148 | } 149 | 150 | // ======================================================================= 151 | public override void Init() 152 | { 153 | _firstRun = true; 154 | _paletteCache.Clear(); 155 | } 156 | 157 | public override bool Validate(Material mat) 158 | { 159 | var settings = Stack.GetComponent(); 160 | 161 | if (settings.IsActive() == false) 162 | return false; 163 | 164 | // access the palette 165 | var palette = settings.m_Palette.value as Texture2D; 166 | if (palette == null) 167 | palette = _palette.GetValueOrDefault(); 168 | 169 | Texture2D paletteLut = null; 170 | if (palette != null && _paletteCache.TryGetValue(palette, out paletteLut) == false) 171 | { 172 | paletteLut = LutGenerator.Generate(palette); 173 | _paletteCache.Add(palette, paletteLut); 174 | } 175 | var usePalette = palette != null && settings.m_Impact.value > 0f; 176 | if (usePalette) 177 | { 178 | mat.SetTexture(s_LutTex, paletteLut); 179 | } 180 | 181 | _validateMat(mat, usePalette, _crisp); 182 | 183 | var scale = _scaleLerp.Evaluate(settings.m_Scale.value); 184 | var height = _scaleLerp.Evaluate(settings.m_Scale.value) * Screen.height; 185 | var epsilon = 1f / (float)Screen.height; 186 | if (height < epsilon) 187 | height = epsilon; 188 | 189 | var roundness = settings.m_Roundness.overrideState ? settings.m_Roundness.value : _roundnessDefault; 190 | var aspect = Screen.width / (float)Screen.height; 191 | var gridMul = Mathf.Lerp(1f, 1.4142f, roundness); 192 | var gridscale = settings.m_Grid.value * gridMul; 193 | 194 | // if (_crisp) 195 | // gridscale. 196 | 197 | if (_gridDiscrete) 198 | { 199 | var gridspace = 1f / Mathf.Floor(1f / scale); 200 | if (gridscale % gridspace > gridspace * .5f) 201 | gridscale += gridspace - gridscale % gridspace; 202 | else 203 | gridscale -= gridscale % gridspace; 204 | 205 | // do not override screen with black color if grid not zero 206 | if (gridscale == 0f && settings.m_Grid.value > 0f) 207 | gridscale = gridspace; 208 | } 209 | 210 | var pixels = new Vector4(height * aspect, height, gridscale * .5f, settings.m_Impact.value); 211 | 212 | 213 | mat.SetVector(s_Pixels, pixels); 214 | mat.SetFloat(s_Roundness, Mathf.Lerp(1.4142f, 1f, roundness)); 215 | mat.SetColor(s_Color, (height / Screen.height) < _gridReveal ? settings.m_Color.value : Color.clear); 216 | return true; 217 | } 218 | 219 | private void _validateMat(Material mat, bool palette, bool crisp) 220 | { 221 | if (_firstRun) 222 | { 223 | // always apply parameters if first run 224 | _firstRun = false; 225 | 226 | palette = !_paletteLast; 227 | crisp = !_crispLast; 228 | } 229 | 230 | if (_crispLast != crisp) 231 | { 232 | _crispLast = _crisp; 233 | 234 | if (_crisp) mat.EnableKeyword("_CRISP"); 235 | else mat.DisableKeyword("_CRISP"); 236 | } 237 | 238 | if (_paletteLast != palette) 239 | { 240 | _paletteLast = palette; 241 | 242 | if (palette) mat.EnableKeyword("_USE_PALETTE"); 243 | else mat.DisableKeyword("_USE_PALETTE"); 244 | } 245 | } 246 | } 247 | } -------------------------------------------------------------------------------- /Runtime/Pixelation/PixelationPass.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b1c2a0ff44a297c4083246f72b8baae5 3 | timeCreated: 1676448249 -------------------------------------------------------------------------------- /Runtime/Pixelation/PixelationVol.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using UnityEngine.Rendering; 4 | using UnityEngine.Rendering.Universal; 5 | 6 | // Pixelation © NullTale - https://twitter.com/NullTale/ 7 | namespace VolFx 8 | { 9 | [Serializable, VolumeComponentMenu("VolFx/Pixelation")] 10 | public sealed class PixelationVol : VolumeComponent, IPostProcessComponent 11 | { 12 | public ClampedFloatParameter m_Scale = new ClampedFloatParameter(1, 0, 1f); 13 | public NoInterpClampedFloatParameter m_Grid = new NoInterpClampedFloatParameter(1f, 0, 1f); 14 | public ClampedFloatParameter m_Roundness = new ClampedFloatParameter(.5f, 0f, 1f); 15 | public NoInterpColorParameter m_Color = new NoInterpColorParameter(Color.clear); 16 | public Texture2DParameter m_Palette = new Texture2DParameter(null, false); 17 | public ClampedFloatParameter m_Impact = new ClampedFloatParameter(0, 0, 1); 18 | 19 | // ======================================================================= 20 | public bool IsActive() => active && (m_Scale.value < 1 || (m_Palette.value != null && m_Impact.value > 0f)); 21 | 22 | public bool IsTileCompatible() => false; 23 | } 24 | } -------------------------------------------------------------------------------- /Runtime/Pixelation/PixelationVol.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c4ad92b2d4441c34c8fc9eb5b2e51fd2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d3cff548af2c81145bfc8ef0a7482f54 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Pixelation.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-7206310782265734234 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: 0b2db86121404754db890f4c8dfe81b2, type: 3} 13 | m_Name: Bloom 14 | m_EditorClassIdentifier: 15 | active: 1 16 | skipIterations: 17 | m_OverrideState: 1 18 | m_Value: 1 19 | threshold: 20 | m_OverrideState: 1 21 | m_Value: 0.88 22 | intensity: 23 | m_OverrideState: 1 24 | m_Value: 1.75 25 | scatter: 26 | m_OverrideState: 1 27 | m_Value: 0.62 28 | clamp: 29 | m_OverrideState: 0 30 | m_Value: 65472 31 | tint: 32 | m_OverrideState: 0 33 | m_Value: {r: 1, g: 1, b: 1, a: 1} 34 | highQualityFiltering: 35 | m_OverrideState: 0 36 | m_Value: 0 37 | downscale: 38 | m_OverrideState: 0 39 | m_Value: 0 40 | maxIterations: 41 | m_OverrideState: 0 42 | m_Value: 6 43 | dirtTexture: 44 | m_OverrideState: 0 45 | m_Value: {fileID: 0} 46 | dimension: 1 47 | dirtIntensity: 48 | m_OverrideState: 0 49 | m_Value: 0 50 | --- !u!114 &-5569838515144326822 51 | MonoBehaviour: 52 | m_ObjectHideFlags: 3 53 | m_CorrespondingSourceObject: {fileID: 0} 54 | m_PrefabInstance: {fileID: 0} 55 | m_PrefabAsset: {fileID: 0} 56 | m_GameObject: {fileID: 0} 57 | m_Enabled: 1 58 | m_EditorHideFlags: 0 59 | m_Script: {fileID: 11500000, guid: 66f335fb1ffd8684294ad653bf1c7564, type: 3} 60 | m_Name: ColorAdjustments 61 | m_EditorClassIdentifier: 62 | active: 1 63 | postExposure: 64 | m_OverrideState: 0 65 | m_Value: 0.7 66 | contrast: 67 | m_OverrideState: 0 68 | m_Value: 4 69 | colorFilter: 70 | m_OverrideState: 0 71 | m_Value: {r: 1, g: 1, b: 1, a: 1} 72 | hueShift: 73 | m_OverrideState: 0 74 | m_Value: 0 75 | saturation: 76 | m_OverrideState: 1 77 | m_Value: 50.1 78 | --- !u!114 &11400000 79 | MonoBehaviour: 80 | m_ObjectHideFlags: 0 81 | m_CorrespondingSourceObject: {fileID: 0} 82 | m_PrefabInstance: {fileID: 0} 83 | m_PrefabAsset: {fileID: 0} 84 | m_GameObject: {fileID: 0} 85 | m_Enabled: 1 86 | m_EditorHideFlags: 0 87 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 88 | m_Name: Pixelation 89 | m_EditorClassIdentifier: 90 | components: 91 | - {fileID: 873942410513662288} 92 | - {fileID: -7206310782265734234} 93 | - {fileID: -5569838515144326822} 94 | --- !u!114 &873942410513662288 95 | MonoBehaviour: 96 | m_ObjectHideFlags: 3 97 | m_CorrespondingSourceObject: {fileID: 0} 98 | m_PrefabInstance: {fileID: 0} 99 | m_PrefabAsset: {fileID: 0} 100 | m_GameObject: {fileID: 0} 101 | m_Enabled: 1 102 | m_EditorHideFlags: 0 103 | m_Script: {fileID: 11500000, guid: c4ad92b2d4441c34c8fc9eb5b2e51fd2, type: 3} 104 | m_Name: PixelationVol 105 | m_EditorClassIdentifier: 106 | active: 1 107 | m_Scale: 108 | m_OverrideState: 1 109 | m_Value: 0.159 110 | m_Grid: 111 | m_OverrideState: 1 112 | m_Value: 0.614 113 | m_Type: 114 | m_OverrideState: 1 115 | m_Value: 0 116 | m_Color: 117 | m_OverrideState: 1 118 | m_Value: {r: 0, g: 0, b: 0, a: 1} 119 | hdr: 0 120 | m_Posterize: 121 | m_OverrideState: 1 122 | m_Value: 1 123 | -------------------------------------------------------------------------------- /Samples~/Pixelation.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27eae2fc674e5d74f9b2dafff5440221 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/Pixelation.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 3 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 0 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 3 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | buildHeightMesh: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &779545139 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 779545142} 135 | - component: {fileID: 779545141} 136 | - component: {fileID: 779545140} 137 | - component: {fileID: 779545143} 138 | m_Layer: 0 139 | m_Name: Camera 140 | m_TagString: MainCamera 141 | m_Icon: {fileID: 0} 142 | m_NavMeshLayer: 0 143 | m_StaticEditorFlags: 0 144 | m_IsActive: 1 145 | --- !u!81 &779545140 146 | AudioListener: 147 | m_ObjectHideFlags: 0 148 | m_CorrespondingSourceObject: {fileID: 0} 149 | m_PrefabInstance: {fileID: 0} 150 | m_PrefabAsset: {fileID: 0} 151 | m_GameObject: {fileID: 779545139} 152 | m_Enabled: 1 153 | --- !u!20 &779545141 154 | Camera: 155 | m_ObjectHideFlags: 0 156 | m_CorrespondingSourceObject: {fileID: 0} 157 | m_PrefabInstance: {fileID: 0} 158 | m_PrefabAsset: {fileID: 0} 159 | m_GameObject: {fileID: 779545139} 160 | m_Enabled: 1 161 | serializedVersion: 2 162 | m_ClearFlags: 2 163 | m_BackGroundColor: {r: 0.051, g: 0.051, b: 0.051, a: 0} 164 | m_projectionMatrixMode: 1 165 | m_GateFitMode: 2 166 | m_FOVAxisMode: 0 167 | m_Iso: 200 168 | m_ShutterSpeed: 0.005 169 | m_Aperture: 16 170 | m_FocusDistance: 10 171 | m_FocalLength: 50 172 | m_BladeCount: 5 173 | m_Curvature: {x: 2, y: 11} 174 | m_BarrelClipping: 0.25 175 | m_Anamorphism: 0 176 | m_SensorSize: {x: 36, y: 24} 177 | m_LensShift: {x: 0, y: 0} 178 | m_NormalizedViewPortRect: 179 | serializedVersion: 2 180 | x: 0 181 | y: 0 182 | width: 1 183 | height: 1 184 | near clip plane: 0.3 185 | far clip plane: 1000 186 | field of view: 60 187 | orthographic: 1 188 | orthographic size: 5.32 189 | m_Depth: -1 190 | m_CullingMask: 191 | serializedVersion: 2 192 | m_Bits: 4294967295 193 | m_RenderingPath: -1 194 | m_TargetTexture: {fileID: 0} 195 | m_TargetDisplay: 0 196 | m_TargetEye: 3 197 | m_HDR: 1 198 | m_AllowMSAA: 1 199 | m_AllowDynamicResolution: 0 200 | m_ForceIntoRT: 0 201 | m_OcclusionCulling: 1 202 | m_StereoConvergence: 10 203 | m_StereoSeparation: 0.022 204 | --- !u!4 &779545142 205 | Transform: 206 | m_ObjectHideFlags: 0 207 | m_CorrespondingSourceObject: {fileID: 0} 208 | m_PrefabInstance: {fileID: 0} 209 | m_PrefabAsset: {fileID: 0} 210 | m_GameObject: {fileID: 779545139} 211 | serializedVersion: 2 212 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 213 | m_LocalPosition: {x: 0, y: 0, z: -10} 214 | m_LocalScale: {x: 1, y: 1, z: 1} 215 | m_ConstrainProportionsScale: 0 216 | m_Children: [] 217 | m_Father: {fileID: 0} 218 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 219 | --- !u!114 &779545143 220 | MonoBehaviour: 221 | m_ObjectHideFlags: 0 222 | m_CorrespondingSourceObject: {fileID: 0} 223 | m_PrefabInstance: {fileID: 0} 224 | m_PrefabAsset: {fileID: 0} 225 | m_GameObject: {fileID: 779545139} 226 | m_Enabled: 1 227 | m_EditorHideFlags: 0 228 | m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} 229 | m_Name: 230 | m_EditorClassIdentifier: 231 | m_RenderShadows: 1 232 | m_RequiresDepthTextureOption: 2 233 | m_RequiresOpaqueTextureOption: 2 234 | m_CameraType: 0 235 | m_Cameras: [] 236 | m_RendererIndex: -1 237 | m_VolumeLayerMask: 238 | serializedVersion: 2 239 | m_Bits: 1 240 | m_VolumeTrigger: {fileID: 0} 241 | m_VolumeFrameworkUpdateModeOption: 2 242 | m_RenderPostProcessing: 1 243 | m_Antialiasing: 0 244 | m_AntialiasingQuality: 2 245 | m_StopNaN: 0 246 | m_Dithering: 0 247 | m_ClearDepth: 1 248 | m_AllowXRRendering: 1 249 | m_AllowHDROutput: 1 250 | m_UseScreenCoordOverride: 0 251 | m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} 252 | m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} 253 | m_RequiresDepthTexture: 0 254 | m_RequiresColorTexture: 0 255 | m_Version: 2 256 | m_TaaSettings: 257 | quality: 3 258 | frameInfluence: 0.1 259 | jitterScale: 1 260 | mipBias: 0 261 | varianceClampScale: 0.9 262 | contrastAdaptiveSharpening: 0 263 | --- !u!1 &834110885 264 | GameObject: 265 | m_ObjectHideFlags: 0 266 | m_CorrespondingSourceObject: {fileID: 0} 267 | m_PrefabInstance: {fileID: 0} 268 | m_PrefabAsset: {fileID: 0} 269 | serializedVersion: 6 270 | m_Component: 271 | - component: {fileID: 834110887} 272 | - component: {fileID: 834110886} 273 | m_Layer: 0 274 | m_Name: Vol 275 | m_TagString: Untagged 276 | m_Icon: {fileID: 0} 277 | m_NavMeshLayer: 0 278 | m_StaticEditorFlags: 0 279 | m_IsActive: 1 280 | --- !u!114 &834110886 281 | MonoBehaviour: 282 | m_ObjectHideFlags: 0 283 | m_CorrespondingSourceObject: {fileID: 0} 284 | m_PrefabInstance: {fileID: 0} 285 | m_PrefabAsset: {fileID: 0} 286 | m_GameObject: {fileID: 834110885} 287 | m_Enabled: 1 288 | m_EditorHideFlags: 0 289 | m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} 290 | m_Name: 291 | m_EditorClassIdentifier: 292 | m_IsGlobal: 1 293 | priority: 0 294 | blendDistance: 0 295 | weight: 1 296 | sharedProfile: {fileID: 11400000, guid: 27eae2fc674e5d74f9b2dafff5440221, type: 2} 297 | --- !u!4 &834110887 298 | Transform: 299 | m_ObjectHideFlags: 0 300 | m_CorrespondingSourceObject: {fileID: 0} 301 | m_PrefabInstance: {fileID: 0} 302 | m_PrefabAsset: {fileID: 0} 303 | m_GameObject: {fileID: 834110885} 304 | serializedVersion: 2 305 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 306 | m_LocalPosition: {x: 0, y: 0, z: 0} 307 | m_LocalScale: {x: 1, y: 1, z: 1} 308 | m_ConstrainProportionsScale: 0 309 | m_Children: [] 310 | m_Father: {fileID: 0} 311 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 312 | --- !u!1 &1682508020 313 | GameObject: 314 | m_ObjectHideFlags: 0 315 | m_CorrespondingSourceObject: {fileID: 0} 316 | m_PrefabInstance: {fileID: 0} 317 | m_PrefabAsset: {fileID: 0} 318 | serializedVersion: 6 319 | m_Component: 320 | - component: {fileID: 1682508022} 321 | - component: {fileID: 1682508021} 322 | m_Layer: 0 323 | m_Name: The Fall 324 | m_TagString: Untagged 325 | m_Icon: {fileID: 0} 326 | m_NavMeshLayer: 0 327 | m_StaticEditorFlags: 0 328 | m_IsActive: 1 329 | --- !u!212 &1682508021 330 | SpriteRenderer: 331 | m_ObjectHideFlags: 0 332 | m_CorrespondingSourceObject: {fileID: 0} 333 | m_PrefabInstance: {fileID: 0} 334 | m_PrefabAsset: {fileID: 0} 335 | m_GameObject: {fileID: 1682508020} 336 | m_Enabled: 1 337 | m_CastShadows: 0 338 | m_ReceiveShadows: 0 339 | m_DynamicOccludee: 1 340 | m_StaticShadowCaster: 0 341 | m_MotionVectors: 1 342 | m_LightProbeUsage: 1 343 | m_ReflectionProbeUsage: 1 344 | m_RayTracingMode: 0 345 | m_RayTraceProcedural: 0 346 | m_RenderingLayerMask: 1 347 | m_RendererPriority: 0 348 | m_Materials: 349 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 350 | m_StaticBatchInfo: 351 | firstSubMesh: 0 352 | subMeshCount: 0 353 | m_StaticBatchRoot: {fileID: 0} 354 | m_ProbeAnchor: {fileID: 0} 355 | m_LightProbeVolumeOverride: {fileID: 0} 356 | m_ScaleInLightmap: 1 357 | m_ReceiveGI: 1 358 | m_PreserveUVs: 0 359 | m_IgnoreNormalsForChartDetection: 0 360 | m_ImportantGI: 0 361 | m_StitchLightmapSeams: 1 362 | m_SelectedEditorRenderState: 0 363 | m_MinimumChartSize: 4 364 | m_AutoUVMaxDistance: 0.5 365 | m_AutoUVMaxAngle: 89 366 | m_LightmapParameters: {fileID: 0} 367 | m_SortingLayerID: 0 368 | m_SortingLayer: 0 369 | m_SortingOrder: 0 370 | m_Sprite: {fileID: 21300000, guid: 912497da03865f74a86a52ff1070d361, type: 3} 371 | m_Color: {r: 1, g: 1, b: 1, a: 1} 372 | m_FlipX: 0 373 | m_FlipY: 0 374 | m_DrawMode: 0 375 | m_Size: {x: 1.43, y: 1.67} 376 | m_AdaptiveModeThreshold: 0.5 377 | m_SpriteTileMode: 0 378 | m_WasSpriteAssigned: 1 379 | m_MaskInteraction: 0 380 | m_SpriteSortPoint: 0 381 | --- !u!4 &1682508022 382 | Transform: 383 | m_ObjectHideFlags: 0 384 | m_CorrespondingSourceObject: {fileID: 0} 385 | m_PrefabInstance: {fileID: 0} 386 | m_PrefabAsset: {fileID: 0} 387 | m_GameObject: {fileID: 1682508020} 388 | serializedVersion: 2 389 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 390 | m_LocalPosition: {x: 0, y: 0, z: 0} 391 | m_LocalScale: {x: 1.66, y: 1.66, z: 1.66} 392 | m_ConstrainProportionsScale: 1 393 | m_Children: [] 394 | m_Father: {fileID: 0} 395 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 396 | --- !u!1660057539 &9223372036854775807 397 | SceneRoots: 398 | m_ObjectHideFlags: 0 399 | m_Roots: 400 | - {fileID: 779545142} 401 | - {fileID: 1682508022} 402 | - {fileID: 834110887} 403 | -------------------------------------------------------------------------------- /Samples~/Pixelation.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d299af71b95edde41aaa3b6a64865503 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/TheFall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NullTale/PixelationFx/b6158c34a5a7a7e8ae30bf757d8c331876f6adf7/Samples~/TheFall.png -------------------------------------------------------------------------------- /Samples~/TheFall.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 912497da03865f74a86a52ff1070d361 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: 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: 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 | -------------------------------------------------------------------------------- /Samples~/UrpPixelation.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: UrpPixelation 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: b026cc7cc4a2a844baa4d3e7f2d73872, 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: 1 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: 1 86 | m_PrefilteringModeAdditionalLight: 4 87 | m_PrefilteringModeAdditionalLightShadows: 1 88 | m_PrefilterXRKeywords: 0 89 | m_PrefilteringModeForwardPlus: 1 90 | m_PrefilteringModeDeferredRendering: 1 91 | m_PrefilteringModeScreenSpaceOcclusion: 1 92 | m_PrefilterDebugKeywords: 0 93 | m_PrefilterWriteRenderingLayers: 0 94 | m_PrefilterHDROutput: 0 95 | m_PrefilterSSAODepthNormals: 0 96 | m_PrefilterSSAOSourceDepthLow: 0 97 | m_PrefilterSSAOSourceDepthMedium: 0 98 | m_PrefilterSSAOSourceDepthHigh: 0 99 | m_PrefilterSSAOInterleaved: 0 100 | m_PrefilterSSAOBlueNoise: 0 101 | m_PrefilterSSAOSampleCountLow: 0 102 | m_PrefilterSSAOSampleCountMedium: 0 103 | m_PrefilterSSAOSampleCountHigh: 0 104 | m_PrefilterDBufferMRT1: 0 105 | m_PrefilterDBufferMRT2: 0 106 | m_PrefilterDBufferMRT3: 0 107 | m_PrefilterScreenCoord: 0 108 | m_PrefilterNativeRenderPass: 0 109 | m_ShaderVariantLogLevel: 0 110 | m_ShadowCascades: 0 111 | -------------------------------------------------------------------------------- /Samples~/UrpPixelation.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2c8eb1b02dd2cca4c9d6ed5663010b6e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/UrpPixelation_Renderer.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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} 13 | m_Name: UrpPixelation_Renderer 14 | m_EditorClassIdentifier: 15 | debugShaders: 16 | debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3} 17 | hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} 18 | m_RendererFeatures: 19 | - {fileID: 6246146197536917953} 20 | m_RendererFeatureMap: c1495887dfc4ae56 21 | m_UseNativeRenderPass: 0 22 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} 23 | xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} 24 | shaders: 25 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 26 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} 27 | screenSpaceShadowPS: {fileID: 0} 28 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} 29 | stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} 30 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} 31 | fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} 32 | materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} 33 | coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} 34 | coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3} 35 | blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} 36 | cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3} 37 | objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, type: 3} 38 | dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3} 39 | m_AssetVersion: 2 40 | m_OpaqueLayerMask: 41 | serializedVersion: 2 42 | m_Bits: 4294967295 43 | m_TransparentLayerMask: 44 | serializedVersion: 2 45 | m_Bits: 4294967295 46 | m_DefaultStencilState: 47 | overrideStencilState: 0 48 | stencilReference: 0 49 | stencilCompareFunction: 8 50 | passOperation: 2 51 | failOperation: 0 52 | zFailOperation: 0 53 | m_ShadowTransparentReceive: 1 54 | m_RenderingMode: 0 55 | m_DepthPrimingMode: 0 56 | m_CopyDepthMode: 1 57 | m_AccurateGbufferNormals: 0 58 | m_IntermediateTextureMode: 1 59 | --- !u!114 &40924427854689561 60 | MonoBehaviour: 61 | m_ObjectHideFlags: 3 62 | m_CorrespondingSourceObject: {fileID: 0} 63 | m_PrefabInstance: {fileID: 0} 64 | m_PrefabAsset: {fileID: 0} 65 | m_GameObject: {fileID: 0} 66 | m_Enabled: 1 67 | m_EditorHideFlags: 0 68 | m_Script: {fileID: 11500000, guid: b1c2a0ff44a297c4083246f72b8baae5, type: 3} 69 | m_Name: 70 | m_EditorClassIdentifier: 71 | _active: 1 72 | _shader: {fileID: 4800000, guid: 2bf2830f83506eb4097cdebfd30a7bb8, type: 3} 73 | _scaleLerp: 74 | serializedVersion: 2 75 | m_Curve: 76 | - serializedVersion: 3 77 | time: 0 78 | value: 0.005 79 | inSlope: 0 80 | outSlope: 0.995 81 | tangentMode: 0 82 | weightedMode: 0 83 | inWeight: 0 84 | outWeight: 0 85 | - serializedVersion: 3 86 | time: 1 87 | value: 1 88 | inSlope: 0.995 89 | outSlope: 0 90 | tangentMode: 0 91 | weightedMode: 0 92 | inWeight: 0 93 | outWeight: 0 94 | m_PreInfinity: 2 95 | m_PostInfinity: 2 96 | m_RotationOrder: 4 97 | _gridTreshold: 0.45 98 | --- !u!114 &6246146197536917953 99 | MonoBehaviour: 100 | m_ObjectHideFlags: 0 101 | m_CorrespondingSourceObject: {fileID: 0} 102 | m_PrefabInstance: {fileID: 0} 103 | m_PrefabAsset: {fileID: 0} 104 | m_GameObject: {fileID: 0} 105 | m_Enabled: 1 106 | m_EditorHideFlags: 0 107 | m_Script: {fileID: 11500000, guid: 8fb609ae800d4ad4ea60345e8437077c, type: 3} 108 | m_Name: Pixelation 109 | m_EditorClassIdentifier: 110 | m_Active: 1 111 | _event: 550 112 | _pass: {fileID: 40924427854689561} 113 | _blitShader: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 114 | -------------------------------------------------------------------------------- /Samples~/UrpPixelation_Renderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b026cc7cc4a2a844baa4d3e7f2d73872 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "www.nulltale.pixelation", 3 | "displayName": "Pixelation", 4 | "version": "1.2.0", 5 | "unity": "2022.1", 6 | "description": "Pixelation post 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 | "hideInEditor": false 16 | } 17 | -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ae8c56cfad7e5cd46a66961d9b0637a8 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------