يواجه مطورو الرسوميات مهمة تبدو بسيطة ولكنها معقدة في الواقع: عرض النص بوضوح ودقة على الشاشة. فخلافًا للصور النقطية، يتكون الحرف من خطوط متجهة معقدة، ورسمه بوضوح تام، بأي حجم أو تحويل ثلاثي الأبعاد، ومع تغير النص في كل إطار، يمثل تحديًا كبيرًا لوحدات معالجة الرسوميات (GPU). تتجنب معظم المحركات هذا التحدي بتحويل الحروف الرسومية مسبقًا إلى مواد، ولكن هذا يأتي مع تنازلات.
لحسن الحظ، توجد حلول مبتكرة مثل خوارزمية Slug التي قدمها إريك لينجيل في عام 2017، والتي تجاوزت هذه التنازلات من خلال عرض الحروف مباشرة من حدودها الخارجية في تظليل الأجزاء. ومع تخصيص براءة اختراع Slug للملك العام في مارس 2026، أصبح من الممكن الآن استكشاف هذه التقنية وتطبيقاتها. ستأخذك هذه المقالة في جولة تفصيلية عبر أبرز تقنيات عرض نص GPU، من أطلس الصور النقطية التقليدي وصولاً إلى Slug، لتوضيح مكانة كل طريقة ومزاياها.
لماذا يُعد عرض الحروف الرسومية تحديًا؟
يخزن كل خط قابل للتطوير كل حرف رسومي كمخططات متجهة، تتكون من منحنيات بيزييه وخطوط مستقيمة. يتحدد الجزء الداخلي من الحرف بناءً على قاعدة تعبئة معينة، مثل قاعدة اللف غير الصفري. على وحدة المعالجة المركزية (CPU)، يمكن تنقيط كل حرف رسومي مرة واحدة بالحجم المستهدف بسهولة. ولكن على وحدة معالجة الرسوميات (GPU)، تتزايد الصعوبة عندما نريد رسم آلاف الحروف الرسومية في كل إطار، بمقاييس عشوائية، ودون إعادة تنقيط أي شيء.
يجب أن يقوم عارض النص بثلاثة أمور رئيسية بسرعة وكفاءة: ملء الجزء الداخلي بشكل صحيح، إنتاج حواف مصقولة ونظيفة، والحفاظ على وضوح النص سواء كان بحجم 8 بكسل في قائمة صغيرة أو يملأ الشاشة بالكامل على لوحة إعلانات ثلاثية الأبعاد. هذا التحدي هو النقطة التي تختلف فيها كل تقنية من التقنيات التي سنستعرضها.
الطريقة الأولى: أطلس النسيج (الحروف الرسومية النقطية)
يُعد هذا النهج الأقدم والأكثر شيوعًا في عرض نص GPU. يقوم بتنقيط كل حرف رسومي مرة واحدة، بحجم واحد، في نسيج مشترك يُعرف باسم الأطلس، ثم يرسم كل حرف على الشاشة كمربع مزخرف. يتميز هذا النهج بسرعته وسهولة نقله، ويعمل على أي جهاز مزود بوحدة نسيج، وهذا سبب انتشاره الواسع.
لكن المشاكل تظهر فورًا عند التكبير أو التصغير. فالتكبير بعد الحجم الأصلي المخزن يؤدي إلى ظهور وحدات بكسل ضبابية أو ممتلئة، بينما التصغير يتسبب في ظهور خطوط رفيعة متقطعة ما لم تُخبز مستويات mip. وكل حجم جديد يتطلب أطلسًا إضافيًا. كما أن اللغات التي تحتوي على عشرات الآلاف من الحروف الرسومية، مثل الصينية واليابانية والكورية، تسبب كوارث في الذاكرة عند خبزها بأحجام مختلفة. علاوة على ذلك، لا تملك الصورة النقطية أي فكرة عن عرضها في المنظور، لذا يظهر النص الموضوع على سطح ثلاثي الأبعاد بمظهر غير طبيعي.
الطريقة الثانية: حقول المسافة الموقعة (SDF)
قدمت شركة Valve حلاً ثوريًا استمر لعقد من الزمان. في عمل كريس جرين عام 2007، لم يخزن النسيج وحدات بكسل الحرف الرسومي، بل خزن حقل المسافة الموقعة (SDF)، حيث يحمل كل تيكسل المسافة إلى أقرب حافة (موجبة من الداخل، وسالبة من الخارج). في التظليل، يتم أخذ عينة من هذا الحقل وتعيين عتبة عند الصفر. نظرًا لأن المسافة تتكامل بسلاسة، يمكن توسيع نسيج SDF صغير بشكل كبير مع الحفاظ على حافة نظيفة، كما يمكن الحصول على حواف رخيصة عن طريق تخفيف العتبة.
ظل هذا هو الخيار الافتراضي لنصوص واجهة المستخدم الواضحة وشاشات عرض المعلومات في الألعاب، خاصة على الأجهزة ذات الموارد المحدودة. ومع ذلك، لا يزال SDF نسيجًا مخبوزًا تم أخذ عينات منه بدقة ثابتة، مما يؤدي إلى تدوير الزوايا الحادة. فالزاوية الحادة هي انقطاع في حقل المسافة، ويؤدي الاستيفاء الخطي الثنائي حولها إلى تخفيف حدة كل زاوية صعبة. وعند التكبير المفرط أو التصغير الشديد، قد تتكسر الخطوط الرفيعة وتتلطخ التفاصيل.
الطريقة الثالثة: حقول المسافة الموقعة متعددة القنوات (MSDF)
يحل عمل فيكتور كلومسكي عام 2015 و2018 مشكلة الزاوية في SDF. فبدلًا من قناة مسافة واحدة، يقوم MSDF (حقول المسافة الموقعة متعددة القنوات) بتخزين ثلاث قنوات (أحمر، أخضر، أزرق)، حيث ترمّز كل قناة مجموعة فرعية مختلفة من الحواف المختارة للحفاظ على الزوايا الحادة. في التظليل، يتم أخذ متوسط القنوات الثلاث. تعمل هذه الحيلة على إعادة بناء الزوايا بشكل مثالي تقريبًا، مما يحافظ على وضوح حرف MSDF عند تكبيره لدرجة قد تحول SDF إلى تشويه.
يُعد MSDF الحل المفضل حاليًا للعديد من الفرق، ومكتبة msdfgen الخاصة بكلومسكي مرخصة من معهد ماساتشوستس للتكنولوجيا (MIT) ومعتمدة على نطاق واسع. إذا كنت بحاجة إلى نص واضح وقابل للتطوير، وكنت مستعدًا لإعداد أطلس، فهذا خيار ممتاز.
ومع ذلك، لا يزال MSDF يعتمد على أطلس، مع ما يترتب على ذلك من تكاليف. يتطلب إنشاء كل حرف رسومي بدقة محددة مسبقًا، مما يعني أن النص الديناميكي أو المدخل من المستخدم، ومجموعات الحروف الرسومية الضخمة مثل CJK، لا تزال تتطلب خطوط أنابيب خبز وميزانيات ذاكرة كبيرة. كما أن عملية التوليد أغلى من SDF العادي. وعند الأحجام الصغيرة جدًا، قد لا يتم أخذ عينات كافية من التيكسلات للحفاظ على التفاصيل الدقيقة، وفي التصغير الشديد لا يزال يعاني من التعرجات. ويكلف البحث ثلاثي القنوات عرض نطاق ترددي أكبر من القناة الواحدة. يرفع MSDF سقف الجودة، لكنه لا يزال يستخدم الأطلس.
الطريقة الرابعة: التغطية بالفسيفساء والتغطية (Loop-Blinn، NV_path_rendering، Pathfinder، Rive)
تتجاوز هذه العائلة من التقنيات القوام تمامًا وتحول المخطط التفصيلي للحرف الرسومي إلى شكل هندسي يمكن لوحدة معالجة الرسوميات تنقيطه مباشرة. هذه الطرق مستقلة حقًا عن الدقة، وغالبًا ما تكون الإجابة الصحيحة للرسومات المتحركة المتجهة المصممة للرسوم المتحركة.
- Loop-Blinn: يغذي المثلثات المنحنية إلى وحدة معالجة الرسوميات ويستخدم تظليل تجاهل لكل بكسل للاحتفاظ بالجزء الداخلي من كل منحنى بيزييه تربيعي، بالإضافة إلى مخزن مؤقت للاستنسل لحل مشكلة اللف.
- Stencil-then-cover: تم تقديمه مع امتداد NV_path_rendering الخاص بـ NVIDIA، ويرسم المسار إلى المخزن المؤقت للاستنسل في تمريرة واحدة، ثم يغطيه في تمريرة ثانية. يوفر جودة عالية ولكنه يعتمد على امتدادات البائع ومسارات الأجهزة المحددة.
- Pathfinder: يجزئ الحواف إلى مثلثات دقيقة، ويحسب المناطق شبه المنحرفة الموقعة لكل بكسل، ويجمع التغطية في تمريرة حسابية. يعتمد على البلاط وسريع على وحدات معالجة الرسوميات الحديثة.
- عارض Rive: مفتوح المصدر في عام 2024، يقوم بتقسيم المسارات المتجهة المعقدة إلى بقع مثلثية فريدة وينقطها عبر خط أنابيب متوازي واسع النطاق مع تخزين محلي للبكسل، مما يحقق 120 إطارًا في الثانية على فن المتجهات المتحرك.
تتمثل تكاليف هذه الطرق في عملية التغطية بالفسيفساء نفسها، والتي يجب إعادة بنائها عندما تتغير الهندسة، والتضخم الهندسي للحروف الرمزية المعقدة، وصعوبة الحصول على حواف تحليلية نظيفة، وفي بعض الحالات الاعتماد على ميزات أو ملحقات أجهزة معينة.
الطريقة الخامسة: عرض Slug، مباشرة من المخطط التفصيلي
تتجاوز تقنية Slug الأطلس والتغطية بالفسيفساء لكل إطار. فهي تحتفظ بالحرف الرسومي كقائمة من منحنيات بيزييه التربيعية وقطاعات الخطوط المخزنة في مخزن مؤقت صغير لوحدة معالجة الرسوميات. بالإضافة إلى ذلك، تبني Slug بنية تسريع خفيفة الوزن لكل حرف رسومي تقوم بتقسيم الحرف الرسومي إلى نطاقات أفقية، بحيث يحتاج البكسل المحدد فقط إلى أخذ مجموعة المنحنيات القريبة منه في الاعتبار بدلًا من المخطط التفصيلي بأكمله.
ثم تحل Slug عملية التغطية مباشرةً في تظليل الأجزاء. لكل بكسل، يقوم التظليل بإطلاق شعاع فعليًا، ويجد النقاط التي يتقاطع فيها هذا الشعاع مع منحنيات بيزييه القريبة، ويحسب هذه التقاطعات لتحديد رقم اللف وبالتالي التغطية. يكمن الجزء الصعب، والوصفة السرية لإريك لينجيل، في اختبار يسمى أهلية الجذر: وهي قاعدة دقيقة يجب أن يتم فيها حساب تقاطعات أشعة المنحنى بدقة، لضمان أن تكون الرياضيات المتعرجة دقيقة عند نقاط النهاية المشتركة حيث تلتقي المنحنيات وحيث قد تنتج الطرق الساذجة شقوقًا أو أعدادًا مزدوجة. نظرًا لأن التظليل يحل معادلات المنحنى تحليليًا بدلًا من أخذ عينات من حقل مخبوز، فإنه ينتج تغطية دقيقة وحوافًا واضحة على أي نطاق.
لا توجد دقة مخبوزة، لذلك يكون نفس الحرف الرسومي حادًا للغاية عند 6 بكسل أو 6000 بكسل، ويظل واضحًا تحت أي تحويلات ثنائية أو ثلاثية الأبعاد عشوائية، بما في ذلك المنظور، لأنه يتم حساب التغطية لكل بكسل بعد التحويل. لا يوجد أطلس، لذا فإن مئات الآلاف من الحروف الرسومية للغات مثل CJK تكلف سطرًا واحدًا من بيانات المخطط التفصيلي، وليس أطلسًا بحجم مقطع فيديو. يمكن أن يتغير النص في كل إطار دون أي تكلفة خبز، وهذا ما نحتاجه تمامًا للبيانات المباشرة، ومدخلات المستخدم، والمحتوى المترجم. ويحدث كل ذلك في عملية سحب واحدة باستخدام تظليل الأجزاء العادي، دون الحاجة إلى امتداد من البائع.
يُعد هذا أمرًا بالغ الأهمية عندما لا يمكن التنبؤ بكيفية عرض النص. تقدم كل من Atlas وSDF وMSDF دقة ثابتة مسبقًا، مما يفترض ضمنيًا نطاقًا محدودًا من الأحجام وزوايا الرؤية على الشاشة. عندما تكون العلاقة بين مستوى النص والكاميرا غير معروفة مسبقًا، مثل كاميرا ثلاثية الأبعاد حرة، أو تكبير عشوائي، أو لقطة مقربة، أو زاوية ميل شديدة الانحدار خارج المحور، تنهار تلك التقريبات: يتم التكبير إلى ما بعد الدقة المخبوزة ويتم طمس الأطلس بينما تقوم SDF وMSDF بتدوير وتشويه الحروف، وفي الزوايا المائلة، تظهر تشوهات في الحقل. لا يمكن تخصيص دقة كافية مسبقًا لكل عرض ممكن دون استنفاد مساحة التخزين. يحسب Slug التغطية تحليليًا، لكل بكسل، بعد التحويل، لذلك يظل دقيقًا بغض النظر عن مدى قربه أو بعده أو مدى انحراف المشاهد، دون أي شيء مخبأ أو سقف يمكن الوصول إليه. تعد أساليب التغطية بالفسيفساء هي العائلة الأخرى الوحيدة التي تشترك في هذه الميزة، وتدفع ثمنها من خلال تكلفة التغطية بالفسيفساء والصقل الأصعب. لهذا السبب، يُعد Slughorn مثاليًا للأبعاد التفاعلية ثلاثية الأبعاد، والواقع المعزز، والواقع الافتراضي، وشاشات العرض الأمامية المتحركة، وتطبيقات CAD أو التنقل الرقمي المزدوج، حيث لا يمكنك تحديد مدى قرب المشاهد أو مدى انحرافه مسبقًا.
رؤية الفارق: مقارنة بصرية
لإظهار الفروقات، قمنا بعرض نفس الحرف الكبير R باستخدام Slughorn (تكاملنا الخاص بـ osgSlug) بجانب البدائل المتاحة: SDF أحادي القناة، MSDF، عارض Rive، والصورة النقطية لـ osgText بالإضافة إلى SDF المشتق من الصورة النقطية. تم تخصيص نفس الميزانية لكل لوحة تعتمد على النسيج (64 تيكسل لكل متر)، لذا فإن الاختلافات تنبع من التقنية نفسها، وليس الدقة.
عند الحجم الأصلي المخبوز، كانت خمس من أصل ست تقنيات متطابقة تقريبًا: Slughorn، Rive، وMSDF أعادت إنتاج المخطط التفصيلي بدقة، بينما اختلفت SDFs أحادية القناة بزوايا مستديرة قليلًا في الجزء السفلي. كانت الصورة النقطية لـ osgText هي الاستثناء الواضح، حيث بدت ضبابية ومكبّرة بنحو أربع مرات، ولم تتمكن من استعادة التفاصيل التي لم يتم تخزينها أبدًا.
عند إمالة الحرف الرسومي في المنظور، تغيرت الصورة بشكل كبير. في منظور الميل، حافظت Slughorn ولوحات حقول المسافة الثلاثة على وضوح الحرف R وحوافه النظيفة، لأنهما يحسبان التغطية لكل بكسل داخل المستوى الخاص بالحرف الرسومي، وبالتالي لا تؤثر عليهما الإسقاطات. بينما أصبحت الصورة النقطية لـ osgText ضبابية مع تراجعها. ظهر حرف R الخاص بـ Rive بشكل خاطئ، حيث يقبل عارضه فقط التحويلات المتطابقة ثنائية الأبعاد، والإسقاط المنظوري ليس متطابقًا، لذا فإن أفضل ما يمكنه فعله هو تقريب دقيق في المركز مع الانحراف نحو الحواف.
وعند التكبير الشديد لحافة واحدة، استمر عارضي المنحنيات فقط، Slughorn وRive، في إنتاج حافة مستقيمة ونظيفة، لأنهما يعتمدان على المخطط التفصيلي الفعلي بأي حجم (Rive عن طريق إعادة التغطية لكل إطار لهذا العرض). بينما بدأت لوحات حقل المسافة في التشوه، حيث لم يعد الاستيفاء بين العينات المخزنة يتطابق مع المنحنى الحقيقي. تحولت الصورة النقطية لـ osgText إلى تدرج رمادي واحد، لأن كل تيكسل خاص بها غطى جزءًا كبيرًا من اللوحة.
تجدر الإشارة إلى أن كل طريقة تعتمد على النسيج استخدمت 64 تيكسل لكل em، ومنحها المزيد من العناصر قد يؤخر ظهور هذه التشوهات لكنه لا يزيلها. استخدمت لوحات SDF وMSDF إعدادات الخبز الافتراضية، وقد تخفف خيارات تصحيح الأخطاء الخاصة بـ MSDF بعض الشقوق. تم عرض Rive في أفضل حالاته لهذه المشاهد، التي يتم تقديمها بواسطة الكاميرا في كل إطار، وهو أكثر سخاءً من الطريقة التي يتم بها تضمينه عادةً في مشهد ثلاثي الأبعاد، حيث يتم رسمه في نسيج وتعيينه على السطح، مما يتجنب التشويه ولكنه يطمس الصورة النقطية.
مقارنة وجهاً لوجه بين تقنيات عرض النص
لتبسيط عملية الاختيار، دعنا نلخص الفروقات الرئيسية بين هذه التقنيات: Slug وتقنيات التغطية بالفسيفساء مثل Rive تتفوقان في تقديم حواف حادة وزوايا دقيقة على أي نطاق، وتتعاملان بشكل ممتاز مع التحويلات ثلاثية الأبعاد والمنظور، وتتميزان بفعالية كبيرة مع النص الديناميكي أو مجموعات الحروف الرسومية الضخمة (CJK) من حيث استهلاك الذاكرة. في المقابل، تُعد MSDF خيارًا قويًا يوفر زوايا حادة وجودة جيدة عند الأحجام الصغيرة، لكنها تظل تعتمد على الأطالس المخزنة مسبقًا. أما SDF العادي فيقدم أداءً جيدًا على الأجهزة القديمة والموارد المحدودة ولكنه يعاني من تدوير الزوايا، بينما يُعد أطلس الصور النقطية هو الأبسط والأكثر قابلية للنقل ولكنه يعاني بشكل كبير عند التكبير أو التصغير أو في البيئات ثلاثية الأبعاد.
من حيث التعقيد، يتطلب Slug والتغطية بالفسيفساء مستوى متوسطًا إلى عاليًا من التنفيذ، بينما تُعد SDF وأطلس الصور النقطية منخفضة التعقيد نسبيًا. يُظهر Slughorn قدرة ممتازة على التكيف مع مختلف الأجهزة التي تحتوي على مرحلة تظليل قادرة، بينما يُعد أطلس الصور النقطية الأكثر توافقًا مع وحدات معالجة الرسوميات القديمة/المنخفضة.
متى تستخدم أي تقنية؟
لا يوجد فائز واحد في سباق تقنيات عرض نص GPU، بل الأداة المناسبة لكل وظيفة:
- اختر Slug (عبر Slughorn) عندما تحتاج إلى نص واضح تمامًا على أي مقياس وتحت تحويلات ثلاثية الأبعاد والمنظور (في تطبيقات الواقع الافتراضي/المعزز/الممتد)، وعندما تكون لديك مجموعات حروف رسومية ضخمة أو ديناميكية، أو يتغير النص باستمرار، أو عند عرض واجهة مستخدم متجهة مختلطة في مسار في الوقت الفعلي. هذا هو الحل المثالي لأنظمة المعلومات الجغرافية، ولوحات القيادة الزجاجية، وتسميات المحاكاة البصرية، وشاشات العرض الفضائية، وتراكبات الواقع المعزز، وأي واجهة يجب أن تظل مقروءة أثناء حركتها. لهذا السبب قمنا ببناء Slughorn.
- اختر MSDF عندما تريد نصًا واضحًا وقابلًا للتطوير، ويمكنك إنشاء أطلس مسبقًا، وتكون راضيًا عن نطاق واسع من توافق الأجهزة. إنه إعداد افتراضي رائع لشاشات عرض المعلومات في الألعاب (HUD) وواجهة المستخدم التطبيقية الأبسط.
- اختر SDF العادي عندما تكون موارد الأجهزة مقيدة، ويكون النص ثابتًا إلى حد ما، ويمكنك التعامل مع الزوايا الناعمة.
- اختر أطلس الصور النقطية عندما يكون حجم النص ثابتًا على واجهة مستخدم ثابتة وتريد الحل الأبسط والأكثر قابلية للنقل.
- اختر Rive أو عارض التغطية بالفسيفساء عندما يكون التركيز الأساسي على الأعمال الفنية المتجهة المتحركة، وليس النص بالدرجة الأولى.
ما وراء النص: قدرات Slughorn الشاملة
على الرغم من أن Slug اشتهرت في مجال عرض النص، إلا أن Slughorn يتجاوز النص ليرسم أي شيء يمكن التعبير عنه كهندسة متجهة مملوءة ومحددة، وذلك من خلال أي من واجهاته الخلفية. هذا يعني دعمًا كاملًا لملفات SVG بما في ذلك التدرجات، وتظليل الطبقات، والرسوم المتحركة داخل الطبقات، ويصمد على نطاق رسم الخرائط، ويرسم التسميات والأعمال الخطية بوضوح ودقة لا يمكن أن تصل إليها الأساليب المعدة مسبقًا. وهناك الكثير لنعرضه قريبًا. لمزيد من الميزات، يمكنك الاطلاع على مستودع Slughorn على GitHub.
Slughorn: تطبيق AlphaPixel لتقنية Slug
Slughorn هو تطبيقنا لتقنية Slug بلغة C++20 الحديثة. يقوم بالعمل الشاق مرة واحدة، عند الإنشاء، لذلك لا توجد عملية تغطية بالفسيفساء في وقت التشغيل: يتم إعداد بيانات المخطط التفصيلي وبنية النطاق مسبقًا، ويقوم التظليل فقط بتقييم التغطية. وعلى الرغم من أن النص هو المجال الذي اشتهرت فيه Slug، إلا أن Slughorn لا يتعامل مع الحروف الرسومية بشكل خاص، بل يراها مجرد شكل شائع. يمكن عرض أي شيء يمكنك وصفه كمسارات متجهة عبر نفس المسار وبنفس الجودة. يستوعب Slughorn التنسيقات التي تستخدمها بالفعل، بما في ذلك خطوط SVG وFreeType والمسارات من Blend2D وCairo وSkia، ويكشف عن واجهة برمجة تطبيقات أصلية على طراز Canvas لتأليف الأشكال مباشرة، مع تعبئة وحدود وتدرجات مركبة في أطلس واحد لبيانات المخطط التفصيلي جاهز لوحدة معالجة الرسوميات. يستهدف Slughorn واجهات OpenGL، Vulkan، WebGPU، وDirectX، ويأتي مع روابط Python جنبًا إلى جنب مع واجهة C++ API، لذلك يعمل نفس العرض من HUD مضمن إلى مشهد ثلاثي الأبعاد كامل.
الفضل يعود إلى إريك لينجيل في خوارزمية Slug، المنشورة في مجلة تقنيات رسومات الحاسوب. ومنذ مارس 2026، يمكن لأي شخص تطبيقها مجانًا. نعتقد أن هذا هو الأساس الصحيح للنص الدقيق والمستقل عن الدقة على وحدة معالجة الرسوميات، ويهدف Slughorn إلى تسهيل استخدامه. إذا كنت تواجه تسميات ضبابية في مشهد ثلاثي الأبعاد، أو أطلسًا لا يتناسب مع مجموعة الحروف الرسومية لديك، أو نصًا يجب أن يظل واضحًا أثناء حركته، فهذا هو بالضبط نوع المشكلة التي نحلها. اتصل بنا للحديث عن Slughorn أو لدمجه في خط الأنابيب الخاص بك.
المراجع
- إريك لينجيل, GPU-Centered Font Rendering Directly from Glyph Outlines, مجلة تقنيات رسومات الحاسوب، المجلد. 6، لا. 2, 2017.
- إريك لينجيل, A Decade of Slug (براءة اختراع Slug مخصصة للملكية العامة، مارس 2026), terathon.com.
- كريس جرين, Improved Alpha-Tested Magnification for Vector Textures and Special Effects, صمام، سيغراف 2007.
- فيكتور كلومسكي, Shape Decomposition for Multi-Channel Distance Fields (أطروحة، 2015) و Improved Corners with Multi-Channel Signed Distance Fields, منتدى رسومات الحاسوب، 2018. msdfgen مرخص من معهد ماساتشوستس للتكنولوجيا.
- Rive, Rive Renderer, now open source and available on all platforms, 2024.
- مشروع المؤازرة/باثفايندر و Related approaches الوثائق.
الأسئلة المتداولة
ما الفرق بين عرض نص أطلس النسيج وSDF وMSDF وSlug؟
يقوم أطلس النسيج بتخزين كل حرف رسومي كصورة نقطية مخبأة، بحيث يتم تمويهه بمجرد تجاوز حجمه المخبوز. يقوم SDF (حقل المسافة الموقعة) بتخزين المسافة إلى الحافة بدلًا من ذلك، مما يؤدي إلى تحجيم أفضل ولكنه يدور حول الزوايا الحادة. يضيف MSDF قنوات بحيث تظل الزوايا واضحة، لكنه يظل أطلسًا مخبوزًا بدقة مختارة. يتخطى Slug الأطلس ويحسب التغطية من مخطط Bezier الفعلي للحرف الرسومي في التظليل، بحيث يظل دقيقًا بأي حجم أو زاوية.
لماذا يصبح النص ضبابيًا عند تغيير حجمه أو إمالته في شكل ثلاثي الأبعاد؟
لأن معظم المحركات ترسم النص من أطلس الصور النقطية المخبوز مسبقًا. قم بالتكبير إلى ما هو أبعد من الدقة المخبوزة، أو قم بإمالتها في المنظور، أو لفها على سطح ما، وأنت تقوم بتمديد شبكة ثابتة من وحدات البكسل، وبالتالي تصبح الحواف ناعمة. تتجنب الأساليب المستندة إلى المخطط التفصيلي مثل Slug ذلك لأنه يتم حساب التغطية لكل بكسل بعد التحويل.
ما هي خوارزمية Slug؟
Slug هي تقنية نشرها إريك لينجيل في عام 2017 تعرض الحروف الرسومية مباشرةً من مخططات Bezier التربيعية الخاصة بها على وحدة معالجة الرسوميات (GPU)، بدون أطلس للنسيج ولا تغطية بالفسيفساء لكل إطار. يلقي تظليل الأجزاء شعاعًا لكل بكسل ويحسب تقاطعات المنحنيات للحصول على تغطية دقيقة، وذلك باستخدام اختبار أهلية الجذر الخاص بلينجيل للتأكد من الصحة عند التقاء المنحنيات.
هل تقنية Slug مجانية للاستخدام الآن؟
نعم. خصص لينجيل براءة اختراع Slug للملكية العامة في مارس 2026، حتى يتمكن أي شخص من تنفيذ هذه التقنية. Slughorn من AlphaPixel هو تطبيق مرخص من معهد ماساتشوستس للتكنولوجيا (MIT) بلغة C++20.
متى يجب علي استخدام MSDF بدلًا من Slug؟
عندما تتمكن من إعداد أطلس مسبقًا، ويكون النص الخاص بك ثابتًا إلى حد ما، وتحتاج إلى تظليل واحد رخيص يعمل على مجموعة واسعة من الأجهزة. يُعد MSDF خيارًا افتراضيًا قويًا لشاشات عرض المعلومات (HUD) الخاصة باللعبة وواجهة المستخدم التطبيقية. يفوز Slug عندما يجب أن يظل النص واضحًا عند أي مقياس وزاوية، أو عندما تكون مجموعات الحروف الرسومية ضخمة أو ديناميكية، أو عندما تكون علاقة الكاميرا غير محدودة.
هل يتعامل Slug مع مجموعات الحروف الرسومية الكبيرة مثل الصينية واليابانية والكورية؟
نعم، وبدون انفجار ذاكرة الأطلس. نظرًا لأن Slug يقوم بتخزين بيانات المخطط التفصيلي بدلًا من الصور النقطية المخبوزة، فإن عشرات الآلاف من الصور الرمزية CJK تكلف بيانات منحنى الخط بدلًا من النسيج العملاق متعدد الأحجام. في Slughorn، يضيف هيكل النطاق لكل حرف رسومي حملًا متوسطًا، ولا يزال أقل بكثير من أطلس CJK.
كيف يرتبط Slughorn بـ Slug؟
Slug هي الخوارزمية (التي ابتكرها لينجيل)؛ Slughorn هي مكتبة AlphaPixel التي تنفذها. يقوم Slughorn بتغذية أي واجهة برمجة تطبيقات GPU (OpenGL وVulkan وWebGPU وDirect3D) ويرسم أي هندسة متجهة مملوءة ومحددة، وليس فقط النص.