Skip to content

Commit eaf1b7e

Browse files
Copilotkurotu
andcommitted
fix: preserve lilToon main texture UV tiling during Toon Standard conversion
Add MainTextureScale/MainTextureOffset properties to ToonStandardMaterialWrapper and LilToonMaterial. Add abstract GetMainTextureST() to ToonStandardGenerator base class and implement in LilToonToonStandardGenerator and GenericToonStandardGenerator. Set main texture scale/offset in both ConvertToToonStandard() and GenerateMaterial() paths. Co-authored-by: kurotu <74851548+kurotu@users.noreply.github.com>
1 parent d4e7c6e commit eaf1b7e

File tree

5 files changed

+49
-0
lines changed

5 files changed

+49
-0
lines changed

Packages/com.github.kurotu.vrc-quest-tools/Editor/Models/MaterialGenerators/GenericToonStandardGenerator.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,12 @@ protected override Color GetMainColor()
177177
throw new NotImplementedException();
178178
}
179179

180+
/// <inheritdoc/>
181+
protected override (Vector2 Scale, Vector2 Offset) GetMainTextureST()
182+
{
183+
throw new NotImplementedException();
184+
}
185+
180186
/// <inheritdoc/>
181187
protected override ToonStandardMaterialWrapper.MatcapTypeMode GetMapcapType()
182188
{

Packages/com.github.kurotu.vrc-quest-tools/Editor/Models/MaterialGenerators/LilToonToonStandardGenerator.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ protected override Material ConvertToToonStandard()
3535
newMaterial.Name = lilMaterial.Material.name;
3636

3737
newMaterial.MainTexture = lilMaterial.Material.mainTexture;
38+
newMaterial.MainTextureScale = lilMaterial.MainTextureScale;
39+
newMaterial.MainTextureOffset = lilMaterial.MainTextureOffset;
3840
newMaterial.MainColor = Utils.ColorUtility.HdrToLdr(lilMaterial.Material.color);
3941

4042
if (lilMaterial.UseNormalMap && Settings.useNormalMap)
@@ -800,6 +802,12 @@ protected override Color GetMainColor()
800802
return lilMaterial.Material.color;
801803
}
802804

805+
/// <inheritdoc/>
806+
protected override (Vector2 Scale, Vector2 Offset) GetMainTextureST()
807+
{
808+
return (lilMaterial.MainTextureScale, lilMaterial.MainTextureOffset);
809+
}
810+
803811
/// <inheritdoc/>
804812
protected override ToonStandardMaterialWrapper.MatcapTypeMode GetMapcapType()
805813
{

Packages/com.github.kurotu.vrc-quest-tools/Editor/Models/MaterialGenerators/ToonStandardGenerator.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ public AsyncCallbackRequest GenerateMaterial(MaterialBase material, UnityEditor.
162162
{
163163
newMaterial.MainTexture = t;
164164
newMaterial.MainColor = new Color(1, 1, 1, 1);
165+
(newMaterial.MainTextureScale, newMaterial.MainTextureOffset) = GetMainTextureST();
165166
}, mainPlatformOverride).WaitForCompletion();
166167
}
167168
else
@@ -384,6 +385,12 @@ public AsyncCallbackRequest GenerateTextures(MaterialBase material, UnityEditor.
384385
/// <returns>Main color.</returns>
385386
protected abstract Color GetMainColor();
386387

388+
/// <summary>
389+
/// Gets the main texture scale and offset of the material.
390+
/// </summary>
391+
/// <returns>Scale and offset.</returns>
392+
protected abstract (Vector2 Scale, Vector2 Offset) GetMainTextureST();
393+
387394
/// <summary>
388395
/// Gets the material should use normal map.
389396
/// </summary>

Packages/com.github.kurotu.vrc-quest-tools/Editor/Models/Unity/LilToonMaterial.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,16 @@ internal enum MatCapBlendMode
7777
/// </summary>
7878
internal float Metallic => Material.GetFloat("_Metallic");
7979

80+
/// <summary>
81+
/// Gets the main texture scale.
82+
/// </summary>
83+
internal Vector2 MainTextureScale => Material.GetTextureScale("_MainTex");
84+
85+
/// <summary>
86+
/// Gets the main texture offset.
87+
/// </summary>
88+
internal Vector2 MainTextureOffset => Material.GetTextureOffset("_MainTex");
89+
8090
/// <summary>
8191
/// Gets minimum brightness.
8292
/// </summary>

Packages/com.github.kurotu.vrc-quest-tools/Editor/Models/Unity/ToonStandardMaterialWrapper.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,24 @@ internal Texture MainTexture
131131
set => material.SetTexture("_MainTex", value);
132132
}
133133

134+
/// <summary>
135+
/// Gets or sets the main texture scale.
136+
/// </summary>
137+
internal Vector2 MainTextureScale
138+
{
139+
get => material.GetTextureScale("_MainTex");
140+
set => material.SetTextureScale("_MainTex", value);
141+
}
142+
143+
/// <summary>
144+
/// Gets or sets the main texture offset.
145+
/// </summary>
146+
internal Vector2 MainTextureOffset
147+
{
148+
get => material.GetTextureOffset("_MainTex");
149+
set => material.SetTextureOffset("_MainTex", value);
150+
}
151+
134152
/// <summary>
135153
/// Gets or sets the albedo color.
136154
/// </summary>

0 commit comments

Comments
 (0)