/** * 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 */