أوبتكس
إن Nvidia OptiX ( محرك تسريع تطبيقات OptiX ) هو واجهة برمجة تطبيقات لتتبع الأشعة ، طُوِّرت لأول مرة حوالي عام 2009. [ 1 ] تُنقل العمليات الحسابية إلى وحدات معالجة الرسومات (GPUs) عبر واجهة برمجة التطبيقات منخفضة المستوى أو عالية المستوى التي طُرحت مع CUDA . CUDA مُتاحة فقط لمنتجات الرسومات من Nvidia. يُعد Nvidia OptiX جزءًا من Nvidia GameWorks . OptiX هي واجهة برمجة تطبيقات عالية المستوى، أو "مُخصصة للخوارزمية"، ما يعني أنها مُصممة لتغليف الخوارزمية الكاملة التي يُعد تتبع الأشعة جزءًا منها، وليس تتبع الأشعة فقط. يهدف هذا إلى تمكين محرك OptiX من تنفيذ الخوارزمية الأكبر بمرونة عالية دون الحاجة إلى تغييرات من جانب التطبيق.
تستخدم ألعاب الفيديو عادةً تقنية التنميط النقطي بدلاً من تتبع الأشعة في عرضها.
بحسب شركة إنفيديا ، صُمم برنامج OptiX ليكون مرنًا بما يكفي لـ "التعريفات الإجرائية وأساليب العرض الهجينة". إلى جانب عرض رسومات الحاسوب ، يُساعد OptiX أيضًا في التصميم البصري والصوتي ، وأبحاث الإشعاع والكهرومغناطيسية ، [ 2 ] واستعلامات الذكاء الاصطناعي وتحليل التصادم . [ 3 ]
تتبع الأشعة باستخدام OptiX

يعمل OptiX باستخدام تعليمات يقدمها المستخدم (في شكل نواة CUDA ) بشأن ما يجب أن يفعله الشعاع في ظروف معينة لمحاكاة عملية تتبع كاملة. [ 4 ]
قد يتصرف شعاع ضوئي (أو ربما نوع آخر من الأشعة) بشكل مختلف عند اصطدامه بسطح معين مقارنةً بسطح آخر، ويتيح OptiX تخصيص شروط الاصطدام هذه باستخدام برامج يُقدمها المستخدم. تُكتب هذه البرامج بلغة CUDA C أو مباشرةً بلغة PTX ، ويتم ربطها معًا عند استخدامها بواسطة محرك OptiX.
لاستخدام OptiX، يجب أن يكون هناك وحدة معالجة رسومات تدعم CUDA متاحة على النظام ويجب تثبيت مجموعة أدوات CUDA.
يتضمن استخدام محرك OptiX في تطبيق تتبع الأشعة عادةً الخطوات التالية:
- تعريف البرامج لتوليد الأشعة (على سبيل المثال، يمكن إطلاق الأشعة بشكل متوازٍ، أو بطريقة منظور ، أو مثل حقل التدرج )، وفقدان الشعاع (عندما لا يتقاطع الشعاع مع أي كائن)، وبرنامج استثناء اختياري (عندما يتعذر إطلاق الشعاع لسبب ما)، وبرنامج المربع المحيط (البرنامج الذي يوفر اختبار تقاطع المربع المحيط لكائن معين) وبرنامج التقاطع.
تتوفر العديد من الأمثلة لهذه البرامج مع حزمة تطوير البرامج (SDK) الخاصة بالبرنامج.
// نموذج كود يستخدم واجهات برمجة تطبيقات OptiX ///* برنامج توليد الأشعة */ rtProgramCreateFromPTXFile ( * context , path_to_ptx , "pinhole_camera" , & ray_gen_program ); rtContextSetRayGenerationProgram ( * context , 0 , ray_gen_program );/* برنامج مفقود */ rtProgramCreateFromPTXFile ( * context , path_to_ptx , "miss" , & miss_program ); rtContextSetMissProgram ( * context , 0 , miss_program );/* برنامج المربع المحيط وبرنامج التقاطع */ rtProgramCreateFromPTXFile ( context , path_to_ptx , "box_bounds" , & box_bounding_box_program ); rtGeometrySetBoundingBoxProgram ( * box , box_bounding_box_program ); rtProgramCreateFromPTXFile ( context , path_to_ptx , "box_intersect" , & box_intersection_program ); rtGeometrySetIntersectionProgram ( * box , box_intersection_program );تُستخدم برامج تحديد المربعات المحيطة لتعريف أحجام محيطة تُستخدم لتسريع عملية تتبع الأشعة ضمن هياكل التسريع مثل أشجار kd أو التسلسلات الهرمية للأحجام المحيطة.
- إنشاء برامج "أي ضربة" و"أقرب ضربة": يحدد هذان البرنامجان سلوك الشعاع عند مواجهة أول تقاطع له (أقرب ضربة) أو تقاطع عام (أي ضربة).
// نموذج كود يستخدم واجهات برمجة تطبيقات OptiX //rtProgramCreateFromPTXFile ( context , path_to_ptx , "closest_hit_radiance" , & closest_hit_program ); rtProgramCreateFromPTXFile ( context , path_to_ptx , "any_hit_shadow" , & any_hit_program );/* ربط برنامج أقرب ضربة وبرنامج أي ضربة بمادة */ rtMaterialCreate ( context , material ); rtMaterialSetClosestHitProgram ( * material , 0 , closest_hit_program ); rtMaterialSetAnyHitProgram ( * material , 1 , any_hit_program );- عرّف المخازن المؤقتة ، وهي متغيرات قد تُستخدم داخل البرامج المُقدّمة. المخازن المؤقتة هي مساحات ذاكرة تسمح لرمز المضيف (أي رمز وحدة المعالجة المركزية العادي ) بالتواصل مع رمز الجهاز (أي الرمز الذي يُنفّذ على وحدة معالجة الرسومات) والعكس صحيح. المتغيرات هي الطريقة الداخلية لـ OptiX للتواصل واستخدام المخازن المؤقتة لنقل البيانات ذهابًا وإيابًا.
- حدد التسلسل الهرمي لـ OptiX للكائنات الهندسية والمجموعات والمحددات والعقد الأخرى لإنشاء رسم بياني شجري للمشهد بأكمله المراد عرضه.

لعرض مشهد معقد أو تتبع مسارات مختلفة لأي شعاع، يستفيد OptiX من الحوسبة العامة على وحدة معالجة الرسومات (GPGPU) عبر منصة Nvidia CUDA. ونظرًا لإمكانية تخصيص عملية إطلاق الأشعة وتحديد سلوكها بشكل كبير، يمكن استخدام OptiX في تطبيقات أخرى متنوعة إلى جانب تتبع الأشعة.
أوبتيكس برايم
ابتداءً من الإصدار 3.5.0 من OptiX، أُضيفت مكتبة ثانية تُسمى OptiX Prime إلى الحزمة، وتهدف إلى توفير واجهة برمجة تطبيقات (API) سريعة ومنخفضة المستوى لتتبع الأشعة - بناء بنية التسريع ، واجتياز بنية التسريع، وتقاطع الأشعة مع المثلثات . كما تتميز Prime بخاصية الرجوع إلى وحدة المعالجة المركزية (CPU) في حال عدم وجود وحدة معالجة رسومية (GPU) متوافقة في النظام. على عكس OptiX، فإن Prime ليست واجهة برمجة تطبيقات قابلة للبرمجة، لذا فهي تفتقر إلى دعم الأشكال الأولية المخصصة غير المثلثية والتظليل. ولأنها غير قابلة للبرمجة، فإن OptiX Prime لا تُغلف الخوارزمية الكاملة التي يُعد تتبع الأشعة جزءًا منها. وبالتالي، لا يمكن لـ Prime إعادة تجميع الخوارزمية لوحدات معالجة رسومية جديدة، أو إعادة هيكلة الحساب لتحسين الأداء، أو استخدام جهاز شبكي مثل Quadro VCA، وما إلى ذلك.
برنامج يستخدم OptiX
- يدعم برنامج Blender تقنية OptiX منذ الإصدار 2.81 (7.1 في الإصدار 2.92) [ 5 ]
- يستخدم ملحق Blender D-NOISE ملفات OptiX الثنائية لإزالة الضوضاء المعجلة بالذكاء الاصطناعي [ 6 ]
- في مؤتمر SIGGRAPH 2011، عرضت شركة Adobe تقنية OptiX في عرض توضيحي لتقنية تتبع الأشعة باستخدام وحدة معالجة الرسومات (GPU) للرسوم المتحركة. [ 7 ]
- في مؤتمر SIGGRAPH 2013، تم عرض OptiX في أداة معاينة الإضاءة في الوقت الحقيقي التي تعتمد على وحدة معالجة الرسومات (GPU) من Pixar .
- تم دمج OptiX في مكتبة مطوري GameWorks إلى جانب PhysX ومحركات وأطر عمل الرسومات الأخرى التي تعمل بتقنية CUDA . [ 8 ]
- أدوبي أفتر إفكتس سي سي [ 9 ]
- كان برنامج Daz Studio يحتوي على OptiX Prime Acceleration منذ تكامله مع Iray، ولكن تمت إزالة الدعم في الإصدار 4.12.1.8 [ 10 ]
- Luxrender 2.5: تسريع يصل إلى 600% [ 11 ]
انظر أيضاً
مراجع
- ↑ "الجدولة في OptiX، محرك تتبع الأشعة من Nvidia" (ملف PDF) . 15 أغسطس 2009.
- ↑ فيلبيكر، روبرت؛ راشكوفسكي، ليزيك؛ كيوسجن، فيلهلم؛ بيتر، مايكل (2012). "انتشار الموجات الكهرومغناطيسية في نطاق الموجات المليمترية باستخدام محرك تتبع الأشعة NVIDIA OptiX GPU". المؤتمر الأوروبي السادس للهوائيات والانتشار (EUCAP) لعام 2012. IEEE Xplore. الصفحات 488-492 . doi : 10.1109/EuCAP.2012.6206198 . ISBN 978-1-4577-0920-3. S2CID 45563615 .
- ↑ ستيفن ج. باركر؛ هايكو فريدريش؛ ديفيد لوبك؛ كيث مورلي؛ جيمس بيجلر؛ جاريد هوبروك؛ ديفيد ماكاليستر؛ أوستن روبيسون؛ أندرياس ديتريش؛ جريج همفريز؛ مورغان ماكجواير؛ مارتن ستيتش (2013). "تتبع الأشعة باستخدام وحدة معالجة الرسومات" . اتصالات رابطة مكائن الحوسبة . 56 (5). ACM: 93-101 . doi : 10.1145/2447976.2447997 . S2CID 17174671. تاريخ الاسترجاع: 14 أغسطس 2013 .
- ↑ ستيفن ج. باركر؛ جيمس بيجلر؛ أندرياس ديتريش؛ هايكو فريدريش؛ جاريد هوبروك؛ ديفيد لوبك؛ ديفيد ماكاليستر؛ مورغان ماكغواير؛ كيث مورلي؛ أوستن روبيسون؛ مارتن ستيتش (2010). "OptiX: محرك تتبع الأشعة للأغراض العامة" . معاملات ACM في الرسومات . 29 (4). ACM: 66:1–66:13. doi : 10.1145/1778765.1778803 . تم الاسترجاع في 14 أغسطس 2013 .
- ↑ "اختبارات أداء Blender 2.81 على 19 بطاقة رسومات NVIDIA - أداء RTX OptiX في العرض مذهل" . phoronix.com. 2019. تم الاطلاع عليه بتاريخ 26 نوفمبر 2019 .
- ↑ "D-NOISE: تقنية إزالة الضوضاء السريعة بالذكاء الاصطناعي لبرنامج Blender" . ريمنجتون كرييتيف . 20 يوليو 2019. تم الاطلاع عليه بتاريخ 14 ديسمبر 2019 .
- ↑ "أدوبي تستعرض تقنية OptiX في عرض توضيحي لتقنية تتبع الأشعة في الرسوم المتحركة باستخدام وحدات معالجة الرسومات" . إنفيديا. 2013. مؤرشف من الأصل في 20 ديسمبر 2021. تم الاطلاع عليه في 14 أغسطس 2013 .
- ↑ "أعلنت شركة Nvidia عن برنامج Gameworks في مؤتمر مونتريال 2013؛ ويدعم نظام التشغيل SteamOS" . NVIDIA. 2013. مؤرشف من الأصل في 1 نوفمبر 2013. تم الاطلاع عليه في 29 أكتوبر 2013 .
- ↑ "تغييرات وحدة معالجة الرسومات (لـ CUDA و OpenGL) في After Effects CC (12.1) | منطقة الاهتمام في After Effects" . تم الاطلاع عليه بتاريخ 22 فبراير 2015 .
- ↑ "سجل تغييرات Daz Studio" . DAZ 3D . تم الاطلاع عليه بتاريخ 14 ديسمبر 2019 .
- ↑ "الميزات الجديدة في الإصدار 2.5 - LuxCoreRender" .
روابط خارجية
- برنامج Nvidia
- برامج تجارية احتكارية لنظام لينكس
- برنامج مجاني احتكاري لنظام لينكس
- تتبع الأشعة (الرسومات)
