material.json

{
    // defines the identifier name, together with the supplier should be
    // able to define a globally unique material name (eg: `loro_piano.python_raw`)
    "name": "python_raw",

    // defines the material public name, to be used after the rendering phase
    // this name should group of materials that share a set of features typically
    // defined commercial and/or marketing point of view
    "output": "python",

    // defines the material technical name, to be used within the production
    // pipeline and not outside of this context
    "techname": "python_raw",

    // describes the material in a clear and succinct way, may be used for external
    // visual description of the material and as such should be properly curated
    "description": "Nappa is a finer and notably smooth cow leather with a buttery texture. Here, it is supplied by a leading Italian tannery.",

    // sets the material version (semantic version - major.minor.patch)
    "version": "1.4.1",

    // declares the Global Trade Item Number (incorporated into several product
    // identifying standards like ISBN, UPC, and EAN)
    "gtin": "2388060103489",

    // declares the Manufacturer Part Number, an internal identifier assigned
    // to material by its manufacturer
    "mpn": "A456-426655440000",

    // declares the unique identifier that refers to the particular
    // stock keeping unit of a material within a factory or supplier
    "sku": "PY1205",

    // declares the material supplier
    "supplier": "loro_piano",

    // declares essential cites's material information
    "cites" : {
        // scientific name (genus and species) and common name
        "scientific_name": "Lorem ipsum",
        // arbitrary cites data
        "$notes": { }
    },

    // defines all the material color variations
    "colors": [
        "black",
        "white",
        "grey",
        "blush"
    ],

    // declares the archived photographies that
    // were taken of received material samples
    "samples": [
      "python_grey_20180804.raw",
      "python_black_20180804.raw"
    ],

    // declares the material process,
    // - legacy for migrated materials from V-Ray
    // - procedural for mathematical methods
    // - scan for scanned materials
    // indirectly defines the mandatory content of `technical`
    "type": "legacy",

    // describes technical data used during the visual assets production
    "technical": {
        // declares the preferred mesh to be used
        // when displaying the material
        "mesh": "shader_ball",

        // declares renderer config data
        "renderer": {
            "maya": {
                // manually set for future application
                "height": 0.15,

                // manually set for future application
                "normal": 1,
                "outputs": [
                    "base_color",
                    "normal",
                    "roughness",
                    "metallic",
                    "height"
                ]
            },

            "redshift": {
                "tilling": {
                    // type can be overall, pattern and detail.
                    // "overall" is applied when no other type is set.
                    "type": "overall",
                    "U": 1,
                    "V": 1
                }
            },

            "vray": {
                "tilling": {
                    "type": "overall",
                    "U": 1,
                    "V": 1
                }
            },

            "photo": {
                "model": "Canon EOS 350D",
                "orientation": "Horizontal",
                "x_resolution": 72,
                "y_resolution": 72,
                "y_cb_cr_positioning": "Co-sited",
                "shutter": "1/400",
                "fnumber": "14.0",
                "exposure_program": "Program AE",
                "iso": 400,
                "focal_length": "55.0mm",
                "flash": false,
                "white_balance": "Auto"
            },

            // declares the swatches creation config data
            // more than one configuration supported,
            // meaning for each configuration a set of
            // swatches will be generated
            "swatches": [{
                // assumes that the spec, including rendering options,
                // are all the same except for the "mesh"
                "mesh": "plane",

                // swatch dimension
                "width": 500,
                "height": 500,

                // re-positioning values
                "offset_x": 20,
                "offset_y": 50
            }]
        }
    }
}

material.sub.json

{
    // path to the parent's file, should be relative to
    // the path of the parent
    "$parent": "python.natural.json",
    "name": "python_white",
    "output": "python",
    "techname": "python_white",
    "sku": "PY120504",
    "technical": {
        "maya": {
            // small technical detail from the maya context
            // top be used by that technology
            "height": 0.25,

            // invalidates parent's spec.maya.normal, by setting
            // the value of the key to null (unset value)
            "normal": null
        }
    }
}