Làm cách nào để mô phỏng đồ họa của PSX với OpenGL?


13

Tôi muốn biết những tùy chọn (hoặc shader) nào để thiết lập để trò chơi OpenGL của tôi trông giống như trò chơi Playstation 1. Tôi biết có lẽ không thể đạt được 100% vì PSX đã sử dụng truyền hình và truyền hình hiển thị khác màn hình đó. Cảm ơn. :)


1
Bạn có thể tìm thấy một số thông tin phần cứng hữu ích trên trang Wiki .
Jonathan Connell

2
Tôi nhớ rằng gần đây có một liên kết đến ai đó đã tạo ra các shader để sao chép cảm giác CRT của các trò chơi SNES trên PC với màn hình LCD. Tôi đã bị thuyết phục. altdevblogaday.com/2011/07/18/ cường
dascandy 21/07

Câu trả lời:


24

Theo tôi, các bit quan trọng nhất để tạo cảnh OpenGL trông giống như cảnh PSX sẽ là đảm bảo bộ lọc được tắt (PS1 chỉ có hàng xóm gần nhất) và tắt bộ đệm Z (không có) cảnh của bạn với thuật toán họa sĩ.

Ánh sáng chỉ trên mỗi đỉnh, trên thực tế không có bất kỳ phần cứng chiếu sáng nào chỉ tô màu cho đỉnh. Ánh sáng được điều khiển bằng phần mềm để bạn có thể làm bất cứ điều gì trong giới hạn của thời gian CPU, trong đó không có nhiều phụ tùng cho những thứ tiên tiến thông minh như "chiếu sáng". :) Chúng tôi đã cố gắng để có được đặc điểm tại một điểm, nhưng vì nó là trên đỉnh, nó làm cho cảnh trông lấp lánh nên chúng tôi đã bỏ nó. Chúng tôi không bao giờ quản lý để có được đặc tính để làm việc với các mắt lưới như là quy tắc pha trộn và sau đó sử dụng chúng chỉ mất quá nhiều thời gian.

PS1 cũng có một chút kết cấu bơi lội, tôi không chắc bạn sẽ triển khai điều đó như thế nào với OpenGL, nhưng nếu bạn là người có trải nghiệm xác thực, có thể chỉ cố gắng làm cho tia UV bị phá vỡ khi chúng ở gần mép màn hình sẽ đưa ra một xấp xỉ hợp lý.

Tôi cũng khuyên bạn nên xem các biến đổi đỉnh: PS1 không nổi, do đó, kết xuất diễn ra với các đường ống điểm cố định, đây là nguyên nhân của chuyển động lộn xộn khi phát hình động. Chỉ có rất nhiều vị trí mà một đỉnh có thể ở và tại điểm cố định 16 bit, đó thậm chí không phải là nhiều vị trí. Có một vài video youtube PS1 để có ý tưởng về cách nó ảnh hưởng đến trò chơi, http://www.youtube.com/watch?v=RSV4IBa1pMIbạn có thể thấy ở đây có nghĩa là các đường thẳng bị xáo trộn xung quanh khi máy quay gần ngang. Tôi nghĩ rằng một cách tốt để mô phỏng điều này sẽ là biến đổi thế giới của bạn trong phần mềm (giống như PS1 đã làm) và luôn xuất toàn bộ tọa độ màn hình số sang kích thước màn hình mô phỏng (đó là một trong những lý do chính khiến các polys bị xáo trộn xung quanh, chúng không thể được hiển thị thành pixel phụ).

BIÊN TẬP

Kết cấu bơi là do PS1 hoàn toàn không có nội suy 3D. Như user712092 đã đề cập, trình kết xuất affine chỉ có thể nội suy trong không gian màn hình nên chúng tôi đã kết thúc với các đường chéo của mình đều sai. Điều này có thể được thực hiện bằng cách bật noperspectivevòng loại nội suy của bạn hoặc được mô phỏng bằng cách chuyển đổi cảnh bằng tay và loại bỏ giá trị Z cuối cùng trong đỉnh của bạn sau khi bạn chia tọa độ màn hình x và y cho giá trị z đó


Cái nhìn sâu sắc tốt đẹp;)
Jonathan Connell

@Richard Kết cấu bơi? Là một phần hoặc hoàn toàn thiếu điều chỉnh quan điểm ? Ví dụ, Quake đã hiệu chỉnh phối cảnh cho mỗi N pixel.
dùng712092

@Richard Vì vậy, điều đó có nghĩa là tôi phải dùng đến a) shader đỉnh để mô phỏng 16 bit điểm cố định b) không chắc chắn nếu glVertex3s giải quyết được c) có một số thư viện OpenGL cố định.
dùng712092

3
Ồ Làm thế nào để bạn biết tất cả điều này?
tro999

@ as999999 Tôi đã là một nhà phát triển trò chơi chuyên nghiệp trong hơn 10 năm.
Richard Fabian
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.