กราฟิค API ทั้งสอง (OpenGL และ DirectX) ออกแบบขั้นตอนที่กำหนดไว้อย่างดีซึ่งหลายขั้นตอนสามารถตั้งโปรแกรมได้ ขั้นตอนที่โปรแกรมได้เหล่านี้จำเป็นต้องใช้ข้อมูลขั้นต่ำคงที่และควรทำช่วงของการดำเนินการที่กำหนดไว้อย่างดีและส่งออกเอาต์พุตขั้นต่ำที่กำหนดไว้บางส่วนเพื่อให้สามารถส่งข้อมูลไปยังขั้นตอนถัดไปได้อย่างถูกต้อง ดูเหมือนว่าท่อเหล่านี้ได้รับการออกแบบให้ทำงานกับข้อมูลทางเรขาคณิตในจำนวน จำกัด เท่านั้นซึ่งในกรณีของทั้ง D3D และ OGL นั้นเป็นข้อมูลจุดยอดและพิกัดของพื้นผิว
แต่ถ้ามีกรณีเมื่อแอพพลิเคชั่นที่ฉันวางแผนจะไม่ใช้จุดยอด (หรือ voxels) เพื่อแสดงข้อมูลทางเรขาคณิตและไม่ทำการแปลงหรือการฉายภาพหรือการแรสเตอร์หรือการแก้ไขหรืออะไรทำนองนั้นข้อ จำกัด ของ APIs หรือท่อทำให้สิ่งที่ยาก
ดังนั้นมีวิธีที่เราสามารถเปลี่ยนไปป์ไลน์กราฟิคในลักษณะที่ทำให้การทำงานของแต่ละขั้นตอนเป็นข้อมูลและประเภทของข้อมูลที่แสดงผลในแต่ละขั้นตอนเปลี่ยนไปเป็นข้อได้เปรียบของฉันหรือไม่ ถ้าไม่เช่นนั้นมีวิธีที่ฉันสามารถใช้ฟังก์ชั่น 'raw' API เพื่อสร้างขั้นตอนการทำงานของตัวเองหรือไม่? ถ้าไม่เช่นนั้นโปรดบอกว่าทำไมมันเป็นไปไม่ได้
แก้ไข : แอปพลิเคชันของฉันใช้ฟังก์ชั่นความหนาแน่นเพื่อเป็นตัวแทนของรูปทรงเรขาคณิต ฟังก์ชันมีค่าที่แต่ละจุดในอวกาศ ฉันแบ่งส่วน frustum ของกล้องออกเป็นกริด 3 มิติแต่ละบล็อกสามารถฉายเป็นพิกเซลได้ ในแต่ละบล็อกฉันรวมฟังก์ชั่นความหนาแน่นและตรวจสอบว่ามีค่ามากกว่าค่าที่ต้องการหรือไม่ ถ้าใช่จะมีการสันนิษฐานว่ามีบางสิ่งในบล็อกนั้นและพิกเซลที่สอดคล้องกับบล็อกนั้นมีการแสดงผล ดังนั้นตอนนี้ในโหมดแสดงภาพของฉันฉันต้องการส่งผ่านฟังก์ชั่น (ซึ่งฉันแทนด้วยสตริง) ไปยังฮาร์ดแวร์กราฟิกแทนข้อมูลจุดยอดในบัฟเฟอร์จุดสุดยอด นี่ก็หมายความว่าจุดสุดยอด shader จะไม่มีจุดยอดในการแปลงเป็น homogeniouse พื้นที่คลิปและชิ้นส่วน shader ไม่ได้รับข้อมูลพิกเซล แต่ในขณะนี้การค้นหาและการประเมินผลส่วนใหญ่เกิดขึ้นต่อพิกเซลแทน