Z-fighting

Demonstrasi Z-fighting dengan berbagai warna dan tekstur di atas sebuah latar belakang abu-abu.

Z-fighting, juga disebut stitching atau planefighting, adalah fenomena dalam perenderan 3D yang terjadi ketika dua atau lebih primitif memiliki jarak yang sangat mirip dengan kamera. Hal ini akan menyebabkan keduanya memiliki nilai yang hampir mirip atau identik dalam z-buffer yang melacak kedalaman. Ini berarti bahwa ketika piksel tertentu sedang dirender, tidak jelas mana dari dua primitif yang digambar dalam piksel itu karena z-buffer tidak dapat membedakan dengan tepat mana yang lebih jauh dari yang lain.[1]

Hal ini sering terjadi pada poligon koplanar, dimana dua sisi menempati ruang yang pada dasarnya sama, tanpa adanya satupun yang berada di depan. Akibatnya, piksel yang terpengaruh dirender dengan fragmen dari satu poligon atau lainnya secara sembarangan dengan cara yang ditentukan berdasarkan presisi dari z-buffer. Hal ini juga dapat bervariasi saat pemandangan atau posisi kamera diubah, menyebabkan satu poligon "memenangkan" uji Z, lalu diikuti yang lain dan seterusnya. Efek keseluruhannya adalah rasterisasi dua poligon yang berkedip-kedip yang "berebut" mewarnai piksel layar.

Masalah ini disebabkan oleh presisi sub-piksel yang terbatas, kesalahan dalam pembulatan floating point dan fixed point. Semakin tinggi tingkat presisi z-buffer yang digunakan, maka semakin kecil kemungkinan z-fighting akan terjadi. Namun untuk poligon koplanar, hal ini tidak dapat dihindari kecuali adanya tindakan korektif.

Pencegahan atau mitigasi

Efek yang terlihat di dua poligon koplanar

Z-fighting dapat dihindari melalui penggunaan kedalaman buffer resolusi lebih tinggi dengan z-buffering dalam beberapa skenario, atau hanya memindahkan suatu poligon lebih jauh.[2] Z-fighting yang tidak dapat diselesaikan dengan cara tersebut sering kali menggunakan metode buffer stensil atau dengan menerapkan offset z-buffer ruang pasca-transformasi ke satu poligon yang tidak memengaruhi bentuk yang diproyeksikan di layar tetapi memengaruhi nilai z-buffer untuk menghilangkan tumpang tindih selama interpolasi dan perbandingan piksel.

Teknik lain yang digunakan adalah beralih ke buffer Z logaritmik dengan membalikkan nilai Z, dan teknik ini digunakan dalam permainan Grand Theft Auto V. Karena cara penyandiannya, angka poin mengambang memiliki presisi yang jauh lebih tinggi saat mendekati 0. Di sini, pembalikan Z dengan buffer Z logaritmik dapat menghasilkan presisi yang lebih tinggi saat menyimpan kedalaman objek yang sangat jauh, sehingga dapat mengurangi Z-fighting secara signifikan.[3]

Referensi

  1. ^ "LearnOpenGL - Depth testing". learnopengl.com. Diakses tanggal 2021-07-01.
  2. ^ "Depth Buffer Precision - OpenGL Wiki". www.khronos.org. Diakses tanggal 2021-06-30.
  3. ^ Courrèges, Adrian (2 November 2015). "GTA V - Graphics Study". AdrianCourreges.com. Diakses tanggal 20 June 2018.

Konten ini disalin dari wikipedia, mohon digunakan dengan bijak.

×
Advertisement