using UnityEngine; namespace UnityGLTF { public class PBRGraphMap : BaseGraphMap, IMetalRoughUniformMap, IVolumeMap, ITransmissionMap, IIORMap, IIridescenceMap, ISpecularMap, IClearcoatMap, IDispersionMap, ISheenMap { internal const string PBRGraphGuid = "478ce3626be7a5f4ea58d6b13f05a2e4"; public PBRGraphMap() : this("UnityGLTF/PBRGraph") {} protected PBRGraphMap(string shaderName) : base(shaderName, PBRGraphGuid) { } #if !UNITY_2021_1_OR_NEWER private const string PBRGraphTransparentGuid = "0a931320a74ca574b91d2d7d4557dcf1"; private const string PBRGraphTransparentDoubleGuid = "54352a53405971b41a6587615f947085"; private const string PBRGraphDoubleGuid = "8bc739b14fe811644abb82057b363ba8"; public PBRGraphMap(bool transparent, bool doubleSided) : base( "UnityGLTF/PBRGraph" + (transparent ? "-Transparent" : "") + (doubleSided ? "-Double" : ""), (transparent && doubleSided ? PBRGraphTransparentDoubleGuid : transparent ? PBRGraphTransparentGuid : doubleSided ? PBRGraphDoubleGuid : PBRGraphGuid)) { } #endif public PBRGraphMap(Material mat) : base(mat) { } public override IUniformMap Clone() { var clone = new PBRGraphMap(new Material(_material)); clone.Material.shaderKeywords = _material.shaderKeywords; return clone; } public Texture NormalTexture { get => _material.GetTexture("normalTexture"); set => _material.SetTexture("normalTexture", value); } public int NormalTexCoord { get => (int) _material.GetFloat("normalTextureTexCoord"); set => _material.SetFloat("normalTextureTexCoord", Mathf.RoundToInt(value)); } public double NormalTexScale { get => _material.GetFloat("normalScale"); set => _material.SetFloat("normalScale", (float) value); } public Vector2 NormalXOffset { get => _material.GetTextureOffset("normalTexture"); set => _material.SetTextureOffset("normalTexture", value); } public double NormalXRotation { get => _material.GetFloat("normalTextureRotation"); set => _material.SetFloat("normalTextureRotation", (float) value); } public Vector2 NormalXScale { get => _material.GetTextureScale("normalTexture"); set => _material.SetTextureScale("normalTexture", value); } public int NormalXTexCoord { get => (int) _material.GetFloat("normalTextureTexCoord"); set => _material.SetFloat("normalTextureTexCoord", Mathf.RoundToInt(value)); } public Texture OcclusionTexture { get => _material.GetTexture("occlusionTexture"); set => _material.SetTexture("occlusionTexture", value); } public int OcclusionTexCoord { get => (int) _material.GetFloat("occlusionTextureTexCoord"); set => _material.SetFloat("occlusionTextureTexCoord", Mathf.RoundToInt(value)); } public double OcclusionTexStrength { get => _material.GetFloat("occlusionStrength"); set => _material.SetFloat("occlusionStrength", (float) value); } public Vector2 OcclusionXOffset { get => _material.GetTextureOffset("occlusionTexture"); set => _material.SetTextureOffset("occlusionTexture", value); } public double OcclusionXRotation { get => _material.GetFloat("occlusionTextureRotation"); set => _material.SetFloat("occlusionTextureRotation", (float) value); } public Vector2 OcclusionXScale { get => _material.GetTextureScale("occlusionTexture"); set => _material.SetTextureScale("occlusionTexture", value); } public int OcclusionXTexCoord { get => (int) _material.GetFloat("occlusionTextureTexCoord"); set => _material.SetFloat("occlusionTextureTexCoord", Mathf.RoundToInt(value)); } public Texture EmissiveTexture { get => _material.GetTexture("emissiveTexture"); set => _material.SetTexture("emissiveTexture", value); } public int EmissiveTexCoord { get => (int)_material.GetFloat("emissiveTextureTexCoord"); set => _material.SetFloat("emissiveTextureTexCoord", (float) value); } public Color EmissiveFactor { get => _material.GetColor("emissiveFactor"); set => _material.SetColor("emissiveFactor", value); } public Vector2 EmissiveXOffset { get => _material.GetTextureOffset("emissiveTexture"); set => _material.SetTextureOffset("emissiveTexture", value); } public double EmissiveXRotation { get => _material.GetFloat("emissiveTextureRotation"); set => _material.SetFloat("emissiveTextureRotation", (float) value); } public Vector2 EmissiveXScale { get => _material.GetTextureScale("emissiveTexture"); set => _material.SetTextureScale("emissiveTexture", value); } public int EmissiveXTexCoord { get => (int)_material.GetFloat("emissiveTextureTexCoord"); set => _material.SetFloat("emissiveTextureTexCoord", (float) value); } public Texture MetallicRoughnessTexture { get => _material.GetTexture("metallicRoughnessTexture"); set => _material.SetTexture("metallicRoughnessTexture", value); } public int MetallicRoughnessTexCoord { get => (int)_material.GetFloat("metallicRoughnessTextureTexCoord"); set => _material.SetFloat("metallicRoughnessTextureTexCoord", (float) value); } public Vector2 MetallicRoughnessXOffset { get => _material.GetTextureOffset("metallicRoughnessTexture"); set => _material.SetTextureOffset("metallicRoughnessTexture", value); } public double MetallicRoughnessXRotation { get => _material.GetFloat("metallicRoughnessTextureRotation"); set => _material.SetFloat("metallicRoughnessTextureRotation", (float) value); } public Vector2 MetallicRoughnessXScale { get => _material.GetTextureScale("metallicRoughnessTexture"); set => _material.SetTextureScale("metallicRoughnessTexture", value); } public int MetallicRoughnessXTexCoord { get => (int)_material.GetFloat("metallicRoughnessTextureTexCoord"); set => _material.SetFloat("metallicRoughnessTextureTexCoord", (float) value); } public double MetallicFactor { get => _material.GetFloat("metallicFactor"); set => _material.SetFloat("metallicFactor", (float) value); } public double RoughnessFactor { get => _material.GetFloat("roughnessFactor"); set => _material.SetFloat("roughnessFactor", (float) value); } public double ThicknessFactor { get => _material.GetFloat("thicknessFactor"); set => _material.SetFloat("thicknessFactor", (float) value); } public Texture ThicknessTexture { get => _material.GetTexture("thicknessTexture"); set => _material.SetTexture("thicknessTexture", value); } public double ThicknessTextureRotation { get => _material.GetFloat("thicknessTextureRotation"); set => _material.SetFloat("thicknessTextureRotation", (float) value); } public Vector2 ThicknessTextureOffset { get => _material.GetTextureOffset("thicknessTexture"); set => _material.SetTextureOffset("thicknessTexture", value); } public Vector2 ThicknessTextureScale { get => _material.GetTextureScale("thicknessTexture"); set => _material.SetTextureScale("thicknessTexture", value); } public int ThicknessTextureTexCoord { get => (int)_material.GetFloat("thicknessTextureTexCoord"); set => _material.SetFloat("thicknessTextureTexCoord", (float) value); } public double AttenuationDistance { get => _material.GetFloat("attenuationDistance"); set => _material.SetFloat("attenuationDistance", (float) value); } public Color AttenuationColor { get => _material.GetColor("attenuationColor"); set => _material.SetColor("attenuationColor", value); } public double TransmissionFactor { get => _material.GetFloat("transmissionFactor"); set => _material.SetFloat("transmissionFactor", (float) value); } public Texture TransmissionTexture { get => _material.GetTexture("transmissionTexture"); set => _material.SetTexture("transmissionTexture", value); } public double TransmissionTextureRotation { get => _material.GetFloat("transmissionTextureRotation"); set => _material.SetFloat("transmissionTextureRotation", (float) value); } public Vector2 TransmissionTextureOffset { get => _material.GetTextureOffset("transmissionTexture"); set => _material.SetTextureOffset("transmissionTexture", value); } public Vector2 TransmissionTextureScale { get => _material.GetTextureScale("transmissionTexture"); set => _material.SetTextureScale("transmissionTexture", value); } public int TransmissionTextureTexCoord { get => (int)_material.GetFloat("transmissionTextureTexCoord"); set => _material.SetFloat("transmissionTextureTexCoord", (float) value); } public double IOR { get => _material.GetFloat("ior"); set => _material.SetFloat("ior", (float) value); } public double IridescenceFactor { get => _material.GetFloat("iridescenceFactor"); set => _material.SetFloat("iridescenceFactor", (float) value); } public double IridescenceIor { get => _material.GetFloat("iridescenceIor"); set => _material.SetFloat("iridescenceIor", (float) value); } public double IridescenceThicknessMinimum { get => _material.GetFloat("iridescenceThicknessMinimum"); set => _material.SetFloat("iridescenceThicknessMinimum", (float) value); } public double IridescenceThicknessMaximum { get => _material.GetFloat("iridescenceThicknessMaximum"); set => _material.SetFloat("iridescenceThicknessMaximum", (float) value); } public Texture IridescenceTexture { get => _material.GetTexture("iridescenceTexture"); set => _material.SetTexture("iridescenceTexture", value); } public double IridescenceTextureRotation { get => _material.GetFloat("iridescenceTextureRotation"); set => _material.SetFloat("iridescenceTextureRotation", (float) value); } public Vector2 IridescenceTextureOffset { get => _material.GetTextureOffset("iridescenceTexture"); set => _material.SetTextureOffset("iridescenceTexture", value); } public Vector2 IridescenceTextureScale { get => _material.GetTextureScale("iridescenceTexture"); set => _material.SetTextureScale("iridescenceTexture", value); } public int IridescenceTextureTexCoord { get => (int)_material.GetFloat("iridescenceTextureTexCoord"); set => _material.SetFloat("iridescenceTextureTexCoord", (float) value); } public Texture IridescenceThicknessTexture { get => _material.GetTexture("iridescenceThicknessTexture"); set => _material.SetTexture("iridescenceThicknessTexture", value); } public double IridescenceThicknessTextureRotation { get => _material.GetFloat("iridescenceThicknessTextureRotation"); set => _material.SetFloat("iridescenceThicknessTextureRotation", (float) value); } public Vector2 IridescenceThicknessTextureOffset { get => _material.GetTextureOffset("iridescenceThicknessTexture"); set => _material.SetTextureOffset("iridescenceThicknessTexture", value); } public Vector2 IridescenceThicknessTextureScale { get => _material.GetTextureScale("iridescenceThicknessTexture"); set => _material.SetTextureScale("iridescenceThicknessTexture", value); } public int IridescenceThicknessTextureTexCoord { get => (int)_material.GetFloat("iridescenceThicknessTextureTexCoord"); set => _material.SetFloat("iridescenceThicknessTextureTexCoord", (float) value); } public double SpecularFactor { get => _material.GetFloat("specularFactor"); set => _material.SetFloat("specularFactor", (float) value); } public Texture SpecularTexture { get => _material.GetTexture("specularTexture"); set=> _material.SetTexture("specularTexture", value); } public double SpecularTextureRotation { get => _material.GetFloat("specularTextureRotation"); set => _material.SetFloat("specularTextureRotation", (float) value); } public Vector2 SpecularTextureOffset { get => _material.GetTextureOffset("specularTexture"); set => _material.SetTextureOffset("specularTexture", value); } public Vector2 SpecularTextureScale { get => _material.GetTextureScale("specularTexture"); set => _material.SetTextureScale("specularTexture", value); } public int SpecularTextureTexCoord { get => (int)_material.GetFloat("specularTextureTexCoord"); set => _material.SetFloat("specularTextureTexCoord", (float) value); } public Color SpecularColorFactor { get => _material.GetColor("specularColorFactor"); set => _material.SetColor("specularColorFactor", value); } public Texture SpecularColorTexture { get => _material.GetTexture("specularColorTexture"); set => _material.SetTexture("specularColorTexture", value); } public double SpecularColorTextureRotation { get => _material.GetFloat("specularColorTextureRotation"); set => _material.SetFloat("specularColorTextureRotation", (float) value); } public Vector2 SpecularColorTextureOffset { get => _material.GetTextureOffset("specularColorTexture"); set => _material.SetTextureOffset("specularColorTexture", value); } public Vector2 SpecularColorTextureScale { get => _material.GetTextureScale("specularColorTexture"); set => _material.SetTextureScale("specularColorTexture", value); } public int SpecularColorTextureTexCoord { get => (int)_material.GetFloat("specularColorTextureTexCoord"); set => _material.SetFloat("specularColorTextureTexCoord", (float) value); } public double ClearcoatFactor { get => _material.GetFloat("clearcoatFactor"); set => _material.SetFloat("clearcoatFactor", (float) value); } public Texture ClearcoatTexture { get => _material.GetTexture("clearcoatTexture"); set => _material.SetTexture("clearcoatTexture", value); } public double ClearcoatTextureRotation { get => _material.GetFloat("clearcoatTextureRotation"); set => _material.SetFloat("clearcoatTextureRotation", (float) value); } public Vector2 ClearcoatTextureOffset { get => _material.GetTextureOffset("clearcoatTexture"); set => _material.SetTextureOffset("clearcoatTexture", value); } public Vector2 ClearcoatTextureScale { get => _material.GetTextureScale("clearcoatTexture"); set => _material.SetTextureScale("clearcoatTexture", value); } public int ClearcoatTextureTexCoord { get => (int)_material.GetFloat("clearcoatTextureTexCoord"); set => _material.SetFloat("clearcoatTextureTexCoord", (float) value); } public double ClearcoatRoughnessFactor { get => _material.GetFloat("clearcoatRoughnessFactor"); set => _material.SetFloat("clearcoatRoughnessFactor", (float) value); } public Texture ClearcoatRoughnessTexture { get => _material.GetTexture("clearcoatRoughnessTexture"); set => _material.SetTexture("clearcoatRoughnessTexture", value); } public double ClearcoatRoughnessTextureRotation { get => _material.GetFloat("clearcoatRoughnessTextureRotation"); set => _material.SetFloat("clearcoatRoughnessTextureRotation", (float) value); } public Vector2 ClearcoatRoughnessTextureOffset { get => _material.GetTextureOffset("clearcoatRoughnessTexture"); set => _material.SetTextureOffset("clearcoatRoughnessTexture", value); } public Vector2 ClearcoatRoughnessTextureScale { get => _material.GetTextureScale("clearcoatRoughnessTexture"); set => _material.SetTextureScale("clearcoatRoughnessTexture", value); } public int ClearcoatRoughnessTextureTexCoord { get => (int)_material.GetFloat("clearcoatRoughnessTextureTexCoord"); set => _material.SetFloat("clearcoatRoughnessTextureTexCoord", (float) value); } public float Dispersion { get => _material.GetFloat("dispersion"); set => _material.SetFloat("dispersion", value); } public float SheenRoughnessFactor { get => _material.GetFloat("sheenRoughnessFactor"); set => _material.SetFloat("sheenRoughnessFactor", value); } public Color SheenColorFactor { get => _material.GetColor("sheenColorFactor"); set => _material.SetColor("sheenColorFactor", value); } public Texture SheenColorTexture { get => _material.GetTexture("sheenColorTexture"); set => _material.SetTexture("sheenColorTexture", value); } public double SheenColorTextureRotation { get => _material.GetFloat("sheenColorTextureRotation"); set => _material.SetFloat("sheenColorTextureRotation", (float) value); } public Vector2 SheenColorTextureOffset { get => _material.GetTextureOffset("sheenColorTexture"); set => _material.SetTextureOffset("sheenColorTexture", value); } public Vector2 SheenColorTextureScale { get => _material.GetTextureScale("sheenColorTexture"); set => _material.SetTextureScale("sheenColorTexture", value); } public int SheenColorTextureTexCoord { get => (int)_material.GetFloat("sheenColorTextureTexCoord"); set => _material.SetFloat("sheenColorTextureTexCoord", (float) value); } public Texture SheenRoughnessTexture { get => _material.GetTexture("sheenRoughnessTexture"); set => _material.SetTexture("sheenRoughnessTexture", value); } public double SheenRoughnessTextureRotation { get => _material.GetFloat("sheenRoughnessTextureRotation"); set => _material.SetFloat("sheenRoughnessTextureRotation", (float) value); } public Vector2 SheenRoughnessTextureOffset { get => _material.GetTextureOffset("sheenRoughnessTexture"); set => _material.SetTextureOffset("sheenRoughnessTexture", value); } public Vector2 SheenRoughnessTextureScale { get => _material.GetTextureScale("sheenRoughnessTexture"); set => _material.SetTextureScale("sheenRoughnessTexture", value); } public int SheenRoughnessTextureTexCoord { get => (int)_material.GetFloat("sheenRoughnessTextureTexCoord"); set => _material.SetFloat("sheenRoughnessTextureTexCoord", (float) value); } /* Clearcoat Normal Texture currently not supported public Texture ClearcoatNormalTexture { get => _material.GetTexture("clearcoatNormalTexture"); set => _material.SetTexture("clearcoatNormalTexture", value); } public double ClearcoatNormalTextureRotation { get => _material.GetFloat("clearcoatNormalTextureRotation"); set => _material.SetFloat("clearcoatNormalTextureRotation", (float) value); } public Vector2 ClearcoatNormalTextureOffset { get => _material.GetTextureOffset("clearcoatNormalTexture"); set => _material.SetTextureOffset("clearcoatNormalTexture", value); } public Vector2 ClearcoatNormalTextureScale { get => _material.GetTextureScale("clearcoatNormalTexture"); set => _material.SetTextureScale("clearcoatNormalTexture", value); } public int ClearcoatNormalTextureTexCoord { get => (int)_material.GetFloat("clearcoatNormalTextureTexCoord"); set => _material.SetFloat("clearcoatNormalTextureTexCoord", (float) value); } */ } }