Skip to content

Commit

Permalink
Merge pull request #240 from Azukimochi/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
Azukimochi authored Sep 26, 2024
2 parents 92621c7 + 5f9f84f commit 065dd53
Show file tree
Hide file tree
Showing 8 changed files with 165 additions and 7 deletions.
59 changes: 59 additions & 0 deletions Editor/Localization.cs
Original file line number Diff line number Diff line change
Expand Up @@ -904,6 +904,40 @@ 이 기능은 실행 시 비파괴로 머티리얼 텍스처를 변경하기 때
머티리얼 색이 이상해진 경우에는 이 기능을 사용하지 말고, 제작자에게 버그 리포트를 부탁드립니다."
}
},

{
"NDMF.hint.useColorTemporSaturation", new[]
{
@"In the case of lilToon, you can reduce the increase in texture memory by baking the texture in advance.
You can also significantly reduce the increase in texture memory by atlasing using TexTransTool.",
@"lilToonの場合は、事前にテクスチャの焼き込みを行うことで、テクスチャメモリの増加を低減することができます。
また、TexTransToolを用いてアトラス化を行うことでも、テクスチャメモリの増加を大幅に低減することができます。",
@"對於lilToon來說,可以透過提前燒錄紋理來減少紋理記憶體的增加。
另外,透過使用TexTransTool進行圖集,可以顯著減少紋理記憶體的增加。 ",
@"对于lilToon来说,可以通过提前烧录纹理来减少纹理内存的增加。
另外,通过使用TexTransTool进行图集,可以显着减少纹理内存的增加。",
@"lilToon의 경우, 사전에 텍스처를 태워서 텍스처 메모리의 증가를 줄일 수 있습니다.
또한 TexTransTool을 사용하여 아틀라스화를 수행하면 텍스처 메모리의 증가를 크게 줄일 수 있습니다. ",
}
},

{
// `{0}` is replaced by the number of items detected
"NDMF.info.mixedShader", new[]
{
@"Excluded or unsupported shaders are used within {0} objects.
This may cause unrelated properties to be modified by the animation.",
@"{0}個のオブジェクト(レンダラー)内で除外されている、または対応していないシェーダーが使用されています。
これにより、アニメーションによって関係のないプロパティが変更されてしまう可能性があります。",
@"{0} 物件(渲染器)中使用了排除或不支援的著色器。
這可能會導致動畫更改不相關的屬性。",
@"{0} 对象(渲染器)中使用了排除或不受支持的着色器。
这可能会导致动画更改不相关的属性。",
@"{0}개의 객체(렌더러) 내에서 제외되거나 해당되지 않는 셰이더가 사용됩니다.
이로 인해 애니메이션이 관련되지 않은 속성을 변경할 수 있습니다."
}
},

{
"NDMF.info.poiyomi_old_version", new[]
{
Expand Down Expand Up @@ -934,6 +968,31 @@ 최신 버전의 Poiyomi Shader로 업데이트 해야 기능을 정상적으로
만약 의도한 상황이 아닌 경우, 설정을 확인해 주세요."
}
},
{
"NDMF.hint.non_generated", new []
{
@"Only lilToon/Poiyomi/Sunao shaders are supported.
If you use any other shader, animations will not be generated.
If you are building for Quest, Quest shaders are not supported, so it is normal for this error to appear.",
@"サポートシェーダーはlilToon/Poiyomi/Sunaoシェーダーのみです。
これ以外のシェーダーを使用している場合には、アニメーションが生成されません。
Quest向けのビルドの場合、Questシェーダーはサポートされていないので、このエラーがでることは正常です。",
@"唯一支援的著色器是 lilToon/Poiyomi/Sunao 著色器。
如果您使用任何其他著色器,則不會產生動畫。
為 Quest 建置時,此錯誤是正常的,因為不支援 Quest 著色器。",
@"唯一支持的着色器是 lilToon/Poiyomi/Sunao 着色器。
如果您使用任何其他着色器,则不会生成动画。
为 Quest 构建时,此错误是正常的,因为不支持 Quest 着色器。",
@"지원 셰이더는 lilToon/Poiyomi/Sunao 셰이더뿐입니다.
다른 셰이더를 사용하는 경우 애니메이션이 생성되지 않습니다.
Quest용 빌드의 경우 Quest 셰이더가 지원되지 않으므로 이 오류가 발생하는 것이 정상입니다. ",
}
},

/////////////////////////////////////////////////
// ExpressionMenu
Expand Down
25 changes: 21 additions & 4 deletions Editor/NDMF/ErrorMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,35 @@ public class ErrorMessage : SimpleError
{
public ErrorMessage(string titleKey, ErrorSeverity severity)
{


TitleKey = titleKey;
Severity = severity;
Localizer = new Localizer("en-US", () => new List<(string, Func<string, string>)>
{
("en-US", key => Localization.S(key, 0)),
("ja-JP", key => Localization.S(key, 1)),
("zh-Hant", key => Localization.S(key, 2)),
("zh-Hans", key => Localization.S(key, 3)),
("ko-KR", key => Localization.S(key, 4))
});
}
public ErrorMessage(string titleKey, string hintKey, ErrorSeverity severity)
{
TitleKey = titleKey;
Severity = severity;
HintKey = hintKey;
Localizer = new Localizer("en-US", () => new List<(string, Func<string, string>)>
{
("en-US", key => Localization.S(key,0)),
("ja-JP", key => Localization.S(key,1)),
("zh-Hant", key => Localization.S(key,2))
("en-US", key => Localization.S(key, 0)),
("ja-JP", key => Localization.S(key, 1)),
("zh-Hant", key => Localization.S(key, 2)),
("zh-Hans", key => Localization.S(key, 3)),
("ko-KR", key => Localization.S(key, 4))
});
}
public override Localizer Localizer { get; }
public override string TitleKey { get; }
public override ErrorSeverity Severity { get; }
public override string HintKey { get; }
}
}
70 changes: 70 additions & 0 deletions Editor/NDMF/Passes.CheckMixedShadersPass.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
using System.Collections.Generic;
using System.Linq;
using nadena.dev.ndmf;
using UnityEngine;

namespace io.github.azukimochi
{
internal static partial class Passes
{
internal sealed class CheckMixedShadersPass : LightLimitChangerBasePass<CheckMixedShadersPass>
{
protected override void Execute(BuildContext context, Session session, LightLimitChangerObjectCache cache)
{
var renderers = new List<(Renderer Renderer, Material Material)>();
foreach(var renderer in session.TargetRenderers)
{
if (renderer == null)
continue;

var materials = renderer.sharedMaterials;
if (materials.Length < 2)
continue;

for (int i = 0; i < materials.Length; i++)
{
var material = materials[i];
// 対象レンダラー内に対象じゃないマテリアルが存在している?🤔
if (!ShaderInfo.TryGetShaderInfo(material, out var shaderInfo) || !session.Parameters.TargetShaders.Contains(shaderInfo.Name))
{
renderers.Add((renderer, material));
break;
}
}
}

if (renderers.Count == 0)
return;

ErrorReport.ReportError(new CustomMessage(
string.Join("\n", renderers.Select(x => $"{x.Renderer.name} --> {x.Material.name}")),
ErrorSeverity.NonFatal,
renderers.Count));
}

internal sealed class CustomMessage : ErrorMessage
{
private readonly int count;

public CustomMessage(string details, ErrorSeverity severity, int count) : base("NDMF.info.mixedShader", severity)
{
DetailsKey = details;
this.count = count;
}

public override string FormatTitle()
{
var result = base.FormatTitle();
if (string.IsNullOrEmpty(result))
return result;

return string.Format(base.FormatTitle(), count);
}

public override string DetailsKey { get; }

public override string FormatDetails() => DetailsKey;
}
}
}
}
11 changes: 11 additions & 0 deletions Editor/NDMF/Passes.CheckMixedShadersPass.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Editor/NDMF/Passes.CollectTargetRenderersPass.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ protected override void Execute(BuildContext context, Session session, LightLimi

if (list.Count == 0)
{
IError error = new ErrorMessage("NDMF.info.non_generated", ErrorSeverity.NonFatal);
IError error = new ErrorMessage("NDMF.info.non_generated", "NDMF.hint.non_generated", ErrorSeverity.NonFatal);
ErrorReport.ReportError(error);
session.Cancel = true;
}
Expand Down
2 changes: 1 addition & 1 deletion Editor/NDMF/Passes.NormalizeMaterialsPass.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ protected override void Execute(BuildContext context, Session session, LightLimi

//Report ColorTempCont or SaturationCnt information in NDMF error reporting

IError error = new ErrorMessage("NDMF.info.useColorTemporSaturation", ErrorSeverity.Information);
IError error = new ErrorMessage("NDMF.info.useColorTemporSaturation", "NDMF.hint.useColorTemporSaturation", ErrorSeverity.Information);
ErrorReport.ReportError(error);

foreach (var material in cache.MappedObjects.Select(x => x as Material).Where(x => x != null).ToArray())
Expand Down
1 change: 1 addition & 0 deletions Editor/NDMF/Passes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public static void RunningPasses(Sequence sequence)
.Run(CollectTargetRenderers).Then
.Run(CloningMaterials).Then
.Run(NormalizeMaterials).Then
.Run(CheckMixedShadersPass.Instance).Then
.Run(GenerateAdditionalControl).Then
.Run(GenerateAnimations).Then
.Run(Finalize);
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "io.github.azukimochi.light-limit-changer",
"version": "1.14.0",
"version": "1.14.1",
"unity": "2019.4",
"displayName": "LightLimitChanger",
"description": "Light Limit ChangerはModular-Avatar前提のVRChatアバター向けの明るさ変更ジェネレーターです。―――――――――――――――――― Light Limit Changer is a brightness change generator for VRChat avatars based on Modular-Avatar. ―――――――――――――――――― by Azukimochi25",
Expand Down

0 comments on commit 065dd53

Please sign in to comment.