module Codec.GlTF.PbrMetallicRoughness ( PbrMetallicRoughness(..) ) where import Codec.GlTF.Prelude import Codec.GlTF.TextureInfo (TextureInfo_) -- | A set of parameter values that are used to define the metallic-roughness -- material model from Physically-Based Rendering (PBR) methodology. data PbrMetallicRoughness = PbrMetallicRoughness { baseColorFactor :: (Float, Float, Float, Float) , metallicFactor :: Float , roughnessFactor :: Float , metallicRoughnessTexture :: Maybe TextureInfo_ , baseColorTexture :: Maybe TextureInfo_ , extensions :: Maybe Object , extras :: Maybe Value } deriving (Eq, Show, Generic) instance FromJSON PbrMetallicRoughness where parseJSON = withObject "PbrMetallicRoughness" \o -> do baseColorFactor <- o .:? "baseColorFactor" .!= (1.0, 1.0, 1.0, 1.0) metallicFactor <- o .:? "metallicFactor" .!= 1.0 roughnessFactor <- o .:? "roughnessFactor" .!= 1.0 metallicRoughnessTexture <- o .:? "metallicRoughnessTexture" baseColorTexture <- o .:? "baseColorTexture" extensions <- o .:? "extensions" extras <- o .:? "extras" pure PbrMetallicRoughness{..} instance ToJSON PbrMetallicRoughness