public void updateProgramParameters(ProgramParameters parameters) { parameters.map = (this instanceof HasMap && ((HasMap) this).getMap() != null); parameters.envMap = (this instanceof HasEnvMap && ((HasEnvMap) this).getEnvMap() != null); parameters.lightMap = (this instanceof HasLightMap && ((HasLightMap) this).getLightMap() != null); parameters.bumpMap = (this instanceof HasBumpMap && ((HasBumpMap) this).getBumpMap() != null); parameters.normalMap = (this instanceof HasNormalMap && ((HasNormalMap) this).getNormalMap() != null); parameters.specularMap = (this instanceof HasSpecularMap && ((HasSpecularMap) this).getSpecularMap() != null); parameters.alphaMap = (this instanceof HasAlphaMap && ((HasAlphaMap) this).getAlphaMap() != null); parameters.vertexColors = (this instanceof HasVertexColors && ((HasVertexColors) this).isVertexColors() != Material.COLORS.NO); parameters.sizeAttenuation = this instanceof PointCloudMaterial && ((PointCloudMaterial) this).isSizeAttenuation(); if (this instanceof HasSkinning) { parameters.skinning = ((HasSkinning) this).isSkinning(); parameters.morphTargets = ((HasSkinning) this).isMorphTargets(); parameters.morphNormals = ((HasSkinning) this).isMorphNormals(); } parameters.alphaTest = getAlphaTest(); if (this instanceof MeshPhongMaterial) { parameters.metal = ((MeshPhongMaterial) this).isMetal(); } parameters.wrapAround = this instanceof HasWrap && ((HasWrap) this).isWrapAround(); parameters.doubleSided = this.getSides() == Material.SIDE.DOUBLE; parameters.flipSided = this.getSides() == Material.SIDE.BACK; }