Mercurial > games > semicongine
comparison tests/test_mesh.nim @ 353:61c5d5fe9d93
add: multi-material for meshes
author | Sam <sam@basx.dev> |
---|---|
date | Wed, 20 Sep 2023 22:35:04 +0700 |
parents | b83b3a1ccb05 |
children | f054b8bacab8 |
comparison
equal
deleted
inserted
replaced
352:00231e014642 | 353:61c5d5fe9d93 |
---|---|
56 for scene in scenes.mitems: | 56 for scene in scenes.mitems: |
57 scene.addShaderGlobal("projection", Unit4F32) | 57 scene.addShaderGlobal("projection", Unit4F32) |
58 scene.addShaderGlobal("view", Unit4F32) | 58 scene.addShaderGlobal("view", Unit4F32) |
59 var materials: Table[uint16, Material] | 59 var materials: Table[uint16, Material] |
60 for mesh in scene.meshes: | 60 for mesh in scene.meshes: |
61 if not materials.contains(mesh.material.index): | 61 for material in mesh.materials: |
62 materials[mesh.material.index] = mesh.material | 62 if not materials.contains(material.index): |
63 materials[material.index] = material | |
63 let baseColors = sortedByIt(values(materials).toSeq, it.index).mapIt(getValue[Vec4f](it.constants["baseColorFactor"], 0)) | 64 let baseColors = sortedByIt(values(materials).toSeq, it.index).mapIt(getValue[Vec4f](it.constants["baseColorFactor"], 0)) |
64 let baseTextures = sortedByIt(values(materials).toSeq, it.index).mapIt(it.textures["baseColorTexture"]) | 65 let baseTextures = sortedByIt(values(materials).toSeq, it.index).mapIt(it.textures["baseColorTexture"]) |
65 for t in baseTextures: | |
66 echo "- ", t | |
67 scene.addShaderGlobalArray("baseColorFactor", baseColors) | 66 scene.addShaderGlobalArray("baseColorFactor", baseColors) |
68 scene.addShaderGlobalArray("baseColorTexture", baseTextures) | 67 scene.addShaderGlobalArray("baseColorTexture", baseTextures) |
69 engine.addScene(scene) | 68 engine.addScene(scene) |
70 | 69 |
71 var | 70 var |