Optimierung der Beleuchtung

Der zweite Ansatzpunkt war die Beleuchtung, wobei erst Vermutet wurde, dass das Feuer einiges an Rechenleistung in Anspruch genommen hat. Es stellte sich heraus, dass tatsächlich die im Feuer verwendeten PointLights in Verbindung mit den verwendeten Materials eine weitere Ursache für Framerateeinbrüche waren. Dies stellten wir fest, als wir alle verwendeten Materialien durch MeshBasicMaterials ersetzten, welches Beleuchtung gar nicht unterstützt.

room_basic

Dies sah aber natürlich nicht annähernd gut genug aus.

Die letztendlich verwendete Verbesserung ist, dass alle Materialien durch MeshLambertMaterial ersetzt werden, welches Gouraud-Shading verwendet. Einige Gegenstände mussten allerdings weiterhin MeshPhongMaterial verwenden, da dies bestimmte Eigenschaften hat, welche die anderen Materialien nicht haben. Dazu gehören unter Anderem Glastüren und Fenster wegen ihrer Transparenz. Nachdem klar war, dass hier viel Rechenleistung benötigt wird, wurde zusätzlich die Raumbeleuchtung auf ambientes Licht umgestellt. Dies hatte optisch annähernd den gleichen Effekt, war aber deutlich performanter. Da es in jedem Fall zu aufwändig gewesen wäre, Schatten mit Hilfe der PointLights zu werfen, ist auch hier die Einsparung gerechtfertigt.

Hier sehen Sie denselben Raum, einmal mit Ursprünglichen Materialien, allen Lichtquellen und aktiviertem Phong-Shading (oben) und im Vergleich dazu mit MeshLambertMaterial und deaktivierter Raumbeleuchtung (unten). Während wir im ersten Fall auf ca. 5 FPS kommen, sind es im zweiten Fall bis zu 60 (wie in der oberen linken Ecke zu sehen). Trotzdem sieht das Ergebnis noch ausreichend gut aus.

full lambert

results matching ""

    No results matching ""