Apa itu fragmen dalam pemrograman grafis 3D?

37

Apa itu fragmen dalam shader fragmen? Wikipedia mengatakan bahwa:

Secara umum, sebuah fragmen dapat dianggap sebagai data yang diperlukan untuk menaungi piksel, ditambah data yang diperlukan untuk menguji apakah fragmen tersebut bertahan menjadi piksel (kedalaman, alfa, stensil, gunting, ID jendela, dll.)

Jadi apakah itu tekstur, simpul atau yang lainnya?

Albus Dumbledore
sumber

Jawaban:

31

Dalam grafik komputer, sebuah fragmen adalah data yang diperlukan untuk menghasilkan nilai piksel tunggal dari gambar primitif dalam buffer bingkai.

Data ini mungkin termasuk, tetapi tidak terbatas pada:

  • posisi raster
  • kedalaman
  • atribut interpolasi (warna, koordinat tekstur, dll.)
  • setensilan
  • alfa
  • ID jendela

Ketika sebuah adegan digambar, gambar primitif di raster menjadi fragmen yang bertekstur dan dikombinasikan dengan frame buffer yang ada. Bagaimana sebuah fragmen digabungkan dengan data yang sudah ada dalam buffer bingkai tergantung pada berbagai pengaturan. Dalam kasus tertentu, sebuah fragmen dapat dibuang jika lebih jauh dari pixel yang sudah ada di lokasi tersebut (sesuai dengan buffer kedalaman). Jika lebih dekat dari pixel yang ada, itu dapat menggantikan apa yang sudah ada, atau, jika alpha blending sedang digunakan, warna pixel dapat diganti dengan campuran warna fragmen dan warna pixel yang ada, seperti dalam kasus menggambar objek yang tembus cahaya.

Secara umum, sebuah fragmen dapat dianggap sebagai data yang diperlukan untuk menaungi piksel, ditambah data yang diperlukan untuk menguji apakah fragmen tersebut bertahan menjadi piksel (kedalaman, alfa, stensil, gunting, ID jendela, dll.)

Dari wikipedia

concept3d
sumber
6

Sebuah fragmen hanyalah data yang diberikan dari kontribusi 3 simpul di sekitar piksel yang Anda arsir.

Di Vertex Shader, Anda menampilkan beberapa data per titik (warna, tekstur, ...). Kemudian di Fragment Shader, untuk setiap piksel Anda mendapatkan rata-rata tertimbang dari nilai-nilai itu, yang kemudian Anda gunakan untuk membangun warna akhir piksel.

XGouchet
sumber
Pixel dan semua data lainnya tentang buffer tak terlihat seperti yang disebutkan di atas.
StarWeaver
4

Dengan cara yang sama, shader vertex bekerja pada simpul, shader fragmen (atau piksel) hanya akan bekerja pada piksel.

Bebek Komunis
sumber
Maaf, tetapi ini tidak benar tanpa menyebutkan kata "rastarisation" dan interpolasi.
Notabene
Lebih buruk lagi dikatakan piksel - yang berbeda dari fragmen, terutama ketika multisampling target render AA yang terlibat, cakupan ke alpha, atau sejumlah situasi lainnya - saya akan memilih jika saya memiliki rep
jheriko
4

Apa itu fragmen dalam shader fragmen

Satu-satunya hal yang bisa dikatakan adalah mendefinisikan input dan output dari shader fragmen.

Karena itu telah dilakukan / terlalu luas, saya akan fokus pada sisi visual intuitif itu.

Sebuah fragmen adalah output raster

Wiki OpenGL mengatakan:

Fragmen adalah kumpulan nilai yang dihasilkan oleh Rasterizer.

Yang masuk akal karena shader fragmen muncul setelah rasterizer yang menghasilkan inputnya.

Dan ini adalah representasi visual dari output rasterizer:

Sumber gambar .

Input rasterizer adalah segitiga 3D dan sudut pandang, dan outputnya, adalah sekumpulan piksel yang mungkin muncul di layar (jika tidak diblokir oleh orang lain).

Masing-masing kotak kecil itu (yang dikodekan sebagai satu plixel), adalah bagian dari segitiga, dan fragmen hanyalah nama lain untuk bagian tersebut.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
Para downvoter, tolong jelaskan supaya saya dapat belajar dan meningkatkan konten ;-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Informasi dalam jawaban teratas dicampur dengan eksplorasi visual Anda akan menjadi yang terbaik.
StarWeaver