Skip to content

Commit

Permalink
change: add explicit bool to enable/disable KHR_materials_volume export
Browse files Browse the repository at this point in the history
  • Loading branch information
hybridherbst committed Sep 14, 2022
1 parent 72bb956 commit 2b77615
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,11 @@ protected void _DrawSurfaceInputs(Material mat)

private static bool HasPropertyButNoTex(Material targetMaterial, string name)
{
return targetMaterial.HasProperty(name) && !targetMaterial.GetTexture(name);
return targetMaterial.HasProperty(name) &&
#if UNITY_2021_2_OR_NEWER
targetMaterial.HasTexture(name) &&
#endif
!targetMaterial.GetTexture(name);
}

private void DrawProperties(Material targetMaterial, MaterialProperty[] properties)
Expand All @@ -316,7 +320,11 @@ private void DrawProperties(Material targetMaterial, MaterialProperty[] properti
#endif
if (!targetMaterial.IsKeywordEnabled("_VOLUME_TRANSMISSION_ON"))
{
propertyList.RemoveAll(x => x.name.StartsWith("thickness", StringComparison.Ordinal) || x.name.StartsWith("attenuation", StringComparison.Ordinal) || x.name.StartsWith("transmission", StringComparison.Ordinal));
propertyList.RemoveAll(x => x.name.StartsWith("transmission", StringComparison.Ordinal));
}
if (!targetMaterial.HasProperty("_VOLUME_ON") || !(targetMaterial.GetFloat("_VOLUME_ON") > 0.5f))
{
propertyList.RemoveAll(x => x.name.StartsWith("thickness", StringComparison.Ordinal) || x.name.StartsWith("attenuation", StringComparison.Ordinal));
}
if (!targetMaterial.IsKeywordEnabled("_IRIDESCENCE_ON"))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,22 +44,16 @@ private static void GLTFSceneExporterOnAfterMaterialExport(GLTFSceneExporter exp

if (material.IsKeywordEnabled("_VOLUME_TRANSMISSION_ON"))
{
exporter.DeclareExtensionUsage(KHR_materials_volume_Factory.EXTENSION_NAME, false);
exporter.DeclareExtensionUsage(KHR_materials_ior_Factory.EXTENSION_NAME, false);
exporter.DeclareExtensionUsage(KHR_materials_transmission_Factory.EXTENSION_NAME, false);

if (materialnode.Extensions == null)
materialnode.Extensions = new Dictionary<string, IExtension>();

// if the material already has an extension, we should get and modify that
var ve = new KHR_materials_volume();
var vi = new KHR_materials_ior();
var vt = new KHR_materials_transmission();

if (materialnode.Extensions.TryGetValue(KHR_materials_volume_Factory.EXTENSION_NAME, out var vv0))
ve = (KHR_materials_volume)vv0;
else
materialnode.Extensions.Add(KHR_materials_volume_Factory.EXTENSION_NAME, ve);

if (materialnode.Extensions.TryGetValue(KHR_materials_ior_Factory.EXTENSION_NAME, out var vv1))
vi = (KHR_materials_ior) vv1;
Expand All @@ -71,6 +65,30 @@ private static void GLTFSceneExporterOnAfterMaterialExport(GLTFSceneExporter exp
else
materialnode.Extensions.Add(KHR_materials_transmission_Factory.EXTENSION_NAME, vt);

if (material.HasProperty(ior))
vi.ior = material.GetFloat(ior);

if (material.HasProperty(transmissionFactor))
vt.transmissionFactor = material.GetFloat(transmissionFactor);
if (material.HasProperty(transmissionTexture) && material.GetTexture(transmissionTexture))
vt.transmissionTexture = exporter.ExportTextureInfo(material.GetTexture(transmissionTexture), GLTFSceneExporter.TextureMapType.Custom_Unknown);
}

if (material.HasProperty("_VOLUME_ON") && material.GetFloat("_VOLUME_ON") > 0.5f)
{
exporter.DeclareExtensionUsage(KHR_materials_volume_Factory.EXTENSION_NAME, false);

if (materialnode.Extensions == null)
materialnode.Extensions = new Dictionary<string, IExtension>();

// if the material already has an extension, we should get and modify that
var ve = new KHR_materials_volume();

if (materialnode.Extensions.TryGetValue(KHR_materials_volume_Factory.EXTENSION_NAME, out var vv0))
ve = (KHR_materials_volume)vv0;
else
materialnode.Extensions.Add(KHR_materials_volume_Factory.EXTENSION_NAME, ve);

if (material.HasProperty(thicknessFactor))
ve.thicknessFactor = material.GetFloat(thicknessFactor);
if (material.HasProperty(thicknessTexture) && material.GetTexture(thicknessTexture))
Expand All @@ -79,14 +97,6 @@ private static void GLTFSceneExporterOnAfterMaterialExport(GLTFSceneExporter exp
ve.attenuationDistance = material.GetFloat(attenuationDistance);
if (material.HasProperty(attenuationColor))
ve.attenuationColor = material.GetColor(attenuationColor).ToNumericsColorRaw();

if (material.HasProperty(ior))
vi.ior = material.GetFloat(ior);

if (material.HasProperty(transmissionFactor))
vt.transmissionFactor = material.GetFloat(transmissionFactor);
if (material.HasProperty(transmissionTexture) && material.GetTexture(transmissionTexture))
vt.transmissionTexture = exporter.ExportTextureInfo(material.GetTexture(transmissionTexture), GLTFSceneExporter.TextureMapType.Custom_Unknown);
}

if (material.IsKeywordEnabled("_IRIDESCENCE_ON"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,9 @@
},
{
"m_Id": "d4bf44ad812142cf81dd4619dbce963f"
},
{
"m_Id": "b3bf6e9825a34fe5ab67bdb85f17df32"
}
],
"m_Keywords": [
Expand Down Expand Up @@ -144,10 +147,10 @@
"m_Id": "318b5ae978fa4468abc6503de868db1a"
},
{
"m_Id": "6d9d970e9d054130ba8a65bc95d897ed"
"m_Id": "609285c40dd646329176a8c4d3cb8c4c"
},
{
"m_Id": "609285c40dd646329176a8c4d3cb8c4c"
"m_Id": "6d9d970e9d054130ba8a65bc95d897ed"
},
{
"m_Id": "597e8aa92a6c43209a247f71fd2fe72f"
Expand Down Expand Up @@ -6820,10 +6823,10 @@
"m_Guid": {
"m_GuidSerialized": "5b68bec3-f5ba-42d8-a542-6cb4184b3974"
},
"m_Name": "Enable Volume/Transmission",
"m_Name": "Enable Transmission",
"m_DefaultRefNameVersion": 1,
"m_RefNameGeneratedByDisplayName": "Enable Volume/Transmission",
"m_DefaultReferenceName": "_ENABLE_VOLUME_TRANSMISSION",
"m_RefNameGeneratedByDisplayName": "Enable Transmission",
"m_DefaultReferenceName": "_ENABLE_TRANSMISSION",
"m_OverrideReferenceName": "_VOLUME_TRANSMISSION_ON",
"m_GeneratePropertyBlock": true,
"m_UseCustomSlotLabel": false,
Expand Down Expand Up @@ -7043,6 +7046,9 @@
},
{
"m_Id": "302d94653f844799b5f7e93c4d06ed3d"
},
{
"m_Id": "b3bf6e9825a34fe5ab67bdb85f17df32"
}
]
}
Expand Down Expand Up @@ -7134,7 +7140,7 @@
"m_Group": {
"m_Id": ""
},
"m_Name": "Enable Volume/Transmission",
"m_Name": "Enable Transmission",
"m_DrawState": {
"m_Expanded": true,
"m_Position": {
Expand Down Expand Up @@ -16564,6 +16570,28 @@
}
}

{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty",
"m_ObjectId": "b3bf6e9825a34fe5ab67bdb85f17df32",
"m_Guid": {
"m_GuidSerialized": "8afa82b2-e899-4d34-be69-8af563228705"
},
"m_Name": "Enable Volume",
"m_DefaultRefNameVersion": 1,
"m_RefNameGeneratedByDisplayName": "Enable Volume",
"m_DefaultReferenceName": "_Enable_Volume",
"m_OverrideReferenceName": "_VOLUME_ON",
"m_GeneratePropertyBlock": true,
"m_UseCustomSlotLabel": false,
"m_CustomSlotLabel": "",
"m_Precision": 0,
"overrideHLSLDeclaration": false,
"hlslDeclarationOverride": 0,
"m_Hidden": false,
"m_Value": false
}

{
"m_SGVersion": 0,
"m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot",
Expand Down

0 comments on commit 2b77615

Please sign in to comment.