r3-legacy/src/r3-d3-material-0.js

947 lines
32 KiB
JavaScript

/**
* Material Superset - The apiMaterial properties get moved into the Material object itself, and then the instance is
* created
* @param graphics R3.Runtime.Graphics
* @param apiMaterial R3.D3.API.Material
* @property materialType
* @constructor
* @returns {R3.D3.Material}
*/
/**
* R3.D3.Material
* @param inherited
* @constructor
*/
R3.D3.Material = function(
inherited
) {
if (R3.Utils.UndefinedOrNull(inherited)) {
throw new Error('R3.D3.Material should not be instantiated directly');
}
__UPGRADE_TO_RUNTIME__;
};
R3.D3.Material.prototype = Object.create(R3.Component.prototype);
R3.D3.Material.prototype.constructor = R3.D3.Material;
R3.D3.Material.prototype.updateInstance = function(property) {
if (R3.Utils.UndefinedOrNull(this.instance)) {
console.warn('no material instance');
return;
}
if (property === 'materialType') {
var componentType = R3.D3.API.Material.GetComponentType(this.materialType);
this.replace(componentType);
return;
}
if (property === 'alphaTest') {
this.instance.alphaTest = this.alphaTest;
this.instance.needsUpdate = true;
return;
}
if (property === 'blendDst') {
this.instance.blendDst = this.blendDst;
return;
}
if (property === 'blendDstAlpha') {
this.instance.blendDstAlpha = this.blendDstAlpha;
return;
}
if (property === 'blendEquation') {
this.instance.blendEquation = this.blendEquation;
return;
}
if (property === 'blendEquationAlpha') {
this.instance.blendEquationAlpha = this.blendEquationAlpha;
return;
}
if (property === 'blending') {
this.instance.blending = this.blending;
return;
}
if (property === 'blendSrc') {
this.instance.blendSrc = this.blendSrc;
return;
}
if (property === 'blendSrcAlpha') {
this.instance.blendSrcAlpha = this.blendSrcAlpha;
return;
}
if (property === 'clipIntersection') {
this.instance.clipIntersection = this.clipIntersection;
return;
}
if (property === 'clippingPlanes') {
console.warn('todo: implement clipping planes update');
return;
}
if (property === 'clipShadows') {
this.instance.clipShadows = this.clipShadows;
return;
}
if (property === 'colorWrite') {
this.instance.colorWrite = this.colorWrite;
return;
}
if (property === 'defines') {
this.instance.defines = this.defines;
this.instance.needsUpdate = true;
return;
}
if (property === 'depthFunc') {
this.instance.depthFunc = this.depthFunc;
return;
}
if (property === 'depthTest') {
this.instance.depthTest = this.depthTest;
return;
}
if (property === 'depthWrite') {
this.instance.depthWrite = this.depthWrite;
return;
}
if (property === 'dithering') {
this.instance.dithering = this.dithering;
console.log('not sure about dithering needsupdate - cannot detect any changes until now');
return;
}
if (property === 'flatShading') {
this.instance.flatShading = this.flatShading;
retiurn;
}
if (property === 'fog') {
this.instance.fog = this.fog;
return;
}
if (property === 'lights') {
this.instance.lights = this.lights;
return;
}
if (property === 'opacity') {
this.instance.opacity = this.opacity;
return;
}
if (property === 'overdraw') {
this.instance.overdraw = this.overdraw;
return;
}
if (property === 'polygonOffset') {
this.instance.polygonOffset = this.polygonOffset;
return;
}
if (property === 'polygonOffsetFactor') {
this.instance.polygonOffsetFactor = this.polygonOffsetFactor;
return;
}
if (property === 'polygonOffsetUnits') {
this.instance.polygonOffsetUnits = this.polygonOffsetUnits;
return;
}
if (property === 'precision') {
this.instance.precision = this.precision;
return;
}
if (property === 'premultipliedAlpha') {
this.instance.premultipliedAlpha = this.premultipliedAlpha;
return;
}
if (property === 'side') {
this.instance.side = this.side;
return;
}
if (property === 'stencilWrite') {
this.instance.stencilWrite = this.stencilWrite;
return;
}
if (property === 'stencilFunc') {
this.instance.stencilFunc = this.stencilFunc;
return;
}
if (property === 'stencilRef') {
this.instance.stencilRef = this.stencilRef;
return;
}
if (property === 'stencilMask') {
this.instance.stencilMask = this.stencilMask;
return;
}
if (property === 'stencilFail') {
this.instance.stencilFail = this.stencilFail;
return;
}
if (property === 'stencilZFail') {
this.instance.stencilZFail = this.stencilZFail;
return;
}
if (property === 'stencilZPass') {
this.instance.stencilZPass = this.stencilZPass;
return;
}
if (property === 'transparent') {
this.instance.transparent = this.transparent;
return;
}
if (property === 'vertexColors') {
this.instance.vertexColors = this.vertexColors;
return;
}
if (property === 'visible') {
this.instance.visible = this.visible;
return;
}
if (property === 'needsUpdate') {
/**
* update follows
*/
}
this.instance.needsUpdate = true;
this.needsUpdate = false;
__UPDATE_INSTANCE__;
};
R3.D3.Material.prototype.assignTexture = function(instanceProperty, property) {
if (this[property] && this[property].instance) {
this.instance[instanceProperty] = this[property].instance;
} else {
this.instance[instanceProperty] = null;
}
this.instance.needsUpdate = true;
};
R3.D3.Material.prototype.getTextures = function() {
var textures = [];
Object.keys(this.linkedComponents).map(
function(property) {
if (this[property] instanceof R3.D3.Texture) {
textures.push(
{
property: property,
texture: this[property]
}
);
}
}.bind(this)
);
return textures;
};
/*
switch (this.materialType) {
case R3.D3.API.Material.MATERIAL_TYPE_STANDARD :
linkedComponents.alphaMap = R3.D3.Texture;
linkedComponents.aoMap = R3.D3.Texture;
linkedComponents.bumpMap = R3.D3.Texture;
linkedComponents.diffuseMap = R3.D3.Texture;
linkedComponents.displacementMap = R3.D3.Texture;
linkedComponents.emissiveMap = R3.D3.Texture;
linkedComponents.envMap = R3.D3.Texture;
linkedComponents.lightMap = R3.D3.Texture;
linkedComponents.metalnessMap = R3.D3.Texture;
linkedComponents.normalMap = R3.D3.Texture;
linkedComponents.roughnessMap = R3.D3.Texture;
break;
case R3.D3.API.Material.MATERIAL_TYPE_BASIC :
linkedComponents.alphaMap = R3.D3.Texture;
linkedComponents.aoMap = R3.D3.Texture;
linkedComponents.diffuseMap = R3.D3.Texture;
linkedComponents.envMap = R3.D3.Texture;
linkedComponents.lightMap = R3.D3.Texture;
linkedComponents.specularMap = R3.D3.Texture;
break;
case R3.D3.API.Material.MATERIAL_TYPE_PHONG :
linkedComponents.alphaMap = R3.D3.Texture;
linkedComponents.aoMap = R3.D3.Texture;
linkedComponents.bumpMap = R3.D3.Texture;
linkedComponents.diffuseMap = R3.D3.Texture;
linkedComponents.displacementMap = R3.D3.Texture;
linkedComponents.emissiveMap = R3.D3.Texture;
linkedComponents.envMap = R3.D3.Texture;
linkedComponents.lightMap = R3.D3.Texture;
linkedComponents.normalMap = R3.D3.Texture;
linkedComponents.specularMap = R3.D3.Texture;
break;
case R3.D3.API.Material.MATERIAL_TYPE_SHADER :
case R3.D3.API.Material.MATERIAL_TYPE_SHADER_RAW :
linkedComponents.vertexShader = R3.D3.Shader.Vertex;
linkedComponents.fragmentShader = R3.D3.Shader.Fragment;
break;
case R3.D3.API.Material.MATERIAL_TYPE_POINTS :
linkedComponents.diffuseMap = R3.D3.Texture;
break;
default :
throw new Error('unhandled material type: ' + this.materialType);
}
*/
//
//
//
// R3.D3.Material.prototype.createToonMaterialInstance = function() {
// return new THREE.MeshToonMaterial({
// name: this.name,
// opacity: this.opacity,
// transparent: this.transparent,
// blending: this.blending,
// blendSrc: this.blendSrc,
// blendDst: this.blendDst,
// blendEquation: this.blendEquation,
// depthTest: this.depthTest,
// depthFunc: this.depthFunc,
// depthWrite: this.depthWrite,
// polygonOffset: this.polygonOffset,
// polygonOffsetFactor: this.polygonOffsetFactor,
// polygonOffsetUnits: this.polygonOffsetUnits,
// alphaTest: this.alphaTest,
// clippingPlanes: this.clippingPlanes,
// clipShadows: this.clipShadows,
// overdraw: this.overdraw,
// visible: this.visible,
// side: this.side,
// color: this.color.instance,
// roughness: this.roughness,
// metalness: this.metalness,
// lightMapIntensity: this.lightMapIntensity,
// aoMapIntensity: this.aoMapIntensity,
// emissive: this.emissive.instance,
// emissiveIntensity: this.emissiveIntensity,
// bumpScale: this.bumpScale,
// normalScale: this.normalScale,
// displacementScale: this.displacementScale,
// refractionRatio: this.refractionRatio,
// fog: this.fog,
// flatShading: this.flatShading,
// wireframe: this.wireframe,
// wireframeLinewidth: this.wireframeLineWidth,
// wireframeLinecap: this.wireframeLineCap,
// wireframeLinejoin: this.wireframeLineJoin,
// vertexColors: this.vertexColors,
// skinning: this.skinning,
// morphTargets: this.morphTargets,
// morphNormals: this.morphNormals
// });
// };
// R3.D3.Material.prototype.createStandardMaterialInstance = function() {
// return new THREE.MeshStandardMaterial({
// name: this.name,
// opacity: this.opacity,
// transparent: this.transparent,
// blending: this.blending,
// blendSrc: this.blendSrc,
// blendDst: this.blendDst,
// blendEquation: this.blendEquation,
// depthTest: this.depthTest,
// depthFunc: this.depthFunc,
// depthWrite: this.depthWrite,
// polygonOffset: this.polygonOffset,
// polygonOffsetFactor: this.polygonOffsetFactor,
// polygonOffsetUnits: this.polygonOffsetUnits,
// alphaTest: this.alphaTest,
// clippingPlanes: this.clippingPlanes,
// clipShadows: this.clipShadows,
// overdraw: this.overdraw,
// visible: this.visible,
// side: this.side,
// color: this.color.instance,
// roughness: this.roughness,
// metalness: this.metalness,
// lightMapIntensity: this.lightMapIntensity,
// aoMapIntensity: this.aoMapIntensity,
// emissive: this.emissive.instance,
// emissiveIntensity: this.emissiveIntensity,
// bumpScale: this.bumpScale,
// normalScale: this.normalScale,
// displacementScale: this.displacementScale,
// refractionRatio: this.refractionRatio,
// fog: this.fog,
// flatShading: this.flatShading,
// wireframe: this.wireframe,
// wireframeLinewidth: this.wireframeLineWidth,
// wireframeLinecap: this.wireframeLineCap,
// wireframeLinejoin: this.wireframeLineJoin,
// vertexColors: this.vertexColors,
// skinning: this.skinning,
// morphTargets: this.morphTargets,
// morphNormals: this.morphNormals
// });
// };
// R3.D3.Material.prototype.createPointsMaterialInstance = function() {
// return new THREE.PointsMaterial({
// name: this.name,
// opacity: this.opacity,
// transparent: this.transparent,
// // blending: this.blending,
// // blendSrc: this.blendSrc,
// // blendDst: this.blendDst,
// // blendEquation: this.blendEquation,
// depthTest: this.depthTest,
// depthFunc: this.depthFunc,
// depthWrite: this.depthWrite,
// // polygonOffset: this.polygonOffset,
// // polygonOffsetFactor: this.polygonOffsetFactor,
// // polygonOffsetUnits: this.polygonOffsetUnits,
// // alphaTest: this.alphaTest,
// // clippingPlanes: this.clippingPlanes,
// // clipShadows: this.clipShadows,
// // overdraw: this.overdraw,
// visible: this.visible,
// side: this.side,
// color: this.color.instance,
// size: this.pointSize,
// sizeAttenuation: this.pointSizeAttenuation
// // vertexColors: R3.D3.API.Material.TYPE_VERTEX_COLORS,
// // fog: this.fog
// });
// };
//
// R3.D3.Material.prototype.createLineBasicMaterialInstance = function() {
//
// var linecap = 'round';
//
// if (this.lineCap === R3.D3.API.Material.LINE_CAP_BUTT) {
// linecap = 'butt';
// }
//
// if (this.lineCap === R3.D3.API.Material.LINE_CAP_SQUARE) {
// linecap = 'square';
// }
//
// var linejoin = 'round';
//
// if (this.lineJoin === R3.D3.API.Material.LINE_JOIN_BEVEL) {
// linejoin = 'bevel';
// }
//
// if (this.lineJoin === R3.D3.API.Material.LINE_JOIN_MITER) {
// linejoin = 'miter';
// }
//
// return new THREE.LineBasicMaterial({
// name: this.name,
// opacity: this.opacity,
// transparent: this.transparent,
// // blending: this.blending,
// // blendSrc: this.blendSrc,
// // blendDst: this.blendDst,
// // blendEquation: this.blendEquation,
// depthTest: this.depthTest,
// depthFunc: this.depthFunc,
// depthWrite: this.depthWrite,
// // polygonOffset: this.polygonOffset,
// // polygonOffsetFactor: this.polygonOffsetFactor,
// // polygonOffsetUnits: this.polygonOffsetUnits,
// // alphaTest: this.alphaTest,
// // clippingPlanes: this.clippingPlanes,
// // clipShadows: this.clipShadows,
// // overdraw: this.overdraw,
// visible: this.visible,
// side: this.side,
// color: this.color.instance,
// linewidth: this.lineWidth,
// linecap: linecap,
// linejoin: linejoin
// // vertexColors: R3.D3.API.Material.TYPE_VERTEX_COLORS,
// // fog: this.fog
// });
// };
//
// R3.D3.Material.prototype.createPhongMaterialInstance = function() {
// return new THREE.MeshPhongMaterial({
// name: this.name,
// opacity: this.opacity,
// transparent: this.transparent,
// blending: this.blending,
// blendSrc: this.blendSrc,
// blendDst: this.blendDst,
// blendEquation: this.blendEquation,
// depthTest: this.depthTest,
// depthFunc: this.depthFunc,
// depthWrite: this.depthWrite,
// polygonOffset: this.polygonOffset,
// polygonOffsetFactor: this.polygonOffsetFactor,
// polygonOffsetUnits: this.polygonOffsetUnits,
// alphaTest: this.alphaTest,
// clippingPlanes: this.clippingPlanes,
// clipShadows: this.clipShadows,
// overdraw: this.overdraw,
// visible: this.visible,
// side: this.side,
// color: this.color.instance,
// specular: this.specular.instance,
// shininess: this.shininess,
// lightMapIntensity: this.lightMapIntensity,
// aoMapIntensity: this.aoMapIntensity,
// emissive: this.emissive.instance,
// emissiveIntensity: this.emissiveIntensity,
// bumpScale: this.bumpScale,
// normalScale: this.normalScale,
// displacementScale: this.displacementScale,
// combine: this.combine,
// refractionRatio: this.refractionRatio,
// fog: this.fog,
// flatShading: this.flatShading,
// wireframe: this.wireframe,
// wireframeLinewidth: this.wireframeLineWidth,
// wireframeLinecap: this.wireframeLineCap,
// wireframeLinejoin: this.wireframeLineJoin,
// vertexColors: this.vertexColors,
// skinning: this.skinning,
// morphTargets: this.morphTargets,
// morphNormals: this.morphNormals
// });
// };
//
// R3.D3.Material.prototype.createMeshBasicMaterialInstance = function() {
// return new THREE.MeshBasicMaterial({
// name: this.name,
// opacity: this.opacity,
// transparent: this.transparent,
// blending: this.blending,
// blendSrc: this.blendSrc,
// blendDst: this.blendDst,
// blendEquation: this.blendEquation,
// depthTest: this.depthTest,
// depthFunc: this.depthFunc,
// depthWrite: this.depthWrite,
// polygonOffset: this.polygonOffset,
// polygonOffsetFactor: this.polygonOffsetFactor,
// polygonOffsetUnits: this.polygonOffsetUnits,
// alphaTest: this.alphaTest,
// clippingPlanes: this.clippingPlanes,
// clipShadows: this.clipShadows,
// overdraw: this.overdraw,
// visible: this.visible,
// side: this.side,
// color: this.color.instance,
// vertexColors: this.vertexColors,
// fog: this.fog
// });
// };
// R3.D3.Material.prototype.checkTexture = function(runtimeMap, instanceMap) {
//
// var textureChanged = false;
//
// if (this[runtimeMap] && this[runtimeMap].instance) {
// if (this.instance[instanceMap] !== this[runtimeMap].instance) {
// this.instance[instanceMap] = this[runtimeMap].instance;
// textureChanged = true;
// }
// } else {
// if (this.instance[instanceMap] !== null) {
// this.instance[instanceMap] = null;
// textureChanged = true;
// }
// }
//
// return textureChanged;
// };
//
// /**
// * updates textures
// */
// R3.D3.Material.prototype.updateTextures = function() {
//
// var textureChanged = false;
//
// if (this.checkTexture('alphaMap', 'alphaMap')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('aoMap', 'aoMap')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('bumpMap', 'bumpMap')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('diffuseMap', 'map')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('displacementMap', 'displacementMap')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('emissiveMap', 'emissiveMap')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('environmentMap', 'envMap')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('lightMap', 'lightMap')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('metalnessMap', 'metalnessMap')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('normalMap', 'normalMap')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('roughnessMap', 'roughnessMap')) {
// textureChanged = true;
// }
//
// if (this.checkTexture('specularMap', 'specularMap')) {
// textureChanged = true;
// }
//
// if (textureChanged) {
// this.emit(
// R3.Event.MATERIAL_TEXTURES_UPDATED,
// {
// material : this
// }
// );
// }
//
// return textureChanged;
// };
//
//
// R3.D3.Material.prototype.updateToonMaterialInstance = function(property) {
// this.instance.name = this.name;
// this.instance.opacity = this.opacity;
// this.instance.transparent = this.transparent;
// this.instance.blending = this.blending;
// this.instance.blendSrc = this.blendSrc;
// this.instance.blendDst = this.blendDst;
// this.instance.blendEquation = this.blendEquation;
// this.instance.depthTest = this.depthTest;
// this.instance.depthFunc = this.depthFunc;
// this.instance.depthWrite = this.depthWrite;
// this.instance.polygonOffset = this.polygonOffset;
// this.instance.polygonOffsetFactor = this.polygonOffsetFactor;
// this.instance.polygonOffsetUnits = this.polygonOffsetUnits;
// this.instance.alphaTest = this.alphaTest;
// this.instance.clippingPlanes = this.clippingPlanes;
// this.instance.clipShadows = this.clipShadows;
// this.instance.overdraw = this.overdraw;
// this.instance.visible = this.visible;
// this.instance.side = this.side;
// this.instance.color = this.color.instance;
// this.instance.envMapIntensity = this.envMapIntensity; //standard material doesnt have specular color
// this.instance.roughness = this.roughness;
// this.instance.metalness = this.metalness;
// this.instance.lightMapIntensity = this.lightMapIntensity;
// this.instance.aoMapIntensity = this.aoMapIntensity;
// this.instance.emissive = this.emissive.instance;
// this.instance.emissiveIntensity = this.emissiveIntensity;
// this.instance.bumpScale = this.bumpScale;
// this.instance.normalScale = this.normalScale;
// this.instance.displacementScale = this.displacementScale;
// this.instance.refractionRatio = this.refractionRatio;
// this.instance.fog = this.fog;
// this.instance.flatShading = this.flatShading;
// this.instance.wireframe = this.wireframe;
// this.instance.wireframeLinewidth = this.wireframeLineWidth;
// this.instance.wireframeLinecap = this.wireframeLineCap;
// this.instance.wireframeLinejoin = this.wireframeLineJoin;
// this.instance.vertexColors = this.vertexColors;
// this.instance.skinning = this.skinning;
// this.instance.morphTargets = this.morphTargets;
// this.instance.morphNormals = this.morphNormals;
// };
//
// R3.D3.Material.prototype.updateStandardMaterialInstance = function(property) {
// this.instance.name = this.name;
// this.instance.opacity = this.opacity;
// this.instance.transparent = this.transparent;
// this.instance.blending = this.blending;
// this.instance.blendSrc = this.blendSrc;
// this.instance.blendDst = this.blendDst;
// this.instance.blendEquation = this.blendEquation;
// this.instance.depthTest = this.depthTest;
// this.instance.depthFunc = this.depthFunc;
// this.instance.depthWrite = this.depthWrite;
// this.instance.polygonOffset = this.polygonOffset;
// this.instance.polygonOffsetFactor = this.polygonOffsetFactor;
// this.instance.polygonOffsetUnits = this.polygonOffsetUnits;
// this.instance.alphaTest = this.alphaTest;
// this.instance.clippingPlanes = this.clippingPlanes;
// this.instance.clipShadows = this.clipShadows;
// this.instance.overdraw = this.overdraw;
// this.instance.visible = this.visible;
// this.instance.side = this.side;
// this.instance.color = this.color.instance;
// this.instance.envMapIntensity = this.envMapIntensity; //standard material doesnt have specular color
// this.instance.roughness = this.roughness;
// this.instance.metalness = this.metalness;
// this.instance.lightMapIntensity = this.lightMapIntensity;
// this.instance.aoMapIntensity = this.aoMapIntensity;
// this.instance.emissive = this.emissive.instance;
// this.instance.emissiveIntensity = this.emissiveIntensity;
// this.instance.bumpScale = this.bumpScale;
// this.instance.normalScale = this.normalScale;
// this.instance.displacementScale = this.displacementScale;
// this.instance.refractionRatio = this.refractionRatio;
// this.instance.fog = this.fog;
// this.instance.flatShading = this.flatShading;
// this.instance.wireframe = this.wireframe;
// this.instance.wireframeLinewidth = this.wireframeLineWidth;
// this.instance.wireframeLinecap = this.wireframeLineCap;
// this.instance.wireframeLinejoin = this.wireframeLineJoin;
// this.instance.vertexColors = this.vertexColors;
// this.instance.skinning = this.skinning;
// this.instance.morphTargets = this.morphTargets;
// this.instance.morphNormals = this.morphNormals;
// };
//
// R3.D3.Material.prototype.updatePointsMaterialInstance = function(property) {
// this.instance.name = this.name;
// this.instance.opacity = this.opacity;
// this.instance.transparent = this.transparent;
// // this.instance.blending = this.blending;
// // this.instance.blendSrc = this.blendSrc;
// // this.instance.blendDst = this.blendDst;
// // this.instance.blendEquation = this.blendEquation;
// // this.instance.depthTest = this.depthTest;
// this.instance.depthFunc = this.depthFunc;
// this.instance.depthWrite = this.depthWrite;
// // this.instance.polygonOffset = this.polygonOffset;
// // this.instance.polygonOffsetFactor = this.polygonOffsetFactor;
// // this.instance.polygonOffsetUnits = this.polygonOffsetUnits;
// // this.instance.alphaTest = this.alphaTest;
// // this.instance.clippingPlanes = this.clippingPlanes;
// // this.instance.clipShadows = this.clipShadows;
// // this.instance.overdraw = this.overdraw;
// this.instance.visible = this.visible;
// this.instance.side = this.side;
// this.instance.color = this.color.instance;
// this.instance.size = this.pointSize;
// this.instance.sizeAttenuation = this.pointSizeAttenuation;
// //this.instance.vertexColors = this.vertexColors;
// //this.instance.fog = this.fog;
// };
//
// R3.D3.Material.prototype.updateLineBasicMaterialInstance = function(property) {
//
// var linecap = 'round';
//
// if (this.lineCap === R3.D3.API.Material.LINE_CAP_BUTT) {
// linecap = 'butt';
// }
//
// if (this.lineCap === R3.D3.API.Material.LINE_CAP_SQUARE) {
// linecap = 'square';
// }
//
// var linejoin = 'round';
//
// if (this.lineJoin === R3.D3.API.Material.LINE_JOIN_BEVEL) {
// linejoin = 'bevel';
// }
//
// if (this.lineJoin === R3.D3.API.Material.LINE_JOIN_MITER) {
// linejoin = 'miter';
// }
//
// this.instance.name = this.name;
// this.instance.opacity = this.opacity;
// this.instance.transparent = this.transparent;
// // this.instance.blending = this.blending;
// // this.instance.blendSrc = this.blendSrc;
// // this.instance.blendDst = this.blendDst;
// // this.instance.blendEquation = this.blendEquation;
// // this.instance.depthTest = this.depthTest;
// this.instance.depthFunc = this.depthFunc;
// this.instance.depthWrite = this.depthWrite;
// // this.instance.polygonOffset = this.polygonOffset;
// // this.instance.polygonOffsetFactor = this.polygonOffsetFactor;
// // this.instance.polygonOffsetUnits = this.polygonOffsetUnits;
// // this.instance.alphaTest = this.alphaTest;
// // this.instance.clippingPlanes = this.clippingPlanes;
// // this.instance.clipShadows = this.clipShadows;
// // this.instance.overdraw = this.overdraw;
// this.instance.visible = this.visible;
// this.instance.side = this.side;
// this.instance.color = this.color.instance;
//
// this.instance.linewidth = this.lineWidth;
// this.instance.linecap = linecap;
// this.instance.linejoin = linejoin;
//
// //this.instance.vertexColors = this.vertexColors;
// //this.instance.fog = this.fog;
// };
//
//
// R3.D3.Material.prototype.updatePhongMaterialInstance = function(property) {
// this.instance.name = this.name;
// this.instance.opacity = this.opacity;
// this.instance.transparent = this.transparent;
// this.instance.blending = this.blending;
// this.instance.blendSrc = this.blendSrc;
// this.instance.blendDst = this.blendDst;
// this.instance.blendEquation = this.blendEquation;
// this.instance.depthTest = this.depthTest;
// this.instance.depthFunc = this.depthFunc;
// this.instance.depthWrite = this.depthWrite;
// this.instance.polygonOffset = this.polygonOffset;
// this.instance.polygonOffsetFactor = this.polygonOffsetFactor;
// this.instance.polygonOffsetUnits = this.polygonOffsetUnits;
// this.instance.alphaTest = this.alphaTest;
// this.instance.clippingPlanes = this.clippingPlanes;
// this.instance.clipShadows = this.clipShadows;
// this.instance.overdraw = this.overdraw;
// this.instance.visible = this.visible;
// this.instance.side = this.side;
// this.instance.color = this.color.instance;
// this.instance.specular = this.specular.instance;
// this.instance.shininess = this.shininess;
// this.instance.lightMapIntensity = this.lightMapIntensity;
// this.instance.aoMapIntensity = this.aoMapIntensity;
// this.instance.emissive = this.emissive.instance;
// this.instance.emissiveIntensity = this.emissiveIntensity;
// this.instance.envMapIntensity = this.envMapIntensity;
// this.instance.bumpScale = this.bumpScale;
// this.instance.normalScale = this.normalScale;
// this.instance.displacementScale = this.displacementScale;
// this.instance.combine = this.combine;
// this.instance.refractionRatio = this.refractionRatio;
// this.instance.fog = this.fog;
// this.instance.flatShading = this.flatShading;
// this.instance.wireframe = this.wireframe;
// this.instance.wireframeLinewidth = this.wireframeLineWidth;
// this.instance.wireframeLinecap = this.wireframeLineCap;
// this.instance.wireframeLinejoin = this.wireframeLineJoin;
// this.instance.vertexColors = this.vertexColors;
// this.instance.skinning = this.skinning;
// this.instance.morphTargets = this.morphTargets;
// this.instance.morphNormals = this.morphNormals;
// };
//
// R3.D3.Material.prototype.updateMeshBasicMaterialInstance = function(property) {
// this.instance.name = this.name;
// this.instance.opacity = this.opacity;
// this.instance.transparent = this.transparent;
// this.instance.blending = this.blending;
// this.instance.blendSrc = this.blendSrc;
// this.instance.blendDst = this.blendDst;
// this.instance.blendEquation = this.blendEquation;
// this.instance.depthTest = this.depthTest;
// this.instance.depthFunc = this.depthFunc;
// this.instance.depthWrite = this.depthWrite;
// this.instance.polygonOffset = this.polygonOffset;
// this.instance.polygonOffsetFactor = this.polygonOffsetFactor;
// this.instance.polygonOffsetUnits = this.polygonOffsetUnits;
// this.instance.alphaTest = this.alphaTest;
// this.instance.clippingPlanes = this.clippingPlanes;
// this.instance.clipShadows = this.clipShadows;
// this.instance.overdraw = this.overdraw;
// this.instance.visible = this.visible;
// this.instance.side = this.side;
// this.instance.color = this.color.instance;
// this.instance.vertexColors = this.vertexColors;
// this.instance.fog = this.fog;
// };
//
// /**
// * Material instance
// * @returns {*}
// */
// R3.D3.Material.prototype.createInstance = function() {
//
// if (this.materialType === R3.D3.API.Material.MATERIAL_TYPE_STANDARD) {
//
// this.instance = this.createStandardMaterialInstance();
//
// } else if (this.materialType === R3.D3.API.Material.MATERIAL_TYPE_POINTS) {
//
// this.instance = this.createPointsMaterialInstance();
//
// } else if (this.materialType === R3.D3.API.Material.MATERIAL_TYPE_PHONG) {
//
// this.instance = this.createPhongMaterialInstance();
//
// } else if (this.materialType === R3.D3.API.Material.MATERIAL_TYPE_BASIC) {
//
// this.instance = this.createMeshBasicMaterialInstance();
//
// } else if (this.materialType === R3.D3.API.Material.MATERIAL_TYPE_LINE_BASIC) {
//
// this.instance = this.createLineBasicMaterialInstance();
//
// } else if (this.materialType === R3.D3.API.Material.MATERIAL_TYPE_TOON) {
//
// this.instance = this.createToonMaterialInstance();
//
// } else {
// console.warn("material type is not implemented yet: " + this.materialType);
// }
//
// this.instance.needsUpdate = true;
//
// this.updateTextures();
//
// __CREATE_INSTANCE__;
// };
/**
* Updates the instance with the current state
*/