หลังจากการทดสอบภายในอย่างกว้างขวางและการนำมาใช้ภายในอย่างรวดเร็วอย่างน่าประหลาดใจตอนนี้ AMD กำลังเสนอ Radeon Cauldron 1.0 Software Development Kit (SDK) ให้กับชุมชนการเขียนโปรแกรม บริษัท มั่นใจว่ากรอบงานไม่เพียง แต่ทำให้ง่ายขึ้น แต่ยังมีความหลากหลายอย่างน่าทึ่ง กล่าวอีกนัยหนึ่ง Radeon Cauldron SDK สามารถเข้าใจได้ง่ายสำหรับผู้เริ่มต้น ยิ่งไปกว่านั้นเฟรมเวิร์กยังมีความยืดหยุ่นอย่างกว้างขวางสำหรับโปรแกรมเมอร์ที่ต้องการเพิ่มคุณสมบัติใหม่ ๆ
AMD ขอนำเสนอหนึ่งในผลิตภัณฑ์ยอดนิยม กรอบการพัฒนาซอฟต์แวร์ เพื่อมวลชน Radeon Cauldron SDK รุ่นแรกที่ครอบคลุมและเสถียรพร้อมให้โปรแกรมเมอร์แล้ว Radeon Cauldron เป็นไลบรารีเฟรมเวิร์กสำหรับการสร้างต้นแบบอย่างรวดเร็ว ใช้ในตัวอย่าง AMD SDK และเอฟเฟกต์ SDK ทำงานร่วมกับ Vulkan หรือ Direct3D 12 API ได้อย่างราบรื่น AMD ได้ทำกรอบทั้งหมด มีให้ดาวน์โหลดบน GitHub ซึ่งเป็นพื้นที่เก็บข้อมูลยอดนิยมสำหรับซอฟต์แวร์โอเพนซอร์สที่เพิ่งซื้อมาโดย Microsoft ที่น่าสนใจก็คือ AMD ยังมี อัปโหลด GltfSample . แอปที่มีชื่อแปลก ๆ ได้รับการออกแบบพัฒนาและสร้างขึ้นโดยใช้กรอบ Cauldron อนึ่งทรัพยากรที่เกี่ยวข้องทั้งหมดของ Radeon Cauldron SDK ก็มีอยู่ใน GitHub เช่นกัน
Radeon Cauldron SDK คืออะไรและจะส่งผลต่อการพัฒนาซอฟต์แวร์แอพหรือเกมอย่างไร
Radeon Cauldron เป็นเฟรมเวิร์กทั้งหมดหรือชุดพัฒนาซอฟต์แวร์ที่สมบูรณ์สำหรับการสร้างต้นแบบอย่างรวดเร็ว โดยจะใช้เป็นหลักในตัวอย่าง AMD SDK และเอฟเฟกต์ ดังที่ได้กล่าวไว้ข้างต้นสามารถทำงานได้อย่างเหมาะสมกับ Vulkan ซึ่งเป็นกราฟิก 3 มิติข้ามแพลตฟอร์มและ API การประมวลผลแบบโอเวอร์เฮดต่ำที่ต้องการ ยิ่งไปกว่านั้น SDK ยังทำงานร่วมกับเวอร์ชันล่าสุดของ Direct3D ซึ่งก็คือ Direct3D 12
Radeon Cauldron SDK เปิดตัวครั้งแรกภายในที่ AMD แม้ว่าจะคาดไว้ แต่รุ่นแรกได้รับการยอมรับและนำมาใช้โดยทีมพัฒนาซอฟต์แวร์ภายในของ AMD หลังจากโครงการนำร่องแรก AMD ยืนยันแม้แต่กลุ่มสัมผัสอื่น ๆ ภายใน บริษัท ก็เริ่มแสดงความสนใจ ในที่สุด SDK ก็กลายเป็นหนึ่งในเฟรมเวิร์กที่ต้องการสำหรับทีมที่จัดการกับเครื่องมือไดรเวอร์และแม้แต่ซอฟต์แวร์และการสาธิตคุณลักษณะ
AMD ให้บริการ Radeon Cauldron 1.0 บน GPUOpen ภายใต้ใบอนุญาตโอเพ่นซอร์สของ MIT บริษัท ได้เน้นย้ำหลายครั้งถึงความง่ายในการทำความเข้าใจรหัสและความสะดวกในการขยายสิ่งเดียวกัน กล่าวอีกนัยหนึ่งแม้ว่าโปรแกรมเมอร์ที่มีประสบการณ์จะไม่สามารถใช้งานได้ แต่ผู้ใช้ใหม่สามารถถอดรหัสส่วนประกอบต่างๆและฟังก์ชันแต่ละอย่างได้อย่างรวดเร็วรวมถึงการอ้างอิง สิ่งนี้จะช่วยลดความซับซ้อนของขั้นตอนการพัฒนาที่ซับซ้อนได้อย่างมากและทำให้แน่ใจว่าผู้ใช้ทุกคนมั่นใจและสบายใจในขณะที่ใช้แบบเดียวกัน ยิ่งไปกว่านั้นโปรแกรมเมอร์สามารถขยายโค้ดได้อย่างรวดเร็วและมีประสิทธิภาพโดยไม่ต้องกังวลว่าจะขัดขวางการทำงานที่ผ่านมาหรือทำลายบางสิ่งในกระบวนการ
เฟรมเวิร์กมีความยืดหยุ่นและหลากหลายอย่างน่าประหลาดใจทำให้ AMD มั่นใจได้ การอ้างสิทธิ์ปรากฏเป็นจริงเนื่องจาก SDK ใช้วานิลลา C ++ AMD ได้พัฒนาสิ่งเดียวกันนี้โดยมีจุดมุ่งหมายที่ชัดเจนในการปฏิบัติตามปรัชญา 'หนึ่งคุณลักษณะหนึ่งคลาสหนึ่งไฟล์' ไม่จำเป็นต้องพูดถึงสิ่งนี้หมายความว่าโปรแกรมเมอร์ไม่จำเป็นต้องนำทางไฟล์ที่ซับซ้อนและหลายไฟล์ในขณะที่พยายามทำความเข้าใจว่าแอปพลิเคชันหรือแพลตฟอร์มเว็บทำงานอย่างไร AMD มั่นใจว่า Radeon Cauldron SDK จะยึดติดกับรูปแบบคลาสที่ง่ายที่สุด กล่าวอีกนัยหนึ่งถ้าเป็นไปได้ชั้นเรียนส่วนใหญ่จะใช้วิธีการต่อไปนี้:
คลาส MyTechnique
{
บูล OnCreate (…); // สร้างไปป์ไลน์เรขาคณิตคงที่และการเริ่มต้นครั้งเดียวอื่น ๆ
เป็นโมฆะ OnDestroy (…);
เป็นโมฆะ OnDraw (…) // ใช้ทรัพยากรที่สร้างขึ้นเพื่อวาดเทคนิค
}
Radeon Cauldron SDK ช่วยให้สามารถใช้เทคนิคสองอย่างที่จำเป็นในการเรนเดอร์โมเดล glTF 2.0 แม้ว่าจะจำเป็นสำหรับพาส PBR (Physically Based Rendering) แต่อีกอันมีไว้สำหรับการส่งผ่านความลึกเท่านั้น ในฐานะส่วนขยายมีสองคลาสที่เรียกว่า GltfPbrPass และ GltfDepthPass ข้อมูลของโมเดล glTF แบ่งออกเป็นสามไฟล์:
- GltfCommon คลาสที่ไม่เชื่อเรื่องพระเจ้าของ API ที่โหลดและดูแลการเปลี่ยนแปลงและภาพเคลื่อนไหวของฉากรวมถึงคลาส skinnin MyTechnique {bool OnCreate (…); // สร้างไปป์ไลน์เรขาคณิตคงที่และการเริ่มต้นครั้งเดียวอื่น ๆ ถือเป็นโมฆะ OnDestroy (…); เป็นโมฆะ OnDraw (…) // ใช้ทรัพยากรที่สร้างขึ้นเพื่อวาดเทคนิค} g.
- GltfTexturesAndBuffers ซึ่งเป็นคลาสที่โหลดและเก็บพื้นผิวทั้งหมดเมทริกซ์สกินและบัฟเฟอร์เรขาคณิต
- GltfPbrPass และ GltfDepthPass สองคลาสที่ใช้คลาสด้านบนเพื่อแสดงฉากด้วยเทคนิคที่กล่าวถึง
เฟรมเวิร์ก Radeon Cauldron มีทั้งโค้ดที่ไม่เกี่ยวกับกราฟิกและโค้ดที่ขึ้นกับกราฟิก ดังนั้นกรอบงานสามารถแบ่งออกเป็นสามโครงการ Visual Studio:
- Framework_DX12: ดังที่เห็นได้ชัดจากชื่อส่วนนี้เกี่ยวข้องกับ DirectX12 กล่าวอีกนัยหนึ่งคือประกอบด้วยรหัส Direct3D 12 ทั้งหมด
- Framework_VK: ส่วนนี้ประกอบด้วยรหัส Vulkan ที่เกี่ยวข้องทั้งหมด
อนึ่งมีองค์ประกอบที่สามเช่นกันซึ่งเป็นเรื่องปกติสำหรับโครงการ Visual Studio ทั้งสองประเภทที่กล่าวถึงข้างต้น ส่วนนี้เรียกว่า 'Framework_Common' ส่วนประกอบทั่วไปประกอบด้วยประเด็นต่อไปนี้:
โครงสร้าง GLTF
- รหัสการแปลงและภาพเคลื่อนไหว
- กำลังโหลดภาพ
- การจัดการหน้าต่าง
- กล้อง
เฟรมเวิร์ก Radeon Cauldron รองรับเทคนิคหลังการประมวลผลเช่นการบาน, เบลอ, การสุ่มตัวอย่างและโทนสี SDK แนะนำสมาชิกย่อยใหม่สองคน สิ่งเหล่านี้มีประโยชน์ในการสร้างเป้าหมายการแสดงผลชั่วคราว:
บูล OnCreateWindowSizeDependentResources (…) // สร้างเป้าหมายการแสดงผลชั่วคราวที่จำเป็นสำหรับเอฟเฟกต์
เป็นโมฆะ OnDestroyWindowSizeDependentResources (…)
ที่น่าสนใจคือ AMD Radeon Cauldron 1.0 SDK ที่ผ่านการทดสอบภายในช่วยให้โปรแกรมเมอร์สามารถใช้งานสิ่งต่างๆในระดับที่ต่ำกว่าได้เช่นกัน น่าแปลกที่แม้ในระดับเหล่านี้พวกเขาสามารถใช้ตัวจัดการหน่วยความจำหลายตัวเพื่อให้แน่ใจว่าสิ่งต่างๆทำงานได้อย่างราบรื่น ตัวจัดการหน่วยความจำบางตัวที่ยังทำงานได้แม้ในระดับที่ต่ำกว่ามีดังนี้:
- StaticBufferPool: ส่วนประกอบนี้เก็บข้อมูลคงที่ นอกจากนี้ยังมีคุณสมบัติการจัดสรรย่อยอีกด้วย
- DynamicBufferRing: นี่คือระบบบัฟเฟอร์แบบวงกลม โปรแกรมเมอร์สามารถพึ่งพาสิ่งนี้สำหรับบัฟเฟอร์คงที่
- พื้นผิว: อนุญาตให้โหลดพื้นผิวและสร้างเป้าหมายการแสดงผล ที่น่าสนใจคือระบบ Texture ยังช่วยให้สามารถสร้างมุมมองสำหรับเป้าหมายการแสดงผล
- ShaderCompilerHelper: นี่คือเครื่องมืออันทรงพลังที่ช่วยในการรวบรวมซอร์สโค้ด ShaderCompilerHelper ยังแคชไบนารี ไม่จำเป็นต้องพูดถึงสิ่งนี้ทำให้เวลาในการโหลดลดลงอย่างมาก
- UploadHeap: เครื่องมือนี้ช่วยให้โปรแกรมเมอร์สามารถจัดสรรย่อยจากพูลหน่วยความจำระบบเพื่ออัปโหลดข้อมูลซึ่งโดยพื้นฐานแล้วรวมถึงพื้นผิวและบัฟเฟอร์ไปยังบัฟเฟอร์หน่วยความจำวิดีโอ
เนื่องจากเป็น SDK แบบโอเพนซอร์ส AMD จึงขอเรียกร้องให้ผู้ใช้งานภายนอกทดลองใช้สิ่งเดียวกันและเสนอความคิดเห็น ค่อนข้างเป็นไปได้ที่ AMD จะวิเคราะห์สิ่งเดียวกันและนำคำแนะนำบางอย่างไปใช้เพื่อปรับปรุง Radeon Cauldron SDK
แท็ก เอเอ็มดี AMD Navi radeon