Znajdzie się jakaś dobra dusza, która przetłumaczy?
CytujDie ganze Technik funktioniert wie folgt:
- Zeichne die Szene so weit, dass ein brauchbarer Depthbuffer vorliegt. Das kann z.B. nur das WorldMesh sein oder die komplette Szene
- Color- und Depth-Writes ausschalten, da die GPU so verdammt schnell rasterisieren kann
- Zeichne nun für jede Node des BSP-Trees ihre Bounding-Box als Mesh, an ein Async-Query-Objekt gebunden
- Prüfe dann in den nächsten Frames ob ein Ergebnis vorliegt (Die CPU darf
meist ca. 3 Frames vorbereiten). Würden wir sofort einen Pipeline-Flush
machen, würde dies arg auf die Performance schlagen. - Nun kann man z.B. auslesen wie viele Pixel von dem DrawCall der BBox wirklich gezeichnet wurden.
- Sind es mehr als 0, so ist die Node sichtbar. Andernfalls wurde sie komplett vom Depthbuffer überdeckt.
Całość technika ta działa w sposób następujący:
Narysuj scenę tak daleko, że użyteczne Depthbuffer obecny. Może to, na przykład, tylkoWorldMesh lub cała scena
Kolor i Głębokość Pisze się, bo GPU może rasteryzacji tak cholernie szybko
Teraz narysuj dla każdego węzła BSP-Trees obwiedni jako siatki, dołączonej do obiektuzapytania asynchroniczny
Następnie sprawdzić w następnej klatce, jeśli wynik jest dostępna (musi CPU
Przygotowanie zwykle około 3 klatek). Czy od razu Flush rurociągu
zrobić, to proponuję argumentu na wydajność.
Teraz jest to możliwe, na przykład, przeczytać, ile pikseli w rzeczywistości są rysowaneprzez DrawCall bbox.
Jeśli jest więcej niż 0, to węzeł jest widoczny. W przeciwnym razie, to było całkowicie pokryte Depthbuffer.