Kết xuất Subpixel cho Ray Tracer


16

Trong kết xuất phông chữ, người ta thường sử dụng kết xuất pixel phụ . Ý tưởng cơ bản ở đây là chia pixel thành các thành phần RGB của nó và sau đó tính toán một giá trị cho từng pixel riêng biệt. Vì mỗi thành phần nhỏ hơn toàn bộ pixel, nên khử răng cưa chất lượng cao hơn là có thể.

Rõ ràng có một cách tương tự để làm điều tương tự đối với máy dò tia. Bạn thực hiện lọc lại trên mỗi kênh con riêng biệt.

Tôi đã ngạc nhiên rằng, tuy nhiên, tôi thực sự không thể tìm thấy tài liệu tham khảo về các bộ quét tia làm việc này. Đặc biệt là nếu bạn đã thực hiện kết xuất quang phổ, điều này có vẻ như là một điều rõ ràng phải làm. Có bài viết này từ một tạp chí mà tôi chưa bao giờ nghe nói có vẻ liên quan. Nhưng nhìn chung, kết xuất pixel con dường như không phải là một điều phổ biến. Câu hỏi của tôi: tại sao không ?


Hình ảnh được hiển thị dưới pixel của bạn vẫn trông ổn nếu được xem trên màn hình theo hướng dọc?
jamesdlin

Là một kỹ sư, tôi sẽ không bao giờ đồng ý thực hiện một ... ý tưởng bị hỏng. NGOẠI TRỪ nếu tôi chắc chắn màn hình hoàn toàn cố định. giống như một ứng dụng cho iPhone 5S. Sử dụng kỹ thuật này tạo ra hình ảnh bị hỏng từ màn hình bằng cách sử dụng các mẫu đảo ngược hoặc sắp xếp khác nhau.
v.oddou

Câu trả lời:


14

Điều này là hoàn toàn có thể

Mặc dù sự khác biệt có thể không đặc biệt đáng chú ý, tôi sẽ mong việc lấy mẫu có tính đến hình học pixel chính xác để cho hình ảnh chính xác hơn một chút. Bạn chỉ cần bù trung tâm pixel của mình cho mỗi thành phần màu theo vị trí (trung bình) của pixel phụ của màu đó. Lưu ý rằng không phải tất cả các bố cục pixel đều có sự tương ứng 1-1 giữa pixel và pixel phụ.

Ví dụ, penTile RGBG có số lượng các chuỗi con màu xanh lục gấp đôi so với màu đỏ và màu xanh lam, như hình ảnh này từ Wikipedia cho thấy:

Đóng hình ảnh của hình học pixel RGBG

Tôi không biết bất kỳ lý do kỹ thuật nào có thể ngăn chặn việc này được sử dụng để tạo ra hình ảnh đầy đủ màu sắc tùy ý. Trong thực tế, một cảnh đầy màu sắc sẽ có các tạo tác màu ít đáng chú ý hơn màu đen trên văn bản màu trắng, điều này làm cho sự khác biệt màu sắc khó ngụy trang nhất.

Phông chữ được hiển thị theo yêu cầu

Sự khác biệt có liên quan giữa kết xuất cảnh chiếu tia và phông chữ hiển thị là phông chữ có xu hướng được hiển thị theo yêu cầu và có thể tính đến màn hình đang được sử dụng. Tương phản với điều này, một cảnh raytraced thường được chiếu trước và sau đó được hiển thị trên nhiều loại màn hình khác nhau (với hình dạng pixel khác nhau). Ví dụ: hiển thị hình ảnh raytraced của bạn trên một trang web sẽ ngăn không cho nó phù hợp với một loại màn hình cụ thể.

Nếu bạn đang thiết kế chương trình raytracing thời gian thực và bạn có quyền truy cập để kiểm tra hình dạng pixel của màn hình, thì bạn có thể raytrace đến bố cục pixel phụ cụ thể. Tuy nhiên, việc quét tia ngoại tuyến tạo ra hình ảnh tĩnh chỉ có thể được điều chỉnh theo một loại hình học pixel duy nhất, sau đó sẽ làm cho hình ảnh trông tệ hơn trên bất kỳ hình dạng pixel nào khác. Bạn có thể giải quyết vấn đề này bằng cách hiển thị một tập hợp các hình ảnh khác nhau và chọn một hình ảnh phù hợp khi nó được hiển thị sau đó trên một loại màn hình cụ thể.

Không có khả năng là một lợi ích lâu dài

Vì vậy, không có lý do gì bạn không thể phát triển kết xuất pixel phụ cho raytracer, nhưng điều đó có nghĩa là có tính đến một khía cạnh của màn hình không phải lúc nào cũng được biết đến. Một điều cần lưu ý là bạn sẽ phát triển phần mềm này cho một thị trường thu hẹp. Kết xuất pixel phụ rất hữu ích cho màn hình có độ phân giải tương đối thấp. Khi ngày càng có nhiều màn hình (thậm chí cả màn hình di động) đạt độ phân giải cao đến mức mắt người không thể phát hiện ra sự khác biệt do kết xuất pixel phụ, công việc của bạn có thể được quan tâm nhiều hơn về mặt lý thuyết so với sử dụng thực tế.


3
Chơi người ủng hộ của quỷ, nếu có thể thực hiện kết xuất pixel con màu (tôi là một người hay hoài nghi!), Có vẻ như nó có thể hữu ích trong các tình huống VR, nơi chúng phải vật lộn để có đủ độ phân giải. Có lẽ trên điện thoại (không phải võng mạc?) Là tốt?
Alan Wolfe

1
@AlanWolfe có nhưng nó cũng đắt gấp 3 lần để kết xuất
joojaa

vâng chắc chắn, đó là sự thật. Có một số tình huống không phải là một vấn đề mặc dù. Chẳng hạn, tôi biết một vài thuật toán mà bạn không cần phải chụp tia cho mỗi pixel mỗi khung hình. Có vẻ như điều này cũng có thể đã chơi trong btw đồ họa rasterized. Một lần nữa, tôi không tin rằng kết xuất subpixel màu là một điều có thật, nhưng bạn biết đấy, NẾU! : P
Alan Wolfe

@AlanWolfe Tôi không hiểu nghi ngờ của bạn. Tất cả các hình ảnh đã được hiển thị với các pixel phụ, nhưng màu sắc bị sai lệch giữa một phần ba và một nửa pixel. Tôi không thể thấy cách sửa sai mà không thể tạo ra hình ảnh chất lượng cao hơn. Bạn có bất kỳ mối quan tâm cụ thể (có thể làm cho một câu hỏi hay ...)?
trichoplax

3
@joojaa Không có lý do gì nó sẽ đắt gấp 3 lần để kết xuất. Bạn sẽ không cần phải bắn gấp 3 lần số lượng tia; bạn chỉ cần áp dụng 3 trọng lượng khác nhau khi tích lũy các tia vào bộ đệm khung. Thực tế, bạn đang sử dụng một hạt nhân khử răng cưa khác nhau cho mỗi kênh màu.
Nathan Reed

9

Chắc chắn, bạn có thể sử dụng subpixel rendering cho hình ảnh tùy ý. Tuy nhiên, kết xuất pixel phụ thực sự là một kỹ thuật xử lý hình ảnh 2D chung - nó không liên quan gì đến việc dò tia cụ thể. Bạn cũng có thể sử dụng nó với bất kỳ phương pháp kết xuất 3D nào khác, hoặc thậm chí với một bản vẽ 2D, ảnh hoặc thậm chí là video đơn giản.

Do đó, tôi muốn nói rằng "kết xuất pixel phụ để dò tia" thực sự kết hợp hai miền vấn đề riêng biệt được xử lý tốt nhất. Về kết nối duy nhất có liên quan là, nếu bạn đang theo dõi cảnh trong thời gian thực và biết rằng hình ảnh thu được sẽ được vẽ trên màn hình bằng cách sử dụng kết xuất pixel phụ, bạn có thể sử dụng thông tin này để tối ưu hóa mật độ pixel (và khía cạnh tỷ lệ) của hình ảnh trung gian (ví dụ: sử dụng mật độ pixel ngang 3x cho màn hình LCD RGB điển hình).


Một nguồn gây nhầm lẫn tiềm ẩn có thể là, trên hệ thống máy tính hiện tại, kết xuất pixel con thường chỉ được sử dụng cho văn bản và thường được tích hợp vào mã kết xuất phông chữ. Những lý do chính cho điều này được cho là mang tính lịch sử, nhưng đó cũng là nơi các khoản chi trả lớn nhất (về cải thiện hình ảnh và khả năng đọc) thường là.

Ngoài ra, do cách văn bản có xu hướng bao gồm các hình dạng vectơ đơn giản và lặp đi lặp lại, việc tích hợp kết xuất pixel con vào trình kết xuất phông chữ cung cấp một số cơ hội tối ưu hóa bổ sung cho việc chỉ hiển thị văn bản vào bộ đệm có độ phân giải cao và sau đó xử lý hậu kỳ.

Điều đó nói rằng, tôi hoàn toàn mong đợi rằng cuối cùng, khi công nghệ trưởng thành, chúng ta sẽ chuyển sang một hệ thống mà việc kết xuất pixel con được thực hiện một cách đơn giản bằng GPU hoặc có thể bằng chính màn hình.

(Điều này rất có thể sẽ yêu cầu các ứng dụng muốn sử dụng đầy đủ tính năng này để xử lý các pixel vật lý nhỏ hơn và không nhất thiết phải có hình dạng giống như "pixel logic". Nhưng một lần nữa, chúng ta đã di chuyển trong đó hướng với màn hình DPI cao.)


Tervetuloa! Có quan điểm của bạn là hợp lệ, id nói rằng hệ thống hoặc phần cứng phải làm điều này vì chỉ có hệ thống trong tương lai mới có thể nhận thức được hướng của màn hình và tổ chức màu sắc trên màn hình. Tốt nhất là màn hình sẽ làm điều này.
joojaa
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.