ฉันทำส่วนแบ่งการเขียนโปรแกรมเกมสามมิติสำหรับนายจ้าง (อดีต) ของฉันแล้วและในเอ็นจิ้นกำหนดเองของฉันสำหรับเกมอินดี้ของฉันเอง
เริ่มแรกฉันเริ่มด้วย Direct3D 9 และ D3DX9 ซึ่งทำทุกอย่างให้ฉันและไม่ต้องการให้ฉันคิดในแง่ของความแตกต่างทั้งหมด
หลังจากนั้นฉันเขียน Direct3D 9 shader ครั้งแรกของฉัน แต่ส่วนใหญ่ใช้ shader ง่าย ๆ สำหรับทุกสิ่งที่ฉันทำ
ในการทำซ้ำเกมเอ็นจิ้นล่าสุดของฉันฉันย้ายไปที่ Direct3D 11 และด้วยการที่ฉันสร้างเฉดสีมากมาย ฉันทำสกิน GPU, อนุภาคที่คำนวณจาก GPU, แสงจำนวนมากและเอฟเฟกต์การประมวลผลทั้งหมดใน GPU สิ่งที่เจ๋งจริงๆ
จนถึงตอนนี้ฉันเพิ่งใช้จุดสุดยอดและพิกเซล / ชิ้นส่วน แม้ว่าจะยังมีอีกหลายสิ่งที่ฉันยังไม่ได้ทำ แต่ฉันเชื่อว่าฉันมีความรู้ที่ดีเกี่ยวกับสิ่งที่ยอดและพิกเซล / ชิ้นส่วนเงาทำและวิธีการทั้งหมดที่เหมาะกับไปป์ไลน์ 3D ทั้งหมด
ติดตามความคืบหน้าของการพัฒนาเมื่อเร็ว ๆ นี้ฉันเริ่มให้ความสนใจกับขั้นตอนการสร้างภาพที่ใหม่กว่า นั่นคือ Geometry Shader และใหม่กว่าคือ Hull และ Domain shaders
ฉันไม่เคยใช้ขั้นตอนเหล่านี้ แต่จากสิ่งที่ฉันรู้ Geometry shader หากเปิดใช้งานจะทำงานหลังจากจุดยอด shader หนึ่งครั้งสำหรับแต่ละจุดสุดยอดที่แปลงสภาพแล้ว และสร้างรายการใหม่ (ซึ่งฉันเดาว่ากลับไปที่จุดเริ่มต้นของท่อส่งก๊าซ?)
ฉันเดาว่าการใช้หลักของตัวสร้างรูปทรงเรขาคณิตคือการสร้างรูปทรงเรขาคณิตโดยทางโปรแกรม การใช้งานทั่วไปนั้นคือการสร้างบิลบอร์ดที่ขึ้นอยู่กับจุดสุดยอดเพียงจุดเดียว แต่ฉันไม่ได้เห็นภาพสถานการณ์ทั่วไปอื่น ๆ อีกมากมายนอกเหนือจากการสร้างเศษส่วนและสิ่งอื่น ๆ ที่คุณสามารถสร้างได้ 100% โดยทางโปรแกรม
ในส่วนของฮัลล์และโดเมนนั้นดูเหมือนว่าพวกมันเกี่ยวข้องกับ tessellation (การสร้างพื้นผิวที่เรียบเนียนออกจากพื้นผิวที่ขรุขระ?) และต้องใช้ร่วมกันหรือไม่ คำว่า "patch" ก็ดูเหมือนจะเป็นเรื่องธรรมดาที่นี่
ใครบ้างที่จะอธิบายให้ฉันฟังในแง่ของการปฏิบัติสิ่งเหล่านี้คืออะไรสำหรับ shader ระยะใหม่พวกเขาเข้ากับท่อ 3D และในกรณีใดที่ฉันควรพิจารณาใช้