This commit is contained in:
ousttrue
2025-02-05 22:37:16 +09:00
parent fa0a4f3779
commit aacb3a74de
3 changed files with 554 additions and 44 deletions

View File

@@ -35,6 +35,12 @@
},
{
"m_Id": "2138b6eae95a4a249265714cefb1795f"
},
{
"m_Id": "ef1c5fb59a8d4550ab9c739f843edaa0"
},
{
"m_Id": "fb6c28211dec4e1bb1a36cbd93aff5e3"
}
],
"m_Keywords": [],
@@ -143,6 +149,21 @@
},
{
"m_Id": "f36558b3ef9547e295ba8c189a69b79a"
},
{
"m_Id": "307a96558a0a40ada3c66e2e38e269ca"
},
{
"m_Id": "b81ee26f89a540ea946cb683ac7de047"
},
{
"m_Id": "67d23f92ffe24661a1bdf746af189547"
},
{
"m_Id": "a2cf70a9a7fe4202893a8b40f35571f9"
},
{
"m_Id": "855308f399fb4f71bc6584937719e851"
}
],
"m_GroupDatas": [],
@@ -386,6 +407,34 @@
"m_SlotId": 3
}
},
{
"m_OutputSlot": {
"m_Node": {
"m_Id": "6637a91f035a40e798e76f70bed17d7e"
},
"m_SlotId": 7
},
"m_InputSlot": {
"m_Node": {
"m_Id": "307a96558a0a40ada3c66e2e38e269ca"
},
"m_SlotId": 0
}
},
{
"m_OutputSlot": {
"m_Node": {
"m_Id": "67d23f92ffe24661a1bdf746af189547"
},
"m_SlotId": 0
},
"m_InputSlot": {
"m_Node": {
"m_Id": "a2cf70a9a7fe4202893a8b40f35571f9"
},
"m_SlotId": 1
}
},
{
"m_OutputSlot": {
"m_Node": {
@@ -414,6 +463,20 @@
"m_SlotId": 0
}
},
{
"m_OutputSlot": {
"m_Node": {
"m_Id": "855308f399fb4f71bc6584937719e851"
},
"m_SlotId": 0
},
"m_InputSlot": {
"m_Node": {
"m_Id": "a2cf70a9a7fe4202893a8b40f35571f9"
},
"m_SlotId": 0
}
},
{
"m_OutputSlot": {
"m_Node": {
@@ -442,6 +505,20 @@
"m_SlotId": 0
}
},
{
"m_OutputSlot": {
"m_Node": {
"m_Id": "a2cf70a9a7fe4202893a8b40f35571f9"
},
"m_SlotId": 3
},
"m_InputSlot": {
"m_Node": {
"m_Id": "b81ee26f89a540ea946cb683ac7de047"
},
"m_SlotId": 0
}
},
{
"m_OutputSlot": {
"m_Node": {
@@ -553,18 +630,24 @@
{
"m_Id": "80fce1dbcef04945aa9b988609dbe324"
},
{
"m_Id": "307a96558a0a40ada3c66e2e38e269ca"
},
{
"m_Id": "b81ee26f89a540ea946cb683ac7de047"
},
{
"m_Id": "58ee8fea72cc4a649f9a1198b12d621b"
},
{
"m_Id": "6f683c2eb23a4baf8dc028500640b75a"
},
{
"m_Id": "53f1bc01113946bc946f0808f16df02b"
},
{
"m_Id": "6098dc7f36d84b83b8421cc0e56ed1a0"
},
{
"m_Id": "6f683c2eb23a4baf8dc028500640b75a"
},
{
"m_Id": "0f64718141f34878916463ec72c9d2d8"
}
@@ -606,6 +689,30 @@
"m_Labels": []
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot",
"m_ObjectId": "01187177ae5b4d289136898d4db4856b",
"m_Id": 2,
"m_DisplayName": "False",
"m_SlotType": 0,
"m_Hidden": false,
"m_ShaderOutputName": "False",
"m_StageCapability": 3,
"m_Value": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 0.0
},
"m_DefaultValue": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 0.0
}
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot",
@@ -682,6 +789,12 @@
},
{
"m_Id": "2138b6eae95a4a249265714cefb1795f"
},
{
"m_Id": "ef1c5fb59a8d4550ab9c739f843edaa0"
},
{
"m_Id": "fb6c28211dec4e1bb1a36cbd93aff5e3"
}
]
}
@@ -698,10 +811,10 @@
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -828.0,
"y": -123.33331298828125,
"x": -965.3333129882813,
"y": -416.6666564941406,
"width": 132.0,
"height": 35.999969482421878
"height": 36.0
}
},
"m_Slots": [
@@ -868,6 +981,21 @@
"m_Channel": 0
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot",
"m_ObjectId": "13a810e2e4804785b217f835e16a95ff",
"m_Id": 0,
"m_DisplayName": "Alpha Clip Threshold",
"m_SlotType": 0,
"m_Hidden": false,
"m_ShaderOutputName": "AlphaClipThreshold",
"m_StageCapability": 2,
"m_Value": 0.5,
"m_DefaultValue": 0.5,
"m_Labels": []
}
{
"m_SGVersion": 1,
"m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget",
@@ -882,7 +1010,7 @@
"m_ZWriteControl": 0,
"m_AlphaMode": 0,
"m_RenderFace": 2,
"m_AlphaClip": false,
"m_AlphaClip": true,
"m_CastShadows": true,
"m_ReceiveShadows": true,
"m_SupportsLODCrossFade": false,
@@ -977,8 +1105,8 @@
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -855.3333740234375,
"y": 198.00001525878907,
"x": -861.3333740234375,
"y": 198.00003051757813,
"width": 159.33331298828126,
"height": 35.99998474121094
}
@@ -1264,10 +1392,10 @@
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -324.6665954589844,
"y": -109.99999237060547,
"width": 209.333251953125,
"height": 303.9999694824219
"x": -363.3333435058594,
"y": -207.33334350585938,
"width": 209.33334350585938,
"height": 304.0000305175781
}
},
"m_Slots": [
@@ -1308,6 +1436,35 @@
"m_BareResource": false
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot",
"m_ObjectId": "2d379c192d3048f19eef9dda9d4b8906",
"m_Id": 0,
"m_DisplayName": "Predicate",
"m_SlotType": 0,
"m_Hidden": false,
"m_ShaderOutputName": "Predicate",
"m_StageCapability": 3,
"m_Value": false,
"m_DefaultValue": false
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot",
"m_ObjectId": "2fef3aa40b9f478a82efab3210662993",
"m_Id": 0,
"m_DisplayName": "Cutoff",
"m_SlotType": 1,
"m_Hidden": false,
"m_ShaderOutputName": "Out",
"m_StageCapability": 3,
"m_Value": 0.0,
"m_DefaultValue": 0.0,
"m_Labels": []
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.PropertyNode",
@@ -1320,10 +1477,10 @@
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -828.0,
"y": -81.33334350585938,
"width": 133.33331298828126,
"height": 36.0000114440918
"x": -965.3333129882813,
"y": -374.6666564941406,
"width": 133.333251953125,
"height": 36.0
}
},
"m_Slots": [
@@ -1378,6 +1535,40 @@
"m_SerializedDescriptor": "VertexDescription.Normal"
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.BlockNode",
"m_ObjectId": "307a96558a0a40ada3c66e2e38e269ca",
"m_Group": {
"m_Id": ""
},
"m_Name": "SurfaceDescription.Alpha",
"m_DrawState": {
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": 13.999950408935547,
"y": 248.6666717529297,
"width": 200.00006103515626,
"height": 42.66664123535156
}
},
"m_Slots": [
{
"m_Id": "72c7e7802e024978b702d83a9535194b"
}
],
"synonyms": [],
"m_Precision": 0,
"m_PreviewExpanded": true,
"m_DismissedVersion": 0,
"m_PreviewMode": 0,
"m_CustomColors": {
"m_SerializableColors": []
},
"m_SerializedDescriptor": "SurfaceDescription.Alpha"
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot",
@@ -1569,10 +1760,10 @@
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -868.666748046875,
"y": 161.99998474121095,
"x": -874.666748046875,
"y": 162.00006103515626,
"width": 172.66668701171876,
"height": 36.000030517578128
"height": 35.999969482421878
}
},
"m_Slots": [
@@ -1687,10 +1878,10 @@
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -676.0000610351563,
"y": 198.00001525878907,
"width": 184.6666259765625,
"height": 254.6667022705078
"x": -682.0000610351563,
"y": 198.00003051757813,
"width": 184.66665649414063,
"height": 254.66668701171876
}
},
"m_Slots": [
@@ -2329,10 +2520,10 @@
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -676.0,
"y": -87.33334350585938,
"width": 184.66671752929688,
"height": 254.6666717529297
"x": -813.3333740234375,
"y": -380.6666564941406,
"width": 184.66668701171876,
"height": 254.66665649414063
}
},
"m_Slots": [
@@ -2377,6 +2568,42 @@
"m_MipSamplingMode": 0
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.PropertyNode",
"m_ObjectId": "67d23f92ffe24661a1bdf746af189547",
"m_Group": {
"m_Id": ""
},
"m_Name": "Property",
"m_DrawState": {
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -769.333251953125,
"y": 67.33330535888672,
"width": 109.33331298828125,
"height": 36.000022888183597
}
},
"m_Slots": [
{
"m_Id": "2fef3aa40b9f478a82efab3210662993"
}
],
"synonyms": [],
"m_Precision": 0,
"m_PreviewExpanded": true,
"m_DismissedVersion": 0,
"m_PreviewMode": 0,
"m_CustomColors": {
"m_SerializableColors": []
},
"m_Property": {
"m_Id": "fb6c28211dec4e1bb1a36cbd93aff5e3"
}
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot",
@@ -2522,6 +2749,21 @@
"m_BareResource": false
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot",
"m_ObjectId": "72c7e7802e024978b702d83a9535194b",
"m_Id": 0,
"m_DisplayName": "Alpha",
"m_SlotType": 0,
"m_Hidden": false,
"m_ShaderOutputName": "Alpha",
"m_StageCapability": 2,
"m_Value": 1.0,
"m_DefaultValue": 1.0,
"m_Labels": []
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot",
@@ -2625,10 +2867,10 @@
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -324.6665954589844,
"y": 193.99998474121095,
"width": 209.333251953125,
"height": 304.0
"x": -449.3333740234375,
"y": 198.00003051757813,
"width": 209.33335876464845,
"height": 304.0000305175781
}
},
"m_Slots": [
@@ -2921,6 +3163,42 @@
}
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.PropertyNode",
"m_ObjectId": "855308f399fb4f71bc6584937719e851",
"m_Group": {
"m_Id": ""
},
"m_Name": "Property",
"m_DrawState": {
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -813.3331909179688,
"y": 31.33333969116211,
"width": 153.333251953125,
"height": 35.99996566772461
}
},
"m_Slots": [
{
"m_Id": "d6da5d2783dc4a238c7349e189e235eb"
}
],
"synonyms": [],
"m_Precision": 0,
"m_PreviewExpanded": true,
"m_DismissedVersion": 0,
"m_PreviewMode": 0,
"m_CustomColors": {
"m_SerializableColors": []
},
"m_Property": {
"m_Id": "ef1c5fb59a8d4550ab9c739f843edaa0"
}
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot",
@@ -3323,6 +3601,52 @@
"m_DefaultType": 3
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.BranchNode",
"m_ObjectId": "a2cf70a9a7fe4202893a8b40f35571f9",
"m_Group": {
"m_Id": ""
},
"m_Name": "Branch",
"m_DrawState": {
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -535.3333129882813,
"y": -0.000020460582163650542,
"width": 171.99993896484376,
"height": 143.99996948242188
}
},
"m_Slots": [
{
"m_Id": "2d379c192d3048f19eef9dda9d4b8906"
},
{
"m_Id": "ffe9c7f7a99b4e618171fac09d7a60da"
},
{
"m_Id": "01187177ae5b4d289136898d4db4856b"
},
{
"m_Id": "cfa6122569d6441bbd009755d3eada60"
}
],
"synonyms": [
"switch",
"if",
"else"
],
"m_Precision": 0,
"m_PreviewExpanded": false,
"m_DismissedVersion": 0,
"m_PreviewMode": 0,
"m_CustomColors": {
"m_SerializableColors": []
}
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.PropertyNode",
@@ -3533,6 +3857,40 @@
}
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.BlockNode",
"m_ObjectId": "b81ee26f89a540ea946cb683ac7de047",
"m_Group": {
"m_Id": ""
},
"m_Name": "SurfaceDescription.AlphaClipThreshold",
"m_DrawState": {
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": 21.333335876464845,
"y": 301.9999694824219,
"width": 200.00003051757813,
"height": 42.66668701171875
}
},
"m_Slots": [
{
"m_Id": "13a810e2e4804785b217f835e16a95ff"
}
],
"synonyms": [],
"m_Precision": 0,
"m_PreviewExpanded": true,
"m_DismissedVersion": 0,
"m_PreviewMode": 0,
"m_CustomColors": {
"m_SerializableColors": []
},
"m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold"
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.PropertyNode",
@@ -3618,10 +3976,10 @@
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -479.3332824707031,
"y": -63.33333969116211,
"width": 129.33331298828126,
"height": 126.66668701171875
"x": -616.6666870117188,
"y": -356.6666564941406,
"width": 129.33334350585938,
"height": 126.66665649414063
}
},
"m_Slots": [
@@ -3852,6 +4210,44 @@
}
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot",
"m_ObjectId": "cfa6122569d6441bbd009755d3eada60",
"m_Id": 3,
"m_DisplayName": "Out",
"m_SlotType": 1,
"m_Hidden": false,
"m_ShaderOutputName": "Out",
"m_StageCapability": 3,
"m_Value": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 0.0
},
"m_DefaultValue": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 0.0
}
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot",
"m_ObjectId": "d6da5d2783dc4a238c7349e189e235eb",
"m_Id": 0,
"m_DisplayName": "CutoffEnabled",
"m_SlotType": 1,
"m_Hidden": false,
"m_ShaderOutputName": "Out",
"m_StageCapability": 3,
"m_Value": false,
"m_DefaultValue": false
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty",
@@ -4128,6 +4524,29 @@
"m_Labels": []
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty",
"m_ObjectId": "ef1c5fb59a8d4550ab9c739f843edaa0",
"m_Guid": {
"m_GuidSerialized": "d167437b-253b-4e6d-8ae4-5d62902a0350"
},
"m_Name": "CutoffEnabled",
"m_DefaultRefNameVersion": 1,
"m_RefNameGeneratedByDisplayName": "CutoffEnabled",
"m_DefaultReferenceName": "_CutoffEnabled",
"m_OverrideReferenceName": "",
"m_GeneratePropertyBlock": true,
"m_UseCustomSlotLabel": false,
"m_CustomSlotLabel": "",
"m_DismissedVersion": 0,
"m_Precision": 0,
"overrideHLSLDeclaration": false,
"hlslDeclarationOverride": 0,
"m_Hidden": false,
"m_Value": true
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot",
@@ -4304,6 +4723,34 @@
}
}
{
"m_SGVersion": 1,
"m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty",
"m_ObjectId": "fb6c28211dec4e1bb1a36cbd93aff5e3",
"m_Guid": {
"m_GuidSerialized": "ddae6a56-f28d-4ec9-8f5e-3fb80da4ccf3"
},
"m_Name": "Cutoff",
"m_DefaultRefNameVersion": 1,
"m_RefNameGeneratedByDisplayName": "Cutoff",
"m_DefaultReferenceName": "_Cutoff",
"m_OverrideReferenceName": "",
"m_GeneratePropertyBlock": true,
"m_UseCustomSlotLabel": false,
"m_CustomSlotLabel": "",
"m_DismissedVersion": 0,
"m_Precision": 0,
"overrideHLSLDeclaration": false,
"hlslDeclarationOverride": 0,
"m_Hidden": false,
"m_Value": 0.5,
"m_FloatType": 0,
"m_RangeValues": {
"x": 0.0,
"y": 1.0
}
}
{
"m_SGVersion": 1,
"m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty",
@@ -4332,3 +4779,27 @@
}
}
{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot",
"m_ObjectId": "ffe9c7f7a99b4e618171fac09d7a60da",
"m_Id": 1,
"m_DisplayName": "True",
"m_SlotType": 0,
"m_Hidden": false,
"m_ShaderOutputName": "True",
"m_StageCapability": 3,
"m_Value": {
"x": 10.0,
"y": 1.0,
"z": 1.0,
"w": 1.0
},
"m_DefaultValue": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 0.0
}
}

View File

@@ -43,11 +43,19 @@ namespace UniVRM10.VRM10Viewer
/// <summary>
/// Color = black
/// </summary>
private static readonly int EmissionColor = Shader.PropertyToID("_EmissionColor");
private static readonly int EmissionColorProp = Shader.PropertyToID("_EmissionColor");
/// <summary>
/// Texture2D = black
/// </summary>
private static readonly int EmissionMap = Shader.PropertyToID("_EmissionMap");
private static readonly int EmissionMapProp = Shader.PropertyToID("_EmissionMap");
/// <summary>
/// boolean keyword
/// </summary>
private static readonly int CutoffEnabledProp = Shader.PropertyToID("_CutoffEnabled");
/// <summary>
/// float = 0.5
/// </summary>
private static readonly int CutoffProp = Shader.PropertyToID("_Cutoff");
public readonly Material Material;
public TinyPbrMaterialContext(Material material)
@@ -122,13 +130,25 @@ namespace UniVRM10.VRM10Viewer
public Color EmissionColorLinear
{
get => Material.GetColor(EmissionColor);
set => Material.SetColor(EmissionColor, value);
get => Material.GetColor(EmissionColorProp);
set => Material.SetColor(EmissionColorProp, value);
}
public Texture EmissionTexture
{
get => Material.GetTexture(EmissionMap);
set => Material.SetTexture(EmissionMap, value);
get => Material.GetTexture(EmissionMapProp);
set => Material.SetTexture(EmissionMapProp, value);
}
public bool CutoffEnabled
{
get => Material.GetInt(CutoffEnabledProp) != 0;
set => Material.SetInt(CutoffEnabledProp, value ? 1 : 0);
}
public float Cutoff
{
get => Material.GetFloat(CutoffProp);
set => Material.SetFloat(CutoffProp, value);
}
}
}

View File

@@ -16,7 +16,7 @@ namespace UniVRM10.VRM10Viewer
public Material OpaqueMaterial { get; set; }
public Material AlphaBlendMaterial { get; set; }
/// <param name="material">TinyPbr material</param>
public TinyPbrMaterialDescriptorGenerator(
Material opaque,
@@ -77,7 +77,7 @@ namespace UniVRM10.VRM10Viewer
{
var context = new TinyPbrMaterialContext(dst);
// ImportSurfaceSettings(src, context);
ImportSurfaceSettings(src, context);
await ImportBaseColorAsync(data, src, context, getTextureAsync, awaitCaller);
await ImportMetallicRoughnessAsync(data, src, context, getTextureAsync, awaitCaller);
await ImportOcclusionAsync(data, src, context, getTextureAsync, awaitCaller);
@@ -87,6 +87,25 @@ namespace UniVRM10.VRM10Viewer
// context.Validate();
}
public static void ImportSurfaceSettings(glTFMaterial src, TinyPbrMaterialContext context)
{
// context.SurfaceType = src.alphaMode switch
// {
// "OPAQUE" => UrpLitSurfaceType.Opaque,
// "MASK" => UrpLitSurfaceType.Transparent,
// "BLEND" => UrpLitSurfaceType.Transparent,
// _ => UrpLitSurfaceType.Opaque,
// };
// context.BlendMode = context.SurfaceType switch
// {
// UrpLitSurfaceType.Transparent => UrpLitBlendMode.Alpha,
// _ => UrpLitBlendMode.Alpha,
// };
context.CutoffEnabled = src.alphaMode == "MASK";
context.Cutoff = src.alphaCutoff;
// context.CullMode = src.doubleSided ? CullMode.Off : CullMode.Back;
}
public static async Task ImportBaseColorAsync(GltfData data, glTFMaterial src, TinyPbrMaterialContext context, GetTextureAsyncFunc getTextureAsync, IAwaitCaller awaitCaller)
{
var baseColorFactor = GltfMaterialImportUtils.ImportLinearBaseColorFactor(data, src);