Ich habe von Texturen geredet weil dass ist, was du haben möchtest. UV-Map (und damit meine ich das Mapping der 3D Vertices auf 2D) brauchst du eh nur eine, solange du nicht zum Beispiel noch eine Lightmap (und das ist jetzt aber eine Textur
) mit anderem UV-Mapping über deine eigentliche Textur legen möchtest. Der Unterschied liegt dabei in der Größe der Vertexdaten, da in einem Fall nur eine Texturkoordinate (bestehend aus zwei Werten) im anderen Fall dann aber 2 oder (bei mehr als 2 UV-Maps) mehr benötigt werden.
Du redest aber davon Teilen deines Hauses unterschiedliche Materialien mit unterschiedlichen Texturen zuzuweisen, dabei braucht jeder Vertex trotzdem nur eine UV-Koordinate (die 2D Koordinate des Vertex innerhalb der UV-Map, womit ich die Menge aller UV-Koordinaten meine) und Vertices die mehrere Faces aufspannen mit nicht zusammenhängenden UV-Koordinaten werden dann normalerweise dupliziert.
Beim Rendern funktioniert es jetzt im Prinzip so, dass versucht wird alle Meshes, die das gleiche Material und insbesondere die gleiche Textur haben nacheinander oder sogar in einem einzigen Befehl (API Befehl auf der CPU, der Treiber macht da noch etwas mehr und die Grafikkarte sowiso) gerendert werden, so dass die Materialeinstellungen nur einmal davor gesetzt werden müssen. Dadurch, dass der Treiber intern da noch einiges macht sind diese Befehle zum setzen des Materials und auch zum rendern relativ teuer und ab einem gewissen Punkt langsamer als die Zeit, die deine GPU zum rendern der ihr schon vorliegenden Daten hat, so dass die GPU auf die CPU warten muss, was man nicht will. Eben aus diesem Grund versucht man diese Befehle zum Rendern und Setzen der Materialien auf ein Minimum zu reduzieren.
Am Beispiel deines Hauses mit zwei Materialien bedeutet dass dann zweimal das Material setzen und zweimal rendern oder für nur ein Material muss das beides nur einmal passieren. Wenn du jetzt aber 3 Häuser hast von denen alle drei das gleiche Wandmaterial nutzen, zwei jeweils ihren eigenen Fenstertyp und das dritte eine Kombination der beiden anderen, dann kann es sinnvoll sein die zwei Fenstermaterialien und das Wandmaterial einzeln zu haben (auch wenn das in diesem Beispiel jetzt auf die gleiche Zahl hinausläuft, verdeutlicht es hoffentlich was ich meine). Die Größe der Textur ist dabei hauptsächlich erst relevant, wenn dein Grafikspeicher zu klein ist (was erschreckend schnell gehen kann) oder du kein Mipmapping verwendest.
Der Grund weshalb ich gesagt habe, dass es egal ist ob du ein oder zwei Materials für dein Haus benutzt und du machen solltest was für deine Zwecke einfacher umzusetzen ist, ist der, dass es für die Geschwindigkeit ziemlich scheiß egal ist ob du jetzt ein oder zwei oder auch 100 Materials setzt, solange die Summe in der kompletten Szene sich in Grenzen hält. Was für Grenzen dass dann sind ist vor allem von deiner Zielhardware und genutzten API und Grafiktreiber abhängig. Das Ziel von Grafik APIs wie Mantle, OpenGL Next, DirectX12, Metal oder auch schon einiger neuen OpenGL Erweiterungen ist es, die Zeit die für diese Befehle benötigt wird auf ein Minimum zu reduzieren.
Auf aktueller PC Hardware stellen aber auch ohne neuere APIs so 5000 Texturänderungen und Drawcalls kein Problem da (10-20k können teilweise auch noch gehen). Auf mobilen Geräten oder einfach schwächerer Hardware sind die Einschränkungen kritischer.
Also es ist nicht egal ob du nun ein oder zwei Materialien nutzt, für ein großes Objekt wie ein Haus sind zwei aber noch völlig im Rahmen. Der Besen der irgendwo in der Ecke steht oder ein kleiner Stein sollte dagegen dann vielleicht eher nur eine Textur nutzen oder sogar beides die gleiche.
Ich benutze dabei UV-Layout und UV-Map so ziemlich als synonym, wobei man da die Abgrenzung von Schorsch eventuell machen kann.