Remove dependency on MToon0X

This commit is contained in:
Masataka SUMI
2024-05-25 23:54:31 +09:00
parent f64b193031
commit 80caf4a597
3 changed files with 37 additions and 39 deletions

View File

@@ -1,14 +1,12 @@
using System;
using System.Collections.Generic;
using MToon;
using UniGLTF;
using UniGLTF.Extensions.VRMC_materials_mtoon;
using UniJSON;
using UnityEngine;
using VRMShaders.VRM10.MToon10.Runtime;
using VRMShaders.VRM10.MToon10.Runtime.MToon0X;
using ColorSpace = VRMShaders.ColorSpace;
using OutlineWidthMode = MToon.OutlineWidthMode;
using RenderMode = MToon.RenderMode;
namespace UniVRM10
{
@@ -44,14 +42,14 @@ namespace UniVRM10
}
switch (mtoon.Definition.Rendering.RenderMode)
{
case RenderMode.Opaque:
case MToon0XRenderMode.Opaque:
break;
case RenderMode.Cutout:
case MToon0XRenderMode.Cutout:
break;
case RenderMode.Transparent:
case MToon0XRenderMode.Transparent:
transparentRenderQueues.Add(mtoon.Definition.Rendering.RenderQueueOffsetNumber);
break;
case RenderMode.TransparentWithZWrite:
case MToon0XRenderMode.TransparentWithZWrite:
transparentZWriteRenderQueues.Add(mtoon.Definition.Rendering.RenderQueueOffsetNumber);
break;
default:
@@ -104,25 +102,25 @@ namespace UniVRM10
// Rendering
switch (mtoon.Definition.Rendering.RenderMode)
{
case RenderMode.Opaque:
case MToon0XRenderMode.Opaque:
gltfMaterial.alphaMode = "OPAQUE";
dst.TransparentWithZWrite = false;
gltfMaterial.alphaCutoff = 0.5f;
dst.RenderQueueOffsetNumber = 0;
break;
case RenderMode.Cutout:
case MToon0XRenderMode.Cutout:
gltfMaterial.alphaMode = "MASK";
dst.TransparentWithZWrite = false;
gltfMaterial.alphaCutoff = mtoon.Definition.Color.CutoutThresholdValue;
dst.RenderQueueOffsetNumber = 0;
break;
case RenderMode.Transparent:
case MToon0XRenderMode.Transparent:
gltfMaterial.alphaMode = "BLEND";
dst.TransparentWithZWrite = false;
gltfMaterial.alphaCutoff = 0.5f;
dst.RenderQueueOffsetNumber = Mathf.Clamp(transparentRenderQueueMap[mtoon.Definition.Rendering.RenderQueueOffsetNumber], -9, 0);
break;
case RenderMode.TransparentWithZWrite:
case MToon0XRenderMode.TransparentWithZWrite:
gltfMaterial.alphaMode = "BLEND";
dst.TransparentWithZWrite = true;
gltfMaterial.alphaCutoff = 0.5f;
@@ -133,13 +131,13 @@ namespace UniVRM10
}
switch (mtoon.Definition.Rendering.CullMode)
{
case MToon.CullMode.Back:
case MToon0XCullMode.Back:
gltfMaterial.doubleSided = false;
break;
case MToon.CullMode.Off:
case MToon0XCullMode.Off:
gltfMaterial.doubleSided = true;
break;
case MToon.CullMode.Front:
case MToon0XCullMode.Front:
// GLTF not support
gltfMaterial.doubleSided = true;
break;
@@ -294,15 +292,15 @@ namespace UniVRM10
const float oneHundredth = 0.01f;
switch (mtoon.Definition.Outline.OutlineWidthMode)
{
case OutlineWidthMode.None:
case MToon0XOutlineWidthMode.None:
dst.OutlineWidthMode = UniGLTF.Extensions.VRMC_materials_mtoon.OutlineWidthMode.none;
dst.OutlineWidthFactor = null;
break;
case OutlineWidthMode.WorldCoordinates:
case MToon0XOutlineWidthMode.WorldCoordinates:
dst.OutlineWidthMode = UniGLTF.Extensions.VRMC_materials_mtoon.OutlineWidthMode.worldCoordinates;
dst.OutlineWidthFactor = mtoon.Definition.Outline.OutlineWidthValue * centimeterToMeter;
break;
case OutlineWidthMode.ScreenCoordinates:
case MToon0XOutlineWidthMode.ScreenCoordinates:
dst.OutlineWidthMode = UniGLTF.Extensions.VRMC_materials_mtoon.OutlineWidthMode.screenCoordinates;
// NOTE: 従来は、縦幅の半分を 100% としたときの % の値だった。
// 1.0 では縦幅を 1 としたときの値とするので、 1/200 する。
@@ -329,10 +327,10 @@ namespace UniVRM10
dst.OutlineColorFactor = mtoon.Definition.Outline.OutlineColor.ToFloat3(ColorSpace.sRGB, ColorSpace.Linear);
switch (mtoon.Definition.Outline.OutlineColorMode)
{
case OutlineColorMode.FixedColor:
case MToon0XOutlineColorMode.FixedColor:
dst.OutlineLightingMixFactor = 0.0f;
break;
case OutlineColorMode.MixedLighting:
case MToon0XOutlineColorMode.MixedLighting:
dst.OutlineLightingMixFactor = mtoon.Definition.Outline.OutlineLightingMixValue;
break;
default:

View File

@@ -4,6 +4,7 @@ using UniGLTF;
using UniJSON;
using UnityEngine;
using VRMShaders;
using VRMShaders.VRM10.MToon10.Runtime.MToon0X;
using ColorSpace = VRMShaders.ColorSpace;
namespace UniVRM10
@@ -16,28 +17,28 @@ namespace UniVRM10
/// </summary>
internal sealed class Vrm0XMToonValue
{
public MToon.MToonDefinition Definition { get; }
public MToon0XDefinition Definition { get; }
public Dictionary<string, float[]> TextureOffsetScales { get; }
public Vrm0XMToonTextureIndexMap TextureIndexMap { get; }
public Vrm0XMToonValue(JsonNode vrmMaterial)
{
var definition = new MToon.MToonDefinition
var definition = new MToon0XDefinition
{
Color = new MToon.ColorDefinition { },
Lighting = new MToon.LightingDefinition
Color = new MToon0XColorDefinition { },
Lighting = new MToon0XLightingDefinition
{
LightingInfluence = new MToon.LightingInfluenceDefinition { },
LitAndShadeMixing = new MToon.LitAndShadeMixingDefinition { },
Normal = new MToon.NormalDefinition { }
LightingInfluence = new MToon0XLightingInfluenceDefinition { },
LitAndShadeMixing = new MToon0XLitAndShadeMixingDefinition { },
Normal = new MToon0XNormalDefinition { }
},
Emission = new MToon.EmissionDefinition { },
MatCap = new MToon.MatCapDefinition { },
Meta = new MToon.MetaDefinition { },
Outline = new MToon.OutlineDefinition { },
Rendering = new MToon.RenderingDefinition { },
Rim = new MToon.RimDefinition { },
TextureOption = new MToon.TextureUvCoordsDefinition { }
Emission = new MToon0XEmissionDefinition { },
MatCap = new MToon0XMatCapDefinition { },
Meta = new MToon0XMetaDefinition { },
Outline = new MToon0XOutlineDefinition { },
Rendering = new MToon0XRenderingDefinition { },
Rim = new MToon0XRimDefinition { },
TextureOption = new MToon0XTextureUvCoordsDefinition { }
};
var offsetScale = new Dictionary<string, float[]>();
@@ -100,10 +101,10 @@ namespace UniVRM10
{
// Rendering
case "_BlendMode":
definition.Rendering.RenderMode = (MToon.RenderMode)(int)value;
definition.Rendering.RenderMode = (MToon0XRenderMode)(int)value;
break;
case "_CullMode":
definition.Rendering.CullMode = (MToon.CullMode)(int)value;
definition.Rendering.CullMode = (MToon0XCullMode)(int)value;
break;
case "_Cutoff":
definition.Color.CutoutThresholdValue = value;
@@ -147,7 +148,7 @@ namespace UniVRM10
// Outline
case "_OutlineColorMode":
definition.Outline.OutlineColorMode = (MToon.OutlineColorMode)value;
definition.Outline.OutlineColorMode = (MToon0XOutlineColorMode)value;
break;
case "_OutlineLightingMix":
definition.Outline.OutlineLightingMixValue = value;
@@ -163,7 +164,7 @@ namespace UniVRM10
{
value = 0;
}
definition.Outline.OutlineWidthMode = (MToon.OutlineWidthMode)value;
definition.Outline.OutlineWidthMode = (MToon0XOutlineWidthMode)value;
break;
// UV Animation
@@ -230,7 +231,7 @@ namespace UniVRM10
definition.Rendering.RenderQueueOffsetNumber =
vrmMaterial["renderQueue"].GetInt32() -
MToon.Utils.GetRenderQueueRequirement(definition.Rendering.RenderMode).DefaultValue;
MToon0XUtils.GetRenderQueueRequirement(definition.Rendering.RenderMode).DefaultValue;
Definition = definition;
TextureOffsetScales = offsetScale;

View File

@@ -3,7 +3,6 @@
"rootNamespace": "",
"references": [
"GUID:2ef84b520212e174a94668c7a0862d3b",
"GUID:a9bc101fb0471f94a8f99fd242fdd934",
"GUID:8d76e605759c3f64a957d63ef96ada7c",
"GUID:da3e51d19d51a544fa14d43fee843098",
"GUID:bce005214fa49654d93927908c15b1f2",