ฉันต้องการที่จะรู้ว่าตัวเลือก (หรือเฉดสี) ที่จะตั้งค่าเพื่อให้เกม OpenGL ของฉันดูเหมือนเกม Playstation 1 ฉันรู้ว่ามันอาจจะไม่สามารถทำได้ 100% เพราะ PSX ใช้โทรทัศน์และโทรทัศน์แสดงจอภาพแตกต่างกัน ขอบคุณ :)
ฉันต้องการที่จะรู้ว่าตัวเลือก (หรือเฉดสี) ที่จะตั้งค่าเพื่อให้เกม OpenGL ของฉันดูเหมือนเกม Playstation 1 ฉันรู้ว่ามันอาจจะไม่สามารถทำได้ 100% เพราะ PSX ใช้โทรทัศน์และโทรทัศน์แสดงจอภาพแตกต่างกัน ขอบคุณ :)
คำตอบ:
ในความคิดของฉันบิตที่สำคัญที่สุดในการสร้างฉาก OpenGL ดูเหมือนว่าฉาก PSX จะทำให้แน่ใจว่าการกรองถูกปิด (PS1 มีเพื่อนบ้านที่ใกล้ที่สุดเท่านั้น) และปิด Z buffering (ไม่มีเลย) และแสดงผล ฉากของคุณด้วยอัลกอริทึมจิตรกร
แสงเป็นเพียงจุดสุดยอดเท่านั้นในความเป็นจริงไม่มีฮาร์ดแวร์แสงใด ๆ เพียงแค่การฉ้อโกงการแรเงาสีจุดสุดยอด แสงเป็นซอฟต์แวร์ขับเคลื่อนดังนั้นคุณสามารถทำอะไรก็ได้ภายใต้ข้อ จำกัด ของเวลา CPU ซึ่งไม่มีอะไรเหลือเฟือสำหรับสิ่งที่ก้าวหน้าอย่างฉลาดเช่น "แสง" :) เราพยายามหาจุดหนึ่งได้ แต่เมื่อถึงจุดสุดยอดมันทำให้ฉากดูเป็นประกายดังนั้นเราจึงลดมันลง เราไม่เคยจัดการกับ specular ให้สามารถทำงานร่วมกับ mesh skinned ได้เพื่อเป็นการผสมผสานบรรทัดฐานแล้วใช้พวกมันแค่ใช้เวลามากเกินไป
PS1 มีการว่ายน้ำพื้นผิวเล็กน้อยฉันไม่แน่ใจว่าคุณจะนำสิ่งนั้นไปใช้กับ OpenGL ได้อย่างไร แต่ถ้าคุณมีประสบการณ์ที่แท้จริงหลังจากนั้นอาจพยายามทำให้ UVs พังทลายเมื่อใกล้ขอบหน้าจอ จะให้การประมาณที่สมเหตุสมผล
ฉันขอแนะนำให้คุณดูที่การเปลี่ยนแปลงจุดสุดยอด: PS1 ไม่มีลอยดังนั้นการเรนเดอร์เกิดขึ้นกับท่อจุดคงที่นี่เป็นสาเหตุของการเคลื่อนไหวที่กระวนกระวายใจเมื่อเล่นภาพเคลื่อนไหว มีเพียงตำแหน่งจำนวนมากที่จุดสุดยอดสามารถอยู่ได้และ ณ จุดคงที่ 16 บิตนั่นไม่ใช่ตำแหน่งที่มากแม้แต่ทั้งหมด รับชมวิดีโอ youtube ของ PS1 เพียงไม่กี่ตัวเพื่อรับทราบว่ามันส่งผลต่อเกมอย่างไร, http://www.youtube.com/watch?v=RSV4IBa1pMIคุณสามารถดูได้ที่นี่ซึ่งหมายความว่าเส้นตรงจะกระวนกระวายใจเมื่อกล้องอยู่ใกล้กับแนวนอน ฉันคิดว่าวิธีที่ดีในการลอกเลียนแบบนี้จะเป็นการเปลี่ยนแปลงโลกของคุณในซอฟต์แวร์ (เช่นเดียวกับที่ PS1 ทำ) และส่งออกพิกัดหน้าจอจำนวนเต็มเป็นขนาดหน้าจอที่จำลองเสมอ (ซึ่งเป็นหนึ่งในเหตุผลสำคัญที่ว่าทำไม polys ไม่สามารถแสดงผลเป็นพิกเซลย่อยได้)
แก้ไข
การว่ายน้ำพื้นผิวเกิดจาก PS1 ไม่มีการแก้ไขแบบ 3D เลย ดังที่ได้กล่าวไว้โดย user712092 ตัวเลียนแบบตัวเลียนแบบสามารถสอดแทรกในพื้นที่หน้าจอเท่านั้นดังนั้นเราจึงลงเอยด้วยเส้นทแยงมุมของเราผิดทั้งหมด สิ่งนี้สามารถดำเนินการได้โดยการเปิดตัวnoperspective
แก้ไขการประมาณค่าของคุณหรือจำลองด้วยมือเปลี่ยนฉากและทิ้งค่า Z สุดท้ายในจุดสุดยอดของคุณหลังจากที่คุณแบ่งพิกัดหน้าจอ x และ y ด้วยค่า z นั้น