HSR: Hidden Surface Removal
14. November 2002 / von aths / Seite 4 von 5
HSR in Software (Fortsetzung)
Am besten wäre es natürlich, ohnehin nicht sichtbare Objekte gar nicht erst zu rendern. Eine oft eingesetzte Methode verwendet dafür "Portale". Steht man in einem fensterlosen Raum mit geschlossenen Türen, müssen die anderen Räume gar nicht erst gerendert werden. Damit die Engine das "weiss", sind spezielle Sichtbarkeits-Vorberechnungen nötig, die dann zusammen mit dem Level geladen werden.
Steht eine Tür offen, lässt sich mit einfacher Geometrie berechnen, wie weit man in den anderen Raum sehen kann. Nur diese Teile müssen gerendert werden. Dreiecke, die nur halb sichtbar sind, werden in der Regel nicht in Unterdreiecke zerlegt, sondern das gesamte Dreieck wird zur Grafikkarte geschickt. Den Verschnitt nimmt man in Kauf, um die HSR-Berechnungen so schnell wie möglich zu erledigen. Denn solange die CPU mit aufwändigen HSR-Kalkulationen belegt ist, bleibt ihr ja keine Zeit für andere wichtige Dinge.
Das möchten wir nun mit einigen Grafiken illustrieren:
Schlechte Engine: Man steht im linken Raum, doch gerendert werden müssen beide, da sie im Sichtfeld liegen.
Bei offener Tür wird deutlicher, warum: Man kann in den zweiten Raum sehen, der logischerweise gerendert werden muss.
Gute Engine: Sie "weiss", dass bei geschlossenen Türen nur der aktuelle Raum gerendert werden muss.
Hier übernimmt die (nun offene) Tür eine Portal-Funktion: Im dem zweiten Raum wird nur das gerendert, was durch das Portal sichtbar ist.