เหตุใดบางเกมที่ใช้รูปแบบที่แตกต่างแทนที่จะเป็นแบบดั้งเดิมเพื่อความโปร่งใส


24

เมื่อเร็ว ๆ นี้ฉันได้เห็นเกมสามมิติ (เช่น:) GTA IVเพื่อใช้การสั่งซื้อบางอย่างเพื่อจำลองความโปร่งใส / อัลฟ่า

รูปหลายเหลี่ยมไม่โปร่งใสเหมือนปกติ แต่ให้แสดงพื้นผิวแบบ dithering ที่ค่อยๆสลับจากซ้ายไปขวาเพื่อจำลองความโปร่งใส:

ป้อนคำอธิบายรูปภาพที่นี่

เอฟเฟกต์นี้ไม่ได้เป็นที่น่าพอใจ แต่ค่อนข้างน่าแปลกใจที่เห็นในตอนแรก (เทียบกับการผสมแอลฟาแบบดั้งเดิม)

ยกเว้นเอฟเฟ็กต์ความสวยงามทางสายตาที่เกิดขึ้นมีเหตุผลอะไรบ้างที่เกมบางเกมทำเช่นนี้ (ประสิทธิภาพที่ดีขึ้นการประหยัดแบนด์วิดท์หรือสิ่งอื่นใดที่ฉันไม่ได้คิดถึง)

ฉันค้นหาบนเว็บ แต่ไม่พบสิ่งใดเกี่ยวกับเทคนิคนี้


ดูเหมือนว่ามันจะมาพร้อมกับสไตล์ศิลปะพิกเซล
MichaelHouse

@ Byte56 สไตล์ศิลปะพิกเซล? GTA IV ฮะ?
นาธานรีด

@NathanReed Heh ไม่ใช่ใน GTA IV OP กล่าวถึงเมื่อเร็ว ๆ นี้ในเกม
MichaelHouse

1
ฉันพบว่าเทคนิคนี้ดีกว่าการผสมอัลฟ่าเมื่อวัตถุ 3 มิติที่ซีดจางซึ่งอยู่ใกล้กับระนาบใกล้เกินไป
Andreas

คำตอบ:


27

นี่เป็นวิธีการทั่วไปที่ค่อนข้างโปร่งใสในเกมที่ใช้การแรเงาที่เลื่อนออกไป ความโปร่งใสที่เหมาะสมนั้นใช้งานไม่ได้เลยกับการแรเงาที่เลื่อนออกไปเนื่องจากสามารถเก็บข้อมูลพื้นผิวเดียว (ความลึกเวกเตอร์ปกติสี ฯลฯ ) ในแต่ละพิกเซลและความโปร่งใสที่เหมาะสมเกี่ยวข้องกับหลาย ๆ พื้นผิวซ้อนทับที่แต่ละพิกเซลซึ่งต้องการอิสระ แสง

เอ็นจิ้นเกมสามารถจัดการกับสิ่งนี้ได้หลายวิธี:

  • ใช้การแรเงาไปข้างหน้า (อาจมีรูปแบบแสงที่ลดลง) สำหรับพื้นผิวที่โปร่งใสและการบังเงาแบบเลื่อนสำหรับพื้นผิวทึบ พื้นผิวที่โปร่งใสจะต้องวาดในการส่งผ่านแยกต่างหากโดยมีการเรียงลำดับจากด้านหน้าไปด้านหน้า
  • ใช้ dithering หรือที่รู้จักกันทั่วไปว่าเป็น stippling หรือความโปร่งใสของประตูหน้าจอซึ่งทำงานร่วมกับการแรเงาที่เลื่อนออกไปเนื่องจากให้พื้นผิวเพียงจุดเดียวต่อพิกเซล วิธีนี้ใช้งานได้ดีโดยเฉพาะกับการเปลี่ยน LOD เนื่องจากมักจะเสร็จสิ้นในเวลาที่กำหนดทำให้ จำกัด ระยะเวลาที่สามารถเห็นการสะดุด มันใช้งานได้ไม่ดีนักสำหรับพูดกระจกหน้าต่างในอาคาร
  • อาจเป็นไปได้ที่จะใช้ stippling แต่จากนั้นใช้การเบลอหลังกระบวนการซึ่งรวมพิกเซล stippled อีกครั้งเพื่อให้การประมาณความโปร่งใสเหมาะสม ความตั้งใจทำสิ่งนี้ใน Saints Row the Third (และอาจเป็นเกมอื่นของพวกเขาด้วย) ภายใต้ชื่อของ "การอนุมานแสง " สิ่งนี้ดูดีมาก แต่ความพร่ามัวของกระบวนการหลังการขายนั้นแพง
  • และแน่นอนว่ามีวิธีการที่โปร่งใสตามคำสั่งทั้งหมดแม้ว่าฉันจะไม่รู้ว่ามีเกมใดที่ใช้มัน พวกเขาเป็นเพียงการสาธิตเทคโนโลยีจนถึงตอนนี้

เราสามารถใช้วิธีการเหล่านี้ร่วมกันได้เช่นการบังแสงไปข้างหน้าสำหรับกระจกหน้าต่าง

นอกจากนี้ยังเป็นที่น่าสังเกตว่าบางเกมใช้ stippling สำหรับเงาที่อ่อนนุ่ม นี่คือการแลกเปลี่ยนประสิทธิภาพ nicer shadows ต้องการตัวอย่างพื้นผิวเพิ่มเติมใน pixel shader ซึ่งใช้เวลานานกว่า แต่คุณสามารถได้ผลลัพธ์ที่ดูดีโดยใช้ตัวอย่างน้อยลงและชดเชยตำแหน่งของพวกเขาแบบสุ่ม การชดเชยแบบสุ่มจะสร้างเอฟเฟกต์ stippling


ฉันไม่รู้เกี่ยวกับเทคนิคการแรเงาที่รอการตัดบัญชี (อธิบายไว้ที่นี่: en.wikipedia.org/wiki/Deferred_shading ) พวกเขายังพูดคุยเกี่ยวกับปัญหาอัลฟาที่เป็นไปได้ เข้าท่าตอนนี้ ขอบคุณสำหรับคำตอบ
tigrou

0

มันเป็นการแลกเปลี่ยนประสิทธิภาพที่เรียบง่าย การผสมอัลฟาต้องอ่านจากบัฟเฟอร์สีปัจจุบันในขณะที่การทำสีแบบนี้เป็นแบบเขียนอย่างเดียว (หรือยกเลิกอย่างเดียวแน่นอน)

มันเป็นไปได้ที่จะผสมกับเทคนิคนี้ multisampling ซึ่งเรียกว่าแล้วอัลฟาเพื่อคุ้มครอง


คุณกำลังพูดถึง "การแลกเปลี่ยนประสิทธิภาพ" แบบไหน? Early-Z ถูกปิดหากคุณใช้ทิ้งใน Shader ของคุณ การผสมทำได้บนฮาร์ดแวร์และรวดเร็ว
ธารา

จริงๆแล้วฉันเพิ่งทดสอบในเครื่องยนต์ของฉันในฉากที่เหมาะสมด้วยความละเอียดสูง: การเปิดใช้งาน vs การปิดการใช้งานการผสมสำหรับเรขาคณิตทั้งหมดทำให้ไม่มีประสิทธิภาพแตกต่างกันเลย คำตอบของ Nathan Reed นั้นถูกต้องเนื่องจาก dithering มักจะใช้ในการเรนเดอร์ที่เลื่อนออกไป
ธารา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.