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

1069 lines
36 KiB
JavaScript
Raw Normal View History

2018-04-09 09:35:04 +02:00
/**
* Material Superset - The apiMaterial properties get moved into the Material object itself, and then the instance is
* created
* @param graphics R3.GraphicsRuntime
* @param apiMaterial R3.D3.API.Material
* @property materialType
* @constructor
* @returns {R3.D3.Material}
*/
R3.D3.Material = function(
graphics,
apiMaterial
) {
this.graphics = graphics;
this.graphics.isNotThreeThrow();
if (R3.Utils.UndefinedOrNull(apiMaterial)) {
apiMaterial = {
materialType : R3.D3.API.Material.MATERIAL_TYPE_NONE
};
}
R3.D3.API.Material.call(
this,
apiMaterial.id,
apiMaterial.name,
apiMaterial.materialType,
apiMaterial.parentEntity,
apiMaterial.parentMeshes,
apiMaterial.alphaTest,
apiMaterial.blendDst,
apiMaterial.blendDstAlpha,
apiMaterial.blendEquation,
apiMaterial.blendEquationAlpha,
apiMaterial.blending,
apiMaterial.blendSrc,
apiMaterial.blendSrcAlpha,
apiMaterial.clipIntersection,
apiMaterial.clippingPlanes,
apiMaterial.clipShadows,
apiMaterial.colorWrite,
apiMaterial.customDepthMaterial,
apiMaterial.customDistanceMaterial,
apiMaterial.defines,
apiMaterial.depthFunc,
apiMaterial.depthTest,
apiMaterial.depthWrite,
apiMaterial.fog,
apiMaterial.lights,
apiMaterial.opacity,
apiMaterial.overdraw,
apiMaterial.polygonOffset,
apiMaterial.polygonOffsetFactor,
apiMaterial.polygonOffsetUnits,
apiMaterial.precision,
apiMaterial.premultipliedAlpha,
apiMaterial.dithering,
apiMaterial.flatShading,
apiMaterial.side,
apiMaterial.transparent,
apiMaterial.vertexColors,
apiMaterial.visible
);
var linkedObjects = {};
switch (this.materialType) {
case R3.D3.API.Material.MATERIAL_TYPE_STANDARD :
linkedObjects.alphaMap = R3.D3.Texture;
linkedObjects.aoMap = R3.D3.Texture;
linkedObjects.bumpMap = R3.D3.Texture;
linkedObjects.diffuseMap = R3.D3.Texture;
linkedObjects.displacementMap = R3.D3.Texture;
linkedObjects.emissiveMap = R3.D3.Texture;
linkedObjects.envMap = R3.D3.Texture;
linkedObjects.lightMap = R3.D3.Texture;
linkedObjects.metalnessMap = R3.D3.Texture;
linkedObjects.normalMap = R3.D3.Texture;
linkedObjects.roughnessMap = R3.D3.Texture;
break;
case R3.D3.API.Material.MATERIAL_TYPE_BASIC :
linkedObjects.alphaMap = R3.D3.Texture;
linkedObjects.aoMap = R3.D3.Texture;
linkedObjects.diffuseMap = R3.D3.Texture;
linkedObjects.envMap = R3.D3.Texture;
linkedObjects.lightMap = R3.D3.Texture;
linkedObjects.specularMap = R3.D3.Texture;
break;
case R3.D3.API.Material.MATERIAL_TYPE_PHONG :
linkedObjects.alphaMap = R3.D3.Texture;
linkedObjects.aoMap = R3.D3.Texture;
linkedObjects.bumpMap = R3.D3.Texture;
linkedObjects.diffuseMap = R3.D3.Texture;
linkedObjects.displacementMap = R3.D3.Texture;
linkedObjects.emissiveMap = R3.D3.Texture;
linkedObjects.envMap = R3.D3.Texture;
linkedObjects.lightMap = R3.D3.Texture;
linkedObjects.normalMap = R3.D3.Texture;
linkedObjects.specularMap = R3.D3.Texture;
break;
case R3.D3.API.Material.MATERIAL_TYPE_SHADER :
case R3.D3.API.Material.MATERIAL_TYPE_SHADER_RAW :
linkedObjects.vertexShader = R3.D3.Shader.Vertex;
linkedObjects.fragmentShader = R3.D3.Shader.Fragment;
break;
case R3.D3.API.Material.MATERIAL_TYPE_POINTS :
linkedObjects.diffuseMap = R3.D3.Texture;
break;
default :
throw new Error('unhandled material type: ' + this.materialType);
}
R3.Component.call(
this,
linkedObjects
);
};
R3.D3.Material.prototype = Object.create(R3.Component.prototype);
R3.D3.Material.prototype.constructor = R3.D3.Material;
R3.D3.Material.prototype.createInstance = function() {
if (R3.Utils.UndefinedOrNull(this.instance)) {
console.warn('the child createInstance has to be called first');
return;
}
this.instance.alphaTest = this.alphaTest;
this.instance.blendDst = this.blendDst;
this.instance.blendDstAlpha = this.blendDstAlpha;
this.instance.blendEquation = this.blendEquation;
this.instance.blendEquationAlpha = this.blendEquationAlpha;
this.instance.blending = this.blending;
this.instance.blendSrc = this.blendSrc;
this.instance.blendSrcAlpha = this.blendSrcAlpha;
this.instance.clipIntersection = this.clipIntersection;
this.instance.clippingPlanes = this.clippingPlanes;
this.instance.clipShadows = this.clipShadows;
this.instance.colorWrite = this.colorWrite;
this.instance.customDepthMaterial = this.customDepthMaterial;
this.instance.customDistanceMaterial = this.customDistanceMaterial;
this.instance.defines = this.defines;
this.instance.depthFunc = this.depthFunc;
this.instance.depthTest = this.depthTest;
this.instance.depthWrite = this.depthWrite;
this.instance.fog = this.fog;
this.instance.lights = this.lights;
this.instance.opacity = this.opacity;
this.instance.overdraw = this.overdraw;
this.instance.polygonOffset = this.polygonOffset;
this.instance.polygonOffsetFactor = this.polygonOffsetFactor;
this.instance.polygonOffsetUnits = this.polygonOffsetUnits;
this.instance.precision = this.precision;
this.instance.premultipliedAlpha = this.premultipliedAlpha;
this.instance.dithering = this.dithering;
this.instance.flatShading = this.flatShading;
this.instance.side = this.side;
this.instance.transparent = this.transparent;
this.instance.vertexColors = this.vertexColors;
this.instance.visible = this.visible;
R3.Component.prototype.createInstance.call(this);
};
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 === 'parentMeshes') {
console.warn('parent meshes are read-only');
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 === 'customDepthMaterial') {
console.warn('todo: implement custom depth material update');
return;
}
if (property === 'customDistanceMaterial') {
console.warn('todo: implement custom distance material update');
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 === 'fog') {
this.instance.fog = this.fog;
return;
}
if (property === 'lights') {
this.instance.lights = this.lights;
}
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 === 'dithering') {
this.instance.dithering = this.dithering;
console.log('not sure about needsupdate - cannot detect any changes until now');
}
if (property === 'flatShading') {
this.instance.flatShading = this.flatShading;
}
if (property === 'side') {
this.instance.side = this.side;
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;
R3.Component.prototype.updateInstance.call(this, property);
};
/**
* Converts a R3.D3.Material to a R3.D3.API.Material
* @returns {R3.D3.API.Material}
*/
R3.D3.Material.prototype.toApiObject = function() {
var apiMaterial = new R3.D3.API.Material(
this.id,
this.name,
this.materialType,
R3.Utils.IdOrNull(this.parentEntity),
this.parentMeshes.map(
function(mesh) {
return R3.Utils.IdOrNull(mesh);
}
),
this.alphaTest,
this.blendDst,
this.blendDstAlpha,
this.blendEquation,
this.blendEquationAlpha,
this.blending,
this.blendSrc,
this.blendSrcAlpha,
this.clipIntersection,
this.clippingPlanes,
this.clipShadows,
this.colorWrite,
this.customDepthMaterial,
this.customDistanceMaterial,
this.defines,
this.depthFunc,
this.depthTest,
this.depthWrite,
this.fog,
this.lights,
this.opacity,
this.overdraw,
this.polygonOffset,
this.polygonOffsetFactor,
this.polygonOffsetUnits,
this.precision,
this.premultipliedAlpha,
this.dithering,
this.flatShading,
this.side,
this.transparent,
this.vertexColors,
this.visible
);
return apiMaterial;
};
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.linkedObjects).map(
function(property) {
if (this[property] instanceof R3.D3.Texture) {
textures.push(
{
property: property,
texture: this[property]
}
);
}
}.bind(this)
);
return textures;
};
//
//
//
// 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.publish(
// 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();
//
// R3.Component.prototype.createInstance.call(this);
// };
/**
* Updates the instance with the current state
*/