Tessellation vs Geometry Shader


11

แก้ไขให้ถูกต้องหากฉันผิด แต่ทั้ง Geometry Shader และงาน Tessellation Shader นั้นเป็นการสร้างจุดยอดในกราฟิคท่อ สิ่งที่ฉันอยากรู้คือพวกเขาแตกต่างกันอย่างไรและเมื่อใดที่ฉันควรใช้อันอื่น


6
ฉันรู้สึกขี้เกียจเกินไปที่จะเขียนคำตอบแบบเต็ม แต่ส่วนสำคัญของมันคือ Geometry Shader มีระดับการขยายที่เล็กมากคงที่ซึ่งขั้นตอน Tessellation นั้นสำหรับการขยายรูปหลายเหลี่ยมแบบไดนามิกขนาดใหญ่
MickLH

คำตอบ:


14

ที่จริงแล้วไม่มีงาน 'งาน' ของรูปทรงเรขาคณิต (GS) เป็นการประเมินเบื้องต้น

เรขาคณิต shaders สามารถ tesselate แต่พวกเขาถูก จำกัด โดย a) ขอบเขตบนในกระบวนการในจำนวนองค์ประกอบเอาท์พุทและ b) การดำเนินการภายใน shader เดียว ... แน่นอน shader แน่นอน aleviates ปัญหาที่ 2 แต่เรขาคณิต shaders โดยรวม มีประสิทธิภาพมากขึ้นในการประเมินแบบดั้งเดิมและ / หรือการแก้ไขค่ามากกว่าที่พวกเขากำลัง tessellation

จากการเปรียบเทียบเทสเทอรีนเดอร์เชดเดอร์ (TS) ถูกนำมาใช้เป็นพิเศษเพื่อทำการเพิ่มความหนาแน่นของรูปทรงเรขาคณิตเพื่อให้ทำงานได้ดีมีความทนทานต่ออัลกอริธึมที่กว้างขึ้น

Daniel Rákosมีบทความที่ดีเกี่ยวกับวิวัฒนาการของ GS / TS: ประวัติความเป็นมาของ tessellation ฮาร์ดแวร์

เมื่อใดที่จะใช้แต่ละกรณีเป็น 'ใช้เครื่องมือที่เหมาะสมสำหรับงาน' และนี่คือวิธี: สร้างไปป์ไลน์แบบคร่าวๆโดยไม่มี tesselator เพื่อรับการประเมินเบื้องต้นอย่างถูกต้องใน VS / GS / FS แยกขอบเขตการสอนตามมุมมองหรือฉากจากนั้นใส่ TS ข้างหน้าของ GS เพื่อเพิ่มความซับซ้อนดั้งเดิมซึ่งจะถูกส่งผ่านไปยัง GS ที่คุณออกแบบไว้แล้ว หากคุณต้องการลอง TS ที่แตกต่างจากนั้นสร้างทางเลือกใหม่ขึ้นและสลับเข้าไปในไปป์ไลน์ ... คุณสามารถใช้ GS ที่มีความซับซ้อนเพื่อเลือก TS ที่ถูกต้องแบบไดนามิกโดยอิงตามคุณสมบัติดั้งเดิมของ!

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