Một bộ đệm stpson là gì?


26

Wikipedia nói rằng một bộ đệm stpson là một số bộ đệm tùy ý mà một shader có thể sử dụng.

Tuy nhiên, nó gợi ý rằng nó được sử dụng để cắt, hoặc nói cách khác là "ràng buộc chặt chẽ" bộ đệm độ sâu và pixel, hơi mâu thuẫn với chính nó.

Bộ đệm stpson thực sự làm gì, và nó được sử dụng thực tế như thế nào trong các ứng dụng hiện đại?

Câu trả lời:


31

Định nghĩa bộ đệm stpson của Wikipedia thực sự không tuyệt vời, nó tập trung quá nhiều vào các chi tiết của các triển khai hiện đại (OpenGL). Tôi thấy phiên bản không rõ ràng dễ hiểu hơn:

Một stprint là một mẫu được sử dụng để vẽ hoặc vẽ các chữ cái, ký hiệu, hình dạng hoặc mẫu giống hệt nhau mỗi khi nó được sử dụng. Thiết kế được tạo ra bởi một mẫu như vậy cũng được gọi là stprint.

Đó là ý nghĩa của stprint trước Đồ họa máy tính. Nếu bạn nhập stprint trên Google Images, đây là một trong những kết quả đầu tiên:

Mặt nạ stent

Như bạn có thể thấy, nó chỉ đơn giản là một mặt nạ hoặc hoa văn có thể được sử dụng để "vẽ" tiêu cực của mẫu lên một cái gì đó.

Bộ đệm stpson hoạt động theo cùng một cách chính xác. Người ta có thể lấp đầy bộ đệm stpson bằng một mẫu đã chọn bằng cách thực hiện một bản vẽ kết xuất stprint, sau đó thiết lập chức năng stprint thích hợp sẽ xác định cách mẫu được diễn giải trên các bản vẽ tiếp theo, sau đó kết xuất cảnh cuối cùng. Các pixel rơi vào các khu vực bị từ chối của mặt nạ stpson, theo chức năng so sánh, không được vẽ.


Khi nói đến việc thực hiện bộ đệm stpson, đôi khi nó thực sự được kết hợp với bộ đệm độ sâu. Hầu hết các phần cứng đồ họa sử dụng bộ đệm stpson 1 byte (8 bit), đủ cho hầu hết các ứng dụng. Bộ đệm độ sâu thường được triển khai bằng 3 byte (24 bit), một lần nữa thường đủ cho hầu hết các loại kết xuất 3D. Vì vậy, chỉ hợp lý khi đóng gói 8 bit của bộ đệm stpson với 24 bộ đệm độ sâu khác, cho phép lưu trữ từng pixel độ sâu + stpson thành một số nguyên 32 bit. Đó là những gì Wikipedia có nghĩa là:

Bộ đệm sâu và bộ đệm stpson thường chia sẻ cùng một khu vực trong RAM của phần cứng đồ họa.


Một ứng dụng trong đó bộ đệm stpson từng là vua là để hiển thị bóng, trong một kỹ thuật gọi là khối lượng bóng , hoặc đôi khi còn được gọi một cách thích hợp là bóng stpson . Đây là một cách sử dụng bộ đệm rất thông minh, nhưng ngày nay hầu hết các trường kết xuất dường như đã chuyển sang các bản đồ bóng dựa trên chiều sâu.


Đó là một nhân vật, nhưng cleaver-> clever. Tôi không thể chỉnh sửa nó D: Câu trả lời tuyệt vời bằng cách này, điều này có ý nghĩa nhất cho đến nay.
Qix

3
Nếu bạn có một trình đổ bóng mỗi pixel đắt tiền, bộ đệm stpson cũng có thể được sử dụng để bó các luồng tương tự, giảm phân kỳ và tăng tỷ lệ chiếm dụng như trong bài báo OIT này, giây 2.6 (từ chối trách nhiệm: Tôi là tác giả).
jozxyqk

@jozxyqk, đó là một số suy nghĩ bên ngoài hộp! Rất đẹp.
glampert

13

Bộ đệm stpson là một bộ đệm số nguyên không dấu, ngày nay thường là 8 bit, nơi bạn có thể điền thông tin cho mỗi pixel theo ý muốn dựa trên việc sử dụng các hoạt động khác nhau ( ví dụ OpenGL Ops ở đây ) sau khi kiểm tra stprint.

Kiểm tra stprint chỉ đơn giản là một hoạt động trên mỗi pixel trong đó giá trị stprint pixel hiện tại được kiểm tra đối với nội dung của bộ đệm stpson. Bạn đặt điều kiện để kiểm tra stprint được thông qua (ví dụ LUÔN LUÔN, ÍT, v.v.).

Bạn có thể quyết định điều gì xảy ra với giá trị stprint tùy thuộc vào kết quả của thử nghiệm (trong OpenGL bằng thao tác tôi đã liên kết với bạn ở trên)

Bộ đệm stpson có khá nhiều công dụng, những cái đầu tiên xuất hiện trong tâm trí:

  • Nó có thể được sử dụng như một mặt nạ để chọn lọc kết xuất một phần nhất định của bộ đệm khung và loại bỏ phần còn lại. Điều này, ví dụ, rất hữu ích cho các phản xạ, nhưng cũng nhiều hơn nữa. Khi xử lý kết xuất nhiều độ phân giải, nó có thể được sử dụng để đánh dấu các cạnh cần được hiển thị ở độ phân giải cao hơn. Có rất nhiều cách sử dụng mặt nạ thực sự.
  • Một bộ lọc rút tiền rất đơn giản chẳng hạn. Bạn có thể đặt kiểm tra stprint luôn luôn vượt qua và luôn tăng giá trị. Giá trị mà bạn kết thúc với bộ đệm stpson thể hiện sự rút tiền của bạn. [*]

Trong quá khứ, nó cũng đã được sử dụng cho các kỹ thuật tạo bóng như âm lượng bóng.

Bộ đệm stprint kém thường được đánh giá khá thấp, nhưng có thể là một vũ khí tốt trong kho vũ khí của một lập trình viên đồ họa.

[*] Giá trị được đọc lại trong quá trình hậu xử lý bằng SRV phù hợp!

EDIT: Ngoài ra, đáng nói là trong Shader Model 5.1 (vì vậy D3D11.3 và D3D12) bạn có quyền truy cập vào giá trị tham chiếu stprint thông qua SV_StencilRef


6

Một bộ đệm stpson chứa dữ liệu số nguyên trên mỗi pixel được sử dụng để thêm quyền kiểm soát các pixel được hiển thị.

Một bộ đệm stpson hoạt động tương tự như một bộ đệm sâu. Tương tự như vậy, dữ liệu stprint đó được lưu trữ trong một bộ đệm sâu. Mặc dù dữ liệu độ sâu xác định pixel nào gần camera nhất, dữ liệu stprint có thể được sử dụng làm mặt nạ cho mỗi pixel có mục đích chung hơn để lưu hoặc loại bỏ pixel. Để tạo mặt nạ, hãy sử dụng hàm stpson để so sánh giá trị stprint tham chiếu - giá trị toàn cục - với giá trị trong bộ đệm stpson mỗi khi pixel được hiển thị.

Nguồn: Bộ đệm stear là gì? | Mạng lưới nhà phát triển Microsoft

Ý tưởng chung là bạn có thể đặt một giá trị cho mỗi pixel và sau đó thiết lập các hoạt động ( GREATER, SMALLER, EQUALvv), khi đánh giá lại này là true pixel được tô đậm và hiển thị.

Một ứng dụng là phản xạ thời gian thực, khi hiển thị kết cấu phản chiếu, bộ đệm stpson được sử dụng để tạo mặt nạ cho nơi phản chiếu được áp dụng. Ví dụ, chỉ áp dụng sự phản chiếu cho các hình tam giác mờ vật liệu thủy tinh. Nó cũng có thể được sử dụng để tạo mặt nạ hai chiều tùy ý cho toàn bộ bộ đệm khung.

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.