เหตุใดการทำแผนที่เงาจึงเป็นมาตรฐาน


41

แม้ว่าฉันจะเป็นโปรแกรมเมอร์โดยการค้าขาย แต่ฉันก็แทบไม่ได้สัมผัสกับการพัฒนาเกมเลย ฉันมีคำถามนี้มาระยะหนึ่งแล้วและตอนนี้ฉันกำลังมองหาการพัฒนาเกมฉันคิดว่ามันจะเป็นช่วงเวลาที่ดีสำหรับการถาม

เหตุใดการทำแผนที่เงาจึงเป็นวิธีที่พิเศษในการใช้เกมเพื่อสร้างเงา จะทื่อมันดูน่ากลัว แม้กระทั่งเกมที่ทันสมัยที่มีการตั้งค่าเงาสูงสุดมีเงาแบบ block-y ที่ทำให้เสียสมาธิมาก

Doom 3 ทำเมื่อ 11 ปีที่แล้วใช้ปริมาณเงาที่ดูดีกว่าการใช้แผนที่เงาที่ฉันเคยเห็นซึ่งรวมถึงเกม AAA ที่เปิดตัวในสัปดาห์เดียวกันกับคำถามนี้ที่โพสต์ไว้ บุคคลที่สามดัดแปลงสำหรับ Doom 3 ทำให้ขอบเงาอ่อนลงทำให้พวกเขาน่าประทับใจยิ่งขึ้น

มีปัญหาทางเทคนิคหรือข้อ จำกัด บางประการเกี่ยวกับการนำสิ่งต่าง ๆ เช่นปริมาณเงา? แผนที่เงานั้นง่ายต่อการนำไปใช้งานหรือไม่ที่ devs ไม่ได้พิจารณาเรื่องอื่นเลย?

ข้อมูลเดียวที่ฉันสามารถค้นหาเกี่ยวกับเรื่องนี้คือรูปหลายเหลี่ยมที่ประกอบขึ้นเป็นเล่มอาจมีขนาดใหญ่มากขึ้นและมีความต้องการมากขึ้น บางทีปริมาณเงามีความต้องการของระบบที่สูงขึ้นมาก แต่ถ้าเป็นเช่นนั้นพวกเขาจะใช้มันอย่างไรในปี 2004?

คำถามนี้ไม่เฉพาะเจาะจงกับการทำแผนที่เงากับปริมาณเงาพวกเขาเป็นเพียง 2 เดียวที่ฉันเคยเห็นใช้ในผลิตภัณฑ์เต็มรูปแบบและฉันไม่สามารถหาข้อมูลมากมายเกี่ยวกับเทคนิคอื่น ๆ ได้


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

1
Doom 3 เป็นเวลาหลายปีก่อนที่การพัฒนาจะเริ่มขึ้น (อย่างน้อยก็มีให้เลือกกราฟิก API) มีแบ็กเอนด์หลายรุ่นเพื่อจัดการ pre-Shader Model 2.0 ของฮาร์ดแวร์และนั่นหมายถึงเครื่องยนต์ประมาณ 1/4 ของเป็นแบบพกพาแทบจะไม่ (ก่อนวันที่แม้แต่ GLSL) และ 3/4 ที่เหลือเป็น codepaths สำหรับ NV และ ATI ที่ไม่เกี่ยวข้องตามเวลาที่เกมส่งมา ทางเลือกของปริมาณเงาเงาอาจเป็นปัญหาน้อยที่สุด
Andon M. Coleman

คำตอบ:


48

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

ข้อบกพร่องของลายฉลุเงา

  1. เงาตรงกับรูปร่างของตาข่ายหล่อ นี่คือการ จำกัด มากและน่าจะเป็นเหตุผลทางเทคนิคที่ใหญ่ที่สุดที่จะไม่ใช้เงาลายฉลุ ต้นไม้ใบไม้พุ่มไม้รั้วลวดฉีกผ้าและองค์ประกอบอื่น ๆ ของเกมหล่อเงาทั่วไปใช้ความโปร่งใสอัลฟาเพื่อกำหนดรูปร่างของวัตถุ แต่เนื่องจากเงาของลายฉลุจับคู่กับตาข่ายและไม่ได้เป็นส่วนที่มองเห็นได้ของเนื้อผ้าบนตาข่ายอย่างเคร่งครัดจึงไม่สามารถใช้กับวัตถุดังกล่าวได้ ตัวอย่างเช่นกลุ่มของใบไม้ในต้นไม้มักจะเป็นพื้นผิวของกลุ่มของใบบนรูปสี่เหลี่ยม ลายฉลุเงาจะสามารถแสดงเงาของรูปสี่เหลี่ยมเองเท่านั้น (และมันจะมีปัญหากับสิ่งนั้นเนื่องจากรูปสี่เหลี่ยมไม่ใช่ตาข่ายปิด แต่นี่เป็นรายละเอียดเล็กน้อยที่ฉันจะข้ามไปสำหรับคำตอบนี้เนื่องจากมันเป็น โดยทั่วไปสามารถทำงานได้)
  2. ไม่สามารถทำเงานุ่มนวลที่ถูกต้องได้ คุณได้ชี้ให้เห็นว่า Doom 3 ได้รับการดัดแปลงเพื่อให้เงานุ่มนวล อย่างน้อยรุ่นนี้ที่นี่ใช้การทำแผนที่เงาสำหรับเงานุ่ม ฉันเคยเห็นเทคนิคพื้นที่หน้าจอสำหรับการทำให้เงาเงาอ่อนลง แต่พวกเขาก็มีแนวโน้มที่จะเกิดปัญหาได้ทุกประเภท
  3. ไม่สามารถทำเงากับวัตถุโปร่งใสได้ มีวิธีแก้ไขปัญหานี้ - เงาการแสดงผลสำหรับวัตถุโปร่งใสในการผ่านแยกและประกอบพวกเขาในภายหลัง แต่นอกเหนือจากการแก้ไขปัญหายากลักษณะของเงาลายฉลุเป็นเช่นนั้นพิกเซลบนหน้าจอแต่ละคนเป็นอย่างใดอย่างหนึ่งในร่มเงาหรือไม่ นี่คือเหตุผลที่ไม่มีเงานุ่มนวลดังกล่าวมาก่อน
  4. การใช้งานที่ต้องการและมีประสิทธิภาพมากที่สุดของเงาลายฉลุมักเรียกว่า "Carmack's Reverse" นั้นได้รับการจดสิทธิบัตรจริง ๆ แล้วขณะที่ Angew ชี้ให้เห็นในความคิดเห็น (ไม่ได้รับการจดสิทธิบัตรโดย Carmack เขาต้องหลีกเลี่ยงสำหรับ Doom 3 รุ่นโอเพ่นซอร์ส)

ในความโปรดปรานของการทำแผนที่เงา

นอกเหนือจากการไม่มีข้อ จำกัด ที่ฉันระบุไว้โดยเฉพาะสำหรับเงาของ stencil มีข้อดีพิเศษบางประการสำหรับการทำแผนที่เงา:

  1. scalability ในขณะที่การทำแผนที่เงานั้นไม่ถูกหรือสมบูรณ์แบบ ( ed: แต่เงาของ stencil ไม่ถูกด้วย ) มันค่อนข้างง่ายที่จะแลกเปลี่ยนความเชื่อถือในประสิทธิภาพการทำงานโดยการเปลี่ยนความละเอียดของแผนที่เงาหรือเปลี่ยนการกรองสำหรับเงา ทำให้ง่ายต่อการปรับคุณภาพ / ประสิทธิภาพของเงาสำหรับระบบที่แตกต่างกัน ดังที่คุณได้ชี้ให้เห็นว่าสิ่งนี้มักจะไม่สมบูรณ์แบบ แต่ส่วนใหญ่จะขึ้นอยู่กับการรับรู้ของผู้เล่นและความละเอียดที่พวกเขากำลังเล่นอยู่ (ความละเอียดหน้าจอที่สูงขึ้นจะทำให้มองเห็นเงาได้ง่ายขึ้น การทำแผนที่) เกม AAA บางเกม (เช่นFracture ) ทำผลงานได้อย่างน่าทึ่งด้วยการทำแผนที่เงาโดยเลือกฟิลเตอร์ที่ถูกต้องและจูนลูกบิดที่ถูกต้องในขณะที่หลายคนก็ตบมันและพูดว่า "ดีพอ"
  2. คุกกี้ (เงาพื้นผิว): เพิ่มพื้นผิวของสปอตไลท์หรือกระจกสีและคุณสามารถเลียนแบบแหล่งกำเนิดแสงจริงทุกประเภท นี่เป็นไปได้กับเงา stencil ด้วยวิธี แต่เกี่ยวข้องเกือบทั้งหมดเซ็ตอัพของการทำแผนที่เงาอย่างไรก็ตาม (เมทริกซ์การฉายภาพเดียวกันที่ใช้สำหรับการฉายพื้นผิวของแสงบนวัตถุเป็นสิ่งที่ใช้สำหรับการทำแผนที่เงา)
  3. Transparent shadow: เกมส่วนใหญ่ไม่ได้พยายามมากนักกับเรื่องนี้ แต่เงาที่โปร่งใสนั้นเป็นไปได้ด้วยการทำแผนที่ shadow ฉันไม่ได้หมายถึงพิลึกอัลฟาเหมือนต้นไม้และรั้วอย่างที่ฉันเคยพูดถึง แต่ฉันหมายถึงเงาที่โปร่งใสบางส่วนเช่นจากควันและฝุ่น

ไม่มีรายการใดที่ครบถ้วนสมบูรณ์

ดังนั้นในขณะที่การสังเกตของคุณเกี่ยวกับการแมปเงาและเงา stencil ถูกต้องข้อบกพร่องของเงา stencil เป็น show-stoppers สำหรับเอฟเฟกต์ที่ต้องการจำนวนมากและการแมปเงามีข้อดีของมันเองเล็กน้อย


1
Ahhh ฉันไม่ได้พิจารณาสิ่งเหล่านี้ส่วนใหญ่และพื้นผิวโปร่งใสเช่นใบไม้เป็นปัญหาสำคัญ ขอบคุณสำหรับคำตอบ!
gnoblin

1
ไม่มีปัญหา :) สิ่งเหล่านี้พลาดได้ง่าย!
Jibb Smart

8
ฉันจะบอกว่าปัญหาพิเศษอีกอย่างหนึ่งของปริมาณเงาคือความลึกผ่านไม่เหมือนกับกล้องที่อยู่ในเงามืดและการจดสิทธิบัตรลึกล้มเหลวนั้นได้รับการจดสิทธิบัตร
Reinstate Monica

จุดที่ดี Angew ฉันได้เพิ่มสิ่งเหล่านี้ลงในเหตุผลที่จะไม่ใช้เงาลายฉลุและชี้แจงเหตุผลหลักที่จะไม่ใช้เงาลายฉลุเป็น " เหตุผลทางเทคนิคที่ใหญ่ที่สุด" ที่จะไม่ใช้พวกเขาเนื่องจากปัญหาสิทธิบัตรอาจเป็นของตัวเอง
Jibb Smart
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.