Một mảnh trong lập trình đồ họa 3D là gì?


37

Một mảnh trong một shader mảnh là gì? Wikipedia nói rằng:

Nói chung, một đoạn có thể được coi là dữ liệu cần thiết để làm mờ pixel, cộng với dữ liệu cần thiết để kiểm tra xem đoạn đó có tồn tại để trở thành pixel hay không (độ sâu, alpha, stpson, hình cắt kéo, ID cửa sổ, v.v.)

Vì vậy, nó là kết cấu, đỉnh hoặc cái gì khác?

Câu trả lời:


31

Trong đồ họa máy tính, một đoạn là dữ liệu cần thiết để tạo ra giá trị của một pixel nguyên thủy trong bộ đệm khung.

Dữ liệu này có thể bao gồm, nhưng không giới hạn ở:

  • vị trí raster
  • độ sâu
  • các thuộc tính được nội suy (màu sắc, tọa độ kết cấu, v.v.)
  • khuôn tô
  • alpha
  • ID cửa sổ

Khi một cảnh được vẽ, các nguyên thủy vẽ được rasterized thành các đoạn được kết cấu và kết hợp với bộ đệm khung hiện có. Làm thế nào một đoạn được kết hợp với dữ liệu đã có trong bộ đệm khung phụ thuộc vào các cài đặt khác nhau. Trong trường hợp điển hình, một đoạn có thể bị loại bỏ nếu nó ở xa hơn pixel đã ở vị trí đó (theo bộ đệm độ sâu). Nếu nó gần hơn pixel hiện tại, nó có thể thay thế những gì đã có hoặc nếu sử dụng pha trộn alpha, màu của pixel có thể được thay thế bằng hỗn hợp màu của mảnh và màu hiện có của pixel, như trong trường hợp vẽ một đối tượng mờ.

Nói chung, một đoạn có thể được coi là dữ liệu cần thiết để làm mờ pixel, cộng với dữ liệu cần thiết để kiểm tra xem đoạn đó có tồn tại để trở thành pixel hay không (độ sâu, alpha, stpson, hình cắt kéo, ID cửa sổ, v.v.)

Từ wikipedia


6

Một đoạn chỉ đơn giản là dữ liệu được đưa ra từ sự đóng góp của 3 đỉnh xung quanh pixel bạn đang tô.

Trong Vertex Shader, bạn xuất một số dữ liệu trên mỗi đỉnh (màu sắc, kết cấu kết cấu, ...). Sau đó, trong Fragment Shader, với mỗi pixel bạn nhận được trung bình trọng số của các giá trị đó, sau đó bạn sử dụng để tạo (các) màu cuối cùng của pixel.


Pixel và tất cả các dữ liệu khác trên bộ đệm vô hình như đã đề cập ở trên.
StarWeaver

4

Theo cùng một cách mà một shader đỉnh hoạt động trên các đỉnh, một shader (hoặc pixel) sẽ chỉ hoạt động trên các pixel.


Xin lỗi, nhưng điều này không đúng nếu không đề cập đến từ "rastarisation" và nội suy.
Notabene

Thậm chí tệ hơn là nó nói các pixel - khác biệt với các mảnh vỡ, đặc biệt là khi các mục tiêu kết xuất đa điểm của AA có liên quan, độ bao phủ đến alpha hoặc bất kỳ tình huống nào khác - tôi sẽ bỏ phiếu nếu tôi có đại diện
jheriko

4

Một mảnh trong shader mảnh là gì

Điều chính xác duy nhất có thể nói là xác định đầu vào và đầu ra của shader mảnh.

Vì điều đó đã được thực hiện / quá rộng, tôi sẽ tập trung vào khía cạnh trực quan của nó.

Một mảnh là đầu ra raster

Wiki OpenGL nói:

Một mảnh vỡ là một tập hợp các giá trị được tạo ra bởi Rasterizer.

Điều này có ý nghĩa vì shader mảnh xuất hiện sau rasterizer tạo ra đầu vào của nó.

Và đây là đại diện trực quan của đầu ra rasterizer:

Nguồn hình ảnh .

Đầu vào của trình rasterizer là một hình tam giác 3D và một điểm nhìn, và đầu ra, là một tập hợp các pixel có thể xuất hiện trên màn hình (nếu chúng không bị chặn bởi những người khác).

Mỗi hình vuông nhỏ đó (được mã hóa dưới dạng một pixel), là một phần của hình tam giác, và đoạn chỉ là một tên gọi khác của mảnh.


Downvoters, vui lòng giải thích để tôi có thể tìm hiểu và cải thiện nội dung ;-)
Ciro Santilli 心 心

Thông tin trong câu trả lời hàng đầu trộn lẫn với những khám phá thị giác của bạn sẽ là tốt nhất.
StarWeaver
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.