File: /home/lindsay/xeolabs/xeogl-next/xeogl/src/materials/material.js
/**
A **Material** defines the surface appearance of attached {{#crossLink "Mesh"}}Meshes{{/crossLink}}.
Material is the base class for:
* {{#crossLink "MetallicMaterial"}}{{/crossLink}} - physically-based material for metallic surfaces. Use this one for things made of metal.
* {{#crossLink "SpecularMaterial"}}{{/crossLink}} - physically-based material for non-metallic (dielectric)
surfaces. Use this one for insulators, such as ceramics, plastics, wood etc.
* {{#crossLink "PhongMaterial"}}{{/crossLink}} - material for classic Blinn-Phong shading. This is less demanding of graphics hardware than the physically-based materials.
* {{#crossLink "LambertMaterial"}}{{/crossLink}} - material for fast, flat-shaded CAD rendering without textures. Use
this for navigating huge CAD or BIM models interactively. This material gives the best rendering performance and uses the least memory.
* {{#crossLink "EmphasisMaterial"}}{{/crossLink}} - defines the appearance of Meshes when "ghosted" or "highlighted".
* {{#crossLink "EdgeMaterial"}}{{/crossLink}} - defines the appearance of Meshes when edges are emphasized.
* {{#crossLink "OutlineMaterial"}}{{/crossLink}} - defines the appearance of outlines drawn around Meshes.
A {{#crossLink "Scene"}}Scene{{/crossLink}} is allowed to contain a mixture of these material types.
@class Material
@module xeogl
@submodule materials
@constructor
@extends Component
*/
import {Component} from '../component.js';
import {stats} from './../stats.js';
import {componentClasses} from "./../componentClasses.js";
const type = "xeogl.Material";
class Material extends Component{
/**
JavaScript class name for this Component.
For example: "xeogl.AmbientLight", "xeogl.MetallicMaterial" etc.
@property type
@type String
@final
*/
get type() {
return type;
}
init(cfg) {
super.init(cfg);
stats.memory.materials++;
}
destroy() {
super.destroy();
stats.memory.materials--;
}
}
componentClasses[type] = Material;
export{Material};