diff --git a/Assets/lilToon/Editor/lang.txt b/Assets/lilToon/Editor/lang.txt index eabfedba..4df773c2 100644 --- a/Assets/lilToon/Editor/lang.txt +++ b/Assets/lilToon/Editor/lang.txt @@ -7,6 +7,7 @@ sEditorModePreset Preset プリセット 프리셋 预设 預設 sHelpSimple In this mode, you can easily edit the appearance. 簡単に見た目を編集するモードです。 간단하게 외형을 편집하는 모드입니다. 这种模式进行简单的设置。 這種模式進行簡單的設置。 sHelpAdvanced In this mode, you can make detailed settings for the material. 詳細設定を行うモードです。 상세 설정을 실시하는 모드입니다. 此模式用于进行详细设置。 此模式用於進行詳細設置。 sHelpPreset In this mode, you can easily set up materials from presets. プリセットから一括で設定するモードです。 프리셋에서 일괄로 설정하는 모드입니다. 在这个模式下,你可以很容易地从预设中设置材料。 在這個模式下,你可以很容易地從預設中設置材料。 +sHelpSelectOverlay Currently lilToonOverray is selected. Change to lilToon for normal use. 現在lilToonOverrayが選択されています。通常の用途で使う場合はlilToonに変更してください。 현재 lilToonOverray가 선택되어있습니다.일반 용도에서는 lilToon으로 변경해주세요. 目前正在选择lilToonOverray。如果是通常的用途的话请变更为lilToon。 目前正在選擇lilToonOverray。如果是通常的用途的話請變更為lilToon。 sColor Color 色 색 颜色 顏色 sGamma Gamma ガンマ 감마 伽玛 伽瑪 sHue Hue 色相 색상 色相 色相 @@ -116,6 +117,7 @@ sMainColor Main Color メインカラー 메인 컬러 主色 主色 sMainColor2nd Main Color 2nd メインカラー2nd 메인 컬러 2nd 主色2nd 主色2nd sMainColor3rd Main Color 3rd メインカラー3rd 메인 컬러 3rd 主色3rd 主色3rd sGradationMap Gradation Map グラデーションマップ 그라디언트 맵 渐变映射 漸變映射 +sNotAlphaIsTransparency This texture is not marked as AlphaIsTransparency このテクスチャはAlphaIsTransparencyとして設定されていません 이 텍스처는 Alpha Is Transparency로 설정되어 있지 않습니다 此纹理未被设置为AlphaIsTransparency 此紋理未被設置為AlphaIsTransparency sAlphaMask Alpha Mask アルファマスク 알파 마스크 Alpha蒙版 Alpha蒙版 sAlphaMaskWarnOpaque If you want to use Alpha Mask, you need to change the "Rendering Mode" to Cutout or Transparent. アルファマスクを使う場合は"透過モード"をカットアウトか半透明に変更する必要があります。 알파 마스크를 사용하려면 "Rendering Mode"를 단편 또는 반투명로 변경해야합니다. 如果要使用Alpha蒙版,则需要将“Rendering Mode”更改为镂空或透明。 如果要使用Alpha蒙版,則需要將“Rendering Mode”更改為鏤空或透明。 sAlphaMaskModeNone None None None None None @@ -280,6 +282,7 @@ sNo No いいえ No No No sOK OK OK OK OK OK sCancel Cancel キャンセル Cancel Cancel Cancel sComplete Complete! 完了しました。 Complete! Complete! Complete! +sFixNow Fix Now 自動修正 자동 수정 自动修改 自動修改 sDialogResetUV Reset UV Setting UV設定の初期化 UV 설정 초기화 重置UV设置 重置UV設置 sDialogResetUVMes Are you sure you want to reset UV setting? UV設定を初期化しますか? UV 설정을 초기화 하시겠습니까? 你确定要重置UV设置吗? 你確定要重置UV設置嗎? sDialogCannotBake Cannot run a bake 焼き込みを実行できません 버닝을 실행할 수 없습니다 不能运行烘烤 不能運行烘烤 diff --git a/Assets/lilToon/Editor/lilInspector.cs b/Assets/lilToon/Editor/lilInspector.cs index 7d1ac081..263c1118 100644 --- a/Assets/lilToon/Editor/lilInspector.cs +++ b/Assets/lilToon/Editor/lilInspector.cs @@ -89,8 +89,8 @@ public enum lilRenderPipeline //------------------------------------------------------------------------------------------------------------------------------ // Constant - public const string currentVersionName = "1.1.5"; - public const int currentVersionValue = 9; + public const string currentVersionName = "1.1.6"; + public const int currentVersionValue = 10; public const string boothURL = "https://lilxyzw.booth.pm/"; public const string githubURL = "https://github.com/lilxyzw/lilToon"; @@ -721,6 +721,11 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro SelectEditorMode(); DrawHelpPages(); + if(material.shader.name.Contains("Overlay") && AutoFixHelpBox(GetLoc("sHelpSelectOverlay"))) + { + material.shader = lts; + } + EditorGUILayout.Space(); //------------------------------------------------------------------------------------------------------------------------------ @@ -758,16 +763,16 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUI.indentLevel--; materialEditor.ShaderProperty(cull, sCullModes); EditorGUI.indentLevel++; - if(cull.floatValue == 1.0f) + if(cull.floatValue == 1.0f && AutoFixHelpBox(GetLoc("sHelpCullMode"))) { - EditorGUILayout.HelpBox(GetLoc("sHelpCullMode"),MessageType.Warning); + cull.floatValue = 2.0f; } EditorGUI.indentLevel--; materialEditor.ShaderProperty(zwrite, GetLoc("sZWrite")); EditorGUI.indentLevel++; - if(zwrite.floatValue != 1.0f) + if(zwrite.floatValue != 1.0f && AutoFixHelpBox(GetLoc("sHelpZWrite"))) { - EditorGUILayout.HelpBox(GetLoc("sHelpZWrite"),MessageType.Warning); + zwrite.floatValue = 1.0f; } EditorGUI.indentLevel--; } @@ -934,7 +939,10 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro else materialEditor.ShaderProperty(shadowColor, GetLoc("sShadow1stColor")); if(shaderSetting.LIL_FEATURE_TEX_SHADOW_2ND) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow2ndColor"), GetLoc("sTextureRGBA")), shadow2ndColorTex, shadow2ndColor); else materialEditor.ShaderProperty(shadow2ndColor, GetLoc("sShadow2ndColor")); - if(shadow2ndColor.colorValue.a == 0) EditorGUILayout.HelpBox(GetLoc("sColorAlphaZeroWarn"),MessageType.Warning); + if(shadow2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + shadow2ndColor.colorValue = new Color(shadow2ndColor.colorValue.r, shadow2ndColor.colorValue.g, shadow2ndColor.colorValue.b, 1.0f); + } materialEditor.ShaderProperty(shadowMainStrength, GetLoc("sMainColorPower")); materialEditor.ShaderProperty(shadowBorderColor, GetLoc("sShadowBorderColor")); EditorGUILayout.EndVertical(); @@ -980,7 +988,10 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro { EditorGUILayout.BeginVertical(boxInnerHalf); materialEditor.TexturePropertySingleLine(textureRGBAContent, emissionMap, emissionColor); - if(emissionColor.colorValue.a == 0) EditorGUILayout.HelpBox(GetLoc("sColorAlphaZeroWarn"),MessageType.Warning); + if(emissionColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + emissionColor.colorValue = new Color(emissionColor.colorValue.r, emissionColor.colorValue.g, emissionColor.colorValue.b, 1.0f); + } EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); @@ -995,7 +1006,10 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro { EditorGUILayout.BeginVertical(boxInnerHalf); materialEditor.TexturePropertySingleLine(textureRGBAContent, emission2ndMap, emission2ndColor); - if(emission2ndColor.colorValue.a == 0) EditorGUILayout.HelpBox(GetLoc("sColorAlphaZeroWarn"),MessageType.Warning); + if(emission2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + emission2ndColor.colorValue = new Color(emission2ndColor.colorValue.r, emission2ndColor.colorValue.g, emission2ndColor.colorValue.b, 1.0f); + } EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); @@ -1041,9 +1055,9 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUI.indentLevel--; materialEditor.ShaderProperty(cull, sCullModes); EditorGUI.indentLevel++; - if(cull.floatValue == 1.0f) + if(cull.floatValue == 1.0f && AutoFixHelpBox(GetLoc("sHelpCullMode"))) { - EditorGUILayout.HelpBox(GetLoc("sHelpCullMode"),MessageType.Warning); + cull.floatValue = 2.0f; } if(cull.floatValue <= 1.0f) { @@ -1053,9 +1067,9 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUI.indentLevel--; materialEditor.ShaderProperty(zwrite, GetLoc("sZWrite")); EditorGUI.indentLevel++; - if(zwrite.floatValue != 1.0f) + if(zwrite.floatValue != 1.0f && AutoFixHelpBox(GetLoc("sHelpZWrite"))) { - EditorGUILayout.HelpBox(GetLoc("sHelpZWrite"),MessageType.Warning); + zwrite.floatValue = 1.0f; } EditorGUI.indentLevel--; DrawLine(); @@ -1472,9 +1486,9 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUI.indentLevel--; materialEditor.ShaderProperty(cull, sCullModes); EditorGUI.indentLevel++; - if(cull.floatValue == 1.0f) + if(cull.floatValue == 1.0f && AutoFixHelpBox(GetLoc("sHelpCullMode"))) { - EditorGUILayout.HelpBox(GetLoc("sHelpCullMode"),MessageType.Warning); + cull.floatValue = 2.0f; } if(cull.floatValue <= 1.0f) { @@ -1484,9 +1498,9 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUI.indentLevel--; materialEditor.ShaderProperty(zwrite, GetLoc("sZWrite")); EditorGUI.indentLevel++; - if(zwrite.floatValue != 1.0f) + if(zwrite.floatValue != 1.0f && AutoFixHelpBox(GetLoc("sHelpZWrite"))) { - EditorGUILayout.HelpBox(GetLoc("sHelpZWrite"),MessageType.Warning); + zwrite.floatValue = 1.0f; } EditorGUI.indentLevel--; DrawLine(); @@ -1707,7 +1721,10 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro DrawLine(); if(shaderSetting.LIL_FEATURE_TEX_SHADOW_2ND) materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sShadow2ndColor"), GetLoc("sTextureRGBA")), shadow2ndColorTex, shadow2ndColor); else materialEditor.ShaderProperty(shadow2ndColor, GetLoc("sShadow2ndColor")); - if(shadow2ndColor.colorValue.a == 0) EditorGUILayout.HelpBox(GetLoc("sColorAlphaZeroWarn"),MessageType.Warning); + if(shadow2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + shadow2ndColor.colorValue = new Color(shadow2ndColor.colorValue.r, shadow2ndColor.colorValue.g, shadow2ndColor.colorValue.b, 1.0f); + } materialEditor.ShaderProperty(shadow2ndBorder, GetLoc("sBorder")); materialEditor.ShaderProperty(shadow2ndBlur, GetLoc("sBlur")); DrawLine(); @@ -1739,7 +1756,10 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro { EditorGUILayout.BeginVertical(boxInnerHalf); TextureGUI(materialEditor, ref edSet.isShowEmissionMap, colorRGBAContent, emissionMap, emissionColor, emissionMap_ScrollRotate, shaderSetting.LIL_FEATURE_EMISSION_UV, shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV); - if(emissionColor.colorValue.a == 0) EditorGUILayout.HelpBox(GetLoc("sColorAlphaZeroWarn"),MessageType.Warning); + if(emissionColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + emissionColor.colorValue = new Color(emissionColor.colorValue.r, emissionColor.colorValue.g, emissionColor.colorValue.b, 1.0f); + } DrawLine(); if(shaderSetting.LIL_FEATURE_TEX_EMISSION_MASK) { @@ -1774,7 +1794,10 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro { EditorGUILayout.BeginVertical(boxInnerHalf); TextureGUI(materialEditor, ref edSet.isShowEmission2ndMap, colorRGBAContent, emission2ndMap, emission2ndColor, emission2ndMap_ScrollRotate, shaderSetting.LIL_FEATURE_EMISSION_UV, shaderSetting.LIL_FEATURE_ANIMATE_EMISSION_UV); - if(emission2ndColor.colorValue.a == 0) EditorGUILayout.HelpBox(GetLoc("sColorAlphaZeroWarn"),MessageType.Warning); + if(emission2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + emission2ndColor.colorValue = new Color(emission2ndColor.colorValue.r, emission2ndColor.colorValue.g, emission2ndColor.colorValue.b, 1.0f); + } DrawLine(); if(shaderSetting.LIL_FEATURE_TEX_EMISSION_MASK) { @@ -1881,7 +1904,10 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro materialEditor.ShaderProperty(reflectance, GetLoc("sReflectance")); if(shaderSetting.LIL_FEATURE_TEX_REFLECTION_COLOR) materialEditor.TexturePropertySingleLine(colorRGBAContent, reflectionColorTex, reflectionColor); else materialEditor.ShaderProperty(reflectionColor, GetLoc("sColor")); - if(reflectionColor.colorValue.a == 0) EditorGUILayout.HelpBox(GetLoc("sColorAlphaZeroWarn"),MessageType.Warning); + if(reflectionColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + reflectionColor.colorValue = new Color(reflectionColor.colorValue.r, reflectionColor.colorValue.g, reflectionColor.colorValue.b, 1.0f); + } int specularMode = 0; if(specularToon.floatValue == 0.0f) specularMode = 1; if(specularToon.floatValue == 1.0f) specularMode = 2; @@ -1908,14 +1934,17 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro { EditorGUILayout.BeginVertical(boxInnerHalf); materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sMatCap"), GetLoc("sTextureRGBA")), matcapTex, matcapColor); - if(matcapColor.colorValue.a == 0) EditorGUILayout.HelpBox(GetLoc("sColorAlphaZeroWarn"),MessageType.Warning); + if(matcapColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + matcapColor.colorValue = new Color(matcapColor.colorValue.r, matcapColor.colorValue.g, matcapColor.colorValue.b, 1.0f); + } if(shaderSetting.LIL_FEATURE_TEX_MATCAP_MASK) materialEditor.TexturePropertySingleLine(maskBlendContent, matcapBlendMask, matcapBlend); else materialEditor.ShaderProperty(matcapBlend, GetLoc("sBlend")); materialEditor.ShaderProperty(matcapEnableLighting, GetLoc("sEnableLighting")); materialEditor.ShaderProperty(matcapBlendMode, sBlendModes); - if(matcapEnableLighting.floatValue != 0.0f && matcapBlendMode.floatValue == 3.0f) + if(matcapEnableLighting.floatValue != 0.0f && matcapBlendMode.floatValue == 3.0f && AutoFixHelpBox(GetLoc("sHelpMatCapBlending"))) { - EditorGUILayout.HelpBox(GetLoc("sHelpMatCapBlending"),MessageType.Warning); + matcapEnableLighting.floatValue = 0.0f; } if(isTransparent) materialEditor.ShaderProperty(matcapApplyTransparency, GetLoc("sApplyTransparency")); materialEditor.ShaderProperty(matcapZRotCancel, GetLoc("sMatCapZRotCancel")); @@ -1945,14 +1974,17 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro { EditorGUILayout.BeginVertical(boxInnerHalf); materialEditor.TexturePropertySingleLine(new GUIContent(GetLoc("sMatCap"), GetLoc("sTextureRGBA")), matcap2ndTex, matcap2ndColor); - if(matcap2ndColor.colorValue.a == 0) EditorGUILayout.HelpBox(GetLoc("sColorAlphaZeroWarn"),MessageType.Warning); + if(matcap2ndColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + matcap2ndColor.colorValue = new Color(matcap2ndColor.colorValue.r, matcap2ndColor.colorValue.g, matcap2ndColor.colorValue.b, 1.0f); + } if(shaderSetting.LIL_FEATURE_TEX_MATCAP_MASK) materialEditor.TexturePropertySingleLine(maskBlendContent, matcap2ndBlendMask, matcap2ndBlend); else materialEditor.ShaderProperty(matcap2ndBlend, GetLoc("sBlend")); materialEditor.ShaderProperty(matcap2ndEnableLighting, GetLoc("sEnableLighting")); materialEditor.ShaderProperty(matcap2ndBlendMode, sBlendModes); - if(matcap2ndEnableLighting.floatValue != 0.0f && matcap2ndBlendMode.floatValue == 3.0f) + if(matcap2ndEnableLighting.floatValue != 0.0f && matcap2ndBlendMode.floatValue == 3.0f && AutoFixHelpBox(GetLoc("sHelpMatCapBlending"))) { - EditorGUILayout.HelpBox(GetLoc("sHelpMatCapBlending"),MessageType.Warning); + matcap2ndEnableLighting.floatValue = 0.0f; } if(isTransparent) materialEditor.ShaderProperty(matcap2ndApplyTransparency, GetLoc("sApplyTransparency")); materialEditor.ShaderProperty(matcap2ndZRotCancel, GetLoc("sMatCapZRotCancel")); @@ -1983,7 +2015,10 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro EditorGUILayout.BeginVertical(boxInnerHalf); if(shaderSetting.LIL_FEATURE_TEX_RIMLIGHT_COLOR) materialEditor.TexturePropertySingleLine(colorRGBAContent, rimColorTex, rimColor); else materialEditor.ShaderProperty(rimColor, GetLoc("sColor")); - if(rimColor.colorValue.a == 0) EditorGUILayout.HelpBox(GetLoc("sColorAlphaZeroWarn"),MessageType.Warning); + if(rimColor.colorValue.a == 0 && AutoFixHelpBox(GetLoc("sColorAlphaZeroWarn"))) + { + rimColor.colorValue = new Color(rimColor.colorValue.r, rimColor.colorValue.g, rimColor.colorValue.b, 1.0f); + } materialEditor.ShaderProperty(rimEnableLighting, GetLoc("sEnableLighting")); materialEditor.ShaderProperty(rimShadowMask, GetLoc("sShadowMask")); if(isTransparent) materialEditor.ShaderProperty(rimApplyTransparency, GetLoc("sApplyTransparency")); @@ -3537,10 +3572,16 @@ static void VersionCheck() StreamReader sr = new StreamReader(versionInfoTempPath); string s = sr.ReadToEnd(); sr.Close(); - if(!String.IsNullOrEmpty(s)) + if(!String.IsNullOrEmpty(s) && s.Contains("latest_vertion_name") && s.Contains("latest_vertion_value")) { EditorJsonUtility.FromJsonOverwrite(s,latestVersion); } + else + { + latestVersion.latest_vertion_name = currentVersionName; + latestVersion.latest_vertion_value = currentVersionValue; + return; + } } } @@ -4127,6 +4168,18 @@ static void DrawPreset(Material material) GUILayout.EndHorizontal(); } + static bool AutoFixHelpBox(string message) + { + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label(message, EditorStyles.wordWrappedMiniLabel); + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + bool pressed = GUILayout.Button(GetLoc("sFixNow")); + GUILayout.EndHorizontal(); + EditorGUILayout.EndVertical(); + return pressed; + } + //------------------------------------------------------------------------------------------------------------------------------ // Material Setup public static void SetupMaterialWithRenderingMode(Material material, RenderingMode renderingMode, bool isoutl, bool islite, bool isstencil, bool istess) @@ -4252,7 +4305,7 @@ public static void SetupMaterialWithRenderingMode(Material material, RenderingMo { material.SetInt("_OutlineCull", 1); material.SetInt("_OutlineZWrite", 1); - material.SetInt("_OutlineZTest", 4); + material.SetInt("_OutlineZTest", 2); material.SetFloat("_OutlineOffsetFactor", 0.0f); material.SetFloat("_OutlineOffsetUnits", 0.0f); material.SetInt("_OutlineColorMask", 15); @@ -5393,19 +5446,13 @@ void SetAlphaIsTransparencyGUI(MaterialProperty tex) { if(tex.textureValue != null && !((Texture2D)tex.textureValue).alphaIsTransparency) { - EditorGUILayout.BeginVertical(EditorStyles.helpBox); - GUILayout.Label("This texture is not marked as AlphaIsTransparency", EditorStyles.wordWrappedMiniLabel); - GUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - if(GUILayout.Button("Fix Now")) + if(AutoFixHelpBox(GetLoc("sNotAlphaIsTransparency"))) { string path = AssetDatabase.GetAssetPath(tex.textureValue); TextureImporter textureImporter = (TextureImporter)TextureImporter.GetAtPath(path); textureImporter.alphaIsTransparency = true; AssetDatabase.ImportAsset(path); } - GUILayout.EndHorizontal(); - EditorGUILayout.EndVertical(); } } diff --git a/Assets/lilToon/README.md b/Assets/lilToon/README.md index 0143e9b7..591869a1 100644 --- a/Assets/lilToon/README.md +++ b/Assets/lilToon/README.md @@ -1,5 +1,5 @@ # lilToon -Version 1.1.5 +Version 1.1.6 # Overview This shader is developed for services using avatars (VRChat, etc.) and has the following features. @@ -130,6 +130,10 @@ Comparing parameters when implementing `Convert to MToon (VRM)` - [視差オクルージョンマッピング(parallax occlution mapping) (コポコポ)](https://coposuke.hateblo.jp/entry/2019/01/20/043042) # Change log +## v1.1.6 +- Changed the default value of ZTest in outline from LessEqual to Less +- Fixed an issue where shadows were weakened when using `Lower brightness limit` +- Added `Fix Now` button to help box ## v1.1.5 - Added `When in trouble...` - Improved transparency processing diff --git a/Assets/lilToon/README_JP.md b/Assets/lilToon/README_JP.md index 0cd3c41f..c3e5b768 100644 --- a/Assets/lilToon/README_JP.md +++ b/Assets/lilToon/README_JP.md @@ -1,5 +1,5 @@ # lilToon -Version 1.1.5 +Version 1.1.6 # 概要 アバターを用いたサービス(VRChat等)向けに開発したシェーダーで以下のような特徴があります。 @@ -130,6 +130,10 @@ VRChatのワールド: - [視差オクルージョンマッピング(parallax occlution mapping) (コポコポ)](https://coposuke.hateblo.jp/entry/2019/01/20/043042) # 変更履歴 +## v1.1.6 +- ヘルプボックスに自動修正ボタンを追加 +- 明るさの下限設定で影が弱くなる問題の修正 +- 輪郭線のZTestのデフォルト値をLessEqualからLessに変更 ## v1.1.5 - `困ったときは…`を追加 - 透過処理を改善 diff --git a/Assets/lilToon/Shader/Includes/lil_fur_fragment.hlsl b/Assets/lilToon/Shader/Includes/lil_fur_fragment.hlsl index a30ca371..62d67c73 100644 --- a/Assets/lilToon/Shader/Includes/lil_fur_fragment.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_fur_fragment.hlsl @@ -11,9 +11,9 @@ float4 frag(g2f input) : SV_Target LIL_GET_VERTEXLIGHT(input, vertexLightColor); LIL_GET_ADDITIONALLIGHT(input.positionWS, additionalLightColor); #if !defined(LIL_PASS_FORWARDADD) + lightColor = max(lightColor, _LightMinLimit); lightColor = lerp(lightColor, 1.0, _AsUnlit); - vertexLightColor = lerp(vertexLightColor, 0.0, _AsUnlit); - additionalLightColor = lerp(additionalLightColor, 0.0, _AsUnlit); + float3 addLightColor = lerp(vertexLightColor + additionalLightColor, 0.0, _AsUnlit); #else lightColor = lerp(lightColor, 0.0, _AsUnlit); #endif @@ -72,9 +72,8 @@ float4 frag(g2f input) : SV_Target #else col.rgb *= lightColor; #endif - col.rgb += albedo * (vertexLightColor + additionalLightColor); + col.rgb += albedo * addLightColor; col.rgb = min(col.rgb, albedo); - col.rgb = max(col.rgb, albedo * _LightMinLimit); #else col.rgb *= lightColor; #endif diff --git a/Assets/lilToon/Shader/Includes/lil_lite_fragment.hlsl b/Assets/lilToon/Shader/Includes/lil_lite_fragment.hlsl index 4e139ffe..556045ff 100644 --- a/Assets/lilToon/Shader/Includes/lil_lite_fragment.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_lite_fragment.hlsl @@ -11,9 +11,9 @@ float4 frag(v2f input, float facing : VFACE) : SV_Target LIL_GET_VERTEXLIGHT(input, vertexLightColor); LIL_GET_ADDITIONALLIGHT(input.positionWS, additionalLightColor); #if !defined(LIL_PASS_FORWARDADD) + lightColor = max(lightColor, _LightMinLimit); lightColor = lerp(lightColor, 1.0, _AsUnlit); - vertexLightColor = lerp(vertexLightColor, 0.0, _AsUnlit); - additionalLightColor = lerp(additionalLightColor, 0.0, _AsUnlit); + float3 addLightColor = lerp(vertexLightColor + additionalLightColor, 0.0, _AsUnlit); #else lightColor = lerp(lightColor, 0.0, _AsUnlit); #endif @@ -48,8 +48,7 @@ float4 frag(v2f input, float facing : VFACE) : SV_Target //---------------------------------------------------------------------------------------------------------------------- // Lighting - col.rgb = lerp(col.rgb, col.rgb * saturate(lightColor + vertexLightColor + additionalLightColor), _OutlineEnableLighting); - col.rgb = max(col.rgb, albedo * _LightMinLimit); + col.rgb = lerp(col.rgb, col.rgb * saturate(lightColor + addLightColor), _OutlineEnableLighting); #else //---------------------------------------------------------------------------------------------------------------------- // UV @@ -98,18 +97,13 @@ float4 frag(v2f input, float facing : VFACE) : SV_Target float shadowmix = 1.0; lilGetShadingLite(col, shadowmix, albedo, lightColor, uvMain, facing, normalDirection, lightDirection, sampler_MainTex); - lightColor += vertexLightColor; - shadowmix += lilLuminance(vertexLightColor); - col.rgb += albedo * vertexLightColor; - - lightColor += additionalLightColor; - shadowmix += lilLuminance(additionalLightColor); - col.rgb += albedo * additionalLightColor; + lightColor += addLightColor; + shadowmix += lilLuminance(addLightColor); + col.rgb += albedo * addLightColor; lightColor = saturate(lightColor); shadowmix = saturate(shadowmix); col.rgb = min(col.rgb, albedo); - col.rgb = max(col.rgb, albedo * _LightMinLimit); #else col.rgb *= lightColor; #endif diff --git a/Assets/lilToon/Shader/Includes/lil_normal_fragment.hlsl b/Assets/lilToon/Shader/Includes/lil_normal_fragment.hlsl index 79337862..bef82e94 100644 --- a/Assets/lilToon/Shader/Includes/lil_normal_fragment.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_normal_fragment.hlsl @@ -11,9 +11,9 @@ float4 frag(v2f input, float facing : VFACE) : SV_Target LIL_GET_VERTEXLIGHT(input, vertexLightColor); LIL_GET_ADDITIONALLIGHT(input.positionWS, additionalLightColor); #if !defined(LIL_PASS_FORWARDADD) + lightColor = max(lightColor, _LightMinLimit); lightColor = lerp(lightColor, 1.0, _AsUnlit); - vertexLightColor = lerp(vertexLightColor, 0.0, _AsUnlit); - additionalLightColor = lerp(additionalLightColor, 0.0, _AsUnlit); + float3 addLightColor = lerp(vertexLightColor + additionalLightColor, 0.0, _AsUnlit); #else lightColor = lerp(lightColor, 0.0, _AsUnlit); #endif @@ -105,8 +105,7 @@ float4 frag(v2f input, float facing : VFACE) : SV_Target //---------------------------------------------------------------------------------------------------------------------- // Lighting - col.rgb = lerp(col.rgb, col.rgb * saturate(lightColor + vertexLightColor + additionalLightColor), _OutlineEnableLighting); - col.rgb = max(col.rgb, albedo * _LightMinLimit); + col.rgb = lerp(col.rgb, col.rgb * saturate(lightColor + addLightColor), _OutlineEnableLighting); #elif defined(LIL_FUR) //-------------------------------------------------------------------------------------------------------------------------- // UV @@ -152,10 +151,11 @@ float4 frag(v2f input, float facing : VFACE) : SV_Target normalDirection = facing < (_FlipNormal-1.0) ? -normalDirection : normalDirection; float shadowmix = 1.0; lilGetShading(col, shadowmix, albedo, lightColor, uvMain, facing, normalDirection, 1, lightDirection, sampler_MainTex); + #else + col.rgb *= lightColor; #endif - col.rgb += albedo * vertexLightColor + albedo * additionalLightColor; + col.rgb += albedo * addLightColor; col.rgb = min(col.rgb, albedo); - col.rgb = max(col.rgb, albedo * _LightMinLimit); #else col.rgb *= lightColor; // Premultiply for ForwardAdd @@ -535,18 +535,13 @@ float4 frag(v2f input, float facing : VFACE) : SV_Target col.rgb *= lightColor; #endif - lightColor += vertexLightColor; - shadowmix += lilLuminance(vertexLightColor); - col.rgb += albedo * vertexLightColor; - - lightColor += additionalLightColor; - shadowmix += lilLuminance(additionalLightColor); - col.rgb += albedo * additionalLightColor; + lightColor += addLightColor; + shadowmix += lilLuminance(addLightColor); + col.rgb += albedo * addLightColor; lightColor = saturate(lightColor); shadowmix = saturate(shadowmix); col.rgb = min(col.rgb, albedo); - col.rgb = max(col.rgb, albedo * _LightMinLimit); #if defined(LIL_FEATURE_MAIN2ND) if(_UseMain2ndTex) col.rgb = lilBlendColor(col.rgb, color2nd.rgb, color2nd.a - color2nd.a * _Main2ndEnableLighting, _Main2ndTexBlendMode); diff --git a/Assets/lilToon/Shader/Includes/lil_pass_shadowcaster.hlsl b/Assets/lilToon/Shader/Includes/lil_pass_shadowcaster.hlsl index 0f31074c..a97825ff 100644 --- a/Assets/lilToon/Shader/Includes/lil_pass_shadowcaster.hlsl +++ b/Assets/lilToon/Shader/Includes/lil_pass_shadowcaster.hlsl @@ -19,7 +19,7 @@ struct v2f { LIL_V2F_SHADOW_CASTER #if LIL_RENDER > 0 - float2 uv : TEXCOORD0; + float2 uv : TEXCOORD1; #endif UNITY_VERTEX_INPUT_INSTANCE_ID UNITY_VERTEX_OUTPUT_STEREO diff --git a/Assets/lilToon/Shader/lts_cutout_o.shader b/Assets/lilToon/Shader/lts_cutout_o.shader index 049fc34f..f3ba8695 100644 --- a/Assets/lilToon/Shader/lts_cutout_o.shader +++ b/Assets/lilToon/Shader/lts_cutout_o.shader @@ -352,7 +352,7 @@ Shader "Hidden/lilToonCutoutOutline" [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpFA ("ForwardAdd BlendOp", Int) = 4 [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpAlphaFA ("ForwardAdd BlendOpAlpha", Int) = 4 [lilToggle] _OutlineZWrite ("ZWrite", Int) = 1 - [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 4 + [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 2 [IntRange] _OutlineStencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _OutlineStencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _OutlineStencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 diff --git a/Assets/lilToon/Shader/lts_o.shader b/Assets/lilToon/Shader/lts_o.shader index 56c48102..fbe129ab 100644 --- a/Assets/lilToon/Shader/lts_o.shader +++ b/Assets/lilToon/Shader/lts_o.shader @@ -352,7 +352,7 @@ Shader "Hidden/lilToonOutline" [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpFA ("ForwardAdd BlendOp", Int) = 4 [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpAlphaFA ("ForwardAdd BlendOpAlpha", Int) = 4 [lilToggle] _OutlineZWrite ("ZWrite", Int) = 1 - [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 4 + [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 2 [IntRange] _OutlineStencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _OutlineStencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _OutlineStencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 diff --git a/Assets/lilToon/Shader/lts_tess_cutout_o.shader b/Assets/lilToon/Shader/lts_tess_cutout_o.shader index a85c62f5..9cda4dfa 100644 --- a/Assets/lilToon/Shader/lts_tess_cutout_o.shader +++ b/Assets/lilToon/Shader/lts_tess_cutout_o.shader @@ -359,7 +359,7 @@ Shader "Hidden/lilToonTessellationCutoutOutline" [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpFA ("ForwardAdd BlendOp", Int) = 4 [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpAlphaFA ("ForwardAdd BlendOpAlpha", Int) = 4 [lilToggle] _OutlineZWrite ("ZWrite", Int) = 1 - [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 4 + [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 2 [IntRange] _OutlineStencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _OutlineStencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _OutlineStencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 diff --git a/Assets/lilToon/Shader/lts_tess_o.shader b/Assets/lilToon/Shader/lts_tess_o.shader index db447272..359de208 100644 --- a/Assets/lilToon/Shader/lts_tess_o.shader +++ b/Assets/lilToon/Shader/lts_tess_o.shader @@ -359,7 +359,7 @@ Shader "Hidden/lilToonTessellationOutline" [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpFA ("ForwardAdd BlendOp", Int) = 4 [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpAlphaFA ("ForwardAdd BlendOpAlpha", Int) = 4 [lilToggle] _OutlineZWrite ("ZWrite", Int) = 1 - [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 4 + [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 2 [IntRange] _OutlineStencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _OutlineStencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _OutlineStencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 diff --git a/Assets/lilToon/Shader/lts_tess_trans_o.shader b/Assets/lilToon/Shader/lts_tess_trans_o.shader index 7c6e08cc..1512c3b7 100644 --- a/Assets/lilToon/Shader/lts_tess_trans_o.shader +++ b/Assets/lilToon/Shader/lts_tess_trans_o.shader @@ -359,7 +359,7 @@ Shader "Hidden/lilToonTessellationTransparentOutline" [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpFA ("ForwardAdd BlendOp", Int) = 4 [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpAlphaFA ("ForwardAdd BlendOpAlpha", Int) = 4 [lilToggle] _OutlineZWrite ("ZWrite", Int) = 1 - [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 4 + [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 2 [IntRange] _OutlineStencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _OutlineStencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _OutlineStencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 diff --git a/Assets/lilToon/Shader/lts_trans_o.shader b/Assets/lilToon/Shader/lts_trans_o.shader index 211b1b72..bbc9344c 100644 --- a/Assets/lilToon/Shader/lts_trans_o.shader +++ b/Assets/lilToon/Shader/lts_trans_o.shader @@ -352,7 +352,7 @@ Shader "Hidden/lilToonTransparentOutline" [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpFA ("ForwardAdd BlendOp", Int) = 4 [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpAlphaFA ("ForwardAdd BlendOpAlpha", Int) = 4 [lilToggle] _OutlineZWrite ("ZWrite", Int) = 1 - [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 4 + [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 2 [IntRange] _OutlineStencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _OutlineStencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _OutlineStencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 diff --git a/Assets/lilToon/Shader/ltsl_cutout_o.shader b/Assets/lilToon/Shader/ltsl_cutout_o.shader index 756d2e64..c62da89a 100644 --- a/Assets/lilToon/Shader/ltsl_cutout_o.shader +++ b/Assets/lilToon/Shader/ltsl_cutout_o.shader @@ -111,7 +111,7 @@ Shader "Hidden/lilToonLiteCutoutOutline" [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpFA ("ForwardAdd BlendOp", Int) = 4 [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpAlphaFA ("ForwardAdd BlendOpAlpha", Int) = 4 [lilToggle] _OutlineZWrite ("ZWrite", Int) = 1 - [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 4 + [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 2 [IntRange] _OutlineStencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _OutlineStencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _OutlineStencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 diff --git a/Assets/lilToon/Shader/ltsl_o.shader b/Assets/lilToon/Shader/ltsl_o.shader index 86020e09..a064784a 100644 --- a/Assets/lilToon/Shader/ltsl_o.shader +++ b/Assets/lilToon/Shader/ltsl_o.shader @@ -111,7 +111,7 @@ Shader "Hidden/lilToonLiteOutline" [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpFA ("ForwardAdd BlendOp", Int) = 4 [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpAlphaFA ("ForwardAdd BlendOpAlpha", Int) = 4 [lilToggle] _OutlineZWrite ("ZWrite", Int) = 1 - [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 4 + [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 2 [IntRange] _OutlineStencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _OutlineStencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _OutlineStencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 diff --git a/Assets/lilToon/Shader/ltsl_trans_o.shader b/Assets/lilToon/Shader/ltsl_trans_o.shader index b70ab152..fdd7ef45 100644 --- a/Assets/lilToon/Shader/ltsl_trans_o.shader +++ b/Assets/lilToon/Shader/ltsl_trans_o.shader @@ -111,7 +111,7 @@ Shader "Hidden/lilToonLiteTransparentOutline" [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpFA ("ForwardAdd BlendOp", Int) = 4 [Enum(UnityEngine.Rendering.BlendOp)] _OutlineBlendOpAlphaFA ("ForwardAdd BlendOpAlpha", Int) = 4 [lilToggle] _OutlineZWrite ("ZWrite", Int) = 1 - [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 4 + [Enum(UnityEngine.Rendering.CompareFunction)] _OutlineZTest ("ZTest", Int) = 2 [IntRange] _OutlineStencilRef ("Stencil Reference Value", Range(0, 255)) = 0 [IntRange] _OutlineStencilReadMask ("Stencil ReadMask Value", Range(0, 255)) = 255 [IntRange] _OutlineStencilWriteMask ("Stencil WriteMask Value", Range(0, 255)) = 255 diff --git a/Assets/lilToon/package.json b/Assets/lilToon/package.json index e8c22fa0..f0a848ae 100644 --- a/Assets/lilToon/package.json +++ b/Assets/lilToon/package.json @@ -1,7 +1,7 @@ { "name": "jp.lilxyzw.liltoon", "displayName": "lilToon", - "version": "1.1.5", + "version": "1.1.6", "unity": "2017.1", "description": "Feature-rich toon shader.", "keywords": ["Toon", "Shader", "Material"], diff --git a/version.json b/version.json index 0a99675f..afdebbf3 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{"latest_vertion_name": "1.1.5", "latest_vertion_value": 9} \ No newline at end of file +{"latest_vertion_name": "1.1.6", "latest_vertion_value": 10} \ No newline at end of file