
Vcc: คอมไพเลอร์ Vulkan Clang
ในแนวนอนของกราฟิก API ภาษาแรเงาเผชิญกับข้อจำกัดเนื่องจากแม้จะมีความเป็นไปได้ในการเขียนโค้ดในชุดย่อยทั่วไประหว่าง GLSL, HLSL และ C++ แต่ก็มีข้อจำกัดในปัจจุบัน
ด้วยเหตุนี้ Vcc จึงถือกำเนิดขึ้น (Vulkan Clang Compiler) คอมไพเลอร์ Vulkan Clang ซึ่งเป็นโครงการที่ได้รับการพัฒนามาเป็นเวลา 3 ปี เกิดขึ้นเพื่อตอบสนองต่อข้อจำกัดและความท้าทายเหล่านี้. โครงการนี้ไม่เพียงพยายามเอาชนะข้อจำกัดด้านการแสดงออกเท่านั้น แต่ยังเพื่อขจัดแนวคิดเรื่องภาษาแรเงาอีกด้วย
โดยผสมผสาน ตระกูลภาษาที่สมบูรณ์ C / C ++ ถึงวัลแคน Vcc แนะนำคุณสมบัติที่ไม่เคยพบเห็นมาก่อนใน Vulkan shaders เช่น ตัวชี้ทางกายภาพ ตัวชี้ทั่วไป การเรียกใช้ฟังก์ชันจริง และโฟลว์การควบคุมที่สมบูรณ์
ความคิดริเริ่มนี้ พยายามเชื่อมช่องว่างซอฟต์แวร์ระหว่างกราฟิกและ API การประมวลผล ด้วยการทำให้ Vulkan เข้ากันได้กับ API การประมวลผล GPU อื่นๆ Vcc จึงถูกนำเสนอเป็นขั้นตอนสำคัญในการรวมการเขียนโปรแกรมในกราฟิกและการประมวลผล ซึ่งสอดคล้องกับการนำไปใช้ในวงกว้างและคุณภาพการใช้งานที่ Vulkan เป็นที่รู้จัก
เกี่ยวกับวีซีซี
Vcc เป็นคอมไพเลอร์แบบ Clang ที่ออกแบบมาเพื่อสร้างโค้ดปฏิบัติการใน Vulkan โดยมีวัตถุประสงค์คือ วางตำแหน่งตัวเองเป็นคอมไพเลอร์ที่สามารถแปลโค้ด C++ ได้ ในการเป็นตัวแทนที่สามารถทำงานบน GPU ที่รองรับ Vulkan Graphics API ต่างจากโมเดลการเขียนโปรแกรม GPU ที่ใช้ภาษาเชเดอร์ GLSL และ HLSL Vcc ใช้แนวคิดในการกำจัดการใช้ภาษาเชเดอร์ที่แยกจากกันโดยสิ้นเชิง และมอบความสามารถในการคอมไพล์โค้ด C/C++ สำหรับ Vulkan ได้โดยตรง
แม้ว่า ถือได้ว่าเป็นคู่แข่งของ GLSL และ HLSL ความตั้งใจที่แท้จริงเบื้องหลังโครงการนี้ดำเนินต่อไปตั้งแต่นั้นเป็นต้นมา Vcc พยายามที่จะรวมตระกูลภาษา C/C++ เข้ากับ Vulkan ขอแนะนำคุณสมบัติมากมายใน Vulkan shaders
Vcc เป็นเพียงอินเทอร์เฟซของ Shady, IR และคอมไพเลอร์ที่ออกแบบมาเพื่อขยาย SPIR-V ด้วยการรองรับโครงสร้างที่กล่าวมาข้างต้น Shady ถูกนำเสนอเป็น IR ที่ค่อนข้างธรรมดาและรวมถึงการรองรับการแยกวิเคราะห์ LLVM IR จัดการการลดขนาดและการจำลองคุณสมบัติเพิ่มเติมทั้งหมดที่ไม่พบใน SPIR-V 3 เวอร์ชันปัจจุบัน
แน่นอนว่ามีคุณสมบัติพิเศษมากมายที่พบในเชเดอร์เท่านั้น สิ่งเหล่านี้ถูกเปิดเผยใน Vcc โดยใช้อินทรินซิกและคำอธิบายประกอบ ทำให้คุณสามารถเขียนโค้ดที่โต้ตอบกับฟีเจอร์ต่างๆ ของ Vulkan Channel
กระบวนการคอมไพล์ใน Vcc เกี่ยวข้องกับการใช้ส่วนประกอบของโครงการ LLVM และ Clang เป็นอินเทอร์เฟซ สำหรับการดำเนินการบน GPU, Vcc พัฒนาตัวแทนเชเดอร์ระดับกลางของตัวเอง "Shady" พร้อมด้วยคอมไพเลอร์เฉพาะเพื่อแปลงโค้ดเป็นตัวแทนนี้ วิธีการนี้ช่วยให้สามารถคอมไพล์โค้ด C/C++ มาตรฐานได้ และเสริมด้วยฟังก์ชันเฉพาะในตัวเพื่อใช้ประโยชน์จากความสามารถของ GPU
vcc โดดเด่นด้วยการรองรับฟังก์ชัน Native C/C++ เพื่อควบคุมโฟลว์ของโปรแกรม แม้กระทั่งอนุญาตให้ใช้คำสั่ง "goto" นอกจากนี้ ยังให้ความสามารถในการเรียกใช้ฟังก์ชัน เรียกใช้ฟังก์ชันแบบวนซ้ำ และใช้พอยน์เตอร์ประเภทต่างๆ เช่น พอยน์เตอร์ทางกายภาพ พอยน์เตอร์ที่แท็ก และพอยน์เตอร์ของฟังก์ชัน นอกจากนี้ ยังช่วยให้ดำเนินการทางคณิตศาสตร์บนพอยน์เตอร์และกำหนดโครงร่างประเภทในหน่วยความจำได้ง่ายขึ้น
การแสดงระดับกลางของ Shady shader อิงจาก SPIR-V 3 และขยายเพื่อรองรับโครงสร้างพิเศษที่มีอยู่ในคุณลักษณะ C/C++ การจำลองใช้เพื่อใช้ความสามารถขั้นสูงที่ไม่สามารถใช้ได้กับ SPIR-V โดยตรง Vcc มีฟังก์ชันและคำอธิบายประกอบในตัวเพื่อช่วยให้โปรแกรมใช้ความสามารถเฉพาะของเชเดอร์ได้อย่างมีประสิทธิภาพ จึงมอบสภาพแวดล้อมที่หลากหลายและมีประสิทธิภาพสำหรับการพัฒนาแอปพลิเคชัน GPU
ท้ายที่สุด เป็นเรื่องที่ควรค่าแก่การกล่าวขวัญว่าไม่ใช่ทุกสิ่งที่เป็นสีดอกกุหลาบและจำเป็นต้องคำนึงถึงข้อจำกัดบางประการของการนำไปปฏิบัติด้วย ตัวอย่างเช่น Vcc ไม่รองรับข้อยกเว้น C++ และไม่มีฟังก์ชันการทำงาน malloc/free นอกจากนี้ยังมีข้อจำกัดในการพกพาฟังก์ชันและพอยน์เตอร์ระหว่างระบบโฮสต์และ GPU ข้อควรพิจารณาเหล่านี้มีความสำคัญเมื่อวางแผนการพัฒนาแอปพลิเคชันที่ใช้ Vcc เพื่อให้มั่นใจว่าการปรับใช้มีประสิทธิภาพและไร้ปัญหา
ถ้าคุณเป็น สนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ คุณสามารถปรึกษา สถาน และสำหรับผู้ที่สนใจโค้ดควรรู้ว่ามีให้ใช้งานแล้ว Aqui