CodingCat hat geschrieben:Eine Early-Z-Optimierung zusätzlich zum Late-Z-Test würde im Allgemeinen jedenfalls keine Fragmente fälschlicherweise ausschließen.
Ich glaube dann reden wir über unterschiedliche Dinge. So wie ich es verstanden habe, gibt es die ganzen drei Optimierungen (aus erstens Hi-Z/ZCull, zweitens early z-test und drittens late z-test) einmal als Test mit dem bestehenden Depth-Buffer, und einmal die letzten beiden (early z-test und late z-test) als Test mit anderen Fragmente "in flight" eines Pixels, der gerade berechnet wird. Beim ersten (dem Test mit dem Depth-Buffer) gibt es keine Probleme, da stimme ich dir voll und ganz zu. Beim zweiten (Test der in flight fragments) kann es sehr wohl Probleme geben. Wenn wir beispielsweise einen Pixel haben, auf dem zwei Fragmente gerade berechnet werden, und
SV_DEPTH_GREATER_EQUAL annehmen, sieht die Situation ungefähr so aus:
A-priori kennen wir nur die iDepths und nicht die oDepths. Wir können keine der beiden Fragmente, die sich in-flight befinden, ausschließen, bevor wir nicht ihre oDepths kennen. D.h. der early z-test ist tatsächlich für die in-flight Fragments trotz konservativen depth output nicht zu gebrauchen, was sich mit der gleich folgenden Aussage „Because it relies on knowing actual fragment depth“ decken würde.
CodingCat hat geschrieben:Nachtrag 2: Jetzt habe ich auch endlich die entsprechende Quell-Powerpoint-Präsentation gesehen, die dies bestätigt. Mein Hauptproblem mit derlei Präsentationen ist übrigens nicht das Dateiformat, sondern die unglaubliche Streueung derselben sowie die oftmals extrem knappen und nichtssagenden Stichworte, nicht selten ohne jede weitere Erläuterung in den Notizen.
Ja, diese Probleme habe ich auch. Aber wo deutet die Präsentation deren
Faulheit Weglassen von Transistor-verschwendenden Tests an?
Ich habe nur gefunden:
DirectX11 Performance Reloaded hat geschrieben:
- DX11 supports conservative depth output
- Allows programmer to specify that depth output will only be GREATEREQUAL or LESSEQUAL than current depth buffer depth
- E.g. geometric decals, depth conversion etc.
- In this case EarlyZ is still disabled
- Because it relies on knowing actual fragment depth
- But Hi-Z/ZCull can be leveraged for early acceptance or rejection
zusammen mit dem echt Bände sprechenden Kommentar „Conservative oDepth not well documented in DX11 API.“
So wie fast alles in der Computergraphik: Sobald man ins Metall schauen muss, ist alles ein rumstochern im Nebel. :?
Nachtrag: Erbitte Abtrennung der Posts durch Moderator. :3
Nachtrag: Für jeden, der hier tatsächlich PowerPoint benutzt: Man kann diese komischen PPSX-Dateien anständig anzeigen, indem man PowerPoint manuell startet, und dann Datei→Öffnen… wählt.