Những ứng dụng kết xuất thời gian thực hiện đại nào vẫn sử dụng phân đoạn độ sâu mảnh / ghi Z muộn?


7

Một điều khá nổi tiếng là độ sâu ghi trong shader mảnh của bạn thường vô hiệu hóa tối ưu hóa kiểm tra / ghi "Z sớm" mà các GPU hiện đại dựa vào độ bền. Tuy nhiên, API vẫn cho phép nó và GPU vẫn cung cấp hỗ trợ cho khả năng hiển thị chính xác khi các shader viết độ sâu tùy ý.

Câu hỏi đặt ra là: có bất kỳ trạng thái hiệu ứng thời gian thực nào trong các công cụ trò chơi ngày nay yêu cầu viết Z trong shader mảnh không?

Câu trả lời:


10

Bất kỳ kỹ thuật nào liên quan đến raytracing trong shader mảnh đều có thể muốn viết Z để bộ đệm độ sâu chứa một biểu diễn chính xác của bề mặt raytraced. Ví dụ:

  • Diễu hành tia trường từ xa , như đã thấy trong nhiều sản phẩm shadertoys và demoscene. Ở đây, chỉ có một quad toàn màn hình được rasterized, và tất cả các hình học được tạo bởi shader mảnh. Viết Z sẽ là cần thiết nếu bạn muốn sử dụng bộ đệm độ sâu cho ánh sáng bị trì hoãn hoặc hiệu ứng sau, hoặc cho các trường khoảng cách tổng hợp với hình học tam giác thông thường và có được tắc chính xác.
  • Tia Voxel diễu hành, tương tự như trên. Ngay cả khi các voxel trong mờ (như trong đám mây khói hoặc tương tự), có thể hữu ích khi viết Z khi mật độ voxel đủ cao để trở nên mờ đục; ví dụ, điều đó có thể hữu ích cho các tính toán làm mờ / độ sâu trường ảnh sau này.
  • Các kỹ thuật ánh xạ tắc Parallax , trong đó một bề mặt phẳng được tạo ra bằng chiều sâu bằng cách di chuyển bằng tia tới một trường cao.

Có lẽ có những trường hợp tương tự khác trong đó hình dạng của một bề mặt được xác định bởi shader mảnh chứ không phải bởi các hình tam giác rasterized.

Nhân tiện, các API và GPU mới hơn bao gồm hỗ trợ cho chế độ đầu ra có chiều sâu bảo thủ , trong đó Z được viết bằng shader chỉ được phép lớn hơn - bằng với Z hình học, nhưng không ít hơn. Điều này cho phép tối ưu hóa Z / phân cấp-Z sớm vẫn hoạt động dựa trên Z hình học: nếu hình học rasterized bị loại bỏ vì đứng sau một cái gì đó, thì bạn cũng biết Z được viết bằng shader cũng sẽ bị loại bỏ. Điều này rất phù hợp cho các trường hợp như trên, vì bạn có thể rasterize một số hình học giới hạn cho đối tượng trường khoảng cách / voxel / heightfield; sau đó độ sâu thực tế sẽ lớn hơn bằng với hình học giới hạn.

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.