// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using System; using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Utilities.Gltf.Schema { /// /// The material appearance of a primitive. /// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0/schema /// [Serializable] public class GltfMaterial : GltfChildOfRootProperty { /// /// A set of parameter values that are used to define the metallic-roughness /// material model from Physically-Based Rendering (PBR) methodology. /// public GltfPbrMetallicRoughness pbrMetallicRoughness; /// /// A set of parameter values used to light flat-shaded materials /// public GltfMaterialCommonConstant commonConstant; /// /// A tangent space normal map. Each texel represents the XYZ components of a /// normal vector in tangent space. /// public GltfNormalTextureInfo normalTexture; /// /// The occlusion map is a greyscale texture, with white indicating areas that /// should receive full indirect lighting and black indicating no indirect /// lighting. /// public GltfOcclusionTextureInfo occlusionTexture; /// /// The emissive map controls the color and intensity of the light being emitted /// by the material. This texture contains RGB components in sRGB color space. /// If a fourth component (A) is present, it is ignored. /// public GltfTextureInfo emissiveTexture; /// /// The RGB components of the emissive color of the material. /// If an emissiveTexture is specified, this value is multiplied with the texel /// values. /// /// 0.0 /// 1.0 /// /// 3 /// 3 /// public float[] emissiveFactor = { 0f, 0f, 0f, 0f }; /// /// The material's alpha rendering mode enumeration specifying the interpretation of the /// alpha value of the main factor and texture. In `OPAQUE` mode, the alpha value is /// ignored and the rendered output is fully opaque. In `MASK` mode, the rendered output /// is either fully opaque or fully transparent depending on the alpha value and the /// specified alpha cutoff value. In `BLEND` mode, the alpha value is used to composite /// the source and destination areas. The rendered output is combined with the background /// using the normal painting operation (i.e. the Porter and Duff over operator). /// public string alphaMode; /// /// Specifies the cutoff threshold when in `MASK` mode. If the alpha value is greater than /// or equal to this value then it is rendered as fully opaque, otherwise, it is rendered /// as fully transparent. This value is ignored for other modes. /// public double alphaCutoff = 0.5f; /// /// Specifies whether the material is double sided. When this value is false, back-face /// culling is enabled. When this value is true, back-face culling is disabled and double /// sided lighting is enabled. The back-face must have its normals reversed before the /// lighting equation is evaluated. /// public bool doubleSided; /// /// Unity Material wrapper for the GltfMaterial /// public Material Material { get; internal set; } } }