หากฉากนั้นไม่พอดีกับหน่วยความจำคุณกำลังเข้าสู่ฟิลด์ของการเรนเดอร์นอกคอร์ โดยทั่วไปมีสองวิธีดังนี้ a) สร้างฉากตามต้องการ b) โหลดฉากตามต้องการ
วิธีการในอดีตนั้นสอดคล้องกับเวิร์กโฟลว์ภาพเคลื่อนไหวส่วนใหญ่ซึ่งโมเดลต่างๆถูกแบ่งย่อยอย่างหนักโดยใช้เช่น Catmull-Clark และสามารถกลายเป็นหน่วยความจำที่ต้องใช้หน่วยความจำมาก พิกซาร์มีเอกสารสองสามข้อเกี่ยวกับเรื่องนี้ (เช่นเรย์ดิฟเฟอเรนเชียลและมัลติแคสชั่นเรขาคณิตแคสำหรับการจัดจำหน่ายการติดตามเรย์ในฉากที่ซับซ้อน ) แต่ส่วนสำคัญของมันคือโมเดลนั้นแบ่งย่อยเฉพาะเมื่อ สมเหตุสมผลสำหรับเรย์ดังกล่าว (เช่นการกระจายการกระจายแบบกระจายต้องการความแม่นยำน้อยกว่าการสะท้อนแบบกระจก) ส่วนที่เหลือได้รับการจัดการโดยแคชรูปทรงเรขาคณิตซึ่งช่วยให้แบบจำลองย่อยในหน่วยความจำและหวังว่าจะทำให้กระบวนการมีประสิทธิภาพโดยกลยุทธ์การขับไล่ที่ดี
ตราบใดที่ฐานตาข่ายทั้งหมดของคุณใส่ลงในหน่วยความจำได้อย่างสะดวกสบายคุณก็สามารถออกไปนอกคอร์ได้อย่างง่ายดายและสามารถทำการเรนเดอร์ที่ระดับการแบ่งย่อยที่จะไม่พอดีกับหน่วยความจำ แคชรูปทรงเรขาคณิตยังปรับขนาดได้ตามปริมาณหน่วยความจำที่คุณมีทำให้คุณสามารถชั่ง RAM กับเวลาในการเรนเดอร์ได้ มันใช้กับรถยนต์ที่ฉันเชื่อด้วย
วิธีที่สองนั้นกว้างกว่าและไม่พึ่งพาการแบ่งย่อยอย่างหนัก แต่ขึ้นอยู่กับความจริงที่ว่าฉากของคุณมักถูกสร้างขึ้นโดยศิลปินและมีการแบ่งพาร์ติชั่นเป็นวัตถุขนาดเล็กที่มีความเหมาะสมและมีหน่วยความจำแยกกันอยู่แล้ว แนวคิดก็คือเก็บสองลำดับชั้น (kD-tree หรือลำดับชั้นของไดรฟ์ข้อมูลที่มีขอบเขต): ลำดับชั้นระดับบนสุดที่เก็บเฉพาะกล่องขอบเขตของวัตถุในฉากของคุณและลำดับชั้นในระดับต่ำที่เก็บรูปทรงเรขาคณิตจริง มีลำดับชั้นต่ำเช่นหนึ่งสำหรับแต่ละวัตถุ
ในวิธีการนี้คุณควรจัดเก็บกล่องขอบเขตพร้อมกับแต่ละวัตถุบนดิสก์ เมื่อโหลดฉากแล้วคุณจะสร้างลำดับชั้นระดับบนสุดได้ในตอนแรกซึ่งหมายความว่าคุณจะต้องดูที่กล่องขอบเขตเท่านั้นไม่ใช่รูปทรงเรขาคณิต จากนั้นคุณจะเริ่มติดตามการฉายรังสีและเข้าไปตามลำดับชั้น เมื่อใดก็ตามที่รังสีกระทบกับโหนดใบในลำดับชั้นระดับบนสุด (กล่าวคือมันกระทบกับกล่องขอบของวัตถุ) วัตถุนั้นจะถูกโหลดเข้าสู่หน่วยความจำและสร้างลำดับชั้นในระดับต่ำ จากนั้นรังสีก็จะทำการติดตามวัตถุนั้นต่อไป เมื่อรวมกับแคชวัตถุที่เก็บลำดับชั้นต่ำที่สุดเท่าที่จะทำได้ในหน่วยความจำมากที่สุดสิ่งนี้สามารถทำงานได้ดีพอสมควร
ประโยชน์แรกของวิธีการดังกล่าวคือวัตถุที่ไม่เคยถูกโจมตีจะไม่ถูกโหลดซึ่งหมายความว่ามันจะปรับการมองเห็นในฉากของคุณโดยอัตโนมัติ ประโยชน์ที่สองคือถ้าคุณติดตามแสงจำนวนมากคุณไม่จำเป็นต้องโหลดวัตถุทันทีเมื่อถูกรังสี แต่คุณสามารถเก็บรังสีนั้นไว้และรอจนกระทั่งรังสีเข้ามาที่วัตถุนั้นมากพอและลดภาระการรับรังสีหลายครั้ง
นอกจากนี้คุณยังสามารถรวมวิธีการนี้เข้ากับอัลกอรึทึมการจัดเรียงเรย์เช่นแรเงาเรียงลำดับที่รอการตัดบัญชีสำหรับการติดตามเส้นทางการผลิตเพื่อหลีกเลี่ยงการเฆี่ยนตีเนื่องจากรังสีที่ไม่ต่อเนื่องกัน บทความที่กล่าวถึงอธิบายถึงสถาปัตยกรรมของ Hyperion renderer ของ Disney ที่ใช้สำหรับ Big Hero 6 ฉันเชื่อว่าดังนั้นจึงมีโอกาสมากที่สุดที่จะจัดการฉากในระดับการผลิต