Skip to content

Commit

Permalink
Merge pull request #198 from Azukimochi/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
Azukimochi authored Jul 18, 2024
2 parents 617979d + cd51eef commit bea3786
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 21 deletions.
6 changes: 5 additions & 1 deletion Editor/ControlAnimationParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,17 @@ public readonly struct ControlAnimationParameters

public readonly float MinLightValue;
public readonly float MaxLightValue;
public readonly float DefaultMinLightValue;
public readonly float DefaultMaxLightValue;

public ControlAnimationParameters(string targetPath, Type targetType, float minLightValue, float maxLightValue)
public ControlAnimationParameters(string targetPath, Type targetType, float minLightValue, float maxLightValue, float defaultMinLightValue, float defaultMaxLightValue)
{
TargetPath = targetPath;
TargetType = targetType;
MinLightValue = minLightValue;
MaxLightValue = maxLightValue;
DefaultMinLightValue = defaultMinLightValue;
DefaultMaxLightValue = defaultMaxLightValue;
}
}
}
33 changes: 24 additions & 9 deletions Editor/NDMF/Passes.GenerateAnimationsPass.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,34 @@ internal static void Run(Session session, LightLimitChangerObjectCache cache)
if (!parameters.TargetShaders.Contains(x.Name))
continue;

foreach (ref readonly var container in animationContainers)
var min = parameters.MinLightValue;
var max = parameters.MaxLightValue;

float defaultMinLight, defaultMaxLight;
if (parameters.OverwriteDefaultLightMinMax &&
renderer.sharedMaterial is Material mat &&
x.IsTargetShader(mat?.shader) &&
x.TryGetLightMinMaxValue(mat, out defaultMinLight, out defaultMaxLight))
{
if (!(!parameters.OverwriteDefaultLightMinMax &&
(renderer.sharedMaterials?.Length ?? 0) > 0 &&
renderer.sharedMaterials[0] is Material mat &&
x.IsTargetShader(mat?.shader) &&
x.TryGetLightMinMaxValue(mat, out var min, out var max)))
// OK!
}
else
{
if (parameters.IsSeparateLightControl)
{
min = parameters.MinLightValue;
max = parameters.MaxLightValue;
defaultMinLight = parameters.DefaultMinLightValue;
defaultMaxLight = parameters.DefaultMaxLightValue;
}
else
{
defaultMinLight = defaultMaxLight = parameters.DefaultLightValue;
}
}

x.SetControlAnimation(container, new ControlAnimationParameters(relativePath, type, min, max));
var param = new ControlAnimationParameters(relativePath, type, min, max, defaultMinLight, defaultMaxLight);
foreach (ref readonly var container in animationContainers)
{
x.SetControlAnimation(container, param);
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions Editor/ShaderInfo/ShaderInfo.LilToon.cs
Original file line number Diff line number Diff line change
Expand Up @@ -178,13 +178,13 @@ public override void SetControlAnimation(in ControlAnimationContainer container,
{
if (container.ControlType.HasFlag(LightLimitControlType.LightMin))
{
container.Default.SetParameterAnimation(parameters, _LightMinLimit, parameters.MinLightValue);
container.Default.SetParameterAnimation(parameters, _LightMinLimit, parameters.DefaultMinLightValue);
container.Control.SetParameterAnimation(parameters, _LightMinLimit, parameters.MinLightValue, parameters.MaxLightValue);
}

if (container.ControlType.HasFlag(LightLimitControlType.LightMax))
{
container.Default.SetParameterAnimation(parameters, _LightMaxLimit, parameters.MaxLightValue);
container.Default.SetParameterAnimation(parameters, _LightMaxLimit, parameters.DefaultMaxLightValue);
container.Control.SetParameterAnimation(parameters, _LightMaxLimit, parameters.MinLightValue, parameters.MaxLightValue);
}

Expand Down
18 changes: 16 additions & 2 deletions Editor/ShaderInfo/ShaderInfo.Poiyomi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,26 @@ private static class DefaultParameters

private const string Animated_Suffix = "Animated";
private const string Flag_IsAnimated = "1";
private static readonly Material[] singleMaterialArray = new Material[1];

public override bool TryNormalizeMaterial(Material material, LightLimitChangerObjectCache cache)
{
var textureBaker = TextureBaker.GetInstance<PoiyomiTextureBaker>(cache);
bool result = false;

#if POIYOMI

// ロックされてるかどうか確認
if (Thry.ShaderOptimizer.IsMaterialLocked(material))
{
// されてるなら解除してしまう(どのみちアップロード時には自動でロックされるはずなので)
singleMaterialArray[0] = material;
if (!Thry.ShaderOptimizer.SetLockedForAllMaterials(singleMaterialArray, 0))
return false;
}

#endif

{
bool bakeFlag = false;
var tex = material.GetOrDefault<Texture>(PropertyIDs.MainTex);
Expand Down Expand Up @@ -147,13 +161,13 @@ public override void SetControlAnimation(in ControlAnimationContainer container,
{
if (container.ControlType.HasFlag(LightLimitControlType.LightMin))
{
container.Default.SetParameterAnimation(parameters, _LightingMinLightBrightness, parameters.MinLightValue);
container.Default.SetParameterAnimation(parameters, _LightingMinLightBrightness, parameters.DefaultMinLightValue);
container.Control.SetParameterAnimation(parameters, _LightingMinLightBrightness, parameters.MinLightValue, parameters.MaxLightValue);
}

if (container.ControlType.HasFlag(LightLimitControlType.LightMax))
{
container.Default.SetParameterAnimation(parameters, _LightingCap, parameters.MaxLightValue);
container.Default.SetParameterAnimation(parameters, _LightingCap, parameters.DefaultMaxLightValue);
container.Control.SetParameterAnimation(parameters, _LightingCap, parameters.MinLightValue, parameters.MaxLightValue);
}

Expand Down
8 changes: 4 additions & 4 deletions Editor/ShaderInfo/ShaderInfo.Sunao.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,16 @@ public override void SetControlAnimation(in ControlAnimationContainer container,
{
if (container.ControlType.HasFlag(LightLimitControlType.LightMin))
{
container.Default.SetParameterAnimation(parameters, _MinimumLight, parameters.MinLightValue);
container.Default.SetParameterAnimation(parameters, _MinimumLight, parameters.DefaultMinLightValue);

container.Control.SetParameterAnimation(parameters, _MinimumLight, parameters.MinLightValue, parameters.MaxLightValue);
}

if (container.ControlType.HasFlag(LightLimitControlType.LightMax))
{
container.Default.SetParameterAnimation(parameters, _DirectionalLight, parameters.MaxLightValue);
container.Default.SetParameterAnimation(parameters, _PointLight, parameters.MaxLightValue);
container.Default.SetParameterAnimation(parameters, _SHLight, parameters.MaxLightValue);
container.Default.SetParameterAnimation(parameters, _DirectionalLight, parameters.DefaultMaxLightValue);
container.Default.SetParameterAnimation(parameters, _PointLight, parameters.DefaultMaxLightValue);
container.Default.SetParameterAnimation(parameters, _SHLight, parameters.DefaultMaxLightValue);

var curve = Utils.Animation.Linear(parameters.MinLightValue, parameters.MaxLightValue);
container.Control.SetParameterAnimation(parameters, _DirectionalLight, curve);
Expand Down
12 changes: 10 additions & 2 deletions Editor/io.github.azukimochi.light-limit-changer.editor.asmdef
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
{
"name": "io.github.azukimochi.light-limit-changer.editor",
"rootNamespace": "",
"references": [
"nadena.dev.modular-avatar.core",
"io.github.azukimochi.light-limit-changer",
"nadena.dev.modular-avatar.core.editor",
"nadena.dev.ndmf",
"nadena.dev.ndmf.runtime",
"nadena.dev.ndmf.vrchat"
"nadena.dev.ndmf.vrchat",
"ThryAssemblyDefinition"
],
"includePlatforms": [
"Editor"
Expand All @@ -25,6 +27,12 @@
],
"autoReferenced": false,
"defineConstraints": [],
"versionDefines": [],
"versionDefines": [
{
"name": "com.poiyomi.toon",
"expression": "",
"define": "POIYOMI"
}
],
"noEngineReferences": false
}
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.13.0",
"version": "1.13.1-rc.0",
"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 bea3786

Please sign in to comment.