From 965df9eeabe15a30e3fa30605aced55b45ff6a87 Mon Sep 17 00:00:00 2001 From: Kakeru Ishii Date: Tue, 7 Nov 2017 14:04:39 +0900 Subject: [PATCH] fix: extract __applyPBRMetallicRoughnessParameters on PBRMetallicRoughnessInstanciator --- ...DefaultPBRMetallicRoughnessInstanciator.ts | 75 ++++++++++--------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/src/Parser/MaterialInstanciator/DefaultPBRMetallicRoughnessInstanciator.ts b/src/Parser/MaterialInstanciator/DefaultPBRMetallicRoughnessInstanciator.ts index 5fbe6ad..7650000 100644 --- a/src/Parser/MaterialInstanciator/DefaultPBRMetallicRoughnessInstanciator.ts +++ b/src/Parser/MaterialInstanciator/DefaultPBRMetallicRoughnessInstanciator.ts @@ -7,51 +7,56 @@ import GLTFParser from "../Parser"; import Material from "grimoirejs-fundamental/ref/Material/Material"; import MaterialFactory from "grimoirejs-fundamental/ref/Material/MaterialFactory"; import TextureReference from "grimoirejs-fundamental/ref/Material/TextureReference"; +import Pass from "grimoirejs-fundamental/ref/Material/Pass"; export default class DefaultPBRMetallicRoughnessInstanciator implements IGLTFMaterialInstanciator { async tryInstanciate(matFactory: MaterialFactory, materialData: GLTFMaterial, textures: { [key: string]: Texture2D; }, gltfData: GLTF, parser: GLTFParser): Promise { if (materialData["pbrMetallicRoughness"]) { const material = await matFactory.instanciate("gltf-pbr-metallic-roughness"); - const pmr = materialData["pbrMetallicRoughness"]; const pass = material.techniques["default"].passes[0]; - if (pmr.baseColorFactor) { - pass.setArgument("baseColorFactor", pmr.baseColorFactor, null); - } - if (pmr.baseColorTexture) { - pass.setArgument("baseColorTexture", new TextureReference(textures[pmr.baseColorTexture.index]), null); - } - if (pmr.metallicFactor) { - pass.setArgument("metallicFactor", pmr.metallicFactor, null); - } - // TODO Remove? metallicTexture and roughnessTexture was removed from specification? - if ((pmr as any).metallicTexture) { - pass.setArgument("metallicTexture", new TextureReference(textures[(pmr as any).metallicTexture.index]), null); - } - if ((pmr as any).roughnessTexture) { - pass.setArgument("roughnessTexture", new TextureReference(textures[(pmr as any).roughnessTexture.index]), null); - } - if (pmr.roughnessFactor) { - pass.setArgument("roughnessFactor", pmr.roughnessFactor, null); - } - if (pmr.metallicRoughnessTexture) { - pass.setArgument("metallicRoughnessTexture", new TextureReference(textures[pmr.metallicRoughnessTexture.index]), null); - } - if (materialData["emissiveFactor"]) { - pass.setArgument("emissiveFactor", materialData.emissiveFactor, null); - } - if (materialData["emissiveTexture"]) { - pass.setArgument("emissiveTexture", new TextureReference(textures[materialData.emissiveTexture.index]), null); - } - if (materialData["normalTexture"]) { - pass.setArgument("normalTexture", new TextureReference(textures[materialData.normalTexture.index]), null); - } - if (materialData["occlusionTexture"]) { - pass.setArgument("occlusionTexture", new TextureReference(textures[materialData.occlusionTexture.index]), null); - } + this.__applyPBRMetallicRoughnessParameters(materialData, pass, textures); return material; } else { return null; } } + + private __applyPBRMetallicRoughnessParameters(materialData: GLTFMaterial, pass: Pass, textures: { [key: string]: Texture2D; }) { + const pmr = materialData["pbrMetallicRoughness"]; + if (pmr.baseColorFactor) { + pass.setArgument("baseColorFactor", pmr.baseColorFactor, null); + } + if (pmr.baseColorTexture) { + pass.setArgument("baseColorTexture", new TextureReference(textures[pmr.baseColorTexture.index]), null); + } + if (pmr.metallicFactor) { + pass.setArgument("metallicFactor", pmr.metallicFactor, null); + } + // TODO Remove? metallicTexture and roughnessTexture was removed from specification? + if ((pmr as any).metallicTexture) { + pass.setArgument("metallicTexture", new TextureReference(textures[(pmr as any).metallicTexture.index]), null); + } + if ((pmr as any).roughnessTexture) { + pass.setArgument("roughnessTexture", new TextureReference(textures[(pmr as any).roughnessTexture.index]), null); + } + if (pmr.roughnessFactor) { + pass.setArgument("roughnessFactor", pmr.roughnessFactor, null); + } + if (pmr.metallicRoughnessTexture) { + pass.setArgument("metallicRoughnessTexture", new TextureReference(textures[pmr.metallicRoughnessTexture.index]), null); + } + if (materialData["emissiveFactor"]) { + pass.setArgument("emissiveFactor", materialData.emissiveFactor, null); + } + if (materialData["emissiveTexture"]) { + pass.setArgument("emissiveTexture", new TextureReference(textures[materialData.emissiveTexture.index]), null); + } + if (materialData["normalTexture"]) { + pass.setArgument("normalTexture", new TextureReference(textures[materialData.normalTexture.index]), null); + } + if (materialData["occlusionTexture"]) { + pass.setArgument("occlusionTexture", new TextureReference(textures[materialData.occlusionTexture.index]), null); + } + } } \ No newline at end of file