ในช่วงเวลาเดียวกันในหนึ่งฉากมีเกมที่ทันสมัย ฉันรู้ว่ามีการใช้เฉดสีหลายแบบโดยมีเกมสลับระหว่างพวกเขาในแต่ละเฟรมและเป็นเรื่องธรรมดาที่จะวาดวัตถุผ่าน shader:
- วาดวัตถุทั้งหมดด้วย shader หนึ่ง
- เปลี่ยนจาก shader หนึ่งเป็น shader สอง
- วาดวัตถุทั้งหมดด้วย shader สอง
ถึงกระนั้นฉันก็รู้ว่ามันไม่ง่ายโดยเฉพาะอย่างยิ่งกับเอฟเฟ็กต์เช่นเอฟเฟ็กต์แสงสำหรับฉากทั้งหมดการเรนเดอร์ไปสู่พื้นผิว ฯลฯ แต่ฉันคิดว่าเราสามารถสันนิษฐานได้ว่า วิธีการ "กลุ่มโดย shader" เป็นสิ่งที่ดีเพราะการเปลี่ยนเฉดสีเป็นการดำเนินการที่มีราคาแพง
จากด้านหนึ่งคุณไม่สามารถมีเฉดสีมากเกินไปเพราะคุณต้องการทำให้ฉากนั้นรวดเร็ว ในทางกลับกันคุณจำเป็นต้องมีเฉดสีที่แตกต่างกันมากมาย (หรือ uber-shader ที่มีกิ่ง - คล้ายกันมาก) สำหรับผิวหนังโลหะน้ำ ฯลฯ
เกมประเภทนักสืบสามมิติ (และอันใด) ที่แตกต่างกันทางทฤษฎีเกมสมัยใหม่นักสืบสามมิติสำหรับพีซี (DirectX 11 ถ้ามีความสำคัญ) จะใช้งานอย่างไร มันจะเป็น 5, 20 หรือมากกว่าเช่น 100 shaders ที่ใช้งานอยู่นับเฉพาะการใช้งานที่บางเฟรม ""? ฉันรู้ว่ามันไม่ใช่หมายเลขหนึ่ง แต่ฉันสงสัยว่าขนาดและปัจจัยใดที่มีความสำคัญในการพิจารณาสำหรับเกมพีซี
ในเกมตัวอย่างของฉันฉันจะใช้ประมาณ 9-11 ต่อเฟรม (นับว่าแตกต่างกันตัวเล็กหรือตัวหนึ่ง uber-shader - ไม่เป็นไรตอนนี้):
- สกินเชดเดอร์
- อายแชโดว์ (ไม่มากเกินไปหรือไม่ แต่แตกต่างกัน)
- เครื่องตัดโลหะ
- เครื่องบดพื้นดิน
- หิมะ / ฝนตก (ถ้าจำเป็น)
- Water shader (ถ้ามีน้ำอยู่ในฉาก)
- Glow shader (เฉพาะบางเทคนิคพิเศษที่เกี่ยวข้อง)
- Light emiter shader (โคมไฟถนน ฯลฯ )
- Standard shader (สำหรับทั้งหมด, เพียงแรเงามาตรฐาน)
- Standard shader พร้อมแผนที่ปกติ
- 2D shader (สำหรับ GUI เป็นต้น)
มัน "มาก" หรือ "ไม่มาก"? ฉันลืมเรื่องสำคัญบางอย่างที่ฉันต้องการหรือไม่?