From 54414b7a7bdf87263fa162e9cbe937312ddbb4f6 Mon Sep 17 00:00:00 2001 From: poiyomi Date: Fri, 29 Jul 2022 19:23:59 -0400 Subject: [PATCH] 8.0.425 --- .../Scripts/ThryEditor/CREDITS.txt | 6 + .../Scripts/ThryEditor/CREDITS.txt.meta | 7 + .../Scripts/ThryEditor/Editor/Config.cs | 2 +- .../Scripts/ThryEditor/Editor/DataStructs.cs | 77 +- .../Scripts/ThryEditor/Editor/Drawers.cs | 85 +- .../ThryEditor/Editor/EditorStructs.cs | 53 + .../Scripts/ThryEditor/Editor/GUIHelper.cs | 80 +- .../Scripts/ThryEditor/Editor/Helper.cs | 126 ++ .../Scripts/ThryEditor/Editor/HelperWeb.cs | 21 +- .../Scripts/ThryEditor/Editor/Settings.cs | 39 +- .../ThryEditor/Editor/ShaderOptimizer.cs | 3 +- .../Scripts/ThryEditor/Editor/Styles.cs | 3 + .../Scripts/ThryEditor/Editor/ThryEditor.cs | 3 + .../ThryEditor/External.meta} | 2 +- .../Scripts/ThryEditor/External/Editor.meta | 8 + .../ThryEditor/External/Editor/AbiAutoLock.cs | 52 + .../External/Editor/AbiAutoLock.cs.meta | 11 + .../Scripts/ThryEditor/External/ReadMe.txt | 1 + .../ThryEditor/External/ReadMe.txt.meta | 7 + .../Scripts/ThryEditor/thry_editor_locale.csv | 2 + .../Shaders/8.0/Poiyomi Early Outline.shader | 1436 +++++++++++++++-- .../Shaders/8.0/Poiyomi Outline.shader | 1436 +++++++++++++++-- .../Shaders/8.0/Poiyomi World.shader | 1250 ++++++++++++-- _PoiyomiShaders/Shaders/8.0/Poiyomi.shader | 1125 ++++++++++++- .../Shaders/Extras/MasterScanner.shader | 62 + .../Shaders/Extras/MasterScanner.shader.meta | 8 + .../Textures/Fur/FurHeightMap.gif.meta | 25 +- .../Textures/Noise/Gradient.jpg.meta | 27 +- .../Textures/Noise/Gradient2.jpg.meta | 27 +- .../Textures/Noise/T_Abstract2_Noise.png.meta | 17 +- .../Textures/Noise/T_Abstract_Noise.png.meta | 17 +- .../Textures/Noise/T_Blotch_Noise.png.meta | 17 +- .../Textures/Noise/T_Brick2_Noise.png.meta | 17 +- .../Textures/Noise/T_Brick_Noise.png.meta | 17 +- .../Textures/Noise/T_Caustic_Noise.png.meta | 15 +- .../Textures/Noise/T_Cell_Noise.png.meta | 17 +- .../Textures/Noise/T_Checker_Noise.png.meta | 17 +- .../Textures/Noise/T_Cloudy_Noise.png.meta | 17 +- .../Noise/T_InvertedHex_Noise.png.meta | 2 +- .../Textures/Noise/T_Noise_No (1).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (1).png.meta | 17 +- .../Textures/Noise/T_Noise_No (10).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (11).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (12).TGA.meta | 17 +- .../Textures/Noise/T_Noise_No (12).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (13).TGA.meta | 17 +- .../Textures/Noise/T_Noise_No (13).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (14).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (15).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (16).TGA.meta | 17 +- .../Textures/Noise/T_Noise_No (16).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (17).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (18).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (19).jpg.meta | 2 +- .../Textures/Noise/T_Noise_No (2).jpg.meta | 2 +- .../Textures/Noise/T_Noise_No (2).png.meta | 17 +- .../Textures/Noise/T_Noise_No (20).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (21).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (22).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (23).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (3).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (4).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (5).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (6).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (7).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (8).jpg.meta | 17 +- .../Textures/Noise/T_Noise_No (9).TGA.meta | 17 +- .../Textures/Noise/T_Noise_No (9).jpg.meta | 17 +- .../Noise/T_Noise_No.png (1).png.meta | 2 +- .../Noise/T_Noise_No.png (10).png.meta | 17 +- .../Noise/T_Noise_No.png (11).png.meta | 2 +- .../Noise/T_Noise_No.png (12).png.meta | 17 +- .../Noise/T_Noise_No.png (13).png.meta | 17 +- .../Noise/T_Noise_No.png (14).png.meta | 17 +- .../Noise/T_Noise_No.png (15).png.meta | 17 +- .../Noise/T_Noise_No.png (16).png.meta | 17 +- .../Noise/T_Noise_No.png (17).png.meta | 17 +- .../Noise/T_Noise_No.png (18).png.meta | 17 +- .../Noise/T_Noise_No.png (2).png.meta | 17 +- .../Noise/T_Noise_No.png (3).png.meta | 17 +- .../Noise/T_Noise_No.png (4).png.meta | 17 +- .../Noise/T_Noise_No.png (5).png.meta | 17 +- .../Noise/T_Noise_No.png (6).png.meta | 17 +- .../Noise/T_Noise_No.png (7).png.meta | 17 +- .../Noise/T_Noise_No.png (8).png.meta | 17 +- .../Noise/T_Noise_No.png (9).png.meta | 17 +- .../Textures/Noise/T_Pattern2_Noise.jpg.meta | 27 +- .../Textures/Noise/T_Pattern_Noise.jpg.meta | 27 +- .../Textures/Noise/T_Sketch_Noise.png.meta | 17 +- .../Textures/Noise/T_Smudge_Noise.png.meta | 17 +- .../Textures/Noise/T_Vornoi2_Noise.png.meta | 17 +- .../Textures/Noise/T_Voronoi_Noise.png.meta | 17 +- .../Textures/Noise/T_Wiggly_Noise.png.meta | 17 +- .../Textures/Noise/T_ZigZag_Noise.png.meta | 17 +- 94 files changed, 6170 insertions(+), 862 deletions(-) create mode 100644 _PoiyomiShaders/Scripts/ThryEditor/CREDITS.txt create mode 100644 _PoiyomiShaders/Scripts/ThryEditor/CREDITS.txt.meta rename _PoiyomiShaders/{Shaders/7.3.meta => Scripts/ThryEditor/External.meta} (77%) create mode 100644 _PoiyomiShaders/Scripts/ThryEditor/External/Editor.meta create mode 100644 _PoiyomiShaders/Scripts/ThryEditor/External/Editor/AbiAutoLock.cs create mode 100644 _PoiyomiShaders/Scripts/ThryEditor/External/Editor/AbiAutoLock.cs.meta create mode 100644 _PoiyomiShaders/Scripts/ThryEditor/External/ReadMe.txt create mode 100644 _PoiyomiShaders/Scripts/ThryEditor/External/ReadMe.txt.meta create mode 100644 _PoiyomiShaders/Shaders/Extras/MasterScanner.shader create mode 100644 _PoiyomiShaders/Shaders/Extras/MasterScanner.shader.meta diff --git a/_PoiyomiShaders/Scripts/ThryEditor/CREDITS.txt b/_PoiyomiShaders/Scripts/ThryEditor/CREDITS.txt new file mode 100644 index 00000000..8d859295 --- /dev/null +++ b/_PoiyomiShaders/Scripts/ThryEditor/CREDITS.txt @@ -0,0 +1,6 @@ +Shader Optimizer : Kaj (https://github.com/DarthShader) +sRGBWarningDrawer : z3y (https://github.com/z3y) +Auto Anchor Feature : Pumkin (https://github.com/rurre) + +Shader Optimizer - Property Renaming : RequiDev (https://github.com/RequiDev) +Shader Optimizer - Shared Locked Shaders : 3 (https://github.com/Float3) \ No newline at end of file diff --git a/_PoiyomiShaders/Scripts/ThryEditor/CREDITS.txt.meta b/_PoiyomiShaders/Scripts/ThryEditor/CREDITS.txt.meta new file mode 100644 index 00000000..bd2ae0e3 --- /dev/null +++ b/_PoiyomiShaders/Scripts/ThryEditor/CREDITS.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f5806d57c19dfa642a0f3161f13e978f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/Config.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/Config.cs index 089dc46d..6096f486 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/Config.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/Config.cs @@ -16,7 +16,7 @@ public class Config { // consts private const string PATH_CONFIG_FILE = "Thry/Config.json"; - private const string VERSION = "2.26.5"; + private const string VERSION = "2.27.6"; // static private static Config config; diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/DataStructs.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/DataStructs.cs index 64d4c518..566fdfa7 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/DataStructs.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/DataStructs.cs @@ -35,11 +35,8 @@ public class PATH public class URL { - public const string MODULE_COLLECTION = "https://thryeditor.thryrallo.de/files/modules.json"; - public const string SETTINGS_MESSAGE_URL = "http://thryeditor.thryrallo.de/message.json"; - - public const string DATA_SHARE_SEND = "http://thryeditor.thryrallo.de/send_analytics.php"; - public const string DATA_SHARE_GET_MY_DATA = "https://thryeditor.thryrallo.de/get_my_data.php"; + public const string MODULE_COLLECTION = "https://raw.githubusercontent.com/Thryrallo/ThryEditorStreamedResources/main/modules.json"; + public const string SETTINGS_MESSAGE_URL = "https://raw.githubusercontent.com/Thryrallo/ThryEditorStreamedResources/main/Messages/settingsWindow.json"; public const string COUNT_PROJECT = "http://thryeditor.thryrallo.de/count_project.php"; public const string COUNT_USER = "http://thryeditor.thryrallo.de/count_user.php"; } @@ -67,7 +64,9 @@ public class DrawingData public static bool LastPropertyDoesntAllowAnimation; public static DrawerType LastPropertyDrawerType; public static MaterialPropertyDrawer LastPropertyDrawer; + public static List LastPropertyDecorators = new List(); public static bool IsEnabled = true; + public static bool IsCollectingProperties = false; public static ShaderPart LastInitiatedPart; @@ -77,6 +76,15 @@ public static void ResetLastDrawerData() LastPropertyDoesntAllowAnimation = false; LastPropertyDrawer = null; LastPropertyDrawerType = DrawerType.None; + LastPropertyDecorators.Clear(); + } + + public static void RegisterDecorator(MaterialPropertyDrawer drawer) + { + if(IsCollectingProperties) + { + LastPropertyDecorators.Add(drawer); + } } } @@ -129,13 +137,13 @@ public class ButtonData public TextureData texture = null; public DefineableAction action = new DefineableAction(); public string hover = ""; + public bool center_position = false; public DefineableCondition condition_show = new DefineableCondition(); } public class TextureData { public string name = null; - public int width = 128; public int height = 128; @@ -144,6 +152,8 @@ public class TextureData public int ansioLevel = 1; public FilterMode filterMode = FilterMode.Bilinear; public TextureWrapMode wrapMode = TextureWrapMode.Repeat; + public bool center_position = false; + bool _isLoading; public void ApplyModes(Texture texture) { @@ -160,21 +170,58 @@ public void ApplyModes(string path) importer.SaveAndReimport(); } - private Texture p_loaded_texture; + static Dictionary s_loaded_textures = new Dictionary(); public Texture loaded_texture { get { - if (p_loaded_texture == null) + if(!s_loaded_textures.ContainsKey(name) || s_loaded_textures[name] == null) { - string path = FileHelper.FindFile(name, "texture"); - if (path != null) - p_loaded_texture = AssetDatabase.LoadAssetAtPath(path); - else - p_loaded_texture = new Texture2D(1, 1); + if(IsUrl()) + { + if(!_isLoading) + { + WebHelper.DownloadBytesASync(name, (byte[] b) => + { + _isLoading = false; + Texture2D tex = new Texture2D(1,1, TextureFormat.ARGB32, false); + ImageConversion.LoadImage(tex, b, false); + s_loaded_textures[name] = tex; + }); + _isLoading = true; + } + }else + { + string path = FileHelper.FindFile(name, "texture"); + if (path != null) + s_loaded_textures[name] = AssetDatabase.LoadAssetAtPath(path); + else + s_loaded_textures[name] = new Texture2D(1, 1); + } + if(!s_loaded_textures.ContainsKey(name)) + { + return null; + } } - return p_loaded_texture; + return s_loaded_textures[name]; + } + } + + private static TextureData ParseForThryParser(string s) + { + if(s.StartsWith("{") == false) + { + return new TextureData() + { + name = s + }; } + return Parser.ParseToObject(s); + } + + bool IsUrl() + { + return name.StartsWith("http") && (name.EndsWith(".jpg") || name.EndsWith(".png")); } } @@ -206,6 +253,7 @@ private static PropertyValueAction ParseForThryParser(string s) { return Parse(s); } + // value,property1=value1,property2=value2 public static PropertyValueAction Parse(string s) { @@ -230,6 +278,7 @@ private static PropertyValueAction[] ParseToArrayForThryParser(string s) { return ParseToArray(s); } + public static PropertyValueAction[] ParseToArray(string s) { //s = v,p1=v1,p2=v2;v3 diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/Drawers.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/Drawers.cs index 1c1fc67b..ad141acf 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/Drawers.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/Drawers.cs @@ -98,7 +98,7 @@ private void Init() public override void OnGUI(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { Init(); - Rect border_position = new Rect(position.x + EditorGUIUtility.labelWidth - 15, position.y, position.width - EditorGUIUtility.labelWidth - position.x + 15, position.height); + Rect border_position = new Rect(position.x + EditorGUIUtility.labelWidth - 15, position.y, position.width - EditorGUIUtility.labelWidth + 15 - GuiHelper.GetSmallTextureVRAMWidth(prop), position.height); EditorGUI.BeginChangeCheck(); curve = EditorGUI.CurveField(border_position, curve); @@ -608,7 +608,7 @@ public override void OnGUI(Rect position, MaterialProperty prop, GUIContent labe if (EditorGUI.EndChangeCheck()) Init(prop); - UpdateRects(position); + UpdateRects(position, prop); if (ShaderEditor.Input.Click && border_position.Contains(Event.current.mousePosition)) { ShaderEditor.Input.Use(); @@ -621,9 +621,9 @@ public override void OnGUI(Rect position, MaterialProperty prop, GUIContent labe GradientField(); } - private void UpdateRects(Rect position) + private void UpdateRects(Rect position, MaterialProperty prop) { - border_position = new Rect(position.x + EditorGUIUtility.labelWidth, position.y, position.width - EditorGUIUtility.labelWidth - position.x, position.height); + border_position = new Rect(position.x + EditorGUIUtility.labelWidth, position.y, position.width - EditorGUIUtility.labelWidth - GuiHelper.GetSmallTextureVRAMWidth(prop), position.height); gradient_position = new Rect(border_position.x + 1, border_position.y + 1, border_position.width - 2, border_position.height - 2); } @@ -758,6 +758,7 @@ public ThryHeaderLabelDecorator(string text, float size) public override float GetPropertyHeight(MaterialProperty prop, string label, MaterialEditor editor) { + DrawingData.RegisterDecorator(this); return size + 6; } @@ -1213,18 +1214,82 @@ public override float GetPropertyHeight(MaterialProperty prop, string label, Mat } } - public class sRGBWarningDrawer : MaterialPropertyDrawer + public class sRGBWarningDecorator : MaterialPropertyDrawer { + bool _isSRGB = true; + + public sRGBWarningDecorator() + { + _isSRGB = false; + } + + public sRGBWarningDecorator(string shouldHaveSRGB) + { + this._isSRGB = shouldHaveSRGB.ToLower() == "true"; + } + + public override void OnGUI(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) + { + GuiHelper.ColorspaceWarning(prop, _isSRGB); + } + + public override float GetPropertyHeight(MaterialProperty prop, string label, MaterialEditor editor) + { + DrawingData.RegisterDecorator(this); + return 0; + } + } + + public class LocalMessageDrawer : MaterialPropertyDrawer + { + protected ButtonData _buttonData; + protected bool _isInit; + protected virtual void Init(string s) + { + if(_isInit) return; + _buttonData = Parser.ParseToObject(s); + _isInit = true; + } + public override void OnGUI(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { - GuiHelper.ConfigTextureProperty(position, prop, label, editor, ((TextureProperty)ShaderEditor.Active.CurrentProperty).hasScaleOffset); - GuiHelper.sRGBWarning(prop); + Init(prop.displayName); + if(_buttonData == null) return; + if(_buttonData.text.Length > 0) + { + GUILayout.Label(new GUIContent(_buttonData.text,_buttonData.hover), _buttonData.center_position?Styles.richtext_center: Styles.richtext); + Rect r = GUILayoutUtility.GetLastRect(); + if (Event.current.type == EventType.MouseDown && r.Contains(Event.current.mousePosition)) + _buttonData.action.Perform(ShaderEditor.Active?.Materials); + } + if(_buttonData.texture != null) + { + if(_buttonData.center_position) GUILayout.Label(new GUIContent(_buttonData.texture.loaded_texture, _buttonData.hover), EditorStyles.centeredGreyMiniLabel, GUILayout.MaxHeight(_buttonData.texture.height)); + else GUILayout.Label(new GUIContent(_buttonData.texture.loaded_texture, _buttonData.hover), GUILayout.MaxHeight(_buttonData.texture.height)); + Rect r = GUILayoutUtility.GetLastRect(); + if (Event.current.type == EventType.MouseDown && r.Contains(Event.current.mousePosition)) + _buttonData.action.Perform(ShaderEditor.Active?.Materials); + } } public override float GetPropertyHeight(MaterialProperty prop, string label, MaterialEditor editor) { DrawingData.LastPropertyUsedCustomDrawer = true; - return base.GetPropertyHeight(prop, label, editor); + return 0; + } + } + + public class RemoteMessageDrawer : LocalMessageDrawer + { + + protected override void Init(string s) + { + if(_isInit) return; + WebHelper.DownloadStringASync(s, (string data) => + { + _buttonData = Parser.ParseToObject(data); + }); + _isInit = true; } } @@ -1302,8 +1367,8 @@ public override void OnGUI(Rect position, MaterialProperty shaderOptimizer, stri { Material material = shaderOptimizer.targets[0] as Material; Shader shader = material.shader; - bool isLocked = shader.name.StartsWith("Hidden/") && - (material.GetTag("OriginalShader",false,"") != "" || shader.GetPropertyDefaultFloatValue(shader.FindPropertyIndex(shaderOptimizer.name)) == 1); + bool isLocked = shader.name.StartsWith("Hidden/Locked/") || (shader.name.StartsWith("Hidden/") && + (material.GetTag("OriginalShader",false,"") != "" && shader.GetPropertyDefaultFloatValue(shader.FindPropertyIndex(shaderOptimizer.name)) == 1)); //this will make sure the button is unlocked if you manually swap to an unlocked shader //shaders that have the ability to be locked shouldnt really be hidden themself. at least it wouldnt make too much sense if (shaderOptimizer.hasMixedValue == false && shaderOptimizer.floatValue == 1 && isLocked == false) diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/EditorStructs.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/EditorStructs.cs index 12400712..3ef9e766 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/EditorStructs.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/EditorStructs.cs @@ -400,6 +400,7 @@ private void PerformDraw(GUIContent content, CRect rect, bool useEditorIndent, b if (EditorGUI.EndChangeCheck()) { + OnPropertyValueChanged(); ExecuteOnValueActions(ShaderEditor.Active.Materials); //Check if property is being animated if (this is ShaderProperty && ActiveShaderEditor.ActiveRenderer != null && ActiveShaderEditor.IsInAnimationMode && IsAnimatable && !IsAnimated) @@ -424,6 +425,11 @@ private void PerformDraw(GUIContent content, CRect rect, bool useEditorIndent, b } } + protected virtual void OnPropertyValueChanged() + { + + } + private void DrawLockedAnimated() { Rect r = new Rect(14, DrawingData.TooltipCheckRect.y + 2, 16, 16); @@ -618,6 +624,9 @@ public class ShaderProperty : ShaderPart public string keyword; + MaterialPropertyDrawer[] _customDecorators; + Rect[] _customDecoratorRects; + public ShaderProperty(ShaderEditor shaderEditor, string propertyIdentifier, int xOffset, string displayName, string tooltip) : base(shaderEditor, propertyIdentifier, xOffset, displayName, tooltip) { @@ -634,6 +643,12 @@ public ShaderProperty(ShaderEditor shaderEditor, MaterialProperty materialProper this.customHeightOffset = -EditorGUIUtility.singleLineHeight; } + if(DrawingData.LastPropertyDecorators.Count > 0) + { + _customDecorators = DrawingData.LastPropertyDecorators.ToArray(); + _customDecoratorRects = new Rect[DrawingData.LastPropertyDecorators.Count]; + } + this.doDrawTwoFields = options.reference_property != null; this.property_index = property_index; @@ -690,6 +705,14 @@ public override void DrawInternal(GUIContent content, CRect rect = null, bool us if (!useEditorIndent) EditorGUI.indentLevel = XOffset + 1; + if(_customDecorators != null && doCustomDrawLogic) + { + for(int i= 0;i<_customDecorators.Length;i++) + { + _customDecoratorRects[i] = EditorGUILayout.GetControlRect(false, GUILayout.Height(_customDecorators[i].GetPropertyHeight(MaterialProperty, content.text, ActiveShaderEditor.Editor))); + } + } + if (doCustomDrawLogic) { DrawDefault(); @@ -726,6 +749,14 @@ public override void DrawInternal(GUIContent content, CRect rect = null, bool us ActiveShaderEditor.Editor.ShaderProperty(this.MaterialProperty, content); } + if(_customDecorators != null && doCustomDrawLogic) + { + for(int i= 0;i<_customDecorators.Length;i++) + { + _customDecorators[i].OnGUI(_customDecoratorRects[i], MaterialProperty, content, ShaderEditor.Active.Editor); + } + } + EditorGUI.indentLevel = oldIndentLevel; if (rect == null) DrawingData.LastGuiObjectRect = GUILayoutUtility.GetLastRect(); else DrawingData.LastGuiObjectRect = rect.r; @@ -768,12 +799,34 @@ public class TextureProperty : ShaderProperty public bool showFoldoutProperties = false; public bool hasFoldoutProperties = false; public bool hasScaleOffset = false; + public string VRAMString = ""; public TextureProperty(ShaderEditor shaderEditor, MaterialProperty materialProperty, string displayName, int xOffset, PropertyOptions options, bool hasScaleOffset, bool forceThryUI, int property_index) : base(shaderEditor, materialProperty, displayName, xOffset, options, false, property_index) { doCustomDrawLogic = forceThryUI; this.hasScaleOffset = hasScaleOffset; this.hasFoldoutProperties = hasScaleOffset || DoReferencePropertiesExist; + UpdateVRAM(); + } + + void UpdateVRAM() + { + if (MaterialProperty.textureValue != null) + { + var details = TextureHelper.VRAM.CalcSize(MaterialProperty.textureValue); + //this.VRAMString = $"{TextureHelper.VRAM.ToByteString(details.size)} ({details.format})"; + this.VRAMString = $"{TextureHelper.VRAM.ToByteString(details.size)}"; + } + else + { + VRAMString = null; + } + } + + protected override void OnPropertyValueChanged() + { + base.OnPropertyValueChanged(); + UpdateVRAM(); } public override void PreDraw() diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/GUIHelper.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/GUIHelper.cs index 6a74c667..88974576 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/GUIHelper.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/GUIHelper.cs @@ -11,6 +11,7 @@ namespace Thry { public class GuiHelper { + public const float SMALL_TEXTURE_VRAM_DISPLAY_WIDTH = 80; public static void ConfigTextureProperty(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor, bool hasFoldoutProperties, bool skip_drag_and_drop_handling = false) { @@ -32,31 +33,55 @@ public static void ConfigTextureProperty(Rect position, MaterialProperty prop, G } } + public static float GetSmallTextureVRAMWidth(MaterialProperty textureProperty) + { + if (textureProperty.textureValue != null) return SMALL_TEXTURE_VRAM_DISPLAY_WIDTH; + return 0; + } + public static void SmallTextureProperty(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor, bool hasFoldoutProperties, Action extraFoldoutGUI = null) { Rect thumbnailPos = position; Rect foloutClickCheck = position; Rect tooltipRect = position; - thumbnailPos.x += hasFoldoutProperties ? 20 : 0; + if (hasFoldoutProperties) + { + thumbnailPos.x += 20; + thumbnailPos.width -= 20; + } editor.TexturePropertyMiniThumbnail(thumbnailPos, prop, label.text, label.tooltip); + //VRAM + Rect vramPos = Rect.zero; + if (DrawingData.CurrentTextureProperty.MaterialProperty.textureValue != null) + { + GUIContent content = new GUIContent(DrawingData.CurrentTextureProperty.VRAMString); + vramPos = thumbnailPos; + vramPos.x += thumbnailPos.width - SMALL_TEXTURE_VRAM_DISPLAY_WIDTH; + vramPos.width = SMALL_TEXTURE_VRAM_DISPLAY_WIDTH; + GUI.Label(vramPos, content, Styles.label_align_right); + } + //Prop right next to texture if (DrawingData.CurrentTextureProperty.DoesReferencePropertyExist) { ShaderProperty property = ShaderEditor.Active.PropertyDictionary[DrawingData.CurrentTextureProperty.Options.reference_property]; Rect r = position; r.x += EditorGUIUtility.labelWidth - CurrentIndentWidth(); r.width -= EditorGUIUtility.labelWidth - CurrentIndentWidth(); + r.width -= vramPos.width; foloutClickCheck.width -= r.width; property.Draw(new CRect(r), new GUIContent()); property.tooltip.ConditionalDraw(r); } + //Foldouts if (hasFoldoutProperties && DrawingData.CurrentTextureProperty != null) { //draw dropdown triangle - thumbnailPos.x += DrawingData.CurrentTextureProperty.XOffset * 15; + Rect trianglePos = thumbnailPos; + trianglePos.x += DrawingData.CurrentTextureProperty.XOffset * 15 - 2; //This is an invisible button with zero functionality. But it needs to be here so that the triangle click reacts fast - if (GUI.Button(thumbnailPos, "", GUIStyle.none)) { } + if (GUI.Button(trianglePos, "", GUIStyle.none)) { } if (Event.current.type == EventType.Repaint) - EditorStyles.foldout.Draw(thumbnailPos, false, false, DrawingData.CurrentTextureProperty.showFoldoutProperties, false); + EditorStyles.foldout.Draw(trianglePos, false, false, DrawingData.CurrentTextureProperty.showFoldoutProperties, false); if (DrawingData.IsEnabled) { @@ -102,11 +127,14 @@ public static void SmallTextureProperty(Rect position, MaterialProperty prop, GU public static void BigTextureProperty(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor, bool scaleOffset) { + string text = label.text; + if(DrawingData.CurrentTextureProperty.MaterialProperty.textureValue != null) + text += $" ({DrawingData.CurrentTextureProperty.VRAMString})"; Rect rect = GUILayoutUtility.GetRect(label, Styles.bigTextureStyle); float defaultLabelWidth = EditorGUIUtility.labelWidth; float defaultFieldWidth = EditorGUIUtility.fieldWidth; editor.SetDefaultGUIWidths(); - editor.TextureProperty(position, prop, label.text, label.tooltip, scaleOffset); + editor.TextureProperty(position, prop, text, label.tooltip, scaleOffset); EditorGUIUtility.labelWidth = defaultLabelWidth; EditorGUIUtility.fieldWidth = defaultFieldWidth; Rect object_rect = new Rect(position); @@ -141,6 +169,11 @@ public static void StylizedBigTextureProperty(Rect position, MaterialProperty pr border.height += 8; border.height += editor.GetPropertyHeight(ShaderEditor.Active.PropertyDictionary[DrawingData.CurrentTextureProperty.Options.reference_property].MaterialProperty); } + if(DrawingData.CurrentTextureProperty.MaterialProperty != null) + { + border.height += 8; + border.height += EditorStyles.label.lineHeight; + } //background @@ -222,12 +255,14 @@ public static void StylizedBigTextureProperty(Rect position, MaterialProperty pr } } - //scale offset rect + //Change indent & label width + EditorGUI.indentLevel += 2; + float oldLabelWidth = EditorGUIUtility.labelWidth; + EditorGUIUtility.labelWidth = 128; + //scale offset rect + foldout properties if (hasFoldoutProperties || DrawingData.CurrentTextureProperty.Options.reference_property != null) { - EditorGUI.indentLevel += 2; - if (DrawingData.CurrentTextureProperty.hasScaleOffset) { Rect scale_offset_rect = new Rect(position); @@ -240,9 +275,6 @@ public static void StylizedBigTextureProperty(Rect position, MaterialProperty pr //In case of locked material end disabled group here to allow editing of sub properties if (ShaderEditor.Active.IsLockedMaterial) EditorGUI.EndDisabledGroup(); - float oldLabelWidth = EditorGUIUtility.labelWidth; - EditorGUIUtility.labelWidth = 128; - PropertyOptions options = DrawingData.CurrentTextureProperty.Options; if (options.reference_property != null) { @@ -255,13 +287,21 @@ public static void StylizedBigTextureProperty(Rect position, MaterialProperty pr ShaderProperty property = ShaderEditor.Active.PropertyDictionary[r_property]; property.Draw(useEditorIndent: true); } - EditorGUIUtility.labelWidth = oldLabelWidth; - EditorGUI.indentLevel -= 2; //readd disabled group if (ShaderEditor.Active.IsLockedMaterial) EditorGUI.BeginDisabledGroup(false); } + //VRAM + if (DrawingData.CurrentTextureProperty.MaterialProperty.textureValue != null) + { + EditorGUILayout.LabelField("VRAM", DrawingData.CurrentTextureProperty.VRAMString); + } + + //reset indent + label width + EditorGUI.indentLevel -= 2; + EditorGUIUtility.labelWidth = oldLabelWidth; + Rect label_rect = new Rect(position); label_rect.x += 2; label_rect.y += 2; @@ -468,8 +508,8 @@ public static float CurrentIndentWidth() // Mimics the normal map import warning - written by Orels1 static bool TextureImportWarningBox(string message){ GUILayout.BeginVertical(new GUIStyle(EditorStyles.helpBox)); - EditorGUILayout.LabelField(message, new GUIStyle(EditorStyles.label) { - fontSize = 9, wordWrap = true + GUILayout.Label(message, new GUIStyle(EditorStyles.label) { + fontSize = 10, wordWrap = true }); EditorGUILayout.BeginHorizontal(new GUIStyle() { alignment = TextAnchor.MiddleRight @@ -484,17 +524,17 @@ static bool TextureImportWarningBox(string message){ GUILayout.EndVertical(); return buttonPress; } - public static void sRGBWarning(MaterialProperty tex){ + + public static void ColorspaceWarning(MaterialProperty tex, bool shouldHaveSRGB){ if (tex.textureValue){ - string sRGBWarning = "This texture is marked as sRGB, but should not contain color information."; string texPath = AssetDatabase.GetAssetPath(tex.textureValue); TextureImporter texImporter; var importer = TextureImporter.GetAtPath(texPath) as TextureImporter; if (importer != null){ texImporter = (TextureImporter)importer; - if (texImporter.sRGBTexture){ - if (TextureImportWarningBox(sRGBWarning)){ - texImporter.sRGBTexture = false; + if (texImporter.sRGBTexture != shouldHaveSRGB){ + if (TextureImportWarningBox(shouldHaveSRGB?Locale.editor.Get("colorSpaceWarningSRGB"):Locale.editor.Get("colorSpaceWarningLinear"))){ + texImporter.sRGBTexture = shouldHaveSRGB; texImporter.SaveAndReimport(); } } diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/Helper.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/Helper.cs index a62f51b4..246209db 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/Helper.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/Helper.cs @@ -18,6 +18,7 @@ using UnityEditor; using UnityEngine; using UnityEngine.Networking; +using UnityEngine.Profiling; namespace Thry { @@ -633,6 +634,131 @@ public static Texture2D LoadTGA(string TGAFile) return b; } } + + public class VRAM + { + static Dictionary BPP = new Dictionary() + { + { TextureImporterFormat.BC7 , 8 }, + { TextureImporterFormat.DXT5 , 8 }, + { TextureImporterFormat.DXT5Crunched , 8 }, + { TextureImporterFormat.RGBA64 , 64 }, + { TextureImporterFormat.RGBA32 , 32 }, + { TextureImporterFormat.RGBA16 , 16 }, + { TextureImporterFormat.DXT1 , 4 }, + { TextureImporterFormat.DXT1Crunched , 4 }, + { TextureImporterFormat.RGB48 , 64 }, + { TextureImporterFormat.RGB24 , 32 }, + { TextureImporterFormat.RGB16 , 16 }, + { TextureImporterFormat.BC5 , 8 }, + { TextureImporterFormat.RG32 , 32 }, + { TextureImporterFormat.BC4 , 4 }, + { TextureImporterFormat.R8 , 8 }, + { TextureImporterFormat.R16 , 16 }, + { TextureImporterFormat.Alpha8 , 8 }, + { TextureImporterFormat.RGBAHalf , 64 }, + { TextureImporterFormat.BC6H , 8 }, + { TextureImporterFormat.RGB9E5 , 32 }, + { TextureImporterFormat.ETC2_RGBA8Crunched , 8 }, + { TextureImporterFormat.ETC2_RGB4 , 4 }, + { TextureImporterFormat.ETC2_RGBA8 , 8 }, + { TextureImporterFormat.ETC2_RGB4_PUNCHTHROUGH_ALPHA , 4 }, + { TextureImporterFormat.PVRTC_RGB2 , 2 }, + { TextureImporterFormat.PVRTC_RGB4 , 4 }, + { TextureImporterFormat.ARGB32 , 32 }, + { TextureImporterFormat.ARGB16 , 16 } + }; + + static Dictionary RT_BPP = new Dictionary() + { + { RenderTextureFormat.ARGB32 , 32 }, + { RenderTextureFormat.Depth , 0 }, + { RenderTextureFormat.ARGBHalf , 64 }, + { RenderTextureFormat.Shadowmap , 8 }, //guessed bpp + { RenderTextureFormat.RGB565 , 32 }, //guessed bpp + { RenderTextureFormat.ARGB4444 , 16 }, + { RenderTextureFormat.ARGB1555 , 16 }, + { RenderTextureFormat.Default , 32 }, + { RenderTextureFormat.ARGB2101010 , 32 }, + { RenderTextureFormat.DefaultHDR , 128 }, + { RenderTextureFormat.ARGB64 , 64 }, + { RenderTextureFormat.ARGBFloat , 128 }, + { RenderTextureFormat.RGFloat , 64 }, + { RenderTextureFormat.RGHalf , 32 }, + { RenderTextureFormat.RFloat , 32 }, + { RenderTextureFormat.RHalf , 16 }, + { RenderTextureFormat.R8 , 8 }, + { RenderTextureFormat.ARGBInt , 128 }, + { RenderTextureFormat.RGInt , 64 }, + { RenderTextureFormat.RInt , 32 }, + { RenderTextureFormat.BGRA32 , 32 }, + { RenderTextureFormat.RGB111110Float , 32 }, + { RenderTextureFormat.RG32 , 32 }, + { RenderTextureFormat.RGBAUShort , 64 }, + { RenderTextureFormat.RG16 , 16 }, + { RenderTextureFormat.BGRA10101010_XR , 40 }, + { RenderTextureFormat.BGR101010_XR , 30 }, + { RenderTextureFormat.R16 , 16 } + }; + + public static string ToByteString(long l) + { + if (l < 1000) return l + " B"; + if (l < 1000000) return (l / 1000f).ToString("n2") + " KB"; + if (l < 1000000000) return (l / 1000000f).ToString("n2") + " MB"; + else return (l / 1000000000f).ToString("n2") + " GB"; + } + + public static (long size, string format) CalcSize(Texture t) + { + string add = ""; + long bytesCount = 0; + + string path = AssetDatabase.GetAssetPath(t); + if (t != null && path != null && t is RenderTexture == false && t.dimension == UnityEngine.Rendering.TextureDimension.Tex2D) + { + AssetImporter assetImporter = AssetImporter.GetAtPath(path); + if (assetImporter is TextureImporter) + { + TextureImporter textureImporter = (TextureImporter)assetImporter; + TextureImporterFormat textureFormat = textureImporter.GetPlatformTextureSettings("PC").format; +#pragma warning disable CS0618 + if (textureFormat == TextureImporterFormat.AutomaticCompressed) textureFormat = textureImporter.GetAutomaticFormat("PC"); +#pragma warning restore CS0618 + + if (BPP.ContainsKey(textureFormat)) + { + add = textureFormat.ToString(); + double mipmaps = 1; + for (int i = 0; i < t.mipmapCount; i++) mipmaps += Math.Pow(0.25, i + 1); + bytesCount = (long)(BPP[textureFormat] * t.width * t.height * (textureImporter.mipmapEnabled ? mipmaps : 1) / 8); + //Debug.Log(bytesCount); + } + else + { + Debug.LogWarning("[Thry][VRAM] Does not have BPP for " + textureFormat); + } + } + else + { + bytesCount = Profiler.GetRuntimeMemorySizeLong(t); + } + } + else if (t is RenderTexture) + { + RenderTexture rt = t as RenderTexture; + double mipmaps = 1; + for (int i = 0; i < rt.mipmapCount; i++) mipmaps += Math.Pow(0.25, i + 1); + bytesCount = (long)((RT_BPP[rt.format] + rt.depth) * rt.width * rt.height * (rt.useMipMap ? mipmaps : 1) / 8); + } + else + { + bytesCount = Profiler.GetRuntimeMemorySizeLong(t); + } + + return (bytesCount, add); + } + } } public class MaterialHelper diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/HelperWeb.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/HelperWeb.cs index d1a9aed2..a7ed41ed 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/HelperWeb.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/HelperWeb.cs @@ -74,7 +74,7 @@ public class MainThreader { private struct CallData { - public Action action; + public object action; public object[] arguments; } static List queue; @@ -85,7 +85,7 @@ static MainThreader() EditorApplication.update += Update; } - public static void Call(Action action, params object[] args) + public static void Call(object action, params object[] args) { if (action == null) return; @@ -105,7 +105,8 @@ public static void Update() { try { - queue[0].action.DynamicInvoke(queue[0].arguments); + if(queue[0].action is Action) ((Action)queue[0].action).DynamicInvoke(queue[0].arguments); + if(queue[0].action is Action) ((Action)queue[0].action).DynamicInvoke(queue[0].arguments); } catch(Exception e) { Debug.LogWarning("[Thry] Error during WebRequest: " + e.ToString()); @@ -153,6 +154,20 @@ public static void DownloadStringASync(string url, Action callback) }); } + public static void DownloadBytesASync(string url, Action callback) + { + DownloadAsBytesASync(url, delegate (object o, DownloadDataCompletedEventArgs e) + { + if (e.Cancelled || e.Error != null) + { + Debug.LogWarning(e.Error); + MainThreader.Call(callback, null); + } + else + MainThreader.Call(callback, e.Result); + }); + } + private static void SetCertificate() { ServicePointManager.ServerCertificateValidationCallback = diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/Settings.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/Settings.cs index fd5d47f5..a0796338 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/Settings.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/Settings.cs @@ -74,22 +74,22 @@ void OnGUI() GUILayout.Label("ShaderUI v" + Config.Singleton.verion); GUINotification(); - drawLine(); + DrawHorizontalLine(); GUIMessage(); LocaleDropdown(); GUIEditor(); - drawLine(); + DrawHorizontalLine(); foreach(ModuleSettings s in moduleSettings) { s.Draw(); - drawLine(); + DrawHorizontalLine(); } GUIModulesInstalation(); } //--------------------------GUI Helpers----------------------------- - private static void drawLine() + private static void DrawHorizontalLine() { Rect rect = EditorGUILayout.GetControlRect(false, 1); rect.height = 1; @@ -108,17 +108,28 @@ private void GUINotification() private void GUIMessage() { - if(thry_message!=null && thry_message.text.Length > 0) + if(thry_message!=null) { - GUIStyle style = new GUIStyle(); - style.richText = true; - style.margin = new RectOffset(7, 0, 0, 0); - style.wordWrap = true; - GUILayout.Label(new GUIContent(thry_message.text,thry_message.hover), style); - Rect r = GUILayoutUtility.GetLastRect(); - if (Event.current.type == EventType.MouseDown && r.Contains(Event.current.mousePosition)) - thry_message.action.Perform(ShaderEditor.Active?.Materials); - drawLine(); + bool doDrawLine = false; + if(thry_message.text.Length > 0) + { + doDrawLine = true; + GUILayout.Label(new GUIContent(thry_message.text,thry_message.hover), thry_message.center_position?Styles.richtext_center: Styles.richtext); + Rect r = GUILayoutUtility.GetLastRect(); + if (Event.current.type == EventType.MouseDown && r.Contains(Event.current.mousePosition)) + thry_message.action.Perform(ShaderEditor.Active?.Materials); + } + if(thry_message.texture != null) + { + doDrawLine = true; + if(thry_message.center_position) GUILayout.Label(new GUIContent(thry_message.texture.loaded_texture, thry_message.hover), EditorStyles.centeredGreyMiniLabel, GUILayout.MaxHeight(thry_message.texture.height)); + else GUILayout.Label(new GUIContent(thry_message.texture.loaded_texture, thry_message.hover), GUILayout.MaxHeight(thry_message.texture.height)); + Rect r = GUILayoutUtility.GetLastRect(); + if (Event.current.type == EventType.MouseDown && r.Contains(Event.current.mousePosition)) + thry_message.action.Perform(ShaderEditor.Active?.Materials); + } + if(doDrawLine) + DrawHorizontalLine(); } } diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/ShaderOptimizer.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/ShaderOptimizer.cs index bf87f683..5ccc9171 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/ShaderOptimizer.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/ShaderOptimizer.cs @@ -47,7 +47,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE using VRC.SDK3.Avatars.Components; using System.Reflection; #endif -// v9 namespace Thry { @@ -549,7 +548,7 @@ private static bool Lock(Material material, MaterialProperty[] props, bool apply List<(string,string)> definesToRemove = new List<(string,string)>(); foreach((string name,string) def in defines) { - if (shaderFiles.Any(x => x.lines.Any(l => l.Contains(def.name)) == false)) + if (shaderFiles.All(x => x.lines.Any(l => l.Contains(def.name)) == false)) definesToRemove.Add(def); } defines.RemoveAll(x => definesToRemove.Contains(x)); diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/Styles.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/Styles.cs index 51b62c6c..bbd565e9 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/Styles.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/Styles.cs @@ -33,6 +33,7 @@ public class Styles public static Color COLOR_BACKGROUND_2 = EditorGUIUtility.isProSkin ? new Color(0.5f, 0.5f, 0.5f) : new Color(0.85f, 0.85f, 0.85f); public static GUIStyle dropDownHeaderLabel { get; private set; } = new GUIStyle(EditorStyles.boldLabel) { alignment = TextAnchor.MiddleCenter }; + public static GUIStyle label_align_right { get; private set; } = new GUIStyle(EditorStyles.label) { alignment = TextAnchor.UpperRight }; public static GUIStyle dropDownHeaderButton { get; private set; } = new GUIStyle(EditorStyles.toolbarButton); public static GUIStyle bigTextureStyle { get; private set; } = new GUIStyle() { fontSize = 48 }; public static GUIStyle vectorPropertyStyle { get; private set; } = new GUIStyle() { padding = new RectOffset(0, 0, 2, 2) }; @@ -45,6 +46,8 @@ public class Styles public static GUIStyle notification_style { get; private set; } = new GUIStyle(GUI.skin.box) { fontSize = 12, wordWrap = true, normal = new GUIStyleState() { textColor = Color.red } }; public static GUIStyle style_toggle_left_richtext { get; private set; } = new GUIStyle(EditorStyles.label) { richText = true }; + public static GUIStyle richtext { get; private set; } = new GUIStyle(EditorStyles.label) { richText = true, wordWrap = true }; + public static GUIStyle richtext_center { get; private set; } = new GUIStyle(EditorStyles.label) { richText = true, wordWrap = true, alignment = TextAnchor.MiddleCenter }; public static GUIStyle icon_style_help = CreateIconStyle(EditorGUIUtility.IconContent("PolygonCollider2D Icon")); public static GUIStyle icon_style_menu = CreateIconStyle(EditorGUIUtility.IconContent("_Menu")); diff --git a/_PoiyomiShaders/Scripts/ThryEditor/Editor/ThryEditor.cs b/_PoiyomiShaders/Scripts/ThryEditor/Editor/ThryEditor.cs index bca334d9..c4cdfe1a 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/Editor/ThryEditor.cs +++ b/_PoiyomiShaders/Scripts/ThryEditor/Editor/ThryEditor.cs @@ -218,6 +218,7 @@ private void CollectAllProperties() headerStack.Push(MainGroup); //add top object a second time, because it get's popped with first actual header item _footers = new List(); //init footer list int headerCount = 0; + DrawingData.IsCollectingProperties = true; for (int i = 0; i < props.Length; i++) { @@ -341,6 +342,8 @@ private void CollectAllProperties() ShaderParts.Add(newPart); } } + + DrawingData.IsCollectingProperties = false; } diff --git a/_PoiyomiShaders/Shaders/7.3.meta b/_PoiyomiShaders/Scripts/ThryEditor/External.meta similarity index 77% rename from _PoiyomiShaders/Shaders/7.3.meta rename to _PoiyomiShaders/Scripts/ThryEditor/External.meta index fa43e060..46f04235 100644 --- a/_PoiyomiShaders/Shaders/7.3.meta +++ b/_PoiyomiShaders/Scripts/ThryEditor/External.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4b471117f0fd79b4e9d4b06859258287 +guid: aba906f2d2cb87f438d36a15d4064019 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/_PoiyomiShaders/Scripts/ThryEditor/External/Editor.meta b/_PoiyomiShaders/Scripts/ThryEditor/External/Editor.meta new file mode 100644 index 00000000..bac3aa3a --- /dev/null +++ b/_PoiyomiShaders/Scripts/ThryEditor/External/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2b3e033aacdc62a40900252c4fa85a43 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/_PoiyomiShaders/Scripts/ThryEditor/External/Editor/AbiAutoLock.cs b/_PoiyomiShaders/Scripts/ThryEditor/External/Editor/AbiAutoLock.cs new file mode 100644 index 00000000..42dae6f6 --- /dev/null +++ b/_PoiyomiShaders/Scripts/ThryEditor/External/Editor/AbiAutoLock.cs @@ -0,0 +1,52 @@ +#if CVR_CCK_EXISTS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using ABI.CCK.Scripts.Editor; +using ABI.CCK.Components; +using UnityEditor; +using System.Linq; + +namespace Thry.ShaderEditor +{ + public class AbiAutoLock + { + [InitializeOnLoad] + public class CVR_UploadLocking + { + static CVR_UploadLocking() + { + CCK_BuildUtility.PreAvatarBundleEvent.AddListener(OnPreBundleEvent); + CCK_BuildUtility.PrePropBundleEvent.AddListener(OnPreBundleEvent); + } + + static void OnPreBundleEvent(GameObject uploadedObject) + { + List materials = new List(); + CVRAvatar descriptor = uploadedObject.GetComponent(); + + // All renderers + materials.AddRange(uploadedObject.GetComponentsInChildren(true).SelectMany(r => r.sharedMaterials)); + + // Find animation clips + IEnumerable clips = uploadedObject.GetComponentsInChildren(true).Where(a => a != null && a.runtimeAnimatorController != null). + Select(a => a.runtimeAnimatorController).SelectMany(a => a.animationClips); + if (descriptor != null && descriptor.overrides != null) + clips = clips.Concat(descriptor.overrides.animationClips); + + // Hanlde clips + clips = clips.Distinct().Where(c => c != null); + foreach (AnimationClip clip in clips) + { + IEnumerable clipMaterials = AnimationUtility.GetObjectReferenceCurveBindings(clip).Where(b => b.isPPtrCurve && b.type.IsSubclassOf(typeof(Renderer)) && b.propertyName.StartsWith("m_Materials")) + .SelectMany(b => AnimationUtility.GetObjectReferenceCurve(clip, b)).Select(r => r.value as Material); + materials.AddRange(clipMaterials); + } + + materials = materials.Distinct().ToList(); + ShaderOptimizer.SetLockedForAllMaterials(materials, 1, showProgressbar: true, showDialog: PersistentData.Get("ShowLockInDialog", true), allowCancel: false); + } + } + } +} +#endif \ No newline at end of file diff --git a/_PoiyomiShaders/Scripts/ThryEditor/External/Editor/AbiAutoLock.cs.meta b/_PoiyomiShaders/Scripts/ThryEditor/External/Editor/AbiAutoLock.cs.meta new file mode 100644 index 00000000..74b71794 --- /dev/null +++ b/_PoiyomiShaders/Scripts/ThryEditor/External/Editor/AbiAutoLock.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8591bc02c350be0458471f4a19ab52b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/_PoiyomiShaders/Scripts/ThryEditor/External/ReadMe.txt b/_PoiyomiShaders/Scripts/ThryEditor/External/ReadMe.txt new file mode 100644 index 00000000..4609d474 --- /dev/null +++ b/_PoiyomiShaders/Scripts/ThryEditor/External/ReadMe.txt @@ -0,0 +1 @@ +This is for scripts that need to be outside the ThryEditor Assembly \ No newline at end of file diff --git a/_PoiyomiShaders/Scripts/ThryEditor/External/ReadMe.txt.meta b/_PoiyomiShaders/Scripts/ThryEditor/External/ReadMe.txt.meta new file mode 100644 index 00000000..89899526 --- /dev/null +++ b/_PoiyomiShaders/Scripts/ThryEditor/External/ReadMe.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 633b43f8292e7bd4ca761c124e8b4544 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/_PoiyomiShaders/Scripts/ThryEditor/thry_editor_locale.csv b/_PoiyomiShaders/Scripts/ThryEditor/thry_editor_locale.csv index f0948283..440c73c6 100644 --- a/_PoiyomiShaders/Scripts/ThryEditor/thry_editor_locale.csv +++ b/_PoiyomiShaders/Scripts/ThryEditor/thry_editor_locale.csv @@ -21,6 +21,8 @@ requirements,Requirements,Voraussetzungen,必要バージョン,Requisitos,,Wequ add,Add,Hinzufügen,追加,Añadir,,Add,01000001 01100100 01100100,添加, delete,Delete,Löschen,削除,Borrar,,Dewete,01000100 01100101 01101100 01100101 01110100 01100101,删除, save,Save,Speichern,保存,Guardar,,Save,01010011 01100001 01110110 01100101,保存, +colorSpaceWarningSRGB,"This texture is marked not as sRGB, but should be" +colorSpaceWarningLinear,"This texture is marked as sRGB, but should be linear" ,,,,,,,,, default_texture_type,Default Texture Display,Texturen Darstellung,デフォルト表示テクスチャー,Visualización de textura predeterminada,Default Texture Display,Defauwt textuwe dispway,01000100 01100101 01100110 01100001 01110101 01101100 01110100 00100000 01010100 01100101 01111000 01110100 01110101 01110010 01100101 00100000 01000100 01101001 01110011 01110000 01101100 01100001 01111001,默认贴图显示, default_texture_type_tooltip,Select how your textures should be displayed if the property doesn't force the type,Wähle wie deine Texture Menüs dargestellt werden.,プロパティーに指定されなかった場合にどうテクスチャーが表示されるか指定してください,Seleccione cómo se deben mostrar sus texturas si la propiedad no fuerza el tipo,Select 'ow yer textures should be displayed if the property doesn't force the type,Sewect how youw textuwes shouwd be dispwayed if the pwopewty doesn't fowce the type,01010011 01100101 01101100 01100101 01100011 01110100 00100000 01101000 01101111 01110111 00100000 01111001 01101111 01110101 01110010 00100000 01110100 01100101 01111000 01110100 01110101 01110010 01100101 01110011 00100000 01110011 01101000 01101111 01110101 01101100 01100100 00100000 01100010 01100101 00100000 01100100 01101001 01110011 01110000 01101100 01100001 01111001 01100101 01100100 00100000 01101001 01100110 00100000 01110100 01101000 01100101 00100000 01110000 01110010 01101111 01110000 01100101 01110010 01110100 01111001 00100000 01100100 01101111 01100101 01110011 01101110 00100111 01110100 00100000 01100110 01101111 01110010 01100011 01100101 00100000 01110100 01101000 01100101 00100000 01110100 01111001 01110000 01100101,选择当属性未强制指定类型时的帖图显示类型, diff --git a/_PoiyomiShaders/Shaders/8.0/Poiyomi Early Outline.shader b/_PoiyomiShaders/Shaders/8.0/Poiyomi Early Outline.shader index c9ed2ff5..bc0f5fad 100644 --- a/_PoiyomiShaders/Shaders/8.0/Poiyomi Early Outline.shader +++ b/_PoiyomiShaders/Shaders/8.0/Poiyomi Early Outline.shader @@ -2,7 +2,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" { Properties { - [HideInInspector] shader_master_label ("Poiyomi 8.0.420", Float) = 0 + [HideInInspector] shader_master_label ("Poiyomi 8.0.425", Float) = 0 [HideInInspector] shader_is_using_thry_editor ("", Float) = 0 [HideInInspector] footer_youtube ("{texture:{name:icon-youtube,height:16},action:{type:URL,data:https://www.youtube.com/poiyomi},hover:YOUTUBE}", Float) = 0 [HideInInspector] footer_twitter ("{texture:{name:icon-twitter,height:16},action:{type:URL,data:https://twitter.com/poiyomi},hover:TWITTER}", Float) = 0 @@ -247,21 +247,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" _RedTexture ("R Texture--{reference_properties:[_RedTexturePan, _RedTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_RedTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_RedTextureUV ("UV", int) = 0 + _RedAlphaAdd ("R Alpha Add", Range(-1,1)) = 0 _GreenColor ("G Color--{reference_property:_GreenColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _GreenColorThemeIndex ("", Int) = 0 _GreenTexture ("G Texture--{reference_properties:[_GreenTexturePan, _GreenTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_GreenTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_GreenTextureUV ("UV", int) = 0 + _GreenAlphaAdd ("G Alpha Add", Range(-1,1)) = 0 _BlueColor ("B Color--{reference_property:_BlueColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _BlueColorThemeIndex ("", Int) = 0 _BlueTexture ("B Texture--{reference_properties:[_BlueTexturePan, _BlueTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_BlueTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_BlueTextureUV ("UV", int) = 0 + _BlueAlphaAdd ("B Alpha Add", Range(-1,1)) = 0 _AlphaColor ("A Color--{reference_property:_AlphaColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _AlphaColorThemeIndex ("", Int) = 0 _AlphaTexture ("A Texture--{reference_properties:[_AlphaTexturePan, _AlphaTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_AlphaTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_AlphaTextureUV ("UV", int) = 0 + _AlphaAlphaAdd ("A Alpha Add", Range(-1,1)) = 0 // RGB MASKED NORMALS [ThryToggle(GEOM_TYPE_MESH)]_RgbNormalsEnabled ("Enable Normals", Float) = 0 @@ -574,6 +578,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" [HideInInspector][Vector2]_ShadowColorTexPan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _ShadowColorTexUV ("UV", Int) = 0 _ShadowColor ("Shadow Color--{condition_showS:(_LightingMode==1)}", Color) = (0.7, 0.75, 0.85, 1.0) + _MultilayerMathBlurMap ("Blur Map--{reference_properties:[_MultilayerMathBlurMapPan, _MultilayerMathBlurMapUV], condition_showS:(_LightingMode==1)}", 2D) = "white" { } + [HideInInspector][Vector2]_MultilayerMathBlurMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _MultilayerMathBlurMapUV ("UV", Int) = 0 //_ShadowNormalStrength ("Normal Strength", Range(0, 1)) = 1.0 _ShadowBorder ("Border--{condition_showS:(_LightingMode==1)}", Range(0, 1)) = 0.5 _ShadowBlur ("Blur--{condition_showS:(_LightingMode==1)}", Range(0, 1)) = 0.1 @@ -778,7 +785,81 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" _Matcap2HueShift ("Hue Shift--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Range(0, 1)) = 0 [ThryToggleUI(true)] _Matcap2TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 _Matcap2TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap2TPSDepthEnabled==1)}", Range(0, 1)) = 1 - [HideInInspector] m_end_Matcap2 ("Matcap 2--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Float) = 0 + [HideInInspector] m_end_Matcap2 ("Matcap 1--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Float) = 0 + //endex + + // Third Matcap + //ifex _Matcap3Enable==0 + [HideInInspector] m_start_Matcap3 ("Matcap 2--{reference_property:_Matcap3Enable,button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/shading/matcap},hover:Documentation}}", Float) = 0 + [HideInInspector][ThryToggle(POI_MATCAP2)]_Matcap3Enable ("Enable Matcap 2", Float) = 0 + [ThryWideEnum(UTS Style, 0, Top Pinch, 1, Double Sided, 2)] _Matcap3UVMode ("UV Mode", Int) = 1 + _Matcap3Color ("Color--{reference_property:_Matcap3ColorThemeIndex}", Color) = (1, 1, 1, 1) + [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _Matcap3ColorThemeIndex ("", Int) = 0 + [TextureNoSO]_Matcap3 ("Matcap", 2D) = "white" { } + _Matcap3Border ("Border", Range(0, .5)) = 0.43 + _Matcap3Mask ("Mask--{reference_properties:[_Matcap3MaskPan, _Matcap3MaskUV, _Matcap3MaskInvert]}", 2D) = "white" { } + [HideInInspector][Vector2]_Matcap3MaskPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap3MaskUV ("UV", Int) = 0 + [HideInInspector][ToggleUI]_Matcap3MaskInvert ("Invert", Float) = 0 + _Matcap3EmissionStrength ("Emission Strength", Range(0, 20)) = 0 + _Matcap3Intensity ("Intensity", Range(0, 5)) = 1 + _Matcap3LightMask ("Hide in Shadow", Range(0, 1)) = 0 + _Matcap3Replace ("Replace Blend", Range(0, 1)) = 0 + _Matcap3Multiply ("Multiply Blend", Range(0, 1)) = 0 + _Matcap3Add ("Add Blend", Range(0, 1)) = 0 + _Matcap3Mixed ("Mixed Blend", Range(0, 1)) = 0 + _Matcap3AddToLight ("Add To Light", Range(0, 1)) = 0 + _Matcap3AlphaOverride ("Override Alpha", Range(0, 1)) = 0 + [Enum(Vertex, 0, Pixel, 1)] _Matcap3Normal ("Normal to use", Int) = 1 + [ThryToggle(POI_MATCAP2_CUSTOM_NORMAL, true)] _Matcap2CustomNormal (" Custom Normal", Float) = 0 + [ThryToggle()]_Matcap2CustomNormal ("Custom Normal", Float) = 0 + [Normal]_Matcap2NormalMap ("Normal Map--{reference_properties:[_Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale], condition_showS:(_Matcap2CustomNormal==1)}", 2D) = "bump" { } + [HideInInspector][Vector2]_Matcap2NormalMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap2NormalMapUV ("UV", Int) = 0 + [HideInInspector]_Matcap2NormalMapScale ("Intensity", Range(0, 10)) = 1 + [ThryToggleUI(true)] _Matcap3HueShiftEnabled (" Hue Shift", Float) = 0 + _Matcap3HueShiftSpeed ("Shift Speed--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Float) = 0 + _Matcap3HueShift ("Hue Shift--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Range(0, 1)) = 0 + [ThryToggleUI(true)] _Matcap3TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 + _Matcap3TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap3TPSDepthEnabled==1)}", Range(0, 1)) = 1 + [HideInInspector] m_end_Matcap3 ("Matcap 2--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Float) = 0 + //endex + + // Fourth Matcap + //ifex _Matcap4Enable==0 + [HideInInspector] m_start_Matcap4 ("Matcap 3--{reference_property:_Matcap4Enable,button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/shading/matcap},hover:Documentation}}", Float) = 0 + [HideInInspector][ThryToggle(POI_MATCAP3)]_Matcap4Enable ("Enable Matcap 3", Float) = 0 + [ThryWideEnum(UTS Style, 0, Top Pinch, 1, Double Sided, 2)] _Matcap4UVMode ("UV Mode", Int) = 1 + _Matcap4Color ("Color--{reference_property:_Matcap4ColorThemeIndex}", Color) = (1, 1, 1, 1) + [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _Matcap4ColorThemeIndex ("", Int) = 0 + [TextureNoSO]_Matcap4 ("Matcap", 2D) = "white" { } + _Matcap4Border ("Border", Range(0, .5)) = 0.43 + _Matcap4Mask ("Mask--{reference_properties:[_Matcap4MaskPan, _Matcap4MaskUV, _Matcap4MaskInvert]}", 2D) = "white" { } + [HideInInspector][Vector2]_Matcap4MaskPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap4MaskUV ("UV", Int) = 0 + [HideInInspector][ToggleUI]_Matcap4MaskInvert ("Invert", Float) = 0 + _Matcap4EmissionStrength ("Emission Strength", Range(0, 20)) = 0 + _Matcap4Intensity ("Intensity", Range(0, 5)) = 1 + _Matcap4LightMask ("Hide in Shadow", Range(0, 1)) = 0 + _Matcap4Replace ("Replace Blend", Range(0, 1)) = 0 + _Matcap4Multiply ("Multiply Blend", Range(0, 1)) = 0 + _Matcap4Add ("Add Blend", Range(0, 1)) = 0 + _Matcap4Mixed ("Mixed Blend", Range(0, 1)) = 0 + _Matcap4AddToLight ("Add To Light", Range(0, 1)) = 0 + _Matcap4AlphaOverride ("Override Alpha", Range(0, 1)) = 0 + [Enum(Vertex, 0, Pixel, 1)] _Matcap4Normal ("Normal to use", Int) = 1 + [ThryToggle(POI_MATCAP3_CUSTOM_NORMAL, true)] _Matcap3CustomNormal (" Custom Normal", Float) = 0 + [ThryToggle()]_Matcap3CustomNormal ("Custom Normal", Float) = 0 + [Normal]_Matcap3NormalMap ("Normal Map--{reference_properties:[_Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale], condition_showS:(_Matcap3CustomNormal==1)}", 2D) = "bump" { } + [HideInInspector][Vector2]_Matcap3NormalMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap3NormalMapUV ("UV", Int) = 0 + [HideInInspector]_Matcap3NormalMapScale ("Intensity", Range(0, 10)) = 1 + [ThryToggleUI(true)] _Matcap4HueShiftEnabled (" Hue Shift", Float) = 0 + _Matcap4HueShiftSpeed ("Shift Speed--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Float) = 0 + _Matcap4HueShift ("Hue Shift--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Range(0, 1)) = 0 + [ThryToggleUI(true)] _Matcap4TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 + _Matcap4TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap4TPSDepthEnabled==1)}", Range(0, 1)) = 1 + [HideInInspector] m_end_Matcap4 ("Matcap 3--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Float) = 0 //endex //ifex _CubeMapEnabled==0 @@ -1031,6 +1112,13 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Float) = 4 [HideInInspector] m_end_outlineAdvanced ("Advanced", Float) = 0 + [HideInInspector] m_start_OutlineAudioLink ("Audio Link ♫--{ condition_showS:_EnableAudioLink==1}", Float) = 0 + [Enum(Bass, 0, Low Mid, 1, High Mid, 2, Treble, 3)] _AudioLinkOutlineSizeBand ("Size Band", Int) = 0 + [Vector2]_AudioLinkOutlineSize ("Size Mod", Vector) = (0, 0, 0, 0) + [Enum(Bass, 0, Low Mid, 1, High Mid, 2, Treble, 3)] _AudioLinkOutlineEmissionBand ("Emission Band", Int) = 0 + [Vector2]_AudioLinkOutlineEmission ("Emission Mod", Vector) = (0, 0, 0, 0) + [HideInInspector] m_end_OutlineAudioLink ("Audio Link", Float) = 0 + // Rendering Options [HideInInspector] m_specialFXCategory ("Special FX", Float) = 0 //ifex _EnableUDIMDiscardOptions==0 @@ -1152,7 +1240,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _FlipbookMaskUV ("UV", Int) = 0 _FlipbookColor ("Color & alpha--{reference_property:_FlipbookColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _FlipbookColorThemeIndex ("", Int) = 0 - _FlipbookTotalFrames ("Total Frames", Float) = 1 + // _FlipbookTotalFrames ("Total Frames", Float) = 1 _FlipbookFPS ("FPS", Float) = 30.0 _FlipbookScaleOffset ("Scale | Offset", Vector) = (1, 1, 0, 0) _FlipbookSideOffset ("Side Offset ←→↓↑", Vector) = (0, 0, 0, 0) @@ -1166,6 +1254,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" // Flipbook Manual Control [ThryToggleUI(true)]_FlipbookManualFrameControl (" Manual Frame Control", Float) = 0 _FlipbookCurrentFrame ("Current Frame--{ condition_showS:_FlipbookManualFrameControl==1}", Float) = 0 + [ThryToggleUI(true)]_FlipbookStartAndEnd (" Start and End Frames", Float) = 0 + _FlipbookStartFrame ("Start Frame--{ condition_showS:_FlipbookStartAndEnd==1}", Float) = 0 + _FlipbookEndFrame ("End Frame--{ condition_showS:_FlipbookStartAndEnd==1}", Float) = 0 [ThryToggleUI(true)]_FlipbookCrossfadeEnabled (" Crossfade", Float) = 0 [MultiSlider]_FlipbookCrossfadeRange ("Fade Range--{ condition_showS:_FlipbookCrossfadeEnabled==1}", Vector) = (0.75, 1, 0, 1) [ThryToggleUI(true)]_FlipbookHueShiftEnabled (" Hue Shift", Float) = 0 @@ -1845,7 +1936,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" //endex // Rendering Options - [HideInInspector] m_modifierCategory ("UV Modifiers", Float) = 0 + [HideInInspector] m_modifierCategory ("Modifiers", Float) = 0 //ifex _EnableDistortion==0 [HideInInspector] m_start_uvDistortion (" Distortion UV--{reference_property:_EnableDistortion}", Float) = 0 [HideInInspector][ThryToggle(USER_LUT)] _EnableDistortion ("Enabled?", Float) = 0 @@ -1977,13 +2068,31 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" // Stencils [HideInInspector] m_start_StencilPassOptions ("Stencil--{button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/rendering/stencil},hover:Documentation}}", Float) = 0 + [ThryWideEnum(Simple, 0, Front Face vs Back Face, 1)] _StencilType ("Stencil Type", Float) = 0 [IntRange] _StencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _StencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _StencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilPassOp ("Stencil Pass Op", Float) = 0 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilFailOp ("Stencil Fail Op", Float) = 0 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFailOp ("Stencil ZFail Op", Float) = 0 - [Enum(UnityEngine.Rendering.CompareFunction)] _StencilCompareFunction ("Stencil Compare Function", Float) = 8 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilPassOp ("Stencil Pass Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFailOp ("Stencil Fail Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFailOp ("Stencil ZFail Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilCompareFunction ("Stencil Compare Function--{condition_showS:(_StencilType==0)}", Float) = 8 + + [HideInInspector] m_start_StencilPassBackOptions("Back--{condition_showS:(_StencilType==1)}", Float) = 0 + [Helpbox(1)] _FFBFStencilHelp0 ("Front Face and Back Face Stencils only work when locked in due to Unity's Stencil managment", Int) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackPassOp ("Back Pass Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackFailOp ("Back Fail Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackZFailOp ("Back ZFail Op", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilBackCompareFunction ("Back Compare Function", Float) = 8 + [HideInInspector] m_end_StencilPassBackOptions("Back", Float) = 0 + + [HideInInspector] m_start_StencilPassFrontOptions("Front--{condition_showS:(_StencilType==1)}", Float) = 0 + [Helpbox(1)] _FFBFStencilHelp1 ("Front Face and Back Face Stencils only work when locked in due to Unity's Stencil managment", Int) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontPassOp ("Front Pass Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontFailOp ("Front Fail Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontZFailOp ("Front ZFail Op", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilFrontCompareFunction ("Front Compare Function", Float) = 8 + [HideInInspector] m_end_StencilPassFrontOptions("Front", Float) = 0 + [HideInInspector] m_end_StencilPassOptions ("Stencil", Float) = 0 // Outline Stencil @@ -2048,7 +2157,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -2130,6 +2239,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -2348,6 +2465,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -2696,6 +2816,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float _LineColorThemeIndex; float _Offset_Z; float _OutlineClipAtZeroWidth; + #ifdef POI_AUDIOLINK + float _AudioLinkOutlineSizeBand; + float2 _AudioLinkOutlineSize; + float _AudioLinkOutlineEmissionBand; + float2 _AudioLinkOutlineEmission; + #endif #endif //ifex _EnableDissolve==0 @@ -2859,6 +2985,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float2 _ShadowColorTexPan; float _ShadowColorTexUV; #endif + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _MultilayerMathBlurMap; + float4 _MultilayerMathBlurMap_ST; + float2 _MultilayerMathBlurMapPan; + float _MultilayerMathBlurMapUV; + #endif float _ShadowBorder; float _ShadowBlur; float4 _Shadow2ndColor; @@ -2978,12 +3110,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -3139,6 +3274,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -4470,13 +4606,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -4504,6 +4649,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -4709,8 +4882,23 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #ifdef POI_PASS_OUTLINE float outlineMask = 1; - //TODO figure out why uvs can't be set dynamically - outlineMask = poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[0], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb); + #define poiOutlineMask(uvc) poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[uvc], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb) + switch (_OutlineMaskUV) + { + case 0: + outlineMask = poiOutlineMask(0); + break; + case 1: + outlineMask = poiOutlineMask(1); + break; + case 2: + outlineMask = poiOutlineMask(2); + break; + case 3: + outlineMask = poiOutlineMask(3); + break; + } + #undef poiOutlineMask //UNITY_BRANCH if (_OutlineUseVertexColors == 2) @@ -4734,7 +4922,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" distanceOffset *= min(distance(_WorldSpaceCameraPos, mul(unity_ObjectToWorld, o.localPos).xyz), _OutlinesMaxDistance); } - float3 offset = outlineNormal * (_LineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; + float lineWidth = _LineWidth; + #ifdef POI_AUDIOLINK + // Due to PoiMods.audioLink being frag only I'll just + // recreate what it does here for this vertex function + //UNITY_BRANCH + if (_AudioLinkAnimToggle) + { + if (LumaIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, LumaData(0.578, 0.515)[_AudioLinkOutlineSizeBand / 2]); + } + else if (AudioLinkIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, AudioLinkData(uint2(0, _AudioLinkOutlineSizeBand))); + } + } + #endif + + float3 offset = outlineNormal * (lineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; //UNITY_BRANCH if (_OutlineExpansionMode == 2) @@ -5058,7 +5264,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float OutlineMask = tex2D(_OutlineMask, TRANSFORM_TEX(poiMesh.uv[_OutlineMaskUV], _OutlineMask) + _Time.x * _OutlineMaskPan).r; if (_OutlineClipAtZeroWidth) { - clip(OutlineMask * _LineWidth - 0.001); + float lineWidth = _LineWidth; + #ifdef POI_AUDIOLINK + //UNITY_BRANCH + if (poiMods.audioLinkAvailable) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, poiMods.audioLink[_AudioLinkOutlineSizeBand]); + } + #endif + clip(OutlineMask * lineWidth - 0.001); } float4 col = POI2D_SAMPLER_PAN(_OutlineTexture, _MainTex, poiUV(poiMesh.uv[_OutlineTextureUV], _OutlineTexture_ST), _OutlineTexturePan) * float4(poiThemeColor(poiMods, _LineColor.rgb, _LineColorThemeIndex), _LineColor.a); @@ -5085,7 +5299,16 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" poiFragData.baseColor = hueShift(poiFragData.baseColor, _OutlineHueOffset +_OutlineHueOffsetSpeed * _Time.x); } - poiFragData.emission += poiFragData.baseColor * _OutlineEmission; + float emission = _OutlineEmission; + #ifdef POI_AUDIOLINK + //UNITY_BRANCH + if (poiMods.audioLinkAvailable) + { + emission += lerp(_AudioLinkOutlineEmission.x, _AudioLinkOutlineEmission.y, poiMods.audioLink[_AudioLinkOutlineEmissionBand]); + } + #endif + + poiFragData.emission += poiFragData.baseColor * emission; } #endif @@ -5698,21 +5921,26 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #endif #ifdef _LIGHTINGMODE_MULTILAYER_MATH + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + float4 blurMap = POI2D_SAMPLER_PAN(_MultilayerMathBlurMap, _MainTex, poiUV(poiMesh.uv[_MultilayerMathBlurMapUV], _MultilayerMathBlurMap_ST), _MultilayerMathBlurMapPan); + #else + float4 blurMap = 1; + #endif float4 lns = float4(1, 1, 1, 1); if (_LightingMulitlayerNonLinear) { - lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } else { - lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } lns = saturate(lns); float3 indirectColor = 1; @@ -6106,16 +6334,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -6125,14 +6367,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -6949,10 +7201,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite [_ZWrite] @@ -6977,7 +7243,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -7059,6 +7325,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -7277,6 +7551,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -7698,6 +7975,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _RedTexture_ST; float2 _RedTexturePan; float _RedTextureUV; + float _RedAlphaAdd; #if defined(PROP_GREENTEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _GreenTexture; @@ -7705,6 +7983,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _GreenTexture_ST; float2 _GreenTexturePan; float _GreenTextureUV; + float _GreenAlphaAdd; #if defined(PROP_BLUETEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _BlueTexture; @@ -7712,6 +7991,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _BlueTexture_ST; float2 _BlueTexturePan; float _BlueTextureUV; + float _BlueAlphaAdd; #if defined(PROP_ALPHATEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _AlphaTexture; @@ -7719,6 +7999,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _AlphaTexture_ST; float2 _AlphaTexturePan; float _AlphaTextureUV; + float _AlphaAlphaAdd; #ifdef GEOM_TYPE_MESH #if defined(PROP_RGBNORMALR) || !defined(OPTIMIZER_ENABLED) @@ -8131,6 +8412,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float2 _ShadowColorTexPan; float _ShadowColorTexUV; #endif + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _MultilayerMathBlurMap; + float4 _MultilayerMathBlurMap_ST; + float2 _MultilayerMathBlurMapPan; + float _MultilayerMathBlurMapUV; + #endif float _ShadowBorder; float _ShadowBlur; float4 _Shadow2ndColor; @@ -8332,6 +8619,100 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #endif //endex + //ifex _Matcap3Enable==0 + #ifdef POI_MATCAP2 + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3; + float4 _Matcap3_ST; + float2 _Matcap3Pan; + float _Matcap3UV; + #endif + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3Mask; + float4 _Matcap3Mask_ST; + float2 _Matcap3MaskPan; + float _Matcap3MaskUV; + #endif + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap2NormalMap; + #endif + float4 _Matcap2NormalMap_ST; + float2 _Matcap2NormalMapPan; + float _Matcap2NormalMapUV; + float _Matcap2NormalMapScale; + #endif + float _Matcap3UVMode; + float _Matcap3MaskInvert; + float _Matcap3Border; + float4 _Matcap3Color; + float _Matcap3ColorThemeIndex; + float _Matcap3Intensity; + float _Matcap3Replace; + float _Matcap3Multiply; + float _Matcap3Add; + float _Matcap3AddToLight; + float _Matcap3Mixed; + float _Matcap3AlphaOverride; + float _Matcap3Enable; + float _Matcap3LightMask; + float _Matcap3EmissionStrength; + float _Matcap3Normal; + float _Matcap3HueShiftEnabled; + float _Matcap3HueShiftSpeed; + float _Matcap3HueShift; + float _Matcap3TPSDepthEnabled; + float _Matcap3TPSMaskStrength; + #endif + //endex + + //ifex _Matcap4Enable==0 + #ifdef POI_MATCAP3 + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4; + float4 _Matcap4_ST; + float2 _Matcap4Pan; + float _Matcap4UV; + #endif + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4Mask; + float4 _Matcap4Mask_ST; + float2 _Matcap4MaskPan; + float _Matcap4MaskUV; + #endif + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3NormalMap; + #endif + float4 _Matcap3NormalMap_ST; + float2 _Matcap3NormalMapPan; + float _Matcap3NormalMapUV; + float _Matcap3NormalMapScale; + #endif + float _Matcap4UVMode; + float _Matcap4MaskInvert; + float _Matcap4Border; + float4 _Matcap4Color; + float _Matcap4ColorThemeIndex; + float _Matcap4Intensity; + float _Matcap4Replace; + float _Matcap4Multiply; + float _Matcap4Add; + float _Matcap4AddToLight; + float _Matcap4Mixed; + float _Matcap4AlphaOverride; + float _Matcap4Enable; + float _Matcap4LightMask; + float _Matcap4EmissionStrength; + float _Matcap4Normal; + float _Matcap4HueShiftEnabled; + float _Matcap4HueShiftSpeed; + float _Matcap4HueShift; + float _Matcap4TPSDepthEnabled; + float _Matcap4TPSMaskStrength; + #endif + //endex + //ifex _CubeMapEnabled==0 #ifdef _CUBEMAP #if defined(PROP_CUBEMAP) || !defined(OPTIMIZER_ENABLED) @@ -8421,12 +8802,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -9434,6 +9818,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -10765,13 +11150,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -10799,6 +11193,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -11004,8 +11426,23 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #ifdef POI_PASS_OUTLINE float outlineMask = 1; - //TODO figure out why uvs can't be set dynamically - outlineMask = poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[0], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb); + #define poiOutlineMask(uvc) poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[uvc], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb) + switch (_OutlineMaskUV) + { + case 0: + outlineMask = poiOutlineMask(0); + break; + case 1: + outlineMask = poiOutlineMask(1); + break; + case 2: + outlineMask = poiOutlineMask(2); + break; + case 3: + outlineMask = poiOutlineMask(3); + break; + } + #undef poiOutlineMask //UNITY_BRANCH if (_OutlineUseVertexColors == 2) @@ -11029,7 +11466,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" distanceOffset *= min(distance(_WorldSpaceCameraPos, mul(unity_ObjectToWorld, o.localPos).xyz), _OutlinesMaxDistance); } - float3 offset = outlineNormal * (_LineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; + float lineWidth = _LineWidth; + #ifdef POI_AUDIOLINK + // Due to PoiMods.audioLink being frag only I'll just + // recreate what it does here for this vertex function + //UNITY_BRANCH + if (_AudioLinkAnimToggle) + { + if (LumaIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, LumaData(0.578, 0.515)[_AudioLinkOutlineSizeBand / 2]); + } + else if (AudioLinkIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, AudioLinkData(uint2(0, _AudioLinkOutlineSizeBand))); + } + } + #endif + + float3 offset = outlineNormal * (lineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; //UNITY_BRANCH if (_OutlineExpansionMode == 2) @@ -11698,23 +12153,29 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 alpha = 1; #endif + float4 maskFinal = 1; + maskFinal.r = saturate(rgbMask.r + _RedAlphaAdd) * saturate(red.a * _RedColor.a); + maskFinal.g = saturate(rgbMask.g + _GreenAlphaAdd) * saturate(green.a * _GreenColor.a); + maskFinal.b = saturate(rgbMask.b + _BlueAlphaAdd) * saturate(blue.a * _BlueColor.a); + maskFinal.a = saturate(rgbMask.a + _AlphaAlphaAdd) * saturate(alpha.a * _AlphaColor.a); + //UNITY_BRANCH if (_RGBBlendMultiplicative) { float3 RGBColor = 1; - RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); poiFragData.baseColor *= RGBColor; } else { - poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); } } #endif @@ -12617,21 +13078,26 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #endif #ifdef _LIGHTINGMODE_MULTILAYER_MATH + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + float4 blurMap = POI2D_SAMPLER_PAN(_MultilayerMathBlurMap, _MainTex, poiUV(poiMesh.uv[_MultilayerMathBlurMapUV], _MultilayerMathBlurMap_ST), _MultilayerMathBlurMapPan); + #else + float4 blurMap = 1; + #endif float4 lns = float4(1, 1, 1, 1); if (_LightingMulitlayerNonLinear) { - lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } else { - lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } lns = saturate(lns); float3 indirectColor = 1; @@ -13003,7 +13469,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 void blendMatcap(inout PoiLight poiLight, inout PoiFragData poiFragData, float add, float lightAdd, float multiply, float replace, float mixed, float4 matcapColor, float matcapMask, float emissionStrength, float matcapLightMask #ifdef POI_BLACKLIGHT , uint blackLightMaskIndex @@ -13029,14 +13495,18 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" poiFragData.emission += matcapColor.rgb * emissionStrength * matcapMask * matcapColor.a; } //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) void applyMatcap(inout PoiFragData poiFragData, in PoiCam poiCam, in PoiMesh poiMesh, inout PoiLight poiLight, in PoiMods poiMods) { float4 matcap = 0; float matcapMask = 0; float4 matcap2 = 0; float matcap2Mask = 0; + float4 matcap3 = 0; + float matcap3Mask = 0; + float4 matcap4 = 0; + float matcap4Mask = 0; float2 matcapUV = 0; //endex @@ -13211,7 +13681,179 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" ); #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _Matcap3Enable==0 + // Matcap 3 + #ifdef POI_MATCAP2 + + float3 normal2 = poiMesh.normals[_Matcap3Normal]; + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal2 = calculateNormal(poiMesh.normals[_Matcap3Normal], poiMesh, _Matcap2NormalMap, _Matcap2NormalMap_ST, _Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap3UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal2, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap3Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal2), dot(worldViewUp, normal2)) * _Matcap3Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal2); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap3Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + matcap3 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap3, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap3)) * float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #else + matcap3 = float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #endif + matcap3.rgb *= _Matcap3Intensity; + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + matcap3Mask = POI2D_SAMPLER_PAN(_Matcap3Mask, _MainTex, poiUV(poiMesh.uv[_Matcap3MaskUV], _Matcap3Mask_ST), _Matcap3MaskPan); + #else + matcap3Mask = 1; + #endif + if (_Matcap3MaskInvert) + { + matcap3Mask = 1 - matcap3Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap3TPSDepthEnabled) + { + matcap3Mask = lerp(matcap3Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap3TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap3.a, matcap3Mask * _Matcap3AlphaOverride); + + //UNITY_BRANCH + if (_Matcap3HueShiftEnabled) + { + matcap3.rgb = hueShift(matcap3.rgb, _Matcap3HueShift + _Time.x * _Matcap3HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap3Add, _Matcap3AddToLight, _Matcap3Multiply, _Matcap3Replace, _Matcap3Mixed, matcap3, matcap3Mask, _Matcap3EmissionStrength, _Matcap3LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap3 + #endif + ); + #endif + //endex + //ifex _Matcap4Enable==0 + // Matcap 4 + #ifdef POI_MATCAP3 + + float3 normal3 = poiMesh.normals[_Matcap4Normal]; + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal3 = calculateNormal(poiMesh.normals[_Matcap4Normal], poiMesh, _Matcap3NormalMap, _Matcap3NormalMap_ST, _Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap4UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal3, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap4Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal3), dot(worldViewUp, normal3)) * _Matcap4Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal3); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap4Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + matcap4 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap4, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap4)) * float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #else + matcap4 = float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #endif + matcap4.rgb *= _Matcap4Intensity; + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + matcap4Mask = POI2D_SAMPLER_PAN(_Matcap4Mask, _MainTex, poiUV(poiMesh.uv[_Matcap4MaskUV], _Matcap4Mask_ST), _Matcap4MaskPan); + #else + matcap4Mask = 1; + #endif + if (_Matcap4MaskInvert) + { + matcap4Mask = 1 - matcap4Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap4TPSDepthEnabled) + { + matcap4Mask = lerp(matcap4Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap4TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap4.a, matcap4Mask * _Matcap4AlphaOverride); + + //UNITY_BRANCH + if (_Matcap4HueShiftEnabled) + { + matcap4.rgb = hueShift(matcap4.rgb, _Matcap4HueShift + _Time.x * _Matcap4HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap4Add, _Matcap4AddToLight, _Matcap4Multiply, _Matcap4Replace, _Matcap4Mixed, matcap4, matcap4Mask, _Matcap4EmissionStrength, _Matcap4LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap4 + #endif + ); + #endif + //endex + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 } #endif //endex @@ -13431,16 +14073,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -13450,14 +14106,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -13579,6 +14245,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" } #endif } + void applyLumaGradient(in PoiMods poiMods, inout float3 emissionColor, in float themeIndex, in float nDotV) + { + #ifdef POI_AUDIOLINK + if (poiMods.audioLinkAvailable && poiMods.audioLinkViaLuma && themeIndex >= 5 && themeIndex <= 7) + { + emissionColor = getLumaGradient(themeIndex-5, saturate(1 - nDotV)); + } + #endif + } //endex //ifex _EnableEmission==0 @@ -13636,6 +14311,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" emissionStrength0 *= calculateBlinkingEmission(_EmissiveBlink_Min, _EmissiveBlink_Max, _EmissiveBlink_Velocity, _EmissionBlinkingOffset); } + applyLumaGradient(poiMods, emissionColor0, _EmissionColorThemeIndex, poiLight.nDotV); emissionColor0 = hueShift(emissionColor0, frac(_EmissionHueShift + _EmissionHueShiftSpeed * _Time.x) * _EmissionHueShiftEnabled); #if defined(PROP_EMISSIONMASK) || !defined(OPTIMIZER_ENABLED) @@ -13732,6 +14408,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" emissionStrength1 *= calculateBlinkingEmission(_EmissiveBlink_Min1, _EmissiveBlink_Max1, _EmissiveBlink_Velocity1, _EmissionBlinkingOffset1); } + applyLumaGradient(poiMods, emissionColor1, _EmissionColor1ThemeIndex, poiLight.nDotV); emissionColor1 = hueShift(emissionColor1, frac(_EmissionHueShift1 + _EmissionHueShiftSpeed1 * _Time.x) * _EmissionHueShiftEnabled1); #if defined(PROP_EMISSIONMASK1) || !defined(OPTIMIZER_ENABLED) float emissionMask1 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask1, _MainTex, poiUV(poiMesh.uv[_EmissionMask1UV], _EmissionMask1_ST) + _Time.x * _EmissionMask1Pan); @@ -13816,6 +14493,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" emissionStrength2 *= calculateBlinkingEmission(_EmissiveBlink_Min2, _EmissiveBlink_Max2, _EmissiveBlink_Velocity2, _EmissionBlinkingOffset2); } + applyLumaGradient(poiMods, emissionColor2, _EmissionColor2ThemeIndex, poiLight.nDotV); emissionColor2 = hueShift(emissionColor2, frac(_EmissionHueShift2 + _EmissionHueShiftSpeed2 * _Time.x) * _EmissionHueShiftEnabled2); #if defined(PROP_EMISSIONMASK2) || !defined(OPTIMIZER_ENABLED) float emissionMask2 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask2, _MainTex, poiUV(poiMesh.uv[_EmissionMask2UV], _EmissionMask2_ST) + _Time.x * _EmissionMask2Pan); @@ -13897,6 +14575,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" emissionStrength3 *= calculateBlinkingEmission(_EmissiveBlink_Min3, _EmissiveBlink_Max3, _EmissiveBlink_Velocity3, _EmissionBlinkingOffset3); } + applyLumaGradient(poiMods, emissionColor3, _EmissionColor3ThemeIndex, poiLight.nDotV); emissionColor3 = hueShift(emissionColor3, frac(_EmissionHueShift3 + _EmissionHueShiftSpeed3 * _Time.x) * _EmissionHueShiftEnabled3); #if defined(PROP_EMISSIONMASK3) || !defined(OPTIMIZER_ENABLED) float emissionMask3 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask3, _MainTex, poiUV(poiMesh.uv[_EmissionMask3UV], _EmissionMask3_ST) + _Time.x * _EmissionMask3Pan); @@ -16224,8 +16903,8 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) applyMatcap(poiFragData, poiCam, poiMesh, poiLight, poiMods); #endif //endex @@ -16425,10 +17104,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite Off @@ -16453,7 +17146,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -16535,6 +17228,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -16752,6 +17453,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -17173,6 +17877,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _RedTexture_ST; float2 _RedTexturePan; float _RedTextureUV; + float _RedAlphaAdd; #if defined(PROP_GREENTEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _GreenTexture; @@ -17180,6 +17885,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _GreenTexture_ST; float2 _GreenTexturePan; float _GreenTextureUV; + float _GreenAlphaAdd; #if defined(PROP_BLUETEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _BlueTexture; @@ -17187,6 +17893,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _BlueTexture_ST; float2 _BlueTexturePan; float _BlueTextureUV; + float _BlueAlphaAdd; #if defined(PROP_ALPHATEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _AlphaTexture; @@ -17194,6 +17901,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _AlphaTexture_ST; float2 _AlphaTexturePan; float _AlphaTextureUV; + float _AlphaAlphaAdd; #ifdef GEOM_TYPE_MESH #if defined(PROP_RGBNORMALR) || !defined(OPTIMIZER_ENABLED) @@ -17606,6 +18314,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float2 _ShadowColorTexPan; float _ShadowColorTexUV; #endif + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _MultilayerMathBlurMap; + float4 _MultilayerMathBlurMap_ST; + float2 _MultilayerMathBlurMapPan; + float _MultilayerMathBlurMapUV; + #endif float _ShadowBorder; float _ShadowBlur; float4 _Shadow2ndColor; @@ -17807,6 +18521,100 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #endif //endex + //ifex _Matcap3Enable==0 + #ifdef POI_MATCAP2 + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3; + float4 _Matcap3_ST; + float2 _Matcap3Pan; + float _Matcap3UV; + #endif + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3Mask; + float4 _Matcap3Mask_ST; + float2 _Matcap3MaskPan; + float _Matcap3MaskUV; + #endif + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap2NormalMap; + #endif + float4 _Matcap2NormalMap_ST; + float2 _Matcap2NormalMapPan; + float _Matcap2NormalMapUV; + float _Matcap2NormalMapScale; + #endif + float _Matcap3UVMode; + float _Matcap3MaskInvert; + float _Matcap3Border; + float4 _Matcap3Color; + float _Matcap3ColorThemeIndex; + float _Matcap3Intensity; + float _Matcap3Replace; + float _Matcap3Multiply; + float _Matcap3Add; + float _Matcap3AddToLight; + float _Matcap3Mixed; + float _Matcap3AlphaOverride; + float _Matcap3Enable; + float _Matcap3LightMask; + float _Matcap3EmissionStrength; + float _Matcap3Normal; + float _Matcap3HueShiftEnabled; + float _Matcap3HueShiftSpeed; + float _Matcap3HueShift; + float _Matcap3TPSDepthEnabled; + float _Matcap3TPSMaskStrength; + #endif + //endex + + //ifex _Matcap4Enable==0 + #ifdef POI_MATCAP3 + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4; + float4 _Matcap4_ST; + float2 _Matcap4Pan; + float _Matcap4UV; + #endif + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4Mask; + float4 _Matcap4Mask_ST; + float2 _Matcap4MaskPan; + float _Matcap4MaskUV; + #endif + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3NormalMap; + #endif + float4 _Matcap3NormalMap_ST; + float2 _Matcap3NormalMapPan; + float _Matcap3NormalMapUV; + float _Matcap3NormalMapScale; + #endif + float _Matcap4UVMode; + float _Matcap4MaskInvert; + float _Matcap4Border; + float4 _Matcap4Color; + float _Matcap4ColorThemeIndex; + float _Matcap4Intensity; + float _Matcap4Replace; + float _Matcap4Multiply; + float _Matcap4Add; + float _Matcap4AddToLight; + float _Matcap4Mixed; + float _Matcap4AlphaOverride; + float _Matcap4Enable; + float _Matcap4LightMask; + float _Matcap4EmissionStrength; + float _Matcap4Normal; + float _Matcap4HueShiftEnabled; + float _Matcap4HueShiftSpeed; + float _Matcap4HueShift; + float _Matcap4TPSDepthEnabled; + float _Matcap4TPSMaskStrength; + #endif + //endex + //ifex _CubeMapEnabled==0 #ifdef _CUBEMAP #if defined(PROP_CUBEMAP) || !defined(OPTIMIZER_ENABLED) @@ -17896,12 +18704,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -18652,6 +19463,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -19983,13 +20795,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -20017,6 +20838,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -20222,8 +21071,23 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #ifdef POI_PASS_OUTLINE float outlineMask = 1; - //TODO figure out why uvs can't be set dynamically - outlineMask = poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[0], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb); + #define poiOutlineMask(uvc) poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[uvc], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb) + switch (_OutlineMaskUV) + { + case 0: + outlineMask = poiOutlineMask(0); + break; + case 1: + outlineMask = poiOutlineMask(1); + break; + case 2: + outlineMask = poiOutlineMask(2); + break; + case 3: + outlineMask = poiOutlineMask(3); + break; + } + #undef poiOutlineMask //UNITY_BRANCH if (_OutlineUseVertexColors == 2) @@ -20247,7 +21111,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" distanceOffset *= min(distance(_WorldSpaceCameraPos, mul(unity_ObjectToWorld, o.localPos).xyz), _OutlinesMaxDistance); } - float3 offset = outlineNormal * (_LineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; + float lineWidth = _LineWidth; + #ifdef POI_AUDIOLINK + // Due to PoiMods.audioLink being frag only I'll just + // recreate what it does here for this vertex function + //UNITY_BRANCH + if (_AudioLinkAnimToggle) + { + if (LumaIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, LumaData(0.578, 0.515)[_AudioLinkOutlineSizeBand / 2]); + } + else if (AudioLinkIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, AudioLinkData(uint2(0, _AudioLinkOutlineSizeBand))); + } + } + #endif + + float3 offset = outlineNormal * (lineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; //UNITY_BRANCH if (_OutlineExpansionMode == 2) @@ -20916,23 +21798,29 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 alpha = 1; #endif + float4 maskFinal = 1; + maskFinal.r = saturate(rgbMask.r + _RedAlphaAdd) * saturate(red.a * _RedColor.a); + maskFinal.g = saturate(rgbMask.g + _GreenAlphaAdd) * saturate(green.a * _GreenColor.a); + maskFinal.b = saturate(rgbMask.b + _BlueAlphaAdd) * saturate(blue.a * _BlueColor.a); + maskFinal.a = saturate(rgbMask.a + _AlphaAlphaAdd) * saturate(alpha.a * _AlphaColor.a); + //UNITY_BRANCH if (_RGBBlendMultiplicative) { float3 RGBColor = 1; - RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); poiFragData.baseColor *= RGBColor; } else { - poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); } } #endif @@ -21835,21 +22723,26 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #endif #ifdef _LIGHTINGMODE_MULTILAYER_MATH + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + float4 blurMap = POI2D_SAMPLER_PAN(_MultilayerMathBlurMap, _MainTex, poiUV(poiMesh.uv[_MultilayerMathBlurMapUV], _MultilayerMathBlurMap_ST), _MultilayerMathBlurMapPan); + #else + float4 blurMap = 1; + #endif float4 lns = float4(1, 1, 1, 1); if (_LightingMulitlayerNonLinear) { - lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } else { - lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } lns = saturate(lns); float3 indirectColor = 1; @@ -22221,7 +23114,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 void blendMatcap(inout PoiLight poiLight, inout PoiFragData poiFragData, float add, float lightAdd, float multiply, float replace, float mixed, float4 matcapColor, float matcapMask, float emissionStrength, float matcapLightMask #ifdef POI_BLACKLIGHT , uint blackLightMaskIndex @@ -22247,14 +23140,18 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" poiFragData.emission += matcapColor.rgb * emissionStrength * matcapMask * matcapColor.a; } //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) void applyMatcap(inout PoiFragData poiFragData, in PoiCam poiCam, in PoiMesh poiMesh, inout PoiLight poiLight, in PoiMods poiMods) { float4 matcap = 0; float matcapMask = 0; float4 matcap2 = 0; float matcap2Mask = 0; + float4 matcap3 = 0; + float matcap3Mask = 0; + float4 matcap4 = 0; + float matcap4Mask = 0; float2 matcapUV = 0; //endex @@ -22429,7 +23326,179 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" ); #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _Matcap3Enable==0 + // Matcap 3 + #ifdef POI_MATCAP2 + + float3 normal2 = poiMesh.normals[_Matcap3Normal]; + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal2 = calculateNormal(poiMesh.normals[_Matcap3Normal], poiMesh, _Matcap2NormalMap, _Matcap2NormalMap_ST, _Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap3UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal2, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap3Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal2), dot(worldViewUp, normal2)) * _Matcap3Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal2); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap3Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + matcap3 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap3, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap3)) * float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #else + matcap3 = float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #endif + matcap3.rgb *= _Matcap3Intensity; + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + matcap3Mask = POI2D_SAMPLER_PAN(_Matcap3Mask, _MainTex, poiUV(poiMesh.uv[_Matcap3MaskUV], _Matcap3Mask_ST), _Matcap3MaskPan); + #else + matcap3Mask = 1; + #endif + if (_Matcap3MaskInvert) + { + matcap3Mask = 1 - matcap3Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap3TPSDepthEnabled) + { + matcap3Mask = lerp(matcap3Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap3TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap3.a, matcap3Mask * _Matcap3AlphaOverride); + + //UNITY_BRANCH + if (_Matcap3HueShiftEnabled) + { + matcap3.rgb = hueShift(matcap3.rgb, _Matcap3HueShift + _Time.x * _Matcap3HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap3Add, _Matcap3AddToLight, _Matcap3Multiply, _Matcap3Replace, _Matcap3Mixed, matcap3, matcap3Mask, _Matcap3EmissionStrength, _Matcap3LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap3 + #endif + ); + #endif + //endex + //ifex _Matcap4Enable==0 + // Matcap 4 + #ifdef POI_MATCAP3 + + float3 normal3 = poiMesh.normals[_Matcap4Normal]; + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal3 = calculateNormal(poiMesh.normals[_Matcap4Normal], poiMesh, _Matcap3NormalMap, _Matcap3NormalMap_ST, _Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap4UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal3, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap4Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal3), dot(worldViewUp, normal3)) * _Matcap4Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal3); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap4Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + matcap4 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap4, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap4)) * float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #else + matcap4 = float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #endif + matcap4.rgb *= _Matcap4Intensity; + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + matcap4Mask = POI2D_SAMPLER_PAN(_Matcap4Mask, _MainTex, poiUV(poiMesh.uv[_Matcap4MaskUV], _Matcap4Mask_ST), _Matcap4MaskPan); + #else + matcap4Mask = 1; + #endif + if (_Matcap4MaskInvert) + { + matcap4Mask = 1 - matcap4Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap4TPSDepthEnabled) + { + matcap4Mask = lerp(matcap4Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap4TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap4.a, matcap4Mask * _Matcap4AlphaOverride); + + //UNITY_BRANCH + if (_Matcap4HueShiftEnabled) + { + matcap4.rgb = hueShift(matcap4.rgb, _Matcap4HueShift + _Time.x * _Matcap4HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap4Add, _Matcap4AddToLight, _Matcap4Multiply, _Matcap4Replace, _Matcap4Mixed, matcap4, matcap4Mask, _Matcap4EmissionStrength, _Matcap4LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap4 + #endif + ); + #endif + //endex + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 } #endif //endex @@ -22649,16 +23718,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -22668,14 +23751,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -25038,8 +26131,8 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) applyMatcap(poiFragData, poiCam, poiMesh, poiLight, poiMods); #endif //endex @@ -25203,10 +26296,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite [_ZWrite] @@ -25231,7 +26338,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -25313,6 +26420,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -25531,6 +26646,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -26004,12 +27122,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -26196,6 +27317,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -27527,13 +28649,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -27561,6 +28692,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -27766,8 +28925,23 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" #ifdef POI_PASS_OUTLINE float outlineMask = 1; - //TODO figure out why uvs can't be set dynamically - outlineMask = poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[0], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb); + #define poiOutlineMask(uvc) poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[uvc], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb) + switch (_OutlineMaskUV) + { + case 0: + outlineMask = poiOutlineMask(0); + break; + case 1: + outlineMask = poiOutlineMask(1); + break; + case 2: + outlineMask = poiOutlineMask(2); + break; + case 3: + outlineMask = poiOutlineMask(3); + break; + } + #undef poiOutlineMask //UNITY_BRANCH if (_OutlineUseVertexColors == 2) @@ -27791,7 +28965,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" distanceOffset *= min(distance(_WorldSpaceCameraPos, mul(unity_ObjectToWorld, o.localPos).xyz), _OutlinesMaxDistance); } - float3 offset = outlineNormal * (_LineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; + float lineWidth = _LineWidth; + #ifdef POI_AUDIOLINK + // Due to PoiMods.audioLink being frag only I'll just + // recreate what it does here for this vertex function + //UNITY_BRANCH + if (_AudioLinkAnimToggle) + { + if (LumaIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, LumaData(0.578, 0.515)[_AudioLinkOutlineSizeBand / 2]); + } + else if (AudioLinkIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, AudioLinkData(uint2(0, _AudioLinkOutlineSizeBand))); + } + } + #endif + + float3 offset = outlineNormal * (lineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; //UNITY_BRANCH if (_OutlineExpansionMode == 2) @@ -28610,16 +29802,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -28629,14 +29835,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline Early" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } diff --git a/_PoiyomiShaders/Shaders/8.0/Poiyomi Outline.shader b/_PoiyomiShaders/Shaders/8.0/Poiyomi Outline.shader index 3d826b3f..5f997203 100644 --- a/_PoiyomiShaders/Shaders/8.0/Poiyomi Outline.shader +++ b/_PoiyomiShaders/Shaders/8.0/Poiyomi Outline.shader @@ -2,7 +2,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" { Properties { - [HideInInspector] shader_master_label ("Poiyomi 8.0.420", Float) = 0 + [HideInInspector] shader_master_label ("Poiyomi 8.0.425", Float) = 0 [HideInInspector] shader_is_using_thry_editor ("", Float) = 0 [HideInInspector] footer_youtube ("{texture:{name:icon-youtube,height:16},action:{type:URL,data:https://www.youtube.com/poiyomi},hover:YOUTUBE}", Float) = 0 [HideInInspector] footer_twitter ("{texture:{name:icon-twitter,height:16},action:{type:URL,data:https://twitter.com/poiyomi},hover:TWITTER}", Float) = 0 @@ -247,21 +247,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" _RedTexture ("R Texture--{reference_properties:[_RedTexturePan, _RedTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_RedTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_RedTextureUV ("UV", int) = 0 + _RedAlphaAdd ("R Alpha Add", Range(-1,1)) = 0 _GreenColor ("G Color--{reference_property:_GreenColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _GreenColorThemeIndex ("", Int) = 0 _GreenTexture ("G Texture--{reference_properties:[_GreenTexturePan, _GreenTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_GreenTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_GreenTextureUV ("UV", int) = 0 + _GreenAlphaAdd ("G Alpha Add", Range(-1,1)) = 0 _BlueColor ("B Color--{reference_property:_BlueColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _BlueColorThemeIndex ("", Int) = 0 _BlueTexture ("B Texture--{reference_properties:[_BlueTexturePan, _BlueTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_BlueTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_BlueTextureUV ("UV", int) = 0 + _BlueAlphaAdd ("B Alpha Add", Range(-1,1)) = 0 _AlphaColor ("A Color--{reference_property:_AlphaColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _AlphaColorThemeIndex ("", Int) = 0 _AlphaTexture ("A Texture--{reference_properties:[_AlphaTexturePan, _AlphaTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_AlphaTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_AlphaTextureUV ("UV", int) = 0 + _AlphaAlphaAdd ("A Alpha Add", Range(-1,1)) = 0 // RGB MASKED NORMALS [ThryToggle(GEOM_TYPE_MESH)]_RgbNormalsEnabled ("Enable Normals", Float) = 0 @@ -574,6 +578,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" [HideInInspector][Vector2]_ShadowColorTexPan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _ShadowColorTexUV ("UV", Int) = 0 _ShadowColor ("Shadow Color--{condition_showS:(_LightingMode==1)}", Color) = (0.7, 0.75, 0.85, 1.0) + _MultilayerMathBlurMap ("Blur Map--{reference_properties:[_MultilayerMathBlurMapPan, _MultilayerMathBlurMapUV], condition_showS:(_LightingMode==1)}", 2D) = "white" { } + [HideInInspector][Vector2]_MultilayerMathBlurMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _MultilayerMathBlurMapUV ("UV", Int) = 0 //_ShadowNormalStrength ("Normal Strength", Range(0, 1)) = 1.0 _ShadowBorder ("Border--{condition_showS:(_LightingMode==1)}", Range(0, 1)) = 0.5 _ShadowBlur ("Blur--{condition_showS:(_LightingMode==1)}", Range(0, 1)) = 0.1 @@ -778,7 +785,81 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" _Matcap2HueShift ("Hue Shift--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Range(0, 1)) = 0 [ThryToggleUI(true)] _Matcap2TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 _Matcap2TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap2TPSDepthEnabled==1)}", Range(0, 1)) = 1 - [HideInInspector] m_end_Matcap2 ("Matcap 2--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Float) = 0 + [HideInInspector] m_end_Matcap2 ("Matcap 1--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Float) = 0 + //endex + + // Third Matcap + //ifex _Matcap3Enable==0 + [HideInInspector] m_start_Matcap3 ("Matcap 2--{reference_property:_Matcap3Enable,button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/shading/matcap},hover:Documentation}}", Float) = 0 + [HideInInspector][ThryToggle(POI_MATCAP2)]_Matcap3Enable ("Enable Matcap 2", Float) = 0 + [ThryWideEnum(UTS Style, 0, Top Pinch, 1, Double Sided, 2)] _Matcap3UVMode ("UV Mode", Int) = 1 + _Matcap3Color ("Color--{reference_property:_Matcap3ColorThemeIndex}", Color) = (1, 1, 1, 1) + [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _Matcap3ColorThemeIndex ("", Int) = 0 + [TextureNoSO]_Matcap3 ("Matcap", 2D) = "white" { } + _Matcap3Border ("Border", Range(0, .5)) = 0.43 + _Matcap3Mask ("Mask--{reference_properties:[_Matcap3MaskPan, _Matcap3MaskUV, _Matcap3MaskInvert]}", 2D) = "white" { } + [HideInInspector][Vector2]_Matcap3MaskPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap3MaskUV ("UV", Int) = 0 + [HideInInspector][ToggleUI]_Matcap3MaskInvert ("Invert", Float) = 0 + _Matcap3EmissionStrength ("Emission Strength", Range(0, 20)) = 0 + _Matcap3Intensity ("Intensity", Range(0, 5)) = 1 + _Matcap3LightMask ("Hide in Shadow", Range(0, 1)) = 0 + _Matcap3Replace ("Replace Blend", Range(0, 1)) = 0 + _Matcap3Multiply ("Multiply Blend", Range(0, 1)) = 0 + _Matcap3Add ("Add Blend", Range(0, 1)) = 0 + _Matcap3Mixed ("Mixed Blend", Range(0, 1)) = 0 + _Matcap3AddToLight ("Add To Light", Range(0, 1)) = 0 + _Matcap3AlphaOverride ("Override Alpha", Range(0, 1)) = 0 + [Enum(Vertex, 0, Pixel, 1)] _Matcap3Normal ("Normal to use", Int) = 1 + [ThryToggle(POI_MATCAP2_CUSTOM_NORMAL, true)] _Matcap2CustomNormal (" Custom Normal", Float) = 0 + [ThryToggle()]_Matcap2CustomNormal ("Custom Normal", Float) = 0 + [Normal]_Matcap2NormalMap ("Normal Map--{reference_properties:[_Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale], condition_showS:(_Matcap2CustomNormal==1)}", 2D) = "bump" { } + [HideInInspector][Vector2]_Matcap2NormalMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap2NormalMapUV ("UV", Int) = 0 + [HideInInspector]_Matcap2NormalMapScale ("Intensity", Range(0, 10)) = 1 + [ThryToggleUI(true)] _Matcap3HueShiftEnabled (" Hue Shift", Float) = 0 + _Matcap3HueShiftSpeed ("Shift Speed--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Float) = 0 + _Matcap3HueShift ("Hue Shift--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Range(0, 1)) = 0 + [ThryToggleUI(true)] _Matcap3TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 + _Matcap3TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap3TPSDepthEnabled==1)}", Range(0, 1)) = 1 + [HideInInspector] m_end_Matcap3 ("Matcap 2--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Float) = 0 + //endex + + // Fourth Matcap + //ifex _Matcap4Enable==0 + [HideInInspector] m_start_Matcap4 ("Matcap 3--{reference_property:_Matcap4Enable,button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/shading/matcap},hover:Documentation}}", Float) = 0 + [HideInInspector][ThryToggle(POI_MATCAP3)]_Matcap4Enable ("Enable Matcap 3", Float) = 0 + [ThryWideEnum(UTS Style, 0, Top Pinch, 1, Double Sided, 2)] _Matcap4UVMode ("UV Mode", Int) = 1 + _Matcap4Color ("Color--{reference_property:_Matcap4ColorThemeIndex}", Color) = (1, 1, 1, 1) + [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _Matcap4ColorThemeIndex ("", Int) = 0 + [TextureNoSO]_Matcap4 ("Matcap", 2D) = "white" { } + _Matcap4Border ("Border", Range(0, .5)) = 0.43 + _Matcap4Mask ("Mask--{reference_properties:[_Matcap4MaskPan, _Matcap4MaskUV, _Matcap4MaskInvert]}", 2D) = "white" { } + [HideInInspector][Vector2]_Matcap4MaskPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap4MaskUV ("UV", Int) = 0 + [HideInInspector][ToggleUI]_Matcap4MaskInvert ("Invert", Float) = 0 + _Matcap4EmissionStrength ("Emission Strength", Range(0, 20)) = 0 + _Matcap4Intensity ("Intensity", Range(0, 5)) = 1 + _Matcap4LightMask ("Hide in Shadow", Range(0, 1)) = 0 + _Matcap4Replace ("Replace Blend", Range(0, 1)) = 0 + _Matcap4Multiply ("Multiply Blend", Range(0, 1)) = 0 + _Matcap4Add ("Add Blend", Range(0, 1)) = 0 + _Matcap4Mixed ("Mixed Blend", Range(0, 1)) = 0 + _Matcap4AddToLight ("Add To Light", Range(0, 1)) = 0 + _Matcap4AlphaOverride ("Override Alpha", Range(0, 1)) = 0 + [Enum(Vertex, 0, Pixel, 1)] _Matcap4Normal ("Normal to use", Int) = 1 + [ThryToggle(POI_MATCAP3_CUSTOM_NORMAL, true)] _Matcap3CustomNormal (" Custom Normal", Float) = 0 + [ThryToggle()]_Matcap3CustomNormal ("Custom Normal", Float) = 0 + [Normal]_Matcap3NormalMap ("Normal Map--{reference_properties:[_Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale], condition_showS:(_Matcap3CustomNormal==1)}", 2D) = "bump" { } + [HideInInspector][Vector2]_Matcap3NormalMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap3NormalMapUV ("UV", Int) = 0 + [HideInInspector]_Matcap3NormalMapScale ("Intensity", Range(0, 10)) = 1 + [ThryToggleUI(true)] _Matcap4HueShiftEnabled (" Hue Shift", Float) = 0 + _Matcap4HueShiftSpeed ("Shift Speed--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Float) = 0 + _Matcap4HueShift ("Hue Shift--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Range(0, 1)) = 0 + [ThryToggleUI(true)] _Matcap4TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 + _Matcap4TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap4TPSDepthEnabled==1)}", Range(0, 1)) = 1 + [HideInInspector] m_end_Matcap4 ("Matcap 3--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Float) = 0 //endex //ifex _CubeMapEnabled==0 @@ -1031,6 +1112,13 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Float) = 4 [HideInInspector] m_end_outlineAdvanced ("Advanced", Float) = 0 + [HideInInspector] m_start_OutlineAudioLink ("Audio Link ♫--{ condition_showS:_EnableAudioLink==1}", Float) = 0 + [Enum(Bass, 0, Low Mid, 1, High Mid, 2, Treble, 3)] _AudioLinkOutlineSizeBand ("Size Band", Int) = 0 + [Vector2]_AudioLinkOutlineSize ("Size Mod", Vector) = (0, 0, 0, 0) + [Enum(Bass, 0, Low Mid, 1, High Mid, 2, Treble, 3)] _AudioLinkOutlineEmissionBand ("Emission Band", Int) = 0 + [Vector2]_AudioLinkOutlineEmission ("Emission Mod", Vector) = (0, 0, 0, 0) + [HideInInspector] m_end_OutlineAudioLink ("Audio Link", Float) = 0 + // Rendering Options [HideInInspector] m_specialFXCategory ("Special FX", Float) = 0 //ifex _EnableUDIMDiscardOptions==0 @@ -1152,7 +1240,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _FlipbookMaskUV ("UV", Int) = 0 _FlipbookColor ("Color & alpha--{reference_property:_FlipbookColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _FlipbookColorThemeIndex ("", Int) = 0 - _FlipbookTotalFrames ("Total Frames", Float) = 1 + // _FlipbookTotalFrames ("Total Frames", Float) = 1 _FlipbookFPS ("FPS", Float) = 30.0 _FlipbookScaleOffset ("Scale | Offset", Vector) = (1, 1, 0, 0) _FlipbookSideOffset ("Side Offset ←→↓↑", Vector) = (0, 0, 0, 0) @@ -1166,6 +1254,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" // Flipbook Manual Control [ThryToggleUI(true)]_FlipbookManualFrameControl (" Manual Frame Control", Float) = 0 _FlipbookCurrentFrame ("Current Frame--{ condition_showS:_FlipbookManualFrameControl==1}", Float) = 0 + [ThryToggleUI(true)]_FlipbookStartAndEnd (" Start and End Frames", Float) = 0 + _FlipbookStartFrame ("Start Frame--{ condition_showS:_FlipbookStartAndEnd==1}", Float) = 0 + _FlipbookEndFrame ("End Frame--{ condition_showS:_FlipbookStartAndEnd==1}", Float) = 0 [ThryToggleUI(true)]_FlipbookCrossfadeEnabled (" Crossfade", Float) = 0 [MultiSlider]_FlipbookCrossfadeRange ("Fade Range--{ condition_showS:_FlipbookCrossfadeEnabled==1}", Vector) = (0.75, 1, 0, 1) [ThryToggleUI(true)]_FlipbookHueShiftEnabled (" Hue Shift", Float) = 0 @@ -1845,7 +1936,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" //endex // Rendering Options - [HideInInspector] m_modifierCategory ("UV Modifiers", Float) = 0 + [HideInInspector] m_modifierCategory ("Modifiers", Float) = 0 //ifex _EnableDistortion==0 [HideInInspector] m_start_uvDistortion (" Distortion UV--{reference_property:_EnableDistortion}", Float) = 0 [HideInInspector][ThryToggle(USER_LUT)] _EnableDistortion ("Enabled?", Float) = 0 @@ -1977,13 +2068,31 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" // Stencils [HideInInspector] m_start_StencilPassOptions ("Stencil--{button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/rendering/stencil},hover:Documentation}}", Float) = 0 + [ThryWideEnum(Simple, 0, Front Face vs Back Face, 1)] _StencilType ("Stencil Type", Float) = 0 [IntRange] _StencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _StencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _StencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilPassOp ("Stencil Pass Op", Float) = 0 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilFailOp ("Stencil Fail Op", Float) = 0 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFailOp ("Stencil ZFail Op", Float) = 0 - [Enum(UnityEngine.Rendering.CompareFunction)] _StencilCompareFunction ("Stencil Compare Function", Float) = 8 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilPassOp ("Stencil Pass Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFailOp ("Stencil Fail Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFailOp ("Stencil ZFail Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilCompareFunction ("Stencil Compare Function--{condition_showS:(_StencilType==0)}", Float) = 8 + + [HideInInspector] m_start_StencilPassBackOptions("Back--{condition_showS:(_StencilType==1)}", Float) = 0 + [Helpbox(1)] _FFBFStencilHelp0 ("Front Face and Back Face Stencils only work when locked in due to Unity's Stencil managment", Int) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackPassOp ("Back Pass Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackFailOp ("Back Fail Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackZFailOp ("Back ZFail Op", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilBackCompareFunction ("Back Compare Function", Float) = 8 + [HideInInspector] m_end_StencilPassBackOptions("Back", Float) = 0 + + [HideInInspector] m_start_StencilPassFrontOptions("Front--{condition_showS:(_StencilType==1)}", Float) = 0 + [Helpbox(1)] _FFBFStencilHelp1 ("Front Face and Back Face Stencils only work when locked in due to Unity's Stencil managment", Int) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontPassOp ("Front Pass Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontFailOp ("Front Fail Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontZFailOp ("Front ZFail Op", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilFrontCompareFunction ("Front Compare Function", Float) = 8 + [HideInInspector] m_end_StencilPassFrontOptions("Front", Float) = 0 + [HideInInspector] m_end_StencilPassOptions ("Stencil", Float) = 0 // Outline Stencil @@ -2017,10 +2126,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite [_ZWrite] @@ -2045,7 +2168,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -2127,6 +2250,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -2345,6 +2476,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -2766,6 +2900,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _RedTexture_ST; float2 _RedTexturePan; float _RedTextureUV; + float _RedAlphaAdd; #if defined(PROP_GREENTEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _GreenTexture; @@ -2773,6 +2908,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _GreenTexture_ST; float2 _GreenTexturePan; float _GreenTextureUV; + float _GreenAlphaAdd; #if defined(PROP_BLUETEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _BlueTexture; @@ -2780,6 +2916,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _BlueTexture_ST; float2 _BlueTexturePan; float _BlueTextureUV; + float _BlueAlphaAdd; #if defined(PROP_ALPHATEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _AlphaTexture; @@ -2787,6 +2924,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _AlphaTexture_ST; float2 _AlphaTexturePan; float _AlphaTextureUV; + float _AlphaAlphaAdd; #ifdef GEOM_TYPE_MESH #if defined(PROP_RGBNORMALR) || !defined(OPTIMIZER_ENABLED) @@ -3199,6 +3337,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float2 _ShadowColorTexPan; float _ShadowColorTexUV; #endif + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _MultilayerMathBlurMap; + float4 _MultilayerMathBlurMap_ST; + float2 _MultilayerMathBlurMapPan; + float _MultilayerMathBlurMapUV; + #endif float _ShadowBorder; float _ShadowBlur; float4 _Shadow2ndColor; @@ -3400,6 +3544,100 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #endif //endex + //ifex _Matcap3Enable==0 + #ifdef POI_MATCAP2 + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3; + float4 _Matcap3_ST; + float2 _Matcap3Pan; + float _Matcap3UV; + #endif + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3Mask; + float4 _Matcap3Mask_ST; + float2 _Matcap3MaskPan; + float _Matcap3MaskUV; + #endif + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap2NormalMap; + #endif + float4 _Matcap2NormalMap_ST; + float2 _Matcap2NormalMapPan; + float _Matcap2NormalMapUV; + float _Matcap2NormalMapScale; + #endif + float _Matcap3UVMode; + float _Matcap3MaskInvert; + float _Matcap3Border; + float4 _Matcap3Color; + float _Matcap3ColorThemeIndex; + float _Matcap3Intensity; + float _Matcap3Replace; + float _Matcap3Multiply; + float _Matcap3Add; + float _Matcap3AddToLight; + float _Matcap3Mixed; + float _Matcap3AlphaOverride; + float _Matcap3Enable; + float _Matcap3LightMask; + float _Matcap3EmissionStrength; + float _Matcap3Normal; + float _Matcap3HueShiftEnabled; + float _Matcap3HueShiftSpeed; + float _Matcap3HueShift; + float _Matcap3TPSDepthEnabled; + float _Matcap3TPSMaskStrength; + #endif + //endex + + //ifex _Matcap4Enable==0 + #ifdef POI_MATCAP3 + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4; + float4 _Matcap4_ST; + float2 _Matcap4Pan; + float _Matcap4UV; + #endif + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4Mask; + float4 _Matcap4Mask_ST; + float2 _Matcap4MaskPan; + float _Matcap4MaskUV; + #endif + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3NormalMap; + #endif + float4 _Matcap3NormalMap_ST; + float2 _Matcap3NormalMapPan; + float _Matcap3NormalMapUV; + float _Matcap3NormalMapScale; + #endif + float _Matcap4UVMode; + float _Matcap4MaskInvert; + float _Matcap4Border; + float4 _Matcap4Color; + float _Matcap4ColorThemeIndex; + float _Matcap4Intensity; + float _Matcap4Replace; + float _Matcap4Multiply; + float _Matcap4Add; + float _Matcap4AddToLight; + float _Matcap4Mixed; + float _Matcap4AlphaOverride; + float _Matcap4Enable; + float _Matcap4LightMask; + float _Matcap4EmissionStrength; + float _Matcap4Normal; + float _Matcap4HueShiftEnabled; + float _Matcap4HueShiftSpeed; + float _Matcap4HueShift; + float _Matcap4TPSDepthEnabled; + float _Matcap4TPSMaskStrength; + #endif + //endex + //ifex _CubeMapEnabled==0 #ifdef _CUBEMAP #if defined(PROP_CUBEMAP) || !defined(OPTIMIZER_ENABLED) @@ -3489,12 +3727,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -4502,6 +4743,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -5833,13 +6075,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -5867,6 +6118,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -6072,8 +6351,23 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #ifdef POI_PASS_OUTLINE float outlineMask = 1; - //TODO figure out why uvs can't be set dynamically - outlineMask = poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[0], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb); + #define poiOutlineMask(uvc) poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[uvc], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb) + switch (_OutlineMaskUV) + { + case 0: + outlineMask = poiOutlineMask(0); + break; + case 1: + outlineMask = poiOutlineMask(1); + break; + case 2: + outlineMask = poiOutlineMask(2); + break; + case 3: + outlineMask = poiOutlineMask(3); + break; + } + #undef poiOutlineMask //UNITY_BRANCH if (_OutlineUseVertexColors == 2) @@ -6097,7 +6391,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" distanceOffset *= min(distance(_WorldSpaceCameraPos, mul(unity_ObjectToWorld, o.localPos).xyz), _OutlinesMaxDistance); } - float3 offset = outlineNormal * (_LineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; + float lineWidth = _LineWidth; + #ifdef POI_AUDIOLINK + // Due to PoiMods.audioLink being frag only I'll just + // recreate what it does here for this vertex function + //UNITY_BRANCH + if (_AudioLinkAnimToggle) + { + if (LumaIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, LumaData(0.578, 0.515)[_AudioLinkOutlineSizeBand / 2]); + } + else if (AudioLinkIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, AudioLinkData(uint2(0, _AudioLinkOutlineSizeBand))); + } + } + #endif + + float3 offset = outlineNormal * (lineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; //UNITY_BRANCH if (_OutlineExpansionMode == 2) @@ -6766,23 +7078,29 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 alpha = 1; #endif + float4 maskFinal = 1; + maskFinal.r = saturate(rgbMask.r + _RedAlphaAdd) * saturate(red.a * _RedColor.a); + maskFinal.g = saturate(rgbMask.g + _GreenAlphaAdd) * saturate(green.a * _GreenColor.a); + maskFinal.b = saturate(rgbMask.b + _BlueAlphaAdd) * saturate(blue.a * _BlueColor.a); + maskFinal.a = saturate(rgbMask.a + _AlphaAlphaAdd) * saturate(alpha.a * _AlphaColor.a); + //UNITY_BRANCH if (_RGBBlendMultiplicative) { float3 RGBColor = 1; - RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); poiFragData.baseColor *= RGBColor; } else { - poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); } } #endif @@ -7685,21 +8003,26 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #endif #ifdef _LIGHTINGMODE_MULTILAYER_MATH + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + float4 blurMap = POI2D_SAMPLER_PAN(_MultilayerMathBlurMap, _MainTex, poiUV(poiMesh.uv[_MultilayerMathBlurMapUV], _MultilayerMathBlurMap_ST), _MultilayerMathBlurMapPan); + #else + float4 blurMap = 1; + #endif float4 lns = float4(1, 1, 1, 1); if (_LightingMulitlayerNonLinear) { - lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } else { - lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } lns = saturate(lns); float3 indirectColor = 1; @@ -8071,7 +8394,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 void blendMatcap(inout PoiLight poiLight, inout PoiFragData poiFragData, float add, float lightAdd, float multiply, float replace, float mixed, float4 matcapColor, float matcapMask, float emissionStrength, float matcapLightMask #ifdef POI_BLACKLIGHT , uint blackLightMaskIndex @@ -8097,14 +8420,18 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" poiFragData.emission += matcapColor.rgb * emissionStrength * matcapMask * matcapColor.a; } //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) void applyMatcap(inout PoiFragData poiFragData, in PoiCam poiCam, in PoiMesh poiMesh, inout PoiLight poiLight, in PoiMods poiMods) { float4 matcap = 0; float matcapMask = 0; float4 matcap2 = 0; float matcap2Mask = 0; + float4 matcap3 = 0; + float matcap3Mask = 0; + float4 matcap4 = 0; + float matcap4Mask = 0; float2 matcapUV = 0; //endex @@ -8279,7 +8606,179 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" ); #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _Matcap3Enable==0 + // Matcap 3 + #ifdef POI_MATCAP2 + + float3 normal2 = poiMesh.normals[_Matcap3Normal]; + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal2 = calculateNormal(poiMesh.normals[_Matcap3Normal], poiMesh, _Matcap2NormalMap, _Matcap2NormalMap_ST, _Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap3UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal2, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap3Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal2), dot(worldViewUp, normal2)) * _Matcap3Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal2); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap3Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + matcap3 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap3, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap3)) * float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #else + matcap3 = float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #endif + matcap3.rgb *= _Matcap3Intensity; + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + matcap3Mask = POI2D_SAMPLER_PAN(_Matcap3Mask, _MainTex, poiUV(poiMesh.uv[_Matcap3MaskUV], _Matcap3Mask_ST), _Matcap3MaskPan); + #else + matcap3Mask = 1; + #endif + if (_Matcap3MaskInvert) + { + matcap3Mask = 1 - matcap3Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap3TPSDepthEnabled) + { + matcap3Mask = lerp(matcap3Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap3TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap3.a, matcap3Mask * _Matcap3AlphaOverride); + + //UNITY_BRANCH + if (_Matcap3HueShiftEnabled) + { + matcap3.rgb = hueShift(matcap3.rgb, _Matcap3HueShift + _Time.x * _Matcap3HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap3Add, _Matcap3AddToLight, _Matcap3Multiply, _Matcap3Replace, _Matcap3Mixed, matcap3, matcap3Mask, _Matcap3EmissionStrength, _Matcap3LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap3 + #endif + ); + #endif + //endex + //ifex _Matcap4Enable==0 + // Matcap 4 + #ifdef POI_MATCAP3 + + float3 normal3 = poiMesh.normals[_Matcap4Normal]; + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal3 = calculateNormal(poiMesh.normals[_Matcap4Normal], poiMesh, _Matcap3NormalMap, _Matcap3NormalMap_ST, _Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap4UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal3, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap4Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal3), dot(worldViewUp, normal3)) * _Matcap4Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal3); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap4Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + matcap4 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap4, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap4)) * float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #else + matcap4 = float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #endif + matcap4.rgb *= _Matcap4Intensity; + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + matcap4Mask = POI2D_SAMPLER_PAN(_Matcap4Mask, _MainTex, poiUV(poiMesh.uv[_Matcap4MaskUV], _Matcap4Mask_ST), _Matcap4MaskPan); + #else + matcap4Mask = 1; + #endif + if (_Matcap4MaskInvert) + { + matcap4Mask = 1 - matcap4Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap4TPSDepthEnabled) + { + matcap4Mask = lerp(matcap4Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap4TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap4.a, matcap4Mask * _Matcap4AlphaOverride); + + //UNITY_BRANCH + if (_Matcap4HueShiftEnabled) + { + matcap4.rgb = hueShift(matcap4.rgb, _Matcap4HueShift + _Time.x * _Matcap4HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap4Add, _Matcap4AddToLight, _Matcap4Multiply, _Matcap4Replace, _Matcap4Mixed, matcap4, matcap4Mask, _Matcap4EmissionStrength, _Matcap4LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap4 + #endif + ); + #endif + //endex + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 } #endif //endex @@ -8499,16 +8998,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -8518,14 +9031,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -8647,6 +9170,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" } #endif } + void applyLumaGradient(in PoiMods poiMods, inout float3 emissionColor, in float themeIndex, in float nDotV) + { + #ifdef POI_AUDIOLINK + if (poiMods.audioLinkAvailable && poiMods.audioLinkViaLuma && themeIndex >= 5 && themeIndex <= 7) + { + emissionColor = getLumaGradient(themeIndex-5, saturate(1 - nDotV)); + } + #endif + } //endex //ifex _EnableEmission==0 @@ -8704,6 +9236,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" emissionStrength0 *= calculateBlinkingEmission(_EmissiveBlink_Min, _EmissiveBlink_Max, _EmissiveBlink_Velocity, _EmissionBlinkingOffset); } + applyLumaGradient(poiMods, emissionColor0, _EmissionColorThemeIndex, poiLight.nDotV); emissionColor0 = hueShift(emissionColor0, frac(_EmissionHueShift + _EmissionHueShiftSpeed * _Time.x) * _EmissionHueShiftEnabled); #if defined(PROP_EMISSIONMASK) || !defined(OPTIMIZER_ENABLED) @@ -8800,6 +9333,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" emissionStrength1 *= calculateBlinkingEmission(_EmissiveBlink_Min1, _EmissiveBlink_Max1, _EmissiveBlink_Velocity1, _EmissionBlinkingOffset1); } + applyLumaGradient(poiMods, emissionColor1, _EmissionColor1ThemeIndex, poiLight.nDotV); emissionColor1 = hueShift(emissionColor1, frac(_EmissionHueShift1 + _EmissionHueShiftSpeed1 * _Time.x) * _EmissionHueShiftEnabled1); #if defined(PROP_EMISSIONMASK1) || !defined(OPTIMIZER_ENABLED) float emissionMask1 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask1, _MainTex, poiUV(poiMesh.uv[_EmissionMask1UV], _EmissionMask1_ST) + _Time.x * _EmissionMask1Pan); @@ -8884,6 +9418,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" emissionStrength2 *= calculateBlinkingEmission(_EmissiveBlink_Min2, _EmissiveBlink_Max2, _EmissiveBlink_Velocity2, _EmissionBlinkingOffset2); } + applyLumaGradient(poiMods, emissionColor2, _EmissionColor2ThemeIndex, poiLight.nDotV); emissionColor2 = hueShift(emissionColor2, frac(_EmissionHueShift2 + _EmissionHueShiftSpeed2 * _Time.x) * _EmissionHueShiftEnabled2); #if defined(PROP_EMISSIONMASK2) || !defined(OPTIMIZER_ENABLED) float emissionMask2 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask2, _MainTex, poiUV(poiMesh.uv[_EmissionMask2UV], _EmissionMask2_ST) + _Time.x * _EmissionMask2Pan); @@ -8965,6 +9500,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" emissionStrength3 *= calculateBlinkingEmission(_EmissiveBlink_Min3, _EmissiveBlink_Max3, _EmissiveBlink_Velocity3, _EmissionBlinkingOffset3); } + applyLumaGradient(poiMods, emissionColor3, _EmissionColor3ThemeIndex, poiLight.nDotV); emissionColor3 = hueShift(emissionColor3, frac(_EmissionHueShift3 + _EmissionHueShiftSpeed3 * _Time.x) * _EmissionHueShiftEnabled3); #if defined(PROP_EMISSIONMASK3) || !defined(OPTIMIZER_ENABLED) float emissionMask3 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask3, _MainTex, poiUV(poiMesh.uv[_EmissionMask3UV], _EmissionMask3_ST) + _Time.x * _EmissionMask3Pan); @@ -11292,8 +11828,8 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) applyMatcap(poiFragData, poiCam, poiMesh, poiLight, poiMods); #endif //endex @@ -11524,7 +12060,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -11606,6 +12142,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -11824,6 +12368,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -12172,6 +12719,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float _LineColorThemeIndex; float _Offset_Z; float _OutlineClipAtZeroWidth; + #ifdef POI_AUDIOLINK + float _AudioLinkOutlineSizeBand; + float2 _AudioLinkOutlineSize; + float _AudioLinkOutlineEmissionBand; + float2 _AudioLinkOutlineEmission; + #endif #endif //ifex _EnableDissolve==0 @@ -12335,6 +12888,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float2 _ShadowColorTexPan; float _ShadowColorTexUV; #endif + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _MultilayerMathBlurMap; + float4 _MultilayerMathBlurMap_ST; + float2 _MultilayerMathBlurMapPan; + float _MultilayerMathBlurMapUV; + #endif float _ShadowBorder; float _ShadowBlur; float4 _Shadow2ndColor; @@ -12454,12 +13013,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -12615,6 +13177,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -13946,13 +14509,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -13980,6 +14552,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -14185,8 +14785,23 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #ifdef POI_PASS_OUTLINE float outlineMask = 1; - //TODO figure out why uvs can't be set dynamically - outlineMask = poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[0], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb); + #define poiOutlineMask(uvc) poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[uvc], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb) + switch (_OutlineMaskUV) + { + case 0: + outlineMask = poiOutlineMask(0); + break; + case 1: + outlineMask = poiOutlineMask(1); + break; + case 2: + outlineMask = poiOutlineMask(2); + break; + case 3: + outlineMask = poiOutlineMask(3); + break; + } + #undef poiOutlineMask //UNITY_BRANCH if (_OutlineUseVertexColors == 2) @@ -14210,7 +14825,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" distanceOffset *= min(distance(_WorldSpaceCameraPos, mul(unity_ObjectToWorld, o.localPos).xyz), _OutlinesMaxDistance); } - float3 offset = outlineNormal * (_LineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; + float lineWidth = _LineWidth; + #ifdef POI_AUDIOLINK + // Due to PoiMods.audioLink being frag only I'll just + // recreate what it does here for this vertex function + //UNITY_BRANCH + if (_AudioLinkAnimToggle) + { + if (LumaIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, LumaData(0.578, 0.515)[_AudioLinkOutlineSizeBand / 2]); + } + else if (AudioLinkIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, AudioLinkData(uint2(0, _AudioLinkOutlineSizeBand))); + } + } + #endif + + float3 offset = outlineNormal * (lineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; //UNITY_BRANCH if (_OutlineExpansionMode == 2) @@ -14534,7 +15167,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float OutlineMask = tex2D(_OutlineMask, TRANSFORM_TEX(poiMesh.uv[_OutlineMaskUV], _OutlineMask) + _Time.x * _OutlineMaskPan).r; if (_OutlineClipAtZeroWidth) { - clip(OutlineMask * _LineWidth - 0.001); + float lineWidth = _LineWidth; + #ifdef POI_AUDIOLINK + //UNITY_BRANCH + if (poiMods.audioLinkAvailable) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, poiMods.audioLink[_AudioLinkOutlineSizeBand]); + } + #endif + clip(OutlineMask * lineWidth - 0.001); } float4 col = POI2D_SAMPLER_PAN(_OutlineTexture, _MainTex, poiUV(poiMesh.uv[_OutlineTextureUV], _OutlineTexture_ST), _OutlineTexturePan) * float4(poiThemeColor(poiMods, _LineColor.rgb, _LineColorThemeIndex), _LineColor.a); @@ -14561,7 +15202,16 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" poiFragData.baseColor = hueShift(poiFragData.baseColor, _OutlineHueOffset +_OutlineHueOffsetSpeed * _Time.x); } - poiFragData.emission += poiFragData.baseColor * _OutlineEmission; + float emission = _OutlineEmission; + #ifdef POI_AUDIOLINK + //UNITY_BRANCH + if (poiMods.audioLinkAvailable) + { + emission += lerp(_AudioLinkOutlineEmission.x, _AudioLinkOutlineEmission.y, poiMods.audioLink[_AudioLinkOutlineEmissionBand]); + } + #endif + + poiFragData.emission += poiFragData.baseColor * emission; } #endif @@ -15174,21 +15824,26 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #endif #ifdef _LIGHTINGMODE_MULTILAYER_MATH + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + float4 blurMap = POI2D_SAMPLER_PAN(_MultilayerMathBlurMap, _MainTex, poiUV(poiMesh.uv[_MultilayerMathBlurMapUV], _MultilayerMathBlurMap_ST), _MultilayerMathBlurMapPan); + #else + float4 blurMap = 1; + #endif float4 lns = float4(1, 1, 1, 1); if (_LightingMulitlayerNonLinear) { - lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } else { - lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } lns = saturate(lns); float3 indirectColor = 1; @@ -15582,16 +16237,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -15601,14 +16270,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -16425,10 +17104,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite Off @@ -16453,7 +17146,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -16535,6 +17228,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -16752,6 +17453,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -17173,6 +17877,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _RedTexture_ST; float2 _RedTexturePan; float _RedTextureUV; + float _RedAlphaAdd; #if defined(PROP_GREENTEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _GreenTexture; @@ -17180,6 +17885,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _GreenTexture_ST; float2 _GreenTexturePan; float _GreenTextureUV; + float _GreenAlphaAdd; #if defined(PROP_BLUETEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _BlueTexture; @@ -17187,6 +17893,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _BlueTexture_ST; float2 _BlueTexturePan; float _BlueTextureUV; + float _BlueAlphaAdd; #if defined(PROP_ALPHATEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _AlphaTexture; @@ -17194,6 +17901,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _AlphaTexture_ST; float2 _AlphaTexturePan; float _AlphaTextureUV; + float _AlphaAlphaAdd; #ifdef GEOM_TYPE_MESH #if defined(PROP_RGBNORMALR) || !defined(OPTIMIZER_ENABLED) @@ -17606,6 +18314,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float2 _ShadowColorTexPan; float _ShadowColorTexUV; #endif + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _MultilayerMathBlurMap; + float4 _MultilayerMathBlurMap_ST; + float2 _MultilayerMathBlurMapPan; + float _MultilayerMathBlurMapUV; + #endif float _ShadowBorder; float _ShadowBlur; float4 _Shadow2ndColor; @@ -17807,6 +18521,100 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #endif //endex + //ifex _Matcap3Enable==0 + #ifdef POI_MATCAP2 + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3; + float4 _Matcap3_ST; + float2 _Matcap3Pan; + float _Matcap3UV; + #endif + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3Mask; + float4 _Matcap3Mask_ST; + float2 _Matcap3MaskPan; + float _Matcap3MaskUV; + #endif + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap2NormalMap; + #endif + float4 _Matcap2NormalMap_ST; + float2 _Matcap2NormalMapPan; + float _Matcap2NormalMapUV; + float _Matcap2NormalMapScale; + #endif + float _Matcap3UVMode; + float _Matcap3MaskInvert; + float _Matcap3Border; + float4 _Matcap3Color; + float _Matcap3ColorThemeIndex; + float _Matcap3Intensity; + float _Matcap3Replace; + float _Matcap3Multiply; + float _Matcap3Add; + float _Matcap3AddToLight; + float _Matcap3Mixed; + float _Matcap3AlphaOverride; + float _Matcap3Enable; + float _Matcap3LightMask; + float _Matcap3EmissionStrength; + float _Matcap3Normal; + float _Matcap3HueShiftEnabled; + float _Matcap3HueShiftSpeed; + float _Matcap3HueShift; + float _Matcap3TPSDepthEnabled; + float _Matcap3TPSMaskStrength; + #endif + //endex + + //ifex _Matcap4Enable==0 + #ifdef POI_MATCAP3 + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4; + float4 _Matcap4_ST; + float2 _Matcap4Pan; + float _Matcap4UV; + #endif + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4Mask; + float4 _Matcap4Mask_ST; + float2 _Matcap4MaskPan; + float _Matcap4MaskUV; + #endif + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3NormalMap; + #endif + float4 _Matcap3NormalMap_ST; + float2 _Matcap3NormalMapPan; + float _Matcap3NormalMapUV; + float _Matcap3NormalMapScale; + #endif + float _Matcap4UVMode; + float _Matcap4MaskInvert; + float _Matcap4Border; + float4 _Matcap4Color; + float _Matcap4ColorThemeIndex; + float _Matcap4Intensity; + float _Matcap4Replace; + float _Matcap4Multiply; + float _Matcap4Add; + float _Matcap4AddToLight; + float _Matcap4Mixed; + float _Matcap4AlphaOverride; + float _Matcap4Enable; + float _Matcap4LightMask; + float _Matcap4EmissionStrength; + float _Matcap4Normal; + float _Matcap4HueShiftEnabled; + float _Matcap4HueShiftSpeed; + float _Matcap4HueShift; + float _Matcap4TPSDepthEnabled; + float _Matcap4TPSMaskStrength; + #endif + //endex + //ifex _CubeMapEnabled==0 #ifdef _CUBEMAP #if defined(PROP_CUBEMAP) || !defined(OPTIMIZER_ENABLED) @@ -17896,12 +18704,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -18652,6 +19463,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -19983,13 +20795,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -20017,6 +20838,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -20222,8 +21071,23 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #ifdef POI_PASS_OUTLINE float outlineMask = 1; - //TODO figure out why uvs can't be set dynamically - outlineMask = poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[0], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb); + #define poiOutlineMask(uvc) poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[uvc], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb) + switch (_OutlineMaskUV) + { + case 0: + outlineMask = poiOutlineMask(0); + break; + case 1: + outlineMask = poiOutlineMask(1); + break; + case 2: + outlineMask = poiOutlineMask(2); + break; + case 3: + outlineMask = poiOutlineMask(3); + break; + } + #undef poiOutlineMask //UNITY_BRANCH if (_OutlineUseVertexColors == 2) @@ -20247,7 +21111,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" distanceOffset *= min(distance(_WorldSpaceCameraPos, mul(unity_ObjectToWorld, o.localPos).xyz), _OutlinesMaxDistance); } - float3 offset = outlineNormal * (_LineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; + float lineWidth = _LineWidth; + #ifdef POI_AUDIOLINK + // Due to PoiMods.audioLink being frag only I'll just + // recreate what it does here for this vertex function + //UNITY_BRANCH + if (_AudioLinkAnimToggle) + { + if (LumaIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, LumaData(0.578, 0.515)[_AudioLinkOutlineSizeBand / 2]); + } + else if (AudioLinkIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, AudioLinkData(uint2(0, _AudioLinkOutlineSizeBand))); + } + } + #endif + + float3 offset = outlineNormal * (lineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; //UNITY_BRANCH if (_OutlineExpansionMode == 2) @@ -20916,23 +21798,29 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 alpha = 1; #endif + float4 maskFinal = 1; + maskFinal.r = saturate(rgbMask.r + _RedAlphaAdd) * saturate(red.a * _RedColor.a); + maskFinal.g = saturate(rgbMask.g + _GreenAlphaAdd) * saturate(green.a * _GreenColor.a); + maskFinal.b = saturate(rgbMask.b + _BlueAlphaAdd) * saturate(blue.a * _BlueColor.a); + maskFinal.a = saturate(rgbMask.a + _AlphaAlphaAdd) * saturate(alpha.a * _AlphaColor.a); + //UNITY_BRANCH if (_RGBBlendMultiplicative) { float3 RGBColor = 1; - RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); poiFragData.baseColor *= RGBColor; } else { - poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); } } #endif @@ -21835,21 +22723,26 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #endif #ifdef _LIGHTINGMODE_MULTILAYER_MATH + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + float4 blurMap = POI2D_SAMPLER_PAN(_MultilayerMathBlurMap, _MainTex, poiUV(poiMesh.uv[_MultilayerMathBlurMapUV], _MultilayerMathBlurMap_ST), _MultilayerMathBlurMapPan); + #else + float4 blurMap = 1; + #endif float4 lns = float4(1, 1, 1, 1); if (_LightingMulitlayerNonLinear) { - lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } else { - lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } lns = saturate(lns); float3 indirectColor = 1; @@ -22221,7 +23114,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 void blendMatcap(inout PoiLight poiLight, inout PoiFragData poiFragData, float add, float lightAdd, float multiply, float replace, float mixed, float4 matcapColor, float matcapMask, float emissionStrength, float matcapLightMask #ifdef POI_BLACKLIGHT , uint blackLightMaskIndex @@ -22247,14 +23140,18 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" poiFragData.emission += matcapColor.rgb * emissionStrength * matcapMask * matcapColor.a; } //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) void applyMatcap(inout PoiFragData poiFragData, in PoiCam poiCam, in PoiMesh poiMesh, inout PoiLight poiLight, in PoiMods poiMods) { float4 matcap = 0; float matcapMask = 0; float4 matcap2 = 0; float matcap2Mask = 0; + float4 matcap3 = 0; + float matcap3Mask = 0; + float4 matcap4 = 0; + float matcap4Mask = 0; float2 matcapUV = 0; //endex @@ -22429,7 +23326,179 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" ); #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _Matcap3Enable==0 + // Matcap 3 + #ifdef POI_MATCAP2 + + float3 normal2 = poiMesh.normals[_Matcap3Normal]; + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal2 = calculateNormal(poiMesh.normals[_Matcap3Normal], poiMesh, _Matcap2NormalMap, _Matcap2NormalMap_ST, _Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap3UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal2, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap3Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal2), dot(worldViewUp, normal2)) * _Matcap3Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal2); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap3Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + matcap3 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap3, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap3)) * float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #else + matcap3 = float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #endif + matcap3.rgb *= _Matcap3Intensity; + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + matcap3Mask = POI2D_SAMPLER_PAN(_Matcap3Mask, _MainTex, poiUV(poiMesh.uv[_Matcap3MaskUV], _Matcap3Mask_ST), _Matcap3MaskPan); + #else + matcap3Mask = 1; + #endif + if (_Matcap3MaskInvert) + { + matcap3Mask = 1 - matcap3Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap3TPSDepthEnabled) + { + matcap3Mask = lerp(matcap3Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap3TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap3.a, matcap3Mask * _Matcap3AlphaOverride); + + //UNITY_BRANCH + if (_Matcap3HueShiftEnabled) + { + matcap3.rgb = hueShift(matcap3.rgb, _Matcap3HueShift + _Time.x * _Matcap3HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap3Add, _Matcap3AddToLight, _Matcap3Multiply, _Matcap3Replace, _Matcap3Mixed, matcap3, matcap3Mask, _Matcap3EmissionStrength, _Matcap3LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap3 + #endif + ); + #endif + //endex + //ifex _Matcap4Enable==0 + // Matcap 4 + #ifdef POI_MATCAP3 + + float3 normal3 = poiMesh.normals[_Matcap4Normal]; + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal3 = calculateNormal(poiMesh.normals[_Matcap4Normal], poiMesh, _Matcap3NormalMap, _Matcap3NormalMap_ST, _Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap4UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal3, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap4Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal3), dot(worldViewUp, normal3)) * _Matcap4Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal3); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap4Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + matcap4 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap4, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap4)) * float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #else + matcap4 = float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #endif + matcap4.rgb *= _Matcap4Intensity; + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + matcap4Mask = POI2D_SAMPLER_PAN(_Matcap4Mask, _MainTex, poiUV(poiMesh.uv[_Matcap4MaskUV], _Matcap4Mask_ST), _Matcap4MaskPan); + #else + matcap4Mask = 1; + #endif + if (_Matcap4MaskInvert) + { + matcap4Mask = 1 - matcap4Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap4TPSDepthEnabled) + { + matcap4Mask = lerp(matcap4Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap4TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap4.a, matcap4Mask * _Matcap4AlphaOverride); + + //UNITY_BRANCH + if (_Matcap4HueShiftEnabled) + { + matcap4.rgb = hueShift(matcap4.rgb, _Matcap4HueShift + _Time.x * _Matcap4HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap4Add, _Matcap4AddToLight, _Matcap4Multiply, _Matcap4Replace, _Matcap4Mixed, matcap4, matcap4Mask, _Matcap4EmissionStrength, _Matcap4LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap4 + #endif + ); + #endif + //endex + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 } #endif //endex @@ -22649,16 +23718,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -22668,14 +23751,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -25038,8 +26131,8 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) applyMatcap(poiFragData, poiCam, poiMesh, poiLight, poiMods); #endif //endex @@ -25203,10 +26296,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite [_ZWrite] @@ -25231,7 +26338,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -25313,6 +26420,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -25531,6 +26646,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -26004,12 +27122,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -26196,6 +27317,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -27527,13 +28649,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -27561,6 +28692,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -27766,8 +28925,23 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" #ifdef POI_PASS_OUTLINE float outlineMask = 1; - //TODO figure out why uvs can't be set dynamically - outlineMask = poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[0], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb); + #define poiOutlineMask(uvc) poiMax(tex2Dlod(_OutlineMask, float4(poiUV(o.uv[uvc], _OutlineMask_ST) + _Time.x * _OutlineMaskPan, 0, 0)).rgb) + switch (_OutlineMaskUV) + { + case 0: + outlineMask = poiOutlineMask(0); + break; + case 1: + outlineMask = poiOutlineMask(1); + break; + case 2: + outlineMask = poiOutlineMask(2); + break; + case 3: + outlineMask = poiOutlineMask(3); + break; + } + #undef poiOutlineMask //UNITY_BRANCH if (_OutlineUseVertexColors == 2) @@ -27791,7 +28965,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" distanceOffset *= min(distance(_WorldSpaceCameraPos, mul(unity_ObjectToWorld, o.localPos).xyz), _OutlinesMaxDistance); } - float3 offset = outlineNormal * (_LineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; + float lineWidth = _LineWidth; + #ifdef POI_AUDIOLINK + // Due to PoiMods.audioLink being frag only I'll just + // recreate what it does here for this vertex function + //UNITY_BRANCH + if (_AudioLinkAnimToggle) + { + if (LumaIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, LumaData(0.578, 0.515)[_AudioLinkOutlineSizeBand / 2]); + } + else if (AudioLinkIsAvailable()) + { + lineWidth += lerp(_AudioLinkOutlineSize.x, _AudioLinkOutlineSize.y, AudioLinkData(uint2(0, _AudioLinkOutlineSizeBand))); + } + } + #endif + + float3 offset = outlineNormal * (lineWidth * _EnableOutlines / 100) * outlineMask * distanceOffset; //UNITY_BRANCH if (_OutlineExpansionMode == 2) @@ -28610,16 +29802,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -28629,14 +29835,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Outline" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } diff --git a/_PoiyomiShaders/Shaders/8.0/Poiyomi World.shader b/_PoiyomiShaders/Shaders/8.0/Poiyomi World.shader index 2d08a64f..695608cc 100644 --- a/_PoiyomiShaders/Shaders/8.0/Poiyomi World.shader +++ b/_PoiyomiShaders/Shaders/8.0/Poiyomi World.shader @@ -2,7 +2,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" { Properties { - [HideInInspector] shader_master_label ("Poiyomi 8.0.420", Float) = 0 + [HideInInspector] shader_master_label ("Poiyomi 8.0.425", Float) = 0 [HideInInspector] shader_is_using_thry_editor ("", Float) = 0 [HideInInspector] footer_youtube ("{texture:{name:icon-youtube,height:16},action:{type:URL,data:https://www.youtube.com/poiyomi},hover:YOUTUBE}", Float) = 0 [HideInInspector] footer_twitter ("{texture:{name:icon-twitter,height:16},action:{type:URL,data:https://twitter.com/poiyomi},hover:TWITTER}", Float) = 0 @@ -247,21 +247,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" _RedTexture ("R Texture--{reference_properties:[_RedTexturePan, _RedTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_RedTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_RedTextureUV ("UV", int) = 0 + _RedAlphaAdd ("R Alpha Add", Range(-1,1)) = 0 _GreenColor ("G Color--{reference_property:_GreenColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _GreenColorThemeIndex ("", Int) = 0 _GreenTexture ("G Texture--{reference_properties:[_GreenTexturePan, _GreenTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_GreenTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_GreenTextureUV ("UV", int) = 0 + _GreenAlphaAdd ("G Alpha Add", Range(-1,1)) = 0 _BlueColor ("B Color--{reference_property:_BlueColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _BlueColorThemeIndex ("", Int) = 0 _BlueTexture ("B Texture--{reference_properties:[_BlueTexturePan, _BlueTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_BlueTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_BlueTextureUV ("UV", int) = 0 + _BlueAlphaAdd ("B Alpha Add", Range(-1,1)) = 0 _AlphaColor ("A Color--{reference_property:_AlphaColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _AlphaColorThemeIndex ("", Int) = 0 _AlphaTexture ("A Texture--{reference_properties:[_AlphaTexturePan, _AlphaTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_AlphaTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_AlphaTextureUV ("UV", int) = 0 + _AlphaAlphaAdd ("A Alpha Add", Range(-1,1)) = 0 // RGB MASKED NORMALS [ThryToggle(GEOM_TYPE_MESH)]_RgbNormalsEnabled ("Enable Normals", Float) = 0 @@ -574,6 +578,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" [HideInInspector][Vector2]_ShadowColorTexPan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _ShadowColorTexUV ("UV", Int) = 0 _ShadowColor ("Shadow Color--{condition_showS:(_LightingMode==1)}", Color) = (0.7, 0.75, 0.85, 1.0) + _MultilayerMathBlurMap ("Blur Map--{reference_properties:[_MultilayerMathBlurMapPan, _MultilayerMathBlurMapUV], condition_showS:(_LightingMode==1)}", 2D) = "white" { } + [HideInInspector][Vector2]_MultilayerMathBlurMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _MultilayerMathBlurMapUV ("UV", Int) = 0 //_ShadowNormalStrength ("Normal Strength", Range(0, 1)) = 1.0 _ShadowBorder ("Border--{condition_showS:(_LightingMode==1)}", Range(0, 1)) = 0.5 _ShadowBlur ("Blur--{condition_showS:(_LightingMode==1)}", Range(0, 1)) = 0.1 @@ -786,7 +793,81 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" _Matcap2HueShift ("Hue Shift--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Range(0, 1)) = 0 [ThryToggleUI(true)] _Matcap2TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 _Matcap2TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap2TPSDepthEnabled==1)}", Range(0, 1)) = 1 - [HideInInspector] m_end_Matcap2 ("Matcap 2--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Float) = 0 + [HideInInspector] m_end_Matcap2 ("Matcap 1--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Float) = 0 + //endex + + // Third Matcap + //ifex _Matcap3Enable==0 + [HideInInspector] m_start_Matcap3 ("Matcap 2--{reference_property:_Matcap3Enable,button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/shading/matcap},hover:Documentation}}", Float) = 0 + [HideInInspector][ThryToggle(POI_MATCAP2)]_Matcap3Enable ("Enable Matcap 2", Float) = 0 + [ThryWideEnum(UTS Style, 0, Top Pinch, 1, Double Sided, 2)] _Matcap3UVMode ("UV Mode", Int) = 1 + _Matcap3Color ("Color--{reference_property:_Matcap3ColorThemeIndex}", Color) = (1, 1, 1, 1) + [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _Matcap3ColorThemeIndex ("", Int) = 0 + [TextureNoSO]_Matcap3 ("Matcap", 2D) = "white" { } + _Matcap3Border ("Border", Range(0, .5)) = 0.43 + _Matcap3Mask ("Mask--{reference_properties:[_Matcap3MaskPan, _Matcap3MaskUV, _Matcap3MaskInvert]}", 2D) = "white" { } + [HideInInspector][Vector2]_Matcap3MaskPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap3MaskUV ("UV", Int) = 0 + [HideInInspector][ToggleUI]_Matcap3MaskInvert ("Invert", Float) = 0 + _Matcap3EmissionStrength ("Emission Strength", Range(0, 20)) = 0 + _Matcap3Intensity ("Intensity", Range(0, 5)) = 1 + _Matcap3LightMask ("Hide in Shadow", Range(0, 1)) = 0 + _Matcap3Replace ("Replace Blend", Range(0, 1)) = 0 + _Matcap3Multiply ("Multiply Blend", Range(0, 1)) = 0 + _Matcap3Add ("Add Blend", Range(0, 1)) = 0 + _Matcap3Mixed ("Mixed Blend", Range(0, 1)) = 0 + _Matcap3AddToLight ("Add To Light", Range(0, 1)) = 0 + _Matcap3AlphaOverride ("Override Alpha", Range(0, 1)) = 0 + [Enum(Vertex, 0, Pixel, 1)] _Matcap3Normal ("Normal to use", Int) = 1 + [ThryToggle(POI_MATCAP2_CUSTOM_NORMAL, true)] _Matcap2CustomNormal (" Custom Normal", Float) = 0 + [ThryToggle()]_Matcap2CustomNormal ("Custom Normal", Float) = 0 + [Normal]_Matcap2NormalMap ("Normal Map--{reference_properties:[_Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale], condition_showS:(_Matcap2CustomNormal==1)}", 2D) = "bump" { } + [HideInInspector][Vector2]_Matcap2NormalMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap2NormalMapUV ("UV", Int) = 0 + [HideInInspector]_Matcap2NormalMapScale ("Intensity", Range(0, 10)) = 1 + [ThryToggleUI(true)] _Matcap3HueShiftEnabled (" Hue Shift", Float) = 0 + _Matcap3HueShiftSpeed ("Shift Speed--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Float) = 0 + _Matcap3HueShift ("Hue Shift--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Range(0, 1)) = 0 + [ThryToggleUI(true)] _Matcap3TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 + _Matcap3TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap3TPSDepthEnabled==1)}", Range(0, 1)) = 1 + [HideInInspector] m_end_Matcap3 ("Matcap 2--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Float) = 0 + //endex + + // Fourth Matcap + //ifex _Matcap4Enable==0 + [HideInInspector] m_start_Matcap4 ("Matcap 3--{reference_property:_Matcap4Enable,button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/shading/matcap},hover:Documentation}}", Float) = 0 + [HideInInspector][ThryToggle(POI_MATCAP3)]_Matcap4Enable ("Enable Matcap 3", Float) = 0 + [ThryWideEnum(UTS Style, 0, Top Pinch, 1, Double Sided, 2)] _Matcap4UVMode ("UV Mode", Int) = 1 + _Matcap4Color ("Color--{reference_property:_Matcap4ColorThemeIndex}", Color) = (1, 1, 1, 1) + [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _Matcap4ColorThemeIndex ("", Int) = 0 + [TextureNoSO]_Matcap4 ("Matcap", 2D) = "white" { } + _Matcap4Border ("Border", Range(0, .5)) = 0.43 + _Matcap4Mask ("Mask--{reference_properties:[_Matcap4MaskPan, _Matcap4MaskUV, _Matcap4MaskInvert]}", 2D) = "white" { } + [HideInInspector][Vector2]_Matcap4MaskPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap4MaskUV ("UV", Int) = 0 + [HideInInspector][ToggleUI]_Matcap4MaskInvert ("Invert", Float) = 0 + _Matcap4EmissionStrength ("Emission Strength", Range(0, 20)) = 0 + _Matcap4Intensity ("Intensity", Range(0, 5)) = 1 + _Matcap4LightMask ("Hide in Shadow", Range(0, 1)) = 0 + _Matcap4Replace ("Replace Blend", Range(0, 1)) = 0 + _Matcap4Multiply ("Multiply Blend", Range(0, 1)) = 0 + _Matcap4Add ("Add Blend", Range(0, 1)) = 0 + _Matcap4Mixed ("Mixed Blend", Range(0, 1)) = 0 + _Matcap4AddToLight ("Add To Light", Range(0, 1)) = 0 + _Matcap4AlphaOverride ("Override Alpha", Range(0, 1)) = 0 + [Enum(Vertex, 0, Pixel, 1)] _Matcap4Normal ("Normal to use", Int) = 1 + [ThryToggle(POI_MATCAP3_CUSTOM_NORMAL, true)] _Matcap3CustomNormal (" Custom Normal", Float) = 0 + [ThryToggle()]_Matcap3CustomNormal ("Custom Normal", Float) = 0 + [Normal]_Matcap3NormalMap ("Normal Map--{reference_properties:[_Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale], condition_showS:(_Matcap3CustomNormal==1)}", 2D) = "bump" { } + [HideInInspector][Vector2]_Matcap3NormalMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap3NormalMapUV ("UV", Int) = 0 + [HideInInspector]_Matcap3NormalMapScale ("Intensity", Range(0, 10)) = 1 + [ThryToggleUI(true)] _Matcap4HueShiftEnabled (" Hue Shift", Float) = 0 + _Matcap4HueShiftSpeed ("Shift Speed--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Float) = 0 + _Matcap4HueShift ("Hue Shift--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Range(0, 1)) = 0 + [ThryToggleUI(true)] _Matcap4TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 + _Matcap4TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap4TPSDepthEnabled==1)}", Range(0, 1)) = 1 + [HideInInspector] m_end_Matcap4 ("Matcap 3--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Float) = 0 //endex //ifex _CubeMapEnabled==0 @@ -1119,7 +1200,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _FlipbookMaskUV ("UV", Int) = 0 _FlipbookColor ("Color & alpha--{reference_property:_FlipbookColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _FlipbookColorThemeIndex ("", Int) = 0 - _FlipbookTotalFrames ("Total Frames", Float) = 1 + // _FlipbookTotalFrames ("Total Frames", Float) = 1 _FlipbookFPS ("FPS", Float) = 30.0 _FlipbookScaleOffset ("Scale | Offset", Vector) = (1, 1, 0, 0) _FlipbookSideOffset ("Side Offset ←→↓↑", Vector) = (0, 0, 0, 0) @@ -1133,6 +1214,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" // Flipbook Manual Control [ThryToggleUI(true)]_FlipbookManualFrameControl (" Manual Frame Control", Float) = 0 _FlipbookCurrentFrame ("Current Frame--{ condition_showS:_FlipbookManualFrameControl==1}", Float) = 0 + [ThryToggleUI(true)]_FlipbookStartAndEnd (" Start and End Frames", Float) = 0 + _FlipbookStartFrame ("Start Frame--{ condition_showS:_FlipbookStartAndEnd==1}", Float) = 0 + _FlipbookEndFrame ("End Frame--{ condition_showS:_FlipbookStartAndEnd==1}", Float) = 0 [ThryToggleUI(true)]_FlipbookCrossfadeEnabled (" Crossfade", Float) = 0 [MultiSlider]_FlipbookCrossfadeRange ("Fade Range--{ condition_showS:_FlipbookCrossfadeEnabled==1}", Vector) = (0.75, 1, 0, 1) [ThryToggleUI(true)]_FlipbookHueShiftEnabled (" Hue Shift", Float) = 0 @@ -1812,7 +1896,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" //endex // Rendering Options - [HideInInspector] m_modifierCategory ("UV Modifiers", Float) = 0 + [HideInInspector] m_modifierCategory ("Modifiers", Float) = 0 //ifex _EnableDistortion==0 [HideInInspector] m_start_uvDistortion (" Distortion UV--{reference_property:_EnableDistortion}", Float) = 0 [HideInInspector][ThryToggle(USER_LUT)] _EnableDistortion ("Enabled?", Float) = 0 @@ -1947,13 +2031,31 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" // Stencils [HideInInspector] m_start_StencilPassOptions ("Stencil--{button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/rendering/stencil},hover:Documentation}}", Float) = 0 + [ThryWideEnum(Simple, 0, Front Face vs Back Face, 1)] _StencilType ("Stencil Type", Float) = 0 [IntRange] _StencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _StencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _StencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilPassOp ("Stencil Pass Op", Float) = 0 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilFailOp ("Stencil Fail Op", Float) = 0 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFailOp ("Stencil ZFail Op", Float) = 0 - [Enum(UnityEngine.Rendering.CompareFunction)] _StencilCompareFunction ("Stencil Compare Function", Float) = 8 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilPassOp ("Stencil Pass Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFailOp ("Stencil Fail Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFailOp ("Stencil ZFail Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilCompareFunction ("Stencil Compare Function--{condition_showS:(_StencilType==0)}", Float) = 8 + + [HideInInspector] m_start_StencilPassBackOptions("Back--{condition_showS:(_StencilType==1)}", Float) = 0 + [Helpbox(1)] _FFBFStencilHelp0 ("Front Face and Back Face Stencils only work when locked in due to Unity's Stencil managment", Int) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackPassOp ("Back Pass Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackFailOp ("Back Fail Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackZFailOp ("Back ZFail Op", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilBackCompareFunction ("Back Compare Function", Float) = 8 + [HideInInspector] m_end_StencilPassBackOptions("Back", Float) = 0 + + [HideInInspector] m_start_StencilPassFrontOptions("Front--{condition_showS:(_StencilType==1)}", Float) = 0 + [Helpbox(1)] _FFBFStencilHelp1 ("Front Face and Back Face Stencils only work when locked in due to Unity's Stencil managment", Int) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontPassOp ("Front Pass Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontFailOp ("Front Fail Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontZFailOp ("Front ZFail Op", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilFrontCompareFunction ("Front Compare Function", Float) = 8 + [HideInInspector] m_end_StencilPassFrontOptions("Front", Float) = 0 + [HideInInspector] m_end_StencilPassOptions ("Stencil", Float) = 0 } @@ -1970,10 +2072,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite [_ZWrite] @@ -2078,6 +2194,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -2296,6 +2420,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -2717,6 +2844,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _RedTexture_ST; float2 _RedTexturePan; float _RedTextureUV; + float _RedAlphaAdd; #if defined(PROP_GREENTEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _GreenTexture; @@ -2724,6 +2852,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _GreenTexture_ST; float2 _GreenTexturePan; float _GreenTextureUV; + float _GreenAlphaAdd; #if defined(PROP_BLUETEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _BlueTexture; @@ -2731,6 +2860,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _BlueTexture_ST; float2 _BlueTexturePan; float _BlueTextureUV; + float _BlueAlphaAdd; #if defined(PROP_ALPHATEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _AlphaTexture; @@ -2738,6 +2868,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _AlphaTexture_ST; float2 _AlphaTexturePan; float _AlphaTextureUV; + float _AlphaAlphaAdd; #ifdef GEOM_TYPE_MESH #if defined(PROP_RGBNORMALR) || !defined(OPTIMIZER_ENABLED) @@ -3150,6 +3281,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float2 _ShadowColorTexPan; float _ShadowColorTexUV; #endif + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _MultilayerMathBlurMap; + float4 _MultilayerMathBlurMap_ST; + float2 _MultilayerMathBlurMapPan; + float _MultilayerMathBlurMapUV; + #endif float _ShadowBorder; float _ShadowBlur; float4 _Shadow2ndColor; @@ -3351,6 +3488,100 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #endif //endex + //ifex _Matcap3Enable==0 + #ifdef POI_MATCAP2 + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3; + float4 _Matcap3_ST; + float2 _Matcap3Pan; + float _Matcap3UV; + #endif + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3Mask; + float4 _Matcap3Mask_ST; + float2 _Matcap3MaskPan; + float _Matcap3MaskUV; + #endif + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap2NormalMap; + #endif + float4 _Matcap2NormalMap_ST; + float2 _Matcap2NormalMapPan; + float _Matcap2NormalMapUV; + float _Matcap2NormalMapScale; + #endif + float _Matcap3UVMode; + float _Matcap3MaskInvert; + float _Matcap3Border; + float4 _Matcap3Color; + float _Matcap3ColorThemeIndex; + float _Matcap3Intensity; + float _Matcap3Replace; + float _Matcap3Multiply; + float _Matcap3Add; + float _Matcap3AddToLight; + float _Matcap3Mixed; + float _Matcap3AlphaOverride; + float _Matcap3Enable; + float _Matcap3LightMask; + float _Matcap3EmissionStrength; + float _Matcap3Normal; + float _Matcap3HueShiftEnabled; + float _Matcap3HueShiftSpeed; + float _Matcap3HueShift; + float _Matcap3TPSDepthEnabled; + float _Matcap3TPSMaskStrength; + #endif + //endex + + //ifex _Matcap4Enable==0 + #ifdef POI_MATCAP3 + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4; + float4 _Matcap4_ST; + float2 _Matcap4Pan; + float _Matcap4UV; + #endif + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4Mask; + float4 _Matcap4Mask_ST; + float2 _Matcap4MaskPan; + float _Matcap4MaskUV; + #endif + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3NormalMap; + #endif + float4 _Matcap3NormalMap_ST; + float2 _Matcap3NormalMapPan; + float _Matcap3NormalMapUV; + float _Matcap3NormalMapScale; + #endif + float _Matcap4UVMode; + float _Matcap4MaskInvert; + float _Matcap4Border; + float4 _Matcap4Color; + float _Matcap4ColorThemeIndex; + float _Matcap4Intensity; + float _Matcap4Replace; + float _Matcap4Multiply; + float _Matcap4Add; + float _Matcap4AddToLight; + float _Matcap4Mixed; + float _Matcap4AlphaOverride; + float _Matcap4Enable; + float _Matcap4LightMask; + float _Matcap4EmissionStrength; + float _Matcap4Normal; + float _Matcap4HueShiftEnabled; + float _Matcap4HueShiftSpeed; + float _Matcap4HueShift; + float _Matcap4TPSDepthEnabled; + float _Matcap4TPSMaskStrength; + #endif + //endex + //ifex _CubeMapEnabled==0 #ifdef _CUBEMAP #if defined(PROP_CUBEMAP) || !defined(OPTIMIZER_ENABLED) @@ -3440,12 +3671,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -4453,6 +4687,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -5784,13 +6019,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -5818,6 +6062,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -6655,23 +6927,29 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 alpha = 1; #endif + float4 maskFinal = 1; + maskFinal.r = saturate(rgbMask.r + _RedAlphaAdd) * saturate(red.a * _RedColor.a); + maskFinal.g = saturate(rgbMask.g + _GreenAlphaAdd) * saturate(green.a * _GreenColor.a); + maskFinal.b = saturate(rgbMask.b + _BlueAlphaAdd) * saturate(blue.a * _BlueColor.a); + maskFinal.a = saturate(rgbMask.a + _AlphaAlphaAdd) * saturate(alpha.a * _AlphaColor.a); + //UNITY_BRANCH if (_RGBBlendMultiplicative) { float3 RGBColor = 1; - RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); poiFragData.baseColor *= RGBColor; } else { - poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); } } #endif @@ -7574,21 +7852,26 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #endif #ifdef _LIGHTINGMODE_MULTILAYER_MATH + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + float4 blurMap = POI2D_SAMPLER_PAN(_MultilayerMathBlurMap, _MainTex, poiUV(poiMesh.uv[_MultilayerMathBlurMapUV], _MultilayerMathBlurMap_ST), _MultilayerMathBlurMapPan); + #else + float4 blurMap = 1; + #endif float4 lns = float4(1, 1, 1, 1); if (_LightingMulitlayerNonLinear) { - lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } else { - lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } lns = saturate(lns); float3 indirectColor = 1; @@ -7960,7 +8243,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 void blendMatcap(inout PoiLight poiLight, inout PoiFragData poiFragData, float add, float lightAdd, float multiply, float replace, float mixed, float4 matcapColor, float matcapMask, float emissionStrength, float matcapLightMask #ifdef POI_BLACKLIGHT , uint blackLightMaskIndex @@ -7986,14 +8269,18 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" poiFragData.emission += matcapColor.rgb * emissionStrength * matcapMask * matcapColor.a; } //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) void applyMatcap(inout PoiFragData poiFragData, in PoiCam poiCam, in PoiMesh poiMesh, inout PoiLight poiLight, in PoiMods poiMods) { float4 matcap = 0; float matcapMask = 0; float4 matcap2 = 0; float matcap2Mask = 0; + float4 matcap3 = 0; + float matcap3Mask = 0; + float4 matcap4 = 0; + float matcap4Mask = 0; float2 matcapUV = 0; //endex @@ -8168,7 +8455,179 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" ); #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _Matcap3Enable==0 + // Matcap 3 + #ifdef POI_MATCAP2 + + float3 normal2 = poiMesh.normals[_Matcap3Normal]; + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal2 = calculateNormal(poiMesh.normals[_Matcap3Normal], poiMesh, _Matcap2NormalMap, _Matcap2NormalMap_ST, _Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap3UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal2, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap3Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal2), dot(worldViewUp, normal2)) * _Matcap3Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal2); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap3Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + matcap3 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap3, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap3)) * float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #else + matcap3 = float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #endif + matcap3.rgb *= _Matcap3Intensity; + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + matcap3Mask = POI2D_SAMPLER_PAN(_Matcap3Mask, _MainTex, poiUV(poiMesh.uv[_Matcap3MaskUV], _Matcap3Mask_ST), _Matcap3MaskPan); + #else + matcap3Mask = 1; + #endif + if (_Matcap3MaskInvert) + { + matcap3Mask = 1 - matcap3Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap3TPSDepthEnabled) + { + matcap3Mask = lerp(matcap3Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap3TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap3.a, matcap3Mask * _Matcap3AlphaOverride); + + //UNITY_BRANCH + if (_Matcap3HueShiftEnabled) + { + matcap3.rgb = hueShift(matcap3.rgb, _Matcap3HueShift + _Time.x * _Matcap3HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap3Add, _Matcap3AddToLight, _Matcap3Multiply, _Matcap3Replace, _Matcap3Mixed, matcap3, matcap3Mask, _Matcap3EmissionStrength, _Matcap3LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap3 + #endif + ); + #endif + //endex + //ifex _Matcap4Enable==0 + // Matcap 4 + #ifdef POI_MATCAP3 + + float3 normal3 = poiMesh.normals[_Matcap4Normal]; + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal3 = calculateNormal(poiMesh.normals[_Matcap4Normal], poiMesh, _Matcap3NormalMap, _Matcap3NormalMap_ST, _Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap4UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal3, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap4Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal3), dot(worldViewUp, normal3)) * _Matcap4Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal3); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap4Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + matcap4 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap4, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap4)) * float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #else + matcap4 = float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #endif + matcap4.rgb *= _Matcap4Intensity; + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + matcap4Mask = POI2D_SAMPLER_PAN(_Matcap4Mask, _MainTex, poiUV(poiMesh.uv[_Matcap4MaskUV], _Matcap4Mask_ST), _Matcap4MaskPan); + #else + matcap4Mask = 1; + #endif + if (_Matcap4MaskInvert) + { + matcap4Mask = 1 - matcap4Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap4TPSDepthEnabled) + { + matcap4Mask = lerp(matcap4Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap4TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap4.a, matcap4Mask * _Matcap4AlphaOverride); + + //UNITY_BRANCH + if (_Matcap4HueShiftEnabled) + { + matcap4.rgb = hueShift(matcap4.rgb, _Matcap4HueShift + _Time.x * _Matcap4HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap4Add, _Matcap4AddToLight, _Matcap4Multiply, _Matcap4Replace, _Matcap4Mixed, matcap4, matcap4Mask, _Matcap4EmissionStrength, _Matcap4LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap4 + #endif + ); + #endif + //endex + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 } #endif //endex @@ -8388,16 +8847,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -8407,14 +8880,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -8536,6 +9019,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" } #endif } + void applyLumaGradient(in PoiMods poiMods, inout float3 emissionColor, in float themeIndex, in float nDotV) + { + #ifdef POI_AUDIOLINK + if (poiMods.audioLinkAvailable && poiMods.audioLinkViaLuma && themeIndex >= 5 && themeIndex <= 7) + { + emissionColor = getLumaGradient(themeIndex-5, saturate(1 - nDotV)); + } + #endif + } //endex //ifex _EnableEmission==0 @@ -8593,6 +9085,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" emissionStrength0 *= calculateBlinkingEmission(_EmissiveBlink_Min, _EmissiveBlink_Max, _EmissiveBlink_Velocity, _EmissionBlinkingOffset); } + applyLumaGradient(poiMods, emissionColor0, _EmissionColorThemeIndex, poiLight.nDotV); emissionColor0 = hueShift(emissionColor0, frac(_EmissionHueShift + _EmissionHueShiftSpeed * _Time.x) * _EmissionHueShiftEnabled); #if defined(PROP_EMISSIONMASK) || !defined(OPTIMIZER_ENABLED) @@ -8689,6 +9182,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" emissionStrength1 *= calculateBlinkingEmission(_EmissiveBlink_Min1, _EmissiveBlink_Max1, _EmissiveBlink_Velocity1, _EmissionBlinkingOffset1); } + applyLumaGradient(poiMods, emissionColor1, _EmissionColor1ThemeIndex, poiLight.nDotV); emissionColor1 = hueShift(emissionColor1, frac(_EmissionHueShift1 + _EmissionHueShiftSpeed1 * _Time.x) * _EmissionHueShiftEnabled1); #if defined(PROP_EMISSIONMASK1) || !defined(OPTIMIZER_ENABLED) float emissionMask1 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask1, _MainTex, poiUV(poiMesh.uv[_EmissionMask1UV], _EmissionMask1_ST) + _Time.x * _EmissionMask1Pan); @@ -8773,6 +9267,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" emissionStrength2 *= calculateBlinkingEmission(_EmissiveBlink_Min2, _EmissiveBlink_Max2, _EmissiveBlink_Velocity2, _EmissionBlinkingOffset2); } + applyLumaGradient(poiMods, emissionColor2, _EmissionColor2ThemeIndex, poiLight.nDotV); emissionColor2 = hueShift(emissionColor2, frac(_EmissionHueShift2 + _EmissionHueShiftSpeed2 * _Time.x) * _EmissionHueShiftEnabled2); #if defined(PROP_EMISSIONMASK2) || !defined(OPTIMIZER_ENABLED) float emissionMask2 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask2, _MainTex, poiUV(poiMesh.uv[_EmissionMask2UV], _EmissionMask2_ST) + _Time.x * _EmissionMask2Pan); @@ -8854,6 +9349,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" emissionStrength3 *= calculateBlinkingEmission(_EmissiveBlink_Min3, _EmissiveBlink_Max3, _EmissiveBlink_Velocity3, _EmissionBlinkingOffset3); } + applyLumaGradient(poiMods, emissionColor3, _EmissionColor3ThemeIndex, poiLight.nDotV); emissionColor3 = hueShift(emissionColor3, frac(_EmissionHueShift3 + _EmissionHueShiftSpeed3 * _Time.x) * _EmissionHueShiftEnabled3); #if defined(PROP_EMISSIONMASK3) || !defined(OPTIMIZER_ENABLED) float emissionMask3 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask3, _MainTex, poiUV(poiMesh.uv[_EmissionMask3UV], _EmissionMask3_ST) + _Time.x * _EmissionMask3Pan); @@ -11177,8 +11673,8 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) applyMatcap(poiFragData, poiCam, poiMesh, poiLight, poiMods); #endif //endex @@ -11378,10 +11874,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite Off @@ -11486,6 +11996,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -11703,6 +12221,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -12124,6 +12645,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _RedTexture_ST; float2 _RedTexturePan; float _RedTextureUV; + float _RedAlphaAdd; #if defined(PROP_GREENTEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _GreenTexture; @@ -12131,6 +12653,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _GreenTexture_ST; float2 _GreenTexturePan; float _GreenTextureUV; + float _GreenAlphaAdd; #if defined(PROP_BLUETEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _BlueTexture; @@ -12138,6 +12661,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _BlueTexture_ST; float2 _BlueTexturePan; float _BlueTextureUV; + float _BlueAlphaAdd; #if defined(PROP_ALPHATEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _AlphaTexture; @@ -12145,6 +12669,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _AlphaTexture_ST; float2 _AlphaTexturePan; float _AlphaTextureUV; + float _AlphaAlphaAdd; #ifdef GEOM_TYPE_MESH #if defined(PROP_RGBNORMALR) || !defined(OPTIMIZER_ENABLED) @@ -12557,6 +13082,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float2 _ShadowColorTexPan; float _ShadowColorTexUV; #endif + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _MultilayerMathBlurMap; + float4 _MultilayerMathBlurMap_ST; + float2 _MultilayerMathBlurMapPan; + float _MultilayerMathBlurMapUV; + #endif float _ShadowBorder; float _ShadowBlur; float4 _Shadow2ndColor; @@ -12758,6 +13289,100 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #endif //endex + //ifex _Matcap3Enable==0 + #ifdef POI_MATCAP2 + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3; + float4 _Matcap3_ST; + float2 _Matcap3Pan; + float _Matcap3UV; + #endif + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3Mask; + float4 _Matcap3Mask_ST; + float2 _Matcap3MaskPan; + float _Matcap3MaskUV; + #endif + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap2NormalMap; + #endif + float4 _Matcap2NormalMap_ST; + float2 _Matcap2NormalMapPan; + float _Matcap2NormalMapUV; + float _Matcap2NormalMapScale; + #endif + float _Matcap3UVMode; + float _Matcap3MaskInvert; + float _Matcap3Border; + float4 _Matcap3Color; + float _Matcap3ColorThemeIndex; + float _Matcap3Intensity; + float _Matcap3Replace; + float _Matcap3Multiply; + float _Matcap3Add; + float _Matcap3AddToLight; + float _Matcap3Mixed; + float _Matcap3AlphaOverride; + float _Matcap3Enable; + float _Matcap3LightMask; + float _Matcap3EmissionStrength; + float _Matcap3Normal; + float _Matcap3HueShiftEnabled; + float _Matcap3HueShiftSpeed; + float _Matcap3HueShift; + float _Matcap3TPSDepthEnabled; + float _Matcap3TPSMaskStrength; + #endif + //endex + + //ifex _Matcap4Enable==0 + #ifdef POI_MATCAP3 + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4; + float4 _Matcap4_ST; + float2 _Matcap4Pan; + float _Matcap4UV; + #endif + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4Mask; + float4 _Matcap4Mask_ST; + float2 _Matcap4MaskPan; + float _Matcap4MaskUV; + #endif + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3NormalMap; + #endif + float4 _Matcap3NormalMap_ST; + float2 _Matcap3NormalMapPan; + float _Matcap3NormalMapUV; + float _Matcap3NormalMapScale; + #endif + float _Matcap4UVMode; + float _Matcap4MaskInvert; + float _Matcap4Border; + float4 _Matcap4Color; + float _Matcap4ColorThemeIndex; + float _Matcap4Intensity; + float _Matcap4Replace; + float _Matcap4Multiply; + float _Matcap4Add; + float _Matcap4AddToLight; + float _Matcap4Mixed; + float _Matcap4AlphaOverride; + float _Matcap4Enable; + float _Matcap4LightMask; + float _Matcap4EmissionStrength; + float _Matcap4Normal; + float _Matcap4HueShiftEnabled; + float _Matcap4HueShiftSpeed; + float _Matcap4HueShift; + float _Matcap4TPSDepthEnabled; + float _Matcap4TPSMaskStrength; + #endif + //endex + //ifex _CubeMapEnabled==0 #ifdef _CUBEMAP #if defined(PROP_CUBEMAP) || !defined(OPTIMIZER_ENABLED) @@ -12847,12 +13472,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -13603,6 +14231,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -14934,13 +15563,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -14968,6 +15606,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -15805,23 +16471,29 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 alpha = 1; #endif + float4 maskFinal = 1; + maskFinal.r = saturate(rgbMask.r + _RedAlphaAdd) * saturate(red.a * _RedColor.a); + maskFinal.g = saturate(rgbMask.g + _GreenAlphaAdd) * saturate(green.a * _GreenColor.a); + maskFinal.b = saturate(rgbMask.b + _BlueAlphaAdd) * saturate(blue.a * _BlueColor.a); + maskFinal.a = saturate(rgbMask.a + _AlphaAlphaAdd) * saturate(alpha.a * _AlphaColor.a); + //UNITY_BRANCH if (_RGBBlendMultiplicative) { float3 RGBColor = 1; - RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); poiFragData.baseColor *= RGBColor; } else { - poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); } } #endif @@ -16724,21 +17396,26 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #endif #ifdef _LIGHTINGMODE_MULTILAYER_MATH + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + float4 blurMap = POI2D_SAMPLER_PAN(_MultilayerMathBlurMap, _MainTex, poiUV(poiMesh.uv[_MultilayerMathBlurMapUV], _MultilayerMathBlurMap_ST), _MultilayerMathBlurMapPan); + #else + float4 blurMap = 1; + #endif float4 lns = float4(1, 1, 1, 1); if (_LightingMulitlayerNonLinear) { - lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } else { - lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } lns = saturate(lns); float3 indirectColor = 1; @@ -17110,7 +17787,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 void blendMatcap(inout PoiLight poiLight, inout PoiFragData poiFragData, float add, float lightAdd, float multiply, float replace, float mixed, float4 matcapColor, float matcapMask, float emissionStrength, float matcapLightMask #ifdef POI_BLACKLIGHT , uint blackLightMaskIndex @@ -17136,14 +17813,18 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" poiFragData.emission += matcapColor.rgb * emissionStrength * matcapMask * matcapColor.a; } //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) void applyMatcap(inout PoiFragData poiFragData, in PoiCam poiCam, in PoiMesh poiMesh, inout PoiLight poiLight, in PoiMods poiMods) { float4 matcap = 0; float matcapMask = 0; float4 matcap2 = 0; float matcap2Mask = 0; + float4 matcap3 = 0; + float matcap3Mask = 0; + float4 matcap4 = 0; + float matcap4Mask = 0; float2 matcapUV = 0; //endex @@ -17318,7 +17999,179 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" ); #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _Matcap3Enable==0 + // Matcap 3 + #ifdef POI_MATCAP2 + + float3 normal2 = poiMesh.normals[_Matcap3Normal]; + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal2 = calculateNormal(poiMesh.normals[_Matcap3Normal], poiMesh, _Matcap2NormalMap, _Matcap2NormalMap_ST, _Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap3UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal2, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap3Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal2), dot(worldViewUp, normal2)) * _Matcap3Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal2); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap3Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + matcap3 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap3, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap3)) * float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #else + matcap3 = float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #endif + matcap3.rgb *= _Matcap3Intensity; + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + matcap3Mask = POI2D_SAMPLER_PAN(_Matcap3Mask, _MainTex, poiUV(poiMesh.uv[_Matcap3MaskUV], _Matcap3Mask_ST), _Matcap3MaskPan); + #else + matcap3Mask = 1; + #endif + if (_Matcap3MaskInvert) + { + matcap3Mask = 1 - matcap3Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap3TPSDepthEnabled) + { + matcap3Mask = lerp(matcap3Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap3TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap3.a, matcap3Mask * _Matcap3AlphaOverride); + + //UNITY_BRANCH + if (_Matcap3HueShiftEnabled) + { + matcap3.rgb = hueShift(matcap3.rgb, _Matcap3HueShift + _Time.x * _Matcap3HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap3Add, _Matcap3AddToLight, _Matcap3Multiply, _Matcap3Replace, _Matcap3Mixed, matcap3, matcap3Mask, _Matcap3EmissionStrength, _Matcap3LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap3 + #endif + ); + #endif + //endex + //ifex _Matcap4Enable==0 + // Matcap 4 + #ifdef POI_MATCAP3 + + float3 normal3 = poiMesh.normals[_Matcap4Normal]; + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal3 = calculateNormal(poiMesh.normals[_Matcap4Normal], poiMesh, _Matcap3NormalMap, _Matcap3NormalMap_ST, _Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap4UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal3, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap4Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal3), dot(worldViewUp, normal3)) * _Matcap4Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal3); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap4Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + matcap4 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap4, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap4)) * float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #else + matcap4 = float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #endif + matcap4.rgb *= _Matcap4Intensity; + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + matcap4Mask = POI2D_SAMPLER_PAN(_Matcap4Mask, _MainTex, poiUV(poiMesh.uv[_Matcap4MaskUV], _Matcap4Mask_ST), _Matcap4MaskPan); + #else + matcap4Mask = 1; + #endif + if (_Matcap4MaskInvert) + { + matcap4Mask = 1 - matcap4Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap4TPSDepthEnabled) + { + matcap4Mask = lerp(matcap4Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap4TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap4.a, matcap4Mask * _Matcap4AlphaOverride); + + //UNITY_BRANCH + if (_Matcap4HueShiftEnabled) + { + matcap4.rgb = hueShift(matcap4.rgb, _Matcap4HueShift + _Time.x * _Matcap4HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap4Add, _Matcap4AddToLight, _Matcap4Multiply, _Matcap4Replace, _Matcap4Mixed, matcap4, matcap4Mask, _Matcap4EmissionStrength, _Matcap4LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap4 + #endif + ); + #endif + //endex + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 } #endif //endex @@ -17538,16 +18391,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -17557,14 +18424,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -19923,8 +20800,8 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) applyMatcap(poiFragData, poiCam, poiMesh, poiLight, poiMods); #endif //endex @@ -20088,10 +20965,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite [_ZWrite] @@ -20196,6 +21087,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -20414,6 +21313,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -20887,12 +21789,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -21079,6 +21984,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -22410,13 +23316,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -22444,6 +23359,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -23431,16 +24374,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -23450,14 +24407,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -24025,6 +24992,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -24242,6 +25217,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -24574,6 +25552,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _RedTexture_ST; float2 _RedTexturePan; float _RedTextureUV; + float _RedAlphaAdd; #if defined(PROP_GREENTEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _GreenTexture; @@ -24581,6 +25560,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _GreenTexture_ST; float2 _GreenTexturePan; float _GreenTextureUV; + float _GreenAlphaAdd; #if defined(PROP_BLUETEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _BlueTexture; @@ -24588,6 +25568,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _BlueTexture_ST; float2 _BlueTexturePan; float _BlueTextureUV; + float _BlueAlphaAdd; #if defined(PROP_ALPHATEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _AlphaTexture; @@ -24595,6 +25576,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _AlphaTexture_ST; float2 _AlphaTexturePan; float _AlphaTextureUV; + float _AlphaAlphaAdd; #ifdef GEOM_TYPE_MESH #if defined(PROP_RGBNORMALR) || !defined(OPTIMIZER_ENABLED) @@ -25056,12 +26038,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -25745,6 +26730,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -27076,13 +28062,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -27110,6 +28105,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -27771,23 +28794,29 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" float4 alpha = 1; #endif + float4 maskFinal = 1; + maskFinal.r = saturate(rgbMask.r + _RedAlphaAdd) * saturate(red.a * _RedColor.a); + maskFinal.g = saturate(rgbMask.g + _GreenAlphaAdd) * saturate(green.a * _GreenColor.a); + maskFinal.b = saturate(rgbMask.b + _BlueAlphaAdd) * saturate(blue.a * _BlueColor.a); + maskFinal.a = saturate(rgbMask.a + _AlphaAlphaAdd) * saturate(alpha.a * _AlphaColor.a); + //UNITY_BRANCH if (_RGBBlendMultiplicative) { float3 RGBColor = 1; - RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); poiFragData.baseColor *= RGBColor; } else { - poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); } } #endif @@ -28401,16 +29430,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -28420,14 +29463,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -28549,6 +29602,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" } #endif } + void applyLumaGradient(in PoiMods poiMods, inout float3 emissionColor, in float themeIndex, in float nDotV) + { + #ifdef POI_AUDIOLINK + if (poiMods.audioLinkAvailable && poiMods.audioLinkViaLuma && themeIndex >= 5 && themeIndex <= 7) + { + emissionColor = getLumaGradient(themeIndex-5, saturate(1 - nDotV)); + } + #endif + } //endex //ifex _EnableEmission==0 @@ -28606,6 +29668,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" emissionStrength0 *= calculateBlinkingEmission(_EmissiveBlink_Min, _EmissiveBlink_Max, _EmissiveBlink_Velocity, _EmissionBlinkingOffset); } + applyLumaGradient(poiMods, emissionColor0, _EmissionColorThemeIndex, poiLight.nDotV); emissionColor0 = hueShift(emissionColor0, frac(_EmissionHueShift + _EmissionHueShiftSpeed * _Time.x) * _EmissionHueShiftEnabled); #if defined(PROP_EMISSIONMASK) || !defined(OPTIMIZER_ENABLED) @@ -28702,6 +29765,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" emissionStrength1 *= calculateBlinkingEmission(_EmissiveBlink_Min1, _EmissiveBlink_Max1, _EmissiveBlink_Velocity1, _EmissionBlinkingOffset1); } + applyLumaGradient(poiMods, emissionColor1, _EmissionColor1ThemeIndex, poiLight.nDotV); emissionColor1 = hueShift(emissionColor1, frac(_EmissionHueShift1 + _EmissionHueShiftSpeed1 * _Time.x) * _EmissionHueShiftEnabled1); #if defined(PROP_EMISSIONMASK1) || !defined(OPTIMIZER_ENABLED) float emissionMask1 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask1, _MainTex, poiUV(poiMesh.uv[_EmissionMask1UV], _EmissionMask1_ST) + _Time.x * _EmissionMask1Pan); @@ -28786,6 +29850,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" emissionStrength2 *= calculateBlinkingEmission(_EmissiveBlink_Min2, _EmissiveBlink_Max2, _EmissiveBlink_Velocity2, _EmissionBlinkingOffset2); } + applyLumaGradient(poiMods, emissionColor2, _EmissionColor2ThemeIndex, poiLight.nDotV); emissionColor2 = hueShift(emissionColor2, frac(_EmissionHueShift2 + _EmissionHueShiftSpeed2 * _Time.x) * _EmissionHueShiftEnabled2); #if defined(PROP_EMISSIONMASK2) || !defined(OPTIMIZER_ENABLED) float emissionMask2 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask2, _MainTex, poiUV(poiMesh.uv[_EmissionMask2UV], _EmissionMask2_ST) + _Time.x * _EmissionMask2Pan); @@ -28867,6 +29932,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi World" emissionStrength3 *= calculateBlinkingEmission(_EmissiveBlink_Min3, _EmissiveBlink_Max3, _EmissiveBlink_Velocity3, _EmissionBlinkingOffset3); } + applyLumaGradient(poiMods, emissionColor3, _EmissionColor3ThemeIndex, poiLight.nDotV); emissionColor3 = hueShift(emissionColor3, frac(_EmissionHueShift3 + _EmissionHueShiftSpeed3 * _Time.x) * _EmissionHueShiftEnabled3); #if defined(PROP_EMISSIONMASK3) || !defined(OPTIMIZER_ENABLED) float emissionMask3 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask3, _MainTex, poiUV(poiMesh.uv[_EmissionMask3UV], _EmissionMask3_ST) + _Time.x * _EmissionMask3Pan); diff --git a/_PoiyomiShaders/Shaders/8.0/Poiyomi.shader b/_PoiyomiShaders/Shaders/8.0/Poiyomi.shader index 53aca462..82cad8c4 100644 --- a/_PoiyomiShaders/Shaders/8.0/Poiyomi.shader +++ b/_PoiyomiShaders/Shaders/8.0/Poiyomi.shader @@ -2,7 +2,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" { Properties { - [HideInInspector] shader_master_label ("Poiyomi 8.0.420", Float) = 0 + [HideInInspector] shader_master_label ("Poiyomi 8.0.425", Float) = 0 [HideInInspector] shader_is_using_thry_editor ("", Float) = 0 [HideInInspector] footer_youtube ("{texture:{name:icon-youtube,height:16},action:{type:URL,data:https://www.youtube.com/poiyomi},hover:YOUTUBE}", Float) = 0 [HideInInspector] footer_twitter ("{texture:{name:icon-twitter,height:16},action:{type:URL,data:https://twitter.com/poiyomi},hover:TWITTER}", Float) = 0 @@ -247,21 +247,25 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" _RedTexture ("R Texture--{reference_properties:[_RedTexturePan, _RedTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_RedTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_RedTextureUV ("UV", int) = 0 + _RedAlphaAdd ("R Alpha Add", Range(-1,1)) = 0 _GreenColor ("G Color--{reference_property:_GreenColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _GreenColorThemeIndex ("", Int) = 0 _GreenTexture ("G Texture--{reference_properties:[_GreenTexturePan, _GreenTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_GreenTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_GreenTextureUV ("UV", int) = 0 + _GreenAlphaAdd ("G Alpha Add", Range(-1,1)) = 0 _BlueColor ("B Color--{reference_property:_BlueColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _BlueColorThemeIndex ("", Int) = 0 _BlueTexture ("B Texture--{reference_properties:[_BlueTexturePan, _BlueTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_BlueTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_BlueTextureUV ("UV", int) = 0 + _BlueAlphaAdd ("B Alpha Add", Range(-1,1)) = 0 _AlphaColor ("A Color--{reference_property:_AlphaColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _AlphaColorThemeIndex ("", Int) = 0 _AlphaTexture ("A Texture--{reference_properties:[_AlphaTexturePan, _AlphaTextureUV]}", 2D) = "white" { } [HideInInspector][Vector2]_AlphaTexturePan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)]_AlphaTextureUV ("UV", int) = 0 + _AlphaAlphaAdd ("A Alpha Add", Range(-1,1)) = 0 // RGB MASKED NORMALS [ThryToggle(GEOM_TYPE_MESH)]_RgbNormalsEnabled ("Enable Normals", Float) = 0 @@ -574,6 +578,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" [HideInInspector][Vector2]_ShadowColorTexPan ("Panning", Vector) = (0, 0, 0, 0) [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _ShadowColorTexUV ("UV", Int) = 0 _ShadowColor ("Shadow Color--{condition_showS:(_LightingMode==1)}", Color) = (0.7, 0.75, 0.85, 1.0) + _MultilayerMathBlurMap ("Blur Map--{reference_properties:[_MultilayerMathBlurMapPan, _MultilayerMathBlurMapUV], condition_showS:(_LightingMode==1)}", 2D) = "white" { } + [HideInInspector][Vector2]_MultilayerMathBlurMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _MultilayerMathBlurMapUV ("UV", Int) = 0 //_ShadowNormalStrength ("Normal Strength", Range(0, 1)) = 1.0 _ShadowBorder ("Border--{condition_showS:(_LightingMode==1)}", Range(0, 1)) = 0.5 _ShadowBlur ("Blur--{condition_showS:(_LightingMode==1)}", Range(0, 1)) = 0.1 @@ -778,7 +785,81 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" _Matcap2HueShift ("Hue Shift--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Range(0, 1)) = 0 [ThryToggleUI(true)] _Matcap2TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 _Matcap2TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap2TPSDepthEnabled==1)}", Range(0, 1)) = 1 - [HideInInspector] m_end_Matcap2 ("Matcap 2--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Float) = 0 + [HideInInspector] m_end_Matcap2 ("Matcap 1--{condition_showS:(_Matcap2HueShiftEnabled==1)}", Float) = 0 + //endex + + // Third Matcap + //ifex _Matcap3Enable==0 + [HideInInspector] m_start_Matcap3 ("Matcap 2--{reference_property:_Matcap3Enable,button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/shading/matcap},hover:Documentation}}", Float) = 0 + [HideInInspector][ThryToggle(POI_MATCAP2)]_Matcap3Enable ("Enable Matcap 2", Float) = 0 + [ThryWideEnum(UTS Style, 0, Top Pinch, 1, Double Sided, 2)] _Matcap3UVMode ("UV Mode", Int) = 1 + _Matcap3Color ("Color--{reference_property:_Matcap3ColorThemeIndex}", Color) = (1, 1, 1, 1) + [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _Matcap3ColorThemeIndex ("", Int) = 0 + [TextureNoSO]_Matcap3 ("Matcap", 2D) = "white" { } + _Matcap3Border ("Border", Range(0, .5)) = 0.43 + _Matcap3Mask ("Mask--{reference_properties:[_Matcap3MaskPan, _Matcap3MaskUV, _Matcap3MaskInvert]}", 2D) = "white" { } + [HideInInspector][Vector2]_Matcap3MaskPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap3MaskUV ("UV", Int) = 0 + [HideInInspector][ToggleUI]_Matcap3MaskInvert ("Invert", Float) = 0 + _Matcap3EmissionStrength ("Emission Strength", Range(0, 20)) = 0 + _Matcap3Intensity ("Intensity", Range(0, 5)) = 1 + _Matcap3LightMask ("Hide in Shadow", Range(0, 1)) = 0 + _Matcap3Replace ("Replace Blend", Range(0, 1)) = 0 + _Matcap3Multiply ("Multiply Blend", Range(0, 1)) = 0 + _Matcap3Add ("Add Blend", Range(0, 1)) = 0 + _Matcap3Mixed ("Mixed Blend", Range(0, 1)) = 0 + _Matcap3AddToLight ("Add To Light", Range(0, 1)) = 0 + _Matcap3AlphaOverride ("Override Alpha", Range(0, 1)) = 0 + [Enum(Vertex, 0, Pixel, 1)] _Matcap3Normal ("Normal to use", Int) = 1 + [ThryToggle(POI_MATCAP2_CUSTOM_NORMAL, true)] _Matcap2CustomNormal (" Custom Normal", Float) = 0 + [ThryToggle()]_Matcap2CustomNormal ("Custom Normal", Float) = 0 + [Normal]_Matcap2NormalMap ("Normal Map--{reference_properties:[_Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale], condition_showS:(_Matcap2CustomNormal==1)}", 2D) = "bump" { } + [HideInInspector][Vector2]_Matcap2NormalMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap2NormalMapUV ("UV", Int) = 0 + [HideInInspector]_Matcap2NormalMapScale ("Intensity", Range(0, 10)) = 1 + [ThryToggleUI(true)] _Matcap3HueShiftEnabled (" Hue Shift", Float) = 0 + _Matcap3HueShiftSpeed ("Shift Speed--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Float) = 0 + _Matcap3HueShift ("Hue Shift--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Range(0, 1)) = 0 + [ThryToggleUI(true)] _Matcap3TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 + _Matcap3TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap3TPSDepthEnabled==1)}", Range(0, 1)) = 1 + [HideInInspector] m_end_Matcap3 ("Matcap 2--{condition_showS:(_Matcap3HueShiftEnabled==1)}", Float) = 0 + //endex + + // Fourth Matcap + //ifex _Matcap4Enable==0 + [HideInInspector] m_start_Matcap4 ("Matcap 3--{reference_property:_Matcap4Enable,button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/shading/matcap},hover:Documentation}}", Float) = 0 + [HideInInspector][ThryToggle(POI_MATCAP3)]_Matcap4Enable ("Enable Matcap 3", Float) = 0 + [ThryWideEnum(UTS Style, 0, Top Pinch, 1, Double Sided, 2)] _Matcap4UVMode ("UV Mode", Int) = 1 + _Matcap4Color ("Color--{reference_property:_Matcap4ColorThemeIndex}", Color) = (1, 1, 1, 1) + [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _Matcap4ColorThemeIndex ("", Int) = 0 + [TextureNoSO]_Matcap4 ("Matcap", 2D) = "white" { } + _Matcap4Border ("Border", Range(0, .5)) = 0.43 + _Matcap4Mask ("Mask--{reference_properties:[_Matcap4MaskPan, _Matcap4MaskUV, _Matcap4MaskInvert]}", 2D) = "white" { } + [HideInInspector][Vector2]_Matcap4MaskPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap4MaskUV ("UV", Int) = 0 + [HideInInspector][ToggleUI]_Matcap4MaskInvert ("Invert", Float) = 0 + _Matcap4EmissionStrength ("Emission Strength", Range(0, 20)) = 0 + _Matcap4Intensity ("Intensity", Range(0, 5)) = 1 + _Matcap4LightMask ("Hide in Shadow", Range(0, 1)) = 0 + _Matcap4Replace ("Replace Blend", Range(0, 1)) = 0 + _Matcap4Multiply ("Multiply Blend", Range(0, 1)) = 0 + _Matcap4Add ("Add Blend", Range(0, 1)) = 0 + _Matcap4Mixed ("Mixed Blend", Range(0, 1)) = 0 + _Matcap4AddToLight ("Add To Light", Range(0, 1)) = 0 + _Matcap4AlphaOverride ("Override Alpha", Range(0, 1)) = 0 + [Enum(Vertex, 0, Pixel, 1)] _Matcap4Normal ("Normal to use", Int) = 1 + [ThryToggle(POI_MATCAP3_CUSTOM_NORMAL, true)] _Matcap3CustomNormal (" Custom Normal", Float) = 0 + [ThryToggle()]_Matcap3CustomNormal ("Custom Normal", Float) = 0 + [Normal]_Matcap3NormalMap ("Normal Map--{reference_properties:[_Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale], condition_showS:(_Matcap3CustomNormal==1)}", 2D) = "bump" { } + [HideInInspector][Vector2]_Matcap3NormalMapPan ("Panning", Vector) = (0, 0, 0, 0) + [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _Matcap3NormalMapUV ("UV", Int) = 0 + [HideInInspector]_Matcap3NormalMapScale ("Intensity", Range(0, 10)) = 1 + [ThryToggleUI(true)] _Matcap4HueShiftEnabled (" Hue Shift", Float) = 0 + _Matcap4HueShiftSpeed ("Shift Speed--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Float) = 0 + _Matcap4HueShift ("Hue Shift--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Range(0, 1)) = 0 + [ThryToggleUI(true)] _Matcap4TPSDepthEnabled (" TPS Depth Mask Enabled", Float) = 0 + _Matcap4TPSMaskStrength ("TPS Mask Strength--{condition_showS:(_Matcap4TPSDepthEnabled==1)}", Range(0, 1)) = 1 + [HideInInspector] m_end_Matcap4 ("Matcap 3--{condition_showS:(_Matcap4HueShiftEnabled==1)}", Float) = 0 //endex //ifex _CubeMapEnabled==0 @@ -1111,7 +1192,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" [HideInInspector][ThryWideEnum(UV0, 0, UV1, 1, UV2, 2, UV3, 3, Panosphere, 4, World Pos XZ, 5, Polar UV, 6, Distorted UV, 7)] _FlipbookMaskUV ("UV", Int) = 0 _FlipbookColor ("Color & alpha--{reference_property:_FlipbookColorThemeIndex}", Color) = (1, 1, 1, 1) [HideInInspector][ThryWideEnum(Off, 0, Theme Color 0, 1, Theme Color 1, 2, Theme Color 2, 3, Theme Color 3, 4, ColorChord 0, 5, ColorChord 1, 6, ColorChord 2, 7, ColorChord 3, 8, AL Theme 0, 9, AL Theme 1, 10, AL Theme 2, 11, AL Theme 3, 12)] _FlipbookColorThemeIndex ("", Int) = 0 - _FlipbookTotalFrames ("Total Frames", Float) = 1 + // _FlipbookTotalFrames ("Total Frames", Float) = 1 _FlipbookFPS ("FPS", Float) = 30.0 _FlipbookScaleOffset ("Scale | Offset", Vector) = (1, 1, 0, 0) _FlipbookSideOffset ("Side Offset ←→↓↑", Vector) = (0, 0, 0, 0) @@ -1125,6 +1206,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" // Flipbook Manual Control [ThryToggleUI(true)]_FlipbookManualFrameControl (" Manual Frame Control", Float) = 0 _FlipbookCurrentFrame ("Current Frame--{ condition_showS:_FlipbookManualFrameControl==1}", Float) = 0 + [ThryToggleUI(true)]_FlipbookStartAndEnd (" Start and End Frames", Float) = 0 + _FlipbookStartFrame ("Start Frame--{ condition_showS:_FlipbookStartAndEnd==1}", Float) = 0 + _FlipbookEndFrame ("End Frame--{ condition_showS:_FlipbookStartAndEnd==1}", Float) = 0 [ThryToggleUI(true)]_FlipbookCrossfadeEnabled (" Crossfade", Float) = 0 [MultiSlider]_FlipbookCrossfadeRange ("Fade Range--{ condition_showS:_FlipbookCrossfadeEnabled==1}", Vector) = (0.75, 1, 0, 1) [ThryToggleUI(true)]_FlipbookHueShiftEnabled (" Hue Shift", Float) = 0 @@ -1804,7 +1888,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" //endex // Rendering Options - [HideInInspector] m_modifierCategory ("UV Modifiers", Float) = 0 + [HideInInspector] m_modifierCategory ("Modifiers", Float) = 0 //ifex _EnableDistortion==0 [HideInInspector] m_start_uvDistortion (" Distortion UV--{reference_property:_EnableDistortion}", Float) = 0 [HideInInspector][ThryToggle(USER_LUT)] _EnableDistortion ("Enabled?", Float) = 0 @@ -1939,13 +2023,31 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" // Stencils [HideInInspector] m_start_StencilPassOptions ("Stencil--{button_help:{text:Tutorial,action:{type:URL,data:https://www.poiyomi.com/rendering/stencil},hover:Documentation}}", Float) = 0 + [ThryWideEnum(Simple, 0, Front Face vs Back Face, 1)] _StencilType ("Stencil Type", Float) = 0 [IntRange] _StencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _StencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _StencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilPassOp ("Stencil Pass Op", Float) = 0 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilFailOp ("Stencil Fail Op", Float) = 0 - [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFailOp ("Stencil ZFail Op", Float) = 0 - [Enum(UnityEngine.Rendering.CompareFunction)] _StencilCompareFunction ("Stencil Compare Function", Float) = 8 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilPassOp ("Stencil Pass Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFailOp ("Stencil Fail Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFailOp ("Stencil ZFail Op--{condition_showS:(_StencilType==0)}", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilCompareFunction ("Stencil Compare Function--{condition_showS:(_StencilType==0)}", Float) = 8 + + [HideInInspector] m_start_StencilPassBackOptions("Back--{condition_showS:(_StencilType==1)}", Float) = 0 + [Helpbox(1)] _FFBFStencilHelp0 ("Front Face and Back Face Stencils only work when locked in due to Unity's Stencil managment", Int) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackPassOp ("Back Pass Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackFailOp ("Back Fail Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilBackZFailOp ("Back ZFail Op", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilBackCompareFunction ("Back Compare Function", Float) = 8 + [HideInInspector] m_end_StencilPassBackOptions("Back", Float) = 0 + + [HideInInspector] m_start_StencilPassFrontOptions("Front--{condition_showS:(_StencilType==1)}", Float) = 0 + [Helpbox(1)] _FFBFStencilHelp1 ("Front Face and Back Face Stencils only work when locked in due to Unity's Stencil managment", Int) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontPassOp ("Front Pass Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontFailOp ("Front Fail Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFrontZFailOp ("Front ZFail Op", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilFrontCompareFunction ("Front Compare Function", Float) = 8 + [HideInInspector] m_end_StencilPassFrontOptions("Front", Float) = 0 + [HideInInspector] m_end_StencilPassOptions ("Stencil", Float) = 0 } @@ -1962,10 +2064,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite [_ZWrite] @@ -1990,7 +2106,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -2072,6 +2188,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -2290,6 +2414,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -2711,6 +2838,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _RedTexture_ST; float2 _RedTexturePan; float _RedTextureUV; + float _RedAlphaAdd; #if defined(PROP_GREENTEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _GreenTexture; @@ -2718,6 +2846,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _GreenTexture_ST; float2 _GreenTexturePan; float _GreenTextureUV; + float _GreenAlphaAdd; #if defined(PROP_BLUETEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _BlueTexture; @@ -2725,6 +2854,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _BlueTexture_ST; float2 _BlueTexturePan; float _BlueTextureUV; + float _BlueAlphaAdd; #if defined(PROP_ALPHATEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _AlphaTexture; @@ -2732,6 +2862,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _AlphaTexture_ST; float2 _AlphaTexturePan; float _AlphaTextureUV; + float _AlphaAlphaAdd; #ifdef GEOM_TYPE_MESH #if defined(PROP_RGBNORMALR) || !defined(OPTIMIZER_ENABLED) @@ -3144,6 +3275,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float2 _ShadowColorTexPan; float _ShadowColorTexUV; #endif + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _MultilayerMathBlurMap; + float4 _MultilayerMathBlurMap_ST; + float2 _MultilayerMathBlurMapPan; + float _MultilayerMathBlurMapUV; + #endif float _ShadowBorder; float _ShadowBlur; float4 _Shadow2ndColor; @@ -3345,6 +3482,100 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #endif //endex + //ifex _Matcap3Enable==0 + #ifdef POI_MATCAP2 + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3; + float4 _Matcap3_ST; + float2 _Matcap3Pan; + float _Matcap3UV; + #endif + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3Mask; + float4 _Matcap3Mask_ST; + float2 _Matcap3MaskPan; + float _Matcap3MaskUV; + #endif + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap2NormalMap; + #endif + float4 _Matcap2NormalMap_ST; + float2 _Matcap2NormalMapPan; + float _Matcap2NormalMapUV; + float _Matcap2NormalMapScale; + #endif + float _Matcap3UVMode; + float _Matcap3MaskInvert; + float _Matcap3Border; + float4 _Matcap3Color; + float _Matcap3ColorThemeIndex; + float _Matcap3Intensity; + float _Matcap3Replace; + float _Matcap3Multiply; + float _Matcap3Add; + float _Matcap3AddToLight; + float _Matcap3Mixed; + float _Matcap3AlphaOverride; + float _Matcap3Enable; + float _Matcap3LightMask; + float _Matcap3EmissionStrength; + float _Matcap3Normal; + float _Matcap3HueShiftEnabled; + float _Matcap3HueShiftSpeed; + float _Matcap3HueShift; + float _Matcap3TPSDepthEnabled; + float _Matcap3TPSMaskStrength; + #endif + //endex + + //ifex _Matcap4Enable==0 + #ifdef POI_MATCAP3 + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4; + float4 _Matcap4_ST; + float2 _Matcap4Pan; + float _Matcap4UV; + #endif + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4Mask; + float4 _Matcap4Mask_ST; + float2 _Matcap4MaskPan; + float _Matcap4MaskUV; + #endif + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3NormalMap; + #endif + float4 _Matcap3NormalMap_ST; + float2 _Matcap3NormalMapPan; + float _Matcap3NormalMapUV; + float _Matcap3NormalMapScale; + #endif + float _Matcap4UVMode; + float _Matcap4MaskInvert; + float _Matcap4Border; + float4 _Matcap4Color; + float _Matcap4ColorThemeIndex; + float _Matcap4Intensity; + float _Matcap4Replace; + float _Matcap4Multiply; + float _Matcap4Add; + float _Matcap4AddToLight; + float _Matcap4Mixed; + float _Matcap4AlphaOverride; + float _Matcap4Enable; + float _Matcap4LightMask; + float _Matcap4EmissionStrength; + float _Matcap4Normal; + float _Matcap4HueShiftEnabled; + float _Matcap4HueShiftSpeed; + float _Matcap4HueShift; + float _Matcap4TPSDepthEnabled; + float _Matcap4TPSMaskStrength; + #endif + //endex + //ifex _CubeMapEnabled==0 #ifdef _CUBEMAP #if defined(PROP_CUBEMAP) || !defined(OPTIMIZER_ENABLED) @@ -3434,12 +3665,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -4447,6 +4681,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -5778,13 +6013,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -5812,6 +6056,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -6649,23 +6921,29 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 alpha = 1; #endif + float4 maskFinal = 1; + maskFinal.r = saturate(rgbMask.r + _RedAlphaAdd) * saturate(red.a * _RedColor.a); + maskFinal.g = saturate(rgbMask.g + _GreenAlphaAdd) * saturate(green.a * _GreenColor.a); + maskFinal.b = saturate(rgbMask.b + _BlueAlphaAdd) * saturate(blue.a * _BlueColor.a); + maskFinal.a = saturate(rgbMask.a + _AlphaAlphaAdd) * saturate(alpha.a * _AlphaColor.a); + //UNITY_BRANCH if (_RGBBlendMultiplicative) { float3 RGBColor = 1; - RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); poiFragData.baseColor *= RGBColor; } else { - poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); } } #endif @@ -7568,21 +7846,26 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #endif #ifdef _LIGHTINGMODE_MULTILAYER_MATH + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + float4 blurMap = POI2D_SAMPLER_PAN(_MultilayerMathBlurMap, _MainTex, poiUV(poiMesh.uv[_MultilayerMathBlurMapUV], _MultilayerMathBlurMap_ST), _MultilayerMathBlurMapPan); + #else + float4 blurMap = 1; + #endif float4 lns = float4(1, 1, 1, 1); if (_LightingMulitlayerNonLinear) { - lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } else { - lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } lns = saturate(lns); float3 indirectColor = 1; @@ -7954,7 +8237,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 void blendMatcap(inout PoiLight poiLight, inout PoiFragData poiFragData, float add, float lightAdd, float multiply, float replace, float mixed, float4 matcapColor, float matcapMask, float emissionStrength, float matcapLightMask #ifdef POI_BLACKLIGHT , uint blackLightMaskIndex @@ -7980,14 +8263,18 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" poiFragData.emission += matcapColor.rgb * emissionStrength * matcapMask * matcapColor.a; } //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) void applyMatcap(inout PoiFragData poiFragData, in PoiCam poiCam, in PoiMesh poiMesh, inout PoiLight poiLight, in PoiMods poiMods) { float4 matcap = 0; float matcapMask = 0; float4 matcap2 = 0; float matcap2Mask = 0; + float4 matcap3 = 0; + float matcap3Mask = 0; + float4 matcap4 = 0; + float matcap4Mask = 0; float2 matcapUV = 0; //endex @@ -8162,7 +8449,179 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" ); #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _Matcap3Enable==0 + // Matcap 3 + #ifdef POI_MATCAP2 + + float3 normal2 = poiMesh.normals[_Matcap3Normal]; + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal2 = calculateNormal(poiMesh.normals[_Matcap3Normal], poiMesh, _Matcap2NormalMap, _Matcap2NormalMap_ST, _Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap3UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal2, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap3Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal2), dot(worldViewUp, normal2)) * _Matcap3Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal2); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap3Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + matcap3 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap3, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap3)) * float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #else + matcap3 = float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #endif + matcap3.rgb *= _Matcap3Intensity; + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + matcap3Mask = POI2D_SAMPLER_PAN(_Matcap3Mask, _MainTex, poiUV(poiMesh.uv[_Matcap3MaskUV], _Matcap3Mask_ST), _Matcap3MaskPan); + #else + matcap3Mask = 1; + #endif + if (_Matcap3MaskInvert) + { + matcap3Mask = 1 - matcap3Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap3TPSDepthEnabled) + { + matcap3Mask = lerp(matcap3Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap3TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap3.a, matcap3Mask * _Matcap3AlphaOverride); + + //UNITY_BRANCH + if (_Matcap3HueShiftEnabled) + { + matcap3.rgb = hueShift(matcap3.rgb, _Matcap3HueShift + _Time.x * _Matcap3HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap3Add, _Matcap3AddToLight, _Matcap3Multiply, _Matcap3Replace, _Matcap3Mixed, matcap3, matcap3Mask, _Matcap3EmissionStrength, _Matcap3LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap3 + #endif + ); + #endif + //endex + //ifex _Matcap4Enable==0 + // Matcap 4 + #ifdef POI_MATCAP3 + + float3 normal3 = poiMesh.normals[_Matcap4Normal]; + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal3 = calculateNormal(poiMesh.normals[_Matcap4Normal], poiMesh, _Matcap3NormalMap, _Matcap3NormalMap_ST, _Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap4UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal3, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap4Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal3), dot(worldViewUp, normal3)) * _Matcap4Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal3); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap4Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + matcap4 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap4, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap4)) * float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #else + matcap4 = float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #endif + matcap4.rgb *= _Matcap4Intensity; + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + matcap4Mask = POI2D_SAMPLER_PAN(_Matcap4Mask, _MainTex, poiUV(poiMesh.uv[_Matcap4MaskUV], _Matcap4Mask_ST), _Matcap4MaskPan); + #else + matcap4Mask = 1; + #endif + if (_Matcap4MaskInvert) + { + matcap4Mask = 1 - matcap4Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap4TPSDepthEnabled) + { + matcap4Mask = lerp(matcap4Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap4TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap4.a, matcap4Mask * _Matcap4AlphaOverride); + + //UNITY_BRANCH + if (_Matcap4HueShiftEnabled) + { + matcap4.rgb = hueShift(matcap4.rgb, _Matcap4HueShift + _Time.x * _Matcap4HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap4Add, _Matcap4AddToLight, _Matcap4Multiply, _Matcap4Replace, _Matcap4Mixed, matcap4, matcap4Mask, _Matcap4EmissionStrength, _Matcap4LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap4 + #endif + ); + #endif + //endex + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 } #endif //endex @@ -8382,16 +8841,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -8401,14 +8874,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -8530,6 +9013,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" } #endif } + void applyLumaGradient(in PoiMods poiMods, inout float3 emissionColor, in float themeIndex, in float nDotV) + { + #ifdef POI_AUDIOLINK + if (poiMods.audioLinkAvailable && poiMods.audioLinkViaLuma && themeIndex >= 5 && themeIndex <= 7) + { + emissionColor = getLumaGradient(themeIndex-5, saturate(1 - nDotV)); + } + #endif + } //endex //ifex _EnableEmission==0 @@ -8587,6 +9079,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" emissionStrength0 *= calculateBlinkingEmission(_EmissiveBlink_Min, _EmissiveBlink_Max, _EmissiveBlink_Velocity, _EmissionBlinkingOffset); } + applyLumaGradient(poiMods, emissionColor0, _EmissionColorThemeIndex, poiLight.nDotV); emissionColor0 = hueShift(emissionColor0, frac(_EmissionHueShift + _EmissionHueShiftSpeed * _Time.x) * _EmissionHueShiftEnabled); #if defined(PROP_EMISSIONMASK) || !defined(OPTIMIZER_ENABLED) @@ -8683,6 +9176,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" emissionStrength1 *= calculateBlinkingEmission(_EmissiveBlink_Min1, _EmissiveBlink_Max1, _EmissiveBlink_Velocity1, _EmissionBlinkingOffset1); } + applyLumaGradient(poiMods, emissionColor1, _EmissionColor1ThemeIndex, poiLight.nDotV); emissionColor1 = hueShift(emissionColor1, frac(_EmissionHueShift1 + _EmissionHueShiftSpeed1 * _Time.x) * _EmissionHueShiftEnabled1); #if defined(PROP_EMISSIONMASK1) || !defined(OPTIMIZER_ENABLED) float emissionMask1 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask1, _MainTex, poiUV(poiMesh.uv[_EmissionMask1UV], _EmissionMask1_ST) + _Time.x * _EmissionMask1Pan); @@ -8767,6 +9261,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" emissionStrength2 *= calculateBlinkingEmission(_EmissiveBlink_Min2, _EmissiveBlink_Max2, _EmissiveBlink_Velocity2, _EmissionBlinkingOffset2); } + applyLumaGradient(poiMods, emissionColor2, _EmissionColor2ThemeIndex, poiLight.nDotV); emissionColor2 = hueShift(emissionColor2, frac(_EmissionHueShift2 + _EmissionHueShiftSpeed2 * _Time.x) * _EmissionHueShiftEnabled2); #if defined(PROP_EMISSIONMASK2) || !defined(OPTIMIZER_ENABLED) float emissionMask2 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask2, _MainTex, poiUV(poiMesh.uv[_EmissionMask2UV], _EmissionMask2_ST) + _Time.x * _EmissionMask2Pan); @@ -8848,6 +9343,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" emissionStrength3 *= calculateBlinkingEmission(_EmissiveBlink_Min3, _EmissiveBlink_Max3, _EmissiveBlink_Velocity3, _EmissionBlinkingOffset3); } + applyLumaGradient(poiMods, emissionColor3, _EmissionColor3ThemeIndex, poiLight.nDotV); emissionColor3 = hueShift(emissionColor3, frac(_EmissionHueShift3 + _EmissionHueShiftSpeed3 * _Time.x) * _EmissionHueShiftEnabled3); #if defined(PROP_EMISSIONMASK3) || !defined(OPTIMIZER_ENABLED) float emissionMask3 = UNITY_SAMPLE_TEX2D_SAMPLER(_EmissionMask3, _MainTex, poiUV(poiMesh.uv[_EmissionMask3UV], _EmissionMask3_ST) + _Time.x * _EmissionMask3Pan); @@ -11171,8 +11667,8 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) applyMatcap(poiFragData, poiCam, poiMesh, poiLight, poiMods); #endif //endex @@ -11372,10 +11868,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite Off @@ -11400,7 +11910,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -11482,6 +11992,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -11699,6 +12217,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -12120,6 +12641,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _RedTexture_ST; float2 _RedTexturePan; float _RedTextureUV; + float _RedAlphaAdd; #if defined(PROP_GREENTEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _GreenTexture; @@ -12127,6 +12649,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _GreenTexture_ST; float2 _GreenTexturePan; float _GreenTextureUV; + float _GreenAlphaAdd; #if defined(PROP_BLUETEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _BlueTexture; @@ -12134,6 +12657,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _BlueTexture_ST; float2 _BlueTexturePan; float _BlueTextureUV; + float _BlueAlphaAdd; #if defined(PROP_ALPHATEXTURE) || !defined(OPTIMIZER_ENABLED) Texture2D _AlphaTexture; @@ -12141,6 +12665,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _AlphaTexture_ST; float2 _AlphaTexturePan; float _AlphaTextureUV; + float _AlphaAlphaAdd; #ifdef GEOM_TYPE_MESH #if defined(PROP_RGBNORMALR) || !defined(OPTIMIZER_ENABLED) @@ -12553,6 +13078,12 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float2 _ShadowColorTexPan; float _ShadowColorTexUV; #endif + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _MultilayerMathBlurMap; + float4 _MultilayerMathBlurMap_ST; + float2 _MultilayerMathBlurMapPan; + float _MultilayerMathBlurMapUV; + #endif float _ShadowBorder; float _ShadowBlur; float4 _Shadow2ndColor; @@ -12754,6 +13285,100 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #endif //endex + //ifex _Matcap3Enable==0 + #ifdef POI_MATCAP2 + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3; + float4 _Matcap3_ST; + float2 _Matcap3Pan; + float _Matcap3UV; + #endif + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3Mask; + float4 _Matcap3Mask_ST; + float2 _Matcap3MaskPan; + float _Matcap3MaskUV; + #endif + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap2NormalMap; + #endif + float4 _Matcap2NormalMap_ST; + float2 _Matcap2NormalMapPan; + float _Matcap2NormalMapUV; + float _Matcap2NormalMapScale; + #endif + float _Matcap3UVMode; + float _Matcap3MaskInvert; + float _Matcap3Border; + float4 _Matcap3Color; + float _Matcap3ColorThemeIndex; + float _Matcap3Intensity; + float _Matcap3Replace; + float _Matcap3Multiply; + float _Matcap3Add; + float _Matcap3AddToLight; + float _Matcap3Mixed; + float _Matcap3AlphaOverride; + float _Matcap3Enable; + float _Matcap3LightMask; + float _Matcap3EmissionStrength; + float _Matcap3Normal; + float _Matcap3HueShiftEnabled; + float _Matcap3HueShiftSpeed; + float _Matcap3HueShift; + float _Matcap3TPSDepthEnabled; + float _Matcap3TPSMaskStrength; + #endif + //endex + + //ifex _Matcap4Enable==0 + #ifdef POI_MATCAP3 + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4; + float4 _Matcap4_ST; + float2 _Matcap4Pan; + float _Matcap4UV; + #endif + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap4Mask; + float4 _Matcap4Mask_ST; + float2 _Matcap4MaskPan; + float _Matcap4MaskUV; + #endif + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + Texture2D _Matcap3NormalMap; + #endif + float4 _Matcap3NormalMap_ST; + float2 _Matcap3NormalMapPan; + float _Matcap3NormalMapUV; + float _Matcap3NormalMapScale; + #endif + float _Matcap4UVMode; + float _Matcap4MaskInvert; + float _Matcap4Border; + float4 _Matcap4Color; + float _Matcap4ColorThemeIndex; + float _Matcap4Intensity; + float _Matcap4Replace; + float _Matcap4Multiply; + float _Matcap4Add; + float _Matcap4AddToLight; + float _Matcap4Mixed; + float _Matcap4AlphaOverride; + float _Matcap4Enable; + float _Matcap4LightMask; + float _Matcap4EmissionStrength; + float _Matcap4Normal; + float _Matcap4HueShiftEnabled; + float _Matcap4HueShiftSpeed; + float _Matcap4HueShift; + float _Matcap4TPSDepthEnabled; + float _Matcap4TPSMaskStrength; + #endif + //endex + //ifex _CubeMapEnabled==0 #ifdef _CUBEMAP #if defined(PROP_CUBEMAP) || !defined(OPTIMIZER_ENABLED) @@ -12843,12 +13468,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -13599,6 +14227,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -14930,13 +15559,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -14964,6 +15602,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -15801,23 +16467,29 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 alpha = 1; #endif + float4 maskFinal = 1; + maskFinal.r = saturate(rgbMask.r + _RedAlphaAdd) * saturate(red.a * _RedColor.a); + maskFinal.g = saturate(rgbMask.g + _GreenAlphaAdd) * saturate(green.a * _GreenColor.a); + maskFinal.b = saturate(rgbMask.b + _BlueAlphaAdd) * saturate(blue.a * _BlueColor.a); + maskFinal.a = saturate(rgbMask.a + _AlphaAlphaAdd) * saturate(alpha.a * _AlphaColor.a); + //UNITY_BRANCH if (_RGBBlendMultiplicative) { float3 RGBColor = 1; - RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + RGBColor = lerp(RGBColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + RGBColor = lerp(RGBColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + RGBColor = lerp(RGBColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + RGBColor = lerp(RGBColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); poiFragData.baseColor *= RGBColor; } else { - poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), rgbMask.r * red.a * _RedColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), rgbMask.g * green.a * _GreenColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), rgbMask.b * blue.a * _BlueColor.a); - poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), rgbMask.a * alpha.a * _AlphaColor.a); + poiFragData.baseColor = lerp(poiFragData.baseColor, red.rgb * poiThemeColor(poiMods, _RedColor.rgb, _RedColorThemeIndex), maskFinal.r); + poiFragData.baseColor = lerp(poiFragData.baseColor, green.rgb * poiThemeColor(poiMods, _GreenColor.rgb, _GreenColorThemeIndex), maskFinal.g); + poiFragData.baseColor = lerp(poiFragData.baseColor, blue.rgb * poiThemeColor(poiMods, _BlueColor.rgb, _BlueColorThemeIndex), maskFinal.b); + poiFragData.baseColor = lerp(poiFragData.baseColor, alpha.rgb * poiThemeColor(poiMods, _AlphaColor.rgb, _AlphaColorThemeIndex), maskFinal.a); } } #endif @@ -16720,21 +17392,26 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #endif #ifdef _LIGHTINGMODE_MULTILAYER_MATH + #if defined(PROP_MULTILAYERMATHBLURMAP) || !defined(OPTIMIZER_ENABLED) + float4 blurMap = POI2D_SAMPLER_PAN(_MultilayerMathBlurMap, _MainTex, poiUV(poiMesh.uv[_MultilayerMathBlurMapUV], _MultilayerMathBlurMap_ST), _MultilayerMathBlurMapPan); + #else + float4 blurMap = 1; + #endif float4 lns = float4(1, 1, 1, 1); if (_LightingMulitlayerNonLinear) { - lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeNonLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } else { - lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur); - lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur); - lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur); - lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur, _ShadowBorderRange); + lns.x = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r); + lns.y = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow2ndBorder, _Shadow2ndBlur * blurMap.g); + lns.z = poiEdgeLinearNoSaturate(poiLight.lightMap, _Shadow3rdBorder, _Shadow3rdBlur * blurMap.b); + lns.w = poiEdgeLinearNoSaturate(poiLight.lightMap, _ShadowBorder, _ShadowBlur * blurMap.r, _ShadowBorderRange); } lns = saturate(lns); float3 indirectColor = 1; @@ -17106,7 +17783,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 void blendMatcap(inout PoiLight poiLight, inout PoiFragData poiFragData, float add, float lightAdd, float multiply, float replace, float mixed, float4 matcapColor, float matcapMask, float emissionStrength, float matcapLightMask #ifdef POI_BLACKLIGHT , uint blackLightMaskIndex @@ -17132,14 +17809,18 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" poiFragData.emission += matcapColor.rgb * emissionStrength * matcapMask * matcapColor.a; } //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) void applyMatcap(inout PoiFragData poiFragData, in PoiCam poiCam, in PoiMesh poiMesh, inout PoiLight poiLight, in PoiMods poiMods) { float4 matcap = 0; float matcapMask = 0; float4 matcap2 = 0; float matcap2Mask = 0; + float4 matcap3 = 0; + float matcap3Mask = 0; + float4 matcap4 = 0; + float matcap4Mask = 0; float2 matcapUV = 0; //endex @@ -17314,7 +17995,179 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" ); #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 + //ifex _Matcap3Enable==0 + // Matcap 3 + #ifdef POI_MATCAP2 + + float3 normal2 = poiMesh.normals[_Matcap3Normal]; + #ifdef POI_MATCAP2_CUSTOM_NORMAL + #if defined(PROP_MATCAP2NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal2 = calculateNormal(poiMesh.normals[_Matcap3Normal], poiMesh, _Matcap2NormalMap, _Matcap2NormalMap_ST, _Matcap2NormalMapPan, _Matcap2NormalMapUV, _Matcap2NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap3UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal2, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap3Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal2), dot(worldViewUp, normal2)) * _Matcap3Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal2); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap3Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP3) || !defined(OPTIMIZER_ENABLED) + matcap3 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap3, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap3)) * float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #else + matcap3 = float4(poiThemeColor(poiMods, _Matcap3Color.rgb, _Matcap3ColorThemeIndex), _Matcap3Color.a); + #endif + matcap3.rgb *= _Matcap3Intensity; + #if defined(PROP_MATCAP3MASK) || !defined(OPTIMIZER_ENABLED) + matcap3Mask = POI2D_SAMPLER_PAN(_Matcap3Mask, _MainTex, poiUV(poiMesh.uv[_Matcap3MaskUV], _Matcap3Mask_ST), _Matcap3MaskPan); + #else + matcap3Mask = 1; + #endif + if (_Matcap3MaskInvert) + { + matcap3Mask = 1 - matcap3Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap3TPSDepthEnabled) + { + matcap3Mask = lerp(matcap3Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap3TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap3.a, matcap3Mask * _Matcap3AlphaOverride); + + //UNITY_BRANCH + if (_Matcap3HueShiftEnabled) + { + matcap3.rgb = hueShift(matcap3.rgb, _Matcap3HueShift + _Time.x * _Matcap3HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap3Add, _Matcap3AddToLight, _Matcap3Multiply, _Matcap3Replace, _Matcap3Mixed, matcap3, matcap3Mask, _Matcap3EmissionStrength, _Matcap3LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap3 + #endif + ); + #endif + //endex + //ifex _Matcap4Enable==0 + // Matcap 4 + #ifdef POI_MATCAP3 + + float3 normal3 = poiMesh.normals[_Matcap4Normal]; + #ifdef POI_MATCAP3_CUSTOM_NORMAL + #if defined(PROP_MATCAP3NORMALMAP) || !defined(OPTIMIZER_ENABLED) + normal3 = calculateNormal(poiMesh.normals[_Matcap4Normal], poiMesh, _Matcap3NormalMap, _Matcap3NormalMap_ST, _Matcap3NormalMapPan, _Matcap3NormalMapUV, _Matcap3NormalMapScale); + #endif + #endif + + matcapUV = 0; + + switch(_Matcap4UVMode) + { + // Normal / UTS + case 0: + { + float3 viewNormal = (mul(UNITY_MATRIX_V, float4(normal3, 0))).rgb; + float3 NormalBlend_MatCapUV_Detail = viewNormal.rgb * float3(-1, -1, 1); + float3 NormalBlend_MatCapUV_Base = (mul(UNITY_MATRIX_V, float4(poiCam.viewDir, 0)).rgb * float3(-1, -1, 1)) + float3(0, 0, 1); + float3 noSknewViewNormal = NormalBlend_MatCapUV_Base * dot(NormalBlend_MatCapUV_Base, NormalBlend_MatCapUV_Detail) / NormalBlend_MatCapUV_Base.b - NormalBlend_MatCapUV_Detail; + + matcapUV = noSknewViewNormal.rg * _Matcap4Border + 0.5; + break; + } + // Top Pinch + case 1: + { + float3 worldViewUp = normalize(float3(0, 1, 0) - poiCam.viewDir * dot(poiCam.viewDir, float3(0, 1, 0))); + float3 worldViewRight = normalize(cross(poiCam.viewDir, worldViewUp)); + matcapUV = float2(dot(worldViewRight, normal3), dot(worldViewUp, normal3)) * _Matcap4Border + 0.5; + break; + } + // Custom Double Sided + case 2: + { + float3 reflection = reflect(-poiCam.viewDir, normal3); + float2 uv = float2(dot(reflection, float3(1, 0, 0)), dot(reflection, float3(0, 1, 0))); + matcapUV = uv * _Matcap4Border + 0.5; + break; + } + } + if (IsInMirror()) + { + matcapUV.x = 1 - matcapUV.x; + } + + #if defined(PROP_MATCAP4) || !defined(OPTIMIZER_ENABLED) + matcap4 = UNITY_SAMPLE_TEX2D_SAMPLER(_Matcap4, _MainTex, TRANSFORM_TEX(matcapUV, _Matcap4)) * float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #else + matcap4 = float4(poiThemeColor(poiMods, _Matcap4Color.rgb, _Matcap4ColorThemeIndex), _Matcap4Color.a); + #endif + matcap4.rgb *= _Matcap4Intensity; + #if defined(PROP_MATCAP4MASK) || !defined(OPTIMIZER_ENABLED) + matcap4Mask = POI2D_SAMPLER_PAN(_Matcap4Mask, _MainTex, poiUV(poiMesh.uv[_Matcap4MaskUV], _Matcap4Mask_ST), _Matcap4MaskPan); + #else + matcap4Mask = 1; + #endif + if (_Matcap4MaskInvert) + { + matcap4Mask = 1 - matcap4Mask; + } + + #ifdef TPS_Penetrator + if (_Matcap4TPSDepthEnabled) + { + matcap4Mask = lerp(matcap4Mask, 1, TPSBufferedDepth(poiMesh.localPos, poiMesh.vertexColor) * _Matcap4TPSMaskStrength); + } + #endif + + poiFragData.alpha *= lerp(1, matcap4.a, matcap4Mask * _Matcap4AlphaOverride); + + //UNITY_BRANCH + if (_Matcap4HueShiftEnabled) + { + matcap4.rgb = hueShift(matcap4.rgb, _Matcap4HueShift + _Time.x * _Matcap4HueShiftSpeed); + } + + blendMatcap(poiLight, poiFragData, _Matcap4Add, _Matcap4AddToLight, _Matcap4Multiply, _Matcap4Replace, _Matcap4Mixed, matcap4, matcap4Mask, _Matcap4EmissionStrength, _Matcap4LightMask + #ifdef POI_BLACKLIGHT + , _BlackLightMaskMatcap4 + #endif + ); + #endif + //endex + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 } #endif //endex @@ -17534,16 +18387,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -17553,14 +18420,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } @@ -19919,8 +20796,8 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #endif //endex - //ifex _MatcapEnable==0 && _Matcap2Enable==0 - #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) + //ifex _MatcapEnable==0 && _Matcap2Enable==0 && _Matcap3Enable==0 && _Matcap4Enable==0 + #if defined(POI_MATCAP0) || defined(COLOR_GRADING_HDR_3D) || defined(POI_MATCAP2) || defined(POI_MATCAP3) applyMatcap(poiFragData, poiCam, poiMesh, poiLight, poiMods); #endif //endex @@ -20084,10 +20961,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" Ref [_StencilRef] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] + //ifex _StencilType == 0 Comp [_StencilCompareFunction] Pass [_StencilPassOp] Fail [_StencilFailOp] ZFail [_StencilZFailOp] + //endex + + //ifex _StencilType == 1 + CompBack [_StencilBackCompareFunction] + PassBack [_StencilBackPassOp] + FailBack [_StencilBackFailOp] + ZFailBack [_StencilBackZFailOp] + + CompFront [_StencilFrontCompareFunction] + PassFront [_StencilFrontPassOp] + FailFront [_StencilFrontFailOp] + ZFailFront [_StencilFrontZFailOp] + //endex } ZWrite [_ZWrite] @@ -20112,7 +21003,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" */ #pragma target 5.0 - #pragma skip_variants DYNAMICLIGHTMAP_ON LIGHTMAP_ON LIGHTMAP_SHADOW_MIXING DIRLIGHTMAP_COMBINED SHADOWS_SHADOWMASK + #pragma skip_variants LIGHTMAP_ON DYNAMICLIGHTMAP_ON LIGHTMAP_SHADOW_MIXING SHADOWS_SHADOWMASK DIRLIGHTMAP_COMBINED _MIXED_LIGHTING_SUBTRACTIVE //ifex _EnableUDIMDiscardOptions==0 #pragma shader_feature_local POI_UDIMDISCARD @@ -20194,6 +21085,14 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" #pragma shader_feature COLOR_GRADING_HDR_3D #pragma shader_feature_local POI_MATCAP1_CUSTOM_NORMAL //endex + //ifex _Matcap3Enable==0 + #pragma shader_feature_local POI_MATCAP2 + #pragma shader_feature_local POI_MATCAP2_CUSTOM_NORMAL + //endex + //ifex _Matcap4Enable==0 + #pragma shader_feature_local POI_MATCAP3 + #pragma shader_feature_local POI_MATCAP3_CUSTOM_NORMAL + //endex //ifex _CubeMapEnabled==0 #pragma shader_feature_local _CUBEMAP @@ -20412,6 +21311,9 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" SamplerState sampler_AudioTexture; #define AudioLinkData(xycoord) _AudioTexture[uint2(xycoord)] #endif + uniform sampler2D _Stored; + uniform float4 _Stored_TexelSize; + #define LumaData(x,y) tex2Dlod(_Stored, float4(x, y, 0, 0)) //endex float _Mode; @@ -20885,12 +21787,15 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float4 _FlipbookColor; float _FlipbookColorThemeIndex; float _FlipbookFPS; - float _FlipbookTotalFrames; + // float _FlipbookTotalFrames; float4 _FlipbookScaleOffset; float4 _FlipbookSideOffset; float _FlipbookTiled; float _FlipbookManualFrameControl; float _FlipbookCurrentFrame; + float _FlipbookStartAndEnd; + float _FlipbookStartFrame; + float _FlipbookEndFrame; float _FlipbookEmissionStrength; float _FlipbookRotation; float _EnableFlipbook; @@ -21077,6 +21982,7 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" float audioLinkAvailable; float audioLinkVersion; float4 audioLinkTexture; + float audioLinkViaLuma; float2 detailMask; float2 backFaceDetailIntensity; float globalEmission; @@ -22408,13 +23314,22 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" return c / max(c.r, max(c.g, c.b)); } + bool LumaIsAvailable() + { + return LumaData(0.629, 0.511).r > 0.9; + } + + float3 getLumaGradient(uint index, float offset) { + return LumaData(0.57 + (index * 0.11) + lerp(0, 0.107, offset), 0.493); + } + void initPoiAudioLink(inout PoiMods poiMods) { - poiMods.audioLinkAvailable = AudioLinkIsAvailable(); - poiMods.audioLinkAvailable *= _AudioLinkAnimToggle; + if (!_AudioLinkAnimToggle) return; - if (poiMods.audioLinkAvailable) + if (AudioLinkIsAvailable()) { + poiMods.audioLinkAvailable = true; poiMods.audioLinkVersion = AudioLinkGetVersion(); poiMods.audioLink.x = AudioLinkData(ALPASS_AUDIOBASS).r; poiMods.audioLink.y = AudioLinkData(ALPASS_AUDIOLOWMIDS).r; @@ -22442,6 +23357,34 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" poiMods.globalColorTheme[9] = AudioLinkData(ALPASS_THEME_COLOR1); poiMods.globalColorTheme[10] = AudioLinkData(ALPASS_THEME_COLOR2); poiMods.globalColorTheme[11] = AudioLinkData(ALPASS_THEME_COLOR3); + return; + } + + if (LumaIsAvailable()) + { + // Gradients: + // 0.570 - 0.677, 0.493 + // 0.680 - 0.788, 0.493 + // 0.791 - 0.898, 0.493 + float4 audioPixel = LumaData(0.578, 0.515); + float audioLows = audioPixel.r; + float audioHighs = audioPixel.g; + float4 zone1 = LumaData(0.856, 0.522); + float4 zone2 = LumaData(0.856, 0.507); + float4 zone3 = LumaData(0.864, 0.522); + float4 zone4 = LumaData(0.864, 0.507); + // float4 lumaEnabledPixel = LumaData(0.629, 0.511); + // float fakeLight = (lumaEnabledPixel.g > 0) ? 1 : (1 - lumaEnabledPixel.r); + + poiMods.audioLinkAvailable = true; + poiMods.audioLinkViaLuma = true; + poiMods.audioLink.xy = audioLows; + poiMods.audioLink.zw = audioHighs; + + poiMods.globalColorTheme[8] = zone1; + poiMods.globalColorTheme[9] = zone2; + poiMods.globalColorTheme[10] = zone3; + poiMods.globalColorTheme[11] = zone4; } } @@ -23429,16 +24372,30 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" } } float currentFrame = 0; + float width; + float height; + float totalFrames; + _FlipbookTexArray.GetDimensions(width, height, totalFrames); + + if (_FlipbookStartAndEnd) + { + totalFrames -= (totalFrames - min(max(_FlipbookStartFrame, _FlipbookEndFrame), totalFrames)); + totalFrames -= max(0, _FlipbookStartFrame); + } if (!_FlipbookManualFrameControl) { if (_FlipbookFPS != 0) { - currentFrame = (_Time.y / (1 / _FlipbookFPS)) % _FlipbookTotalFrames; + currentFrame = (_Time.y / (1 / _FlipbookFPS)) % totalFrames; + if (_FlipbookStartAndEnd) + { + currentFrame += _FlipbookStartFrame; + } } } else { - currentFrame = fmod(_FlipbookCurrentFrame, _FlipbookTotalFrames); + currentFrame = fmod(_FlipbookCurrentFrame, totalFrames); } #ifdef POI_AUDIOLINK if (poiMods.audioLinkAvailable) @@ -23448,14 +24405,24 @@ Shader ".poiyomi/Poiyomi 8.0/Poiyomi Toon" currentFrame += AudioLinkGetChronoTime(_FlipbookChronoType, _FlipbookChronotensityBand) * _FlipbookChronotensitySpeed; } currentFrame += lerp(_AudioLinkFlipbookFrame.x, _AudioLinkFlipbookFrame.y, poiMods.audioLink[_AudioLinkFlipbookFrameBand]); - currentFrame %= _FlipbookTotalFrames; + float totalFramesAL = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesAL += max(0, _FlipbookStartFrame); + } + currentFrame %= totalFramesAL; } #endif flipBookPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor(currentFrame))); UNITY_BRANCH if (_FlipbookCrossfadeEnabled) { - float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % _FlipbookTotalFrames))); + float totalFramesCF = totalFrames; + if (_FlipbookStartAndEnd) + { + totalFramesCF += max(0, _FlipbookStartFrame); + } + float4 flipbookNextPixel = UNITY_SAMPLE_TEX2DARRAY(_FlipbookTexArray, float3(TRANSFORM_TEX(newUV, _FlipbookTexArray) + _Time.x * _FlipbookTexArrayPan, floor((currentFrame + 1) % totalFramesCF))); flipBookPixel = lerp(flipBookPixel, flipbookNextPixel, smoothstep(_FlipbookCrossfadeRange.x, _FlipbookCrossfadeRange.y, frac(currentFrame))); } diff --git a/_PoiyomiShaders/Shaders/Extras/MasterScanner.shader b/_PoiyomiShaders/Shaders/Extras/MasterScanner.shader new file mode 100644 index 00000000..82a1ea79 --- /dev/null +++ b/_PoiyomiShaders/Shaders/Extras/MasterScanner.shader @@ -0,0 +1,62 @@ +Shader ".poiyomi/Extras/MasterScanner" +{ + properties + { + [HideInInspector] m_StencilPassOptions ("Stencil", Float) = 0 + [IntRange] _StencilRef ("Stencil Reference Value", Range(0, 255)) = 0 + //[IntRange] _StencilReadMaskRef ("Stencil ReadMask Value", Range(0, 255)) = 0 + //[IntRange] _StencilWriteMaskRef ("Stencil WriteMask Value", Range(0, 255)) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilPassOp ("Stencil Pass Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilFailOp ("Stencil Fail Op", Float) = 0 + [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFailOp ("Stencil ZFail Op", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilCompareFunction ("Stencil Compare Function", Float) = 8 + } + CustomEditor "ThryEditor" + SubShader + { + + Tags { "Queue" = "background" } + ColorMask 0 + ZWrite Off + Cull Off + ZTest Always + Stencil + { + Ref 901 + Comp Always + Pass Replace + } + + CGINCLUDE + struct appdata + { + float4 vertex: POSITION; + }; + struct v2f + { + float4 pos: SV_POSITION; + }; + v2f vert(appdata v) + { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + return o; + } + half4 frag(v2f i): COLOR + { + return half4(1, 1, 0, 1); + } + ENDCG + + Pass + { + + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + ENDCG + + } + } +} \ No newline at end of file diff --git a/_PoiyomiShaders/Shaders/Extras/MasterScanner.shader.meta b/_PoiyomiShaders/Shaders/Extras/MasterScanner.shader.meta new file mode 100644 index 00000000..72b33770 --- /dev/null +++ b/_PoiyomiShaders/Shaders/Extras/MasterScanner.shader.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: add1d40d10695a24b9e91e172ccb9525 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/_PoiyomiShaders/Textures/Fur/FurHeightMap.gif.meta b/_PoiyomiShaders/Textures/Fur/FurHeightMap.gif.meta index 10f5264a..180fc336 100644 --- a/_PoiyomiShaders/Textures/Fur/FurHeightMap.gif.meta +++ b/_PoiyomiShaders/Textures/Fur/FurHeightMap.gif.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 4936f95df08752e46940d871d9288f05 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,10 +33,10 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 nPOTScale: 1 lightmap: 0 compressionQuality: 50 @@ -57,29 +57,32 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 - textureCompression: 1 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 - textureCompression: 1 + textureCompression: 0 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/Gradient.jpg.meta b/_PoiyomiShaders/Textures/Noise/Gradient.jpg.meta index be19954d..ddd0b2a8 100644 --- a/_PoiyomiShaders/Textures/Noise/Gradient.jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/Gradient.jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: f8f2f125174239f44bbd65262132328c TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -31,12 +31,12 @@ TextureImporter: maxTextureSize: 2048 textureSettings: serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 nPOTScale: 1 lightmap: 0 compressionQuality: 50 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/Gradient2.jpg.meta b/_PoiyomiShaders/Textures/Noise/Gradient2.jpg.meta index 41df2497..77d5a5e1 100644 --- a/_PoiyomiShaders/Textures/Noise/Gradient2.jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/Gradient2.jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: efad3a5f6f0666945bb3a8dd0dc9afe9 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -31,12 +31,12 @@ TextureImporter: maxTextureSize: 2048 textureSettings: serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 nPOTScale: 1 lightmap: 0 compressionQuality: 50 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Abstract2_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Abstract2_Noise.png.meta index 39b46a08..18313c22 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Abstract2_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Abstract2_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 5b4e56cbe10b0ab48ba4a4f8e21be893 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Abstract_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Abstract_Noise.png.meta index 69318cca..b5fbaeaa 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Abstract_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Abstract_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: b60b8211733a76c4b9a4322bfcf0b581 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Blotch_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Blotch_Noise.png.meta index 4a5f239a..b7dbde92 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Blotch_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Blotch_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 3f0ebc93eb910fa4e83d2dbdc92fedb7 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Brick2_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Brick2_Noise.png.meta index 9b91f880..fed02ae9 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Brick2_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Brick2_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: f70e10900053fb44986fb2d3d6bf8454 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Brick_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Brick_Noise.png.meta index e29b84cd..fed2bde6 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Brick_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Brick_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 65cfe9f1e5990e8448929ef8a4b649d4 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Caustic_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Caustic_Noise.png.meta index 5ad74383..5ef1b5d2 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Caustic_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Caustic_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: aded3d8bdb52eb744964762b45920654 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Cell_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Cell_Noise.png.meta index 65e7ed90..fa7ad9c8 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Cell_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Cell_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: d2b08e9dd82d76b4fa5e07bb95ff2196 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Checker_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Checker_Noise.png.meta index 7131e95a..5d5c91eb 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Checker_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Checker_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 41c4dd3ec1abf6e42964db04353440bc TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Cloudy_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Cloudy_Noise.png.meta index 68d491de..971e8cf3 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Cloudy_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Cloudy_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 39587adffa9ad98488e3d4c7c56a92a9 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_InvertedHex_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_InvertedHex_Noise.png.meta index a2dfc36b..ab7624ff 100644 --- a/_PoiyomiShaders/Textures/Noise/T_InvertedHex_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_InvertedHex_Noise.png.meta @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 2 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (1).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (1).jpg.meta index e35b2e7e..159d901f 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (1).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (1).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 39bb96d456be4a84f926ee715e5b626a TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (1).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (1).png.meta index 47da4ef5..9ff02678 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (1).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (1).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 1539e659b3b7d4940b051f702bc0c13e TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (10).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (10).jpg.meta index 6e2d1323..e0e2ba1f 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (10).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (10).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 83350d98782a3f64cb46dd7bb928271c TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (11).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (11).jpg.meta index 26f42a9b..a96aea05 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (11).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (11).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: c2523251ed02cab4f9261d7a4c0678f9 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (12).TGA.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (12).TGA.meta index d6e234e9..22aa05ec 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (12).TGA.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (12).TGA.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 73dcc3a84b09e3146b6194acca5be1fb TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (12).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (12).jpg.meta index cfcb1e51..2da3f3c3 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (12).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (12).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 1b65b9963ccf248489844c4d18ebd6a2 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (13).TGA.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (13).TGA.meta index 0ef99c0b..e1c38847 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (13).TGA.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (13).TGA.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: c0264675a41c58142ac2cd8e1e2c60d8 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (13).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (13).jpg.meta index 239f7ee2..7cae0cdb 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (13).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (13).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 7a5009302aa7c3d44b67e520541750a7 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (14).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (14).jpg.meta index 079fb717..1030295e 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (14).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (14).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: feb2e298e2fdcfc4ea372610bddb4ab4 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (15).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (15).jpg.meta index 7a8f569d..54a16764 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (15).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (15).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 0b021ae2081d45541a752b1d7ad0d570 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (16).TGA.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (16).TGA.meta index bd09531c..25dd0550 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (16).TGA.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (16).TGA.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 588b1cf3457e893429b891d9e309773c TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (16).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (16).jpg.meta index 07f4b7bd..ccd467cd 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (16).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (16).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 948d051b07279294088742d8154223f9 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (17).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (17).jpg.meta index 79f59743..8d843b34 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (17).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (17).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: f09ed133d3c2ea743880f31ed4c4ec60 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (18).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (18).jpg.meta index d83a4c62..b76e7c7f 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (18).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (18).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 7f726d3d09907a74e8ca61caef91350c TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (19).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (19).jpg.meta index 5f37d4eb..4109e046 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (19).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (19).jpg.meta @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (2).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (2).jpg.meta index 61d24876..90af7845 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (2).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (2).jpg.meta @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (2).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (2).png.meta index 202244d2..1c0267a2 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (2).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (2).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 71eb1cadc5880074bb3788081492b75e TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (20).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (20).jpg.meta index 4dbb3f3f..af0633e0 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (20).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (20).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 50407170ac45a6c49a6044f71e0413c3 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (21).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (21).jpg.meta index b9db973e..31583ac8 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (21).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (21).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 1ff8ebef6b28683499c6fa04a4098e70 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (22).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (22).jpg.meta index 2da8b239..50683108 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (22).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (22).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: d2fc7e621ee2eac4b986c465de92c6bf TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (23).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (23).jpg.meta index f3d46a31..44e97952 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (23).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (23).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: ea37624af93d96943b2dd93ab64a1128 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (3).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (3).jpg.meta index ee583193..5e128024 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (3).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (3).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: a43e3197e3af367458fa25637d0ace57 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (4).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (4).jpg.meta index 8e7fdd5f..44da3dfd 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (4).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (4).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 04adfac2018725f43bf17158a3b6991a TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (5).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (5).jpg.meta index 076f668e..0f4d9f55 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (5).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (5).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 68b47bf7b40cbbd4d98fb5edba9c6b08 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (6).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (6).jpg.meta index 0bbfb2e5..56d945fd 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (6).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (6).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 64318b6160916704db4495c99e14d9bb TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (7).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (7).jpg.meta index be42bdbb..85b9318f 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (7).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (7).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 5cd2541f2a58a49439b03b255264c50c TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (8).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (8).jpg.meta index 71db398e..4aeff95a 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (8).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (8).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 8c2ba11c031f30747abe2e9d52d3483d TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (9).TGA.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (9).TGA.meta index 3123e818..a19954a8 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (9).TGA.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (9).TGA.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: a174f25610aa260419d13c28372ca403 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No (9).jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No (9).jpg.meta index a18ac915..2a79c5a0 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No (9).jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No (9).jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: e645408cc6f35154bb09808bc39471b3 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (1).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (1).png.meta index 9703b2bd..2c562809 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (1).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (1).png.meta @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (10).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (10).png.meta index 4366a97a..f7760a8e 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (10).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (10).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 12d2a54817ebe334db38e85a687d9439 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (11).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (11).png.meta index d2bb38fd..865fefb8 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (11).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (11).png.meta @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (12).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (12).png.meta index 6ed43a32..16a5c7d5 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (12).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (12).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 0f65047a52bd6484d968e94f2c6777cb TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (13).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (13).png.meta index 83e5b23f..30134cf4 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (13).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (13).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: abc13b08eb4023448b37a833482f82ff TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (14).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (14).png.meta index 85cf9a10..149a8118 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (14).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (14).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: ea593121750048e49b98c3f20671a5b8 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (15).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (15).png.meta index aa33307e..a84446c2 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (15).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (15).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 2586df9a3b5ce4e4b83b617390ce682c TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (16).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (16).png.meta index 9d780b1a..818bff3d 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (16).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (16).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 0cd62273cab4ce24bade5b72b2e02127 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (17).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (17).png.meta index 8f92e8f2..b6c8d52b 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (17).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (17).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 84cd2c832f417e147879a1b683213016 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (18).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (18).png.meta index 0c37444b..365bcd0e 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (18).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (18).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 69cd5ad91b4778c46ae1cd2a81ed3760 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (2).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (2).png.meta index 28af6940..419960eb 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (2).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (2).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 689a97b4b90b8b94baea6243cdc7a0d6 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (3).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (3).png.meta index 2b93a661..ed322515 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (3).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (3).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 98a08c318257af648b4288a136e3d523 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (4).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (4).png.meta index 3825e1a9..3ca78a76 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (4).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (4).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: fd389a4cbaf52d945b09babc7cce4e91 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (5).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (5).png.meta index d29520be..a6322c8a 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (5).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (5).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: bf57ae9997325ec44af94043bbfce786 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (6).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (6).png.meta index 6962c4e2..ee6c9556 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (6).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (6).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: dc45c2a31dc431b4489192aac5b85cf2 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (7).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (7).png.meta index 215dddd4..b5a292c0 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (7).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (7).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: db2de0fac2c4b2040a6b7807330991ee TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (8).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (8).png.meta index f07793c2..c0c24d8e 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (8).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (8).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 0fa953077ee3b4d49b74e56801a27e77 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (9).png.meta b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (9).png.meta index 944f3840..eaa20fde 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (9).png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Noise_No.png (9).png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: e87e3d84ef8b649469166e2afa88c1c5 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Pattern2_Noise.jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Pattern2_Noise.jpg.meta index cf6b050f..9a613e9f 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Pattern2_Noise.jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Pattern2_Noise.jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 19ddda4f7d303094db07b8fda5037a03 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -31,12 +31,12 @@ TextureImporter: maxTextureSize: 2048 textureSettings: serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 nPOTScale: 1 lightmap: 0 compressionQuality: 50 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Pattern_Noise.jpg.meta b/_PoiyomiShaders/Textures/Noise/T_Pattern_Noise.jpg.meta index b2a97a79..ee978b2e 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Pattern_Noise.jpg.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Pattern_Noise.jpg.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: e0764bbcb1913ce4eb038fe89988a396 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -31,12 +31,12 @@ TextureImporter: maxTextureSize: 2048 textureSettings: serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 nPOTScale: 1 lightmap: 0 compressionQuality: 50 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Sketch_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Sketch_Noise.png.meta index e3069cc4..9d9977c0 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Sketch_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Sketch_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 6bfa05600af138847bc516fd43534e52 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Smudge_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Smudge_Noise.png.meta index a5831f7c..163d9364 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Smudge_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Smudge_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: e90e0fb9119be9b4db37ee3b86de6440 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Vornoi2_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Vornoi2_Noise.png.meta index 7c30e635..49d99712 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Vornoi2_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Vornoi2_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 3e93baabe07c2e443ab3cf659438417c TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Voronoi_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Voronoi_Noise.png.meta index 912f3322..050d3b59 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Voronoi_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Voronoi_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 71c08610deb243144888703479205c12 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_Wiggly_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_Wiggly_Noise.png.meta index 311ddd3e..8156b7f9 100644 --- a/_PoiyomiShaders/Textures/Noise/T_Wiggly_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_Wiggly_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: 8b5a4f787794c584ab3fdb7f40d4ac37 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/_PoiyomiShaders/Textures/Noise/T_ZigZag_Noise.png.meta b/_PoiyomiShaders/Textures/Noise/T_ZigZag_Noise.png.meta index c202d597..2a6890ba 100644 --- a/_PoiyomiShaders/Textures/Noise/T_ZigZag_Noise.png.meta +++ b/_PoiyomiShaders/Textures/Noise/T_ZigZag_Noise.png.meta @@ -1,9 +1,9 @@ fileFormatVersion: 2 guid: ef36503fcb9106a4e982cc94d83685e9 TextureImporter: - fileIDToRecycleName: {} + internalIDToNameTable: [] externalObjects: {} - serializedVersion: 9 + serializedVersion: 11 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -33,7 +33,7 @@ TextureImporter: serializedVersion: 2 filterMode: 1 aniso: 16 - mipBias: -100 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -48,7 +48,7 @@ TextureImporter: spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 + alphaUsage: 0 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 @@ -57,8 +57,9 @@ TextureImporter: maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + applyGammaDecoding: 1 platformSettings: - - serializedVersion: 2 + - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 @@ -69,7 +70,8 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 - - serializedVersion: 2 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 @@ -80,6 +82,7 @@ TextureImporter: allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -87,10 +90,12 @@ TextureImporter: physicsShape: [] bones: [] spriteID: + internalID: 0 vertices: [] indices: edges: [] weights: [] + secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0