نظام ترميز الملمس المحمول المحمول LDR/HDR.
أساس Universal هو نظام تبادل الملمس LDR/HDR Open SuperCompressed LDR/HDR من Binomial LLC يدعم تنسيقتين للملفات الوسيطة: معيار .KTX2 المفتوح من مجموعة Khronos ، وتنسيق ملف .basis ". تدعم تنسيقات الملفات هذه الترميز السريع إلى أي تنسيق نسيج GPU مضغوط يتم إصداره خلال الـ 25 عامًا تقريبًا.
يتمثل هدفنا العام في هذا المشروع في تبسيط التوزيع الترميز والفعال لمحتوى LDR و HDR GPU المحمول والصورة ومحتوى الفيديو بطريقة متوافقة مع أي وحدة معالجة الرسومات أو الرسومات.
يدعم النظام ثلاثة أوضاع: ETC1S و UASTC LDR و UASTC HDR. يمكن تجميع تشفير C/C ++ والتشفير عبر الترميز إلى الكود الأصلي أو Webassembly ، ويمكن الوصول إلى جميع ميزات التشفير/transcoder من JavaScript.
ملاحظات الإصدار
أمثلة ويب على الحية الحية/transcoder
JavaScript API/WASM/WebGL معلومات
uastc hdr مثال الصور
يمكن نقل ملفات ETC1S و UASTC LDR إلى:
يمكن نقل ملفات UASTC HDR إلى:
ETC1S: وضع Supercumpressed منخفضة إلى متوسطة الجودة تقريبًا. يدعم هذا الوضع جودة متغيرة مقابل مستويات حجم الملف (مثل JPEG) ، وقنوات ألفا ، والضغط المدمج ، ومصفوفات الملمس مضغوط اختياريًا كتسلسل فيديو باستخدام كتل تخطي (التجديد الشرطي). يمكن نقل هذا الوضع بسرعة إلى جميع تنسيقات نسيج LDR المدعومة.
UASTC LDR: وضع 8 بت/بكسل LDR عالية الجودة. UASTC LDR هي مجموعة فرعية من 19 وضعًا من تنسيق نسيج ASTC LDR 4X4 (8BPP) ، ولكن مع تنسيق كتلة مخصص يحتوي على تلميحات ترميز الترميز. يعد ترميز UASTC LDR إلى ASTC LDR و BC7 سريعًا وبسيطًا بشكل خاص ، لأن UASTC LDR هي مجموعة فرعية شائعة من كل من BC7 و ASTC. يتم تسريع الترميزات المتداخلة لتنسيقات الملمس الأخرى بواسطة عدة أجزاء تلميح خاصة بالتنسيق الموجودة في كل كتلة UASTC LDR.
يدعم هذا الوضع مرحلة ما بعد العملية المحسّنة التي تم تحسينها في الأسعار (RDO) والتي تشرح بيانات نسيج UASTC LDR المشفرة في ملف .ktx2/.basis بحيث يمكن ضغطه بشكل أكثر فعالية. مزيد من التفاصيل هنا.
هنا وثيقة مواصفات UASTC LDR.
فيما يلي وثيقة مواصفات UASTC HDR ، وبعض الصور المضغوطة.
يدعم كل من ملفات .basis و .ktx2 مستويات MIPMAP ، صفائف الملمس ، cubemaps ، صفائف cubemap ، والفيديو الملمس ، في جميع الأنماط الثلاثة. بالإضافة إلى ذلك ، تدعم ملفات .basis صفائف نسيج غير موحدة ، حيث يمكن أن يكون لكل صورة في الملف دقة مختلفة أو عدد من مستويات MIPMAP.
في وضع ETC1S ، يمكن للضغط استغلال الارتباطات بالألوان والأنماط عبر جميع الصور في الملف بأكمله باستخدام كتب رمز النهاية/المحدد العالمية ، لذلك يمكن تخزين صور متعددة مع MIPMAPs بكفاءة في ملف واحد. يدعم وضع ETC1S أيضًا تسلسلات فيديو قصيرة ، مع استخدام كتل SKIP (التجديد الشرطي) لعدم إرسال كتل لم تتغير بالنسبة إلى الإطار السابق.
تنسيقات صورة LDR المدعومة للقراءة هي .png و .dds مع MIPMaps و .tga و .qoi و .jpg. تنسيقات صورة HDR المدعومة للقراءة هي .exr و .hdr و .dds مع MIPMaps. يمكن أن تكتب .basis ، .ktx2 ، .dds ، .ktx (v1) ، .astc ، .out ، .exr ، و .png.
يدعم النظام الآن تحميل ملفات .DDS BASIC 2D مع MIPMAPS اختياري ، ولكن يجب أن يكون ملف .DDS في أحد التنسيقات غير المضغوطة المدعومة: 24bpp RGB ، 32bpp RGBA/BGRA ، RGBA ، أو Float RGBA. يتيح استخدام ملفات .DDS للمستخدم التحكم بالضبط في كيفية إنشاء MIPMaps قبل الضغط.
ليس لدى مكتبة الترميز وأداة سطر الأوامر أي تبعيات من الطرف الثالث المطلوبة التي ليست بالفعل في الريبو نفسه. Transcoder هو ملف مصدر .CPP واحد (في transcoder/basisu_transcoder.cpp
) الذي ليس له تبعيات طرف ثالث.
نحن نبني ونختبر تحت:
ضمن Windows مع Visual Studio ، يمكنك استخدام ملف basisu.sln
المضمون. بدلاً من ذلك ، يمكنك استخدام CMake لإنشاء ملفات حلول/مشروع جديدة.
للبناء ، قم أولاً بتثبيت Cmake ، ثم:
cd build
cmake ..
make
للبناء باستخدام دعم SSE 4.1 على أنظمة X86/X64 (الترميز أسرع بنسبة 15-30 ٪ تقريبًا) ، أضف -DSSE=TRUE
إلى سطر أوامر CMAKE. إضافة -DOPENCL=TRUE
للبناء باستخدام (اختياري) دعم opencl. استخدم -DCMAKE_BUILD_TYPE=Debug
للبناء في التصحيح. لبناء Quevictables 32 بت ، أضف -DBUILD_X64=FALSE
.
بعد الإنشاء ، تكون أداة سطر الأوامر الأصلية المستخدمة لإنشاء ملفات ، والتحقق من صحة/إلغاء الرمز/إلغاء bin/basisu
.
تتضمن أداة سطر الأوامر بعض اختبارات ترميز/ترميز الترميز الآلي LDR/HDR:
cd ../bin
basisu -test
basisu -test_hdr
لاختبار برنامج الترميز في وضع OpenCL (يجب أن يكون Opencl libs/رؤوس/برامج تشغيل مثبتة وتجميع دعم opencl من خلال تشغيل cmake مع -DOPENCL=TRUE
):
basisu -test -opencl
basisu -q 255 x.png
basisu -linear x.png
basisu -uastc x.png
basisu x.exr
لاحظ قارئ .exr الذي نستخدمه هو TinyExr ، والذي لا يدعم جميع أوضاع ضغط .exr الممكنة. يمكن استخدام أدوات مثل ImageMagick لإنشاء ملفات .exr التي يمكن أن تقرأها TinyExr.
بدلاً من ذلك ، يمكن ضغط صور LDR (مثل .png) إلى UASTC HDR عن طريق تحديد -hdr
. بشكل افتراضي ، يتم تحويل صور LDR ، عند ضغطها إلى UASTC HDR ، من SRGB إلى الضوء الخطي قبل الضغط. يمكن تعطيل خطوة التحويل هذه عن طريق تحديد -hdr_ldr_no_srgb_to_linear
.
الأهم من ذلك ، بالنسبة لجودة أفضل ، يجب عليك توفير أساس مع صور المصدر الأصلية غير المضغوطة . أي نوع آخر من الضغط المفقود المطبقة قبل أن يتسبب الأساس (بما في ذلك ETC1/BC1-5 ، BC7 ، JPEG ، وما إلى ذلك) إلى ظهور القطع الأثرية متعددة الأجيال في قوام الإخراج النهائي.
-fastest
(وهو ما يعادل -uastc_level 0
) يضع تشفير UASTC LDR/HDR في أوضاعها الأسرع (ولكن أقل جودة).
-slower
يضع تشفير UASTC LDR/HDR في أوضاع عالية الجودة ولكنه أبطأ (يعادل -uastc_level 3
). المستوى الافتراضي هو 1 ، والأعلى هو 4 (وهو بطيء للغاية).
-q X
، حيث يتراوح X من [1،255] ، يتحكم في جودة وضع ETC1S مقابل مستوى مقايضة حجم الملف. 255 هو أعلى جودة ، والافتراضي هو 128.
-debug
يتسبب في طباعة التشفير معلومات التصحيح الداخلي والموجهة نحو المطورين.
-stats
لرؤية مختلف إحصائيات الجودة (PSNR).
-linear
: ETC1S الافتراضيات لمقاييس SRGB Colorspace ، يستخدم UASTC LDR حاليًا مقاييس خطية ، و UAASTC HDR الافتراضية لمقاييس RGB المرجحة (مع 2،3،1 أوزان). إذا كانت الإدخال عبارة عن خريطة عادية ، أو نوعًا آخر من محتوى الملمس غير SRGB (غير المصورين) ، فتأكد من استخدامه -linear
لتجنب القطع الأثرية غير الضرورية. (مقاييس الخريطة العادية الزاوية لـ UASTC LDR/HDR هي بالتأكيد قابلة للتنفيذ وعلى قائمة TODO.)
يتيح تحديد -opencl
وضع OPENCL ، والذي يسرع حاليًا فقط ETC1S الترميز.
يتم تعدد الضاغط بشكل افتراضي ، والذي يمكن تعطيله باستخدام خيار سطر الأوامر -no_multithreading
. يكون Transcoder حاليًا واحدًا مترابطًا ، على الرغم من أنه آمن مؤشر ترابط (أي أنه يدعم إلغاء ضغط شرائح الملمس المتعددة بالتوازي).
basisu -uastc -uastc_rdo_l 1.0 -mipmap x.png
يتحكم -uastc_rdo_l X
في إعداد جودة RDO (تحسين معدل الإجهاد). كلما انخفضت هذه القيمة ، كلما ارتفعت الجودة ، ولكن كلما زاد حجم الملف المضغوط. القيم الجيدة التي يجب تجربتها بين .2-3.0. الافتراضي هو 1.0.
basisu -mipmap -q 200 x.png
هناك العديد من خيارات MIPMAP لتغيير نواة الفلتر ، ومساحة ألوان المرشح لقنوات RGB (الخطية مقابل SRGB) ، وأصغر بعد MIPMAP ، وما إلى ذلك. تدعم الأداة أيضًا إنشاء ملفات Cubemap ، ومصاعد نسيج ثنائية الأبعاد ، إلخ. مولد MIPMAP التلقائي ، يمكنك إنشاء ملفات نسيج LDR أو HDR غير مضغوطة. DDS وتغذيةها على الضاغط.
basisu -comp_level 2 x.png
على بعض الصور النادرة (تلك التي تحتوي على تدرجات السماء الزرقاء للربط) ، قد تحتاج إلى زيادة إعداد ETC1S -comp_level
، والذي يتراوح من 1،6. يتحكم هذا في مقدار الجهد الكلي الذي يستخدمه المشفر لتحسين كتب رمز ETC1S ودفق البيانات المضغوط. Comp_level الأعلى أبطأ بكثير .
basisu x.png -comp_level 2 -max_endpoints 16128 -max_selectors 16128
basisu -tonemap x.exr
basisu -compare a.png b.png
basisu -compare_hdr a.exr b.exr
راجع نص المساعدة للحصول على قائمة كاملة بخيارات سطر أوامر الأداة. أداة سطر الأوامر هي مجرد غلاف رفيع أعلى مكتبة التشفير.
يمكنك إما استخدام أداة سطر الأوامر أو الاتصال عبر الترميز مباشرة من رمز JavaScript أو C/C ++ لإلغاء ضغط ملفات .ktx2/.basis إلى بيانات نسيج GPU أو بيانات الصورة غير المضغوطة. لتفريغ ملف .ktx2 أو.
basisu x.ktx2
استخدم خيارات -no_ktx
و -etc1_only
/ -format_only
لتفريغ ملفات أقل.
-info
و -validate
سيعرضون فقط معلومات الملف وليس إخراج أي ملفات.
ستكون ملفات MIPMPed أو CubEmap المكتوبة أو الملمس. KTX/.DDS في مجموعة واسعة من تنسيقات GPU GPU مضغوطة (PVRTC1 4BPP ، ETC1-2 ، BC1-5 ، BC7 ، وما إلى ذلك) ، وعلى حد علمنا هناك لسوء الحظ (اعتبارًا من عام 2024) ، لا يوجد أي أداة عرض. ktx أو .DDS التي تدعم بشكل صحيح وموثوق كل تنسيق نسيج GPU الذي ندعمه. يمكن عرض ملفات BC1-5 و BC7 باستخدام ضمع AMD ، ETC1/2 باستخدام أداة ضغط نسيج MALI ، و PVRTC1 باستخدام PVRTEXTOOL من TECH TECH. يحتوي RenderDoc على عارض ملف مفيدة للعديد من التنسيقات. يدعم Mac OSX Finder معاينة ملفات .exr و .ktx بتنسيقات GPU المختلفة. يمكن لـ Windows 11 Explorer معاينة ملفات .DDS. يعد عارض OpenHDR عبر الإنترنت مفيدًا لعرض ملفات صور .exr/.hdr.
يحتوي دليل "WebGL" على أربعة عروض تجريبية بسيطة على الويب تستخدم ترميز العدوى والضاغط المترجمة إلى WASM مع emscripten. هذه العروض التوضيحية على الإنترنت هنا. شاهد المزيد من التفاصيل في ملف ReadMe هنا.
قد يتم تجميع كل من الترميز والتشفير باستخدام emscripten إلى webassembly واستخدامه على الويب. توجد مجموعة من أغلفة JavaScript إلى برنامج الترميز ، المكتوب في C ++ مع امتدادات emscripten ، في webgl/transcoding/basis_wrappers.cpp
. يدعم غلاف JavaScript جميع الميزات والأوضاع تقريبًا ، بما في ذلك مقطع الفيديو الملمس. راجع ملفات readme.md و cmakelists.txt في webgl/transcoder
و webgl/encoder
.
لبناء Transcoder WASM ، بعد تثبيت emscripten:
cd webgl/transcoder/build
emcmake cmake ..
make
لبناء تشفير WASM:
cd webgl/encoder/build
emcmake cmake ..
make
هناك عروض ويب للترميز/الترميز البسيطة ، الموجودة في webgl/ktx2_encode_test
و webgl/texture_test
، والتي تُظهر كيفية استخدام API JavaScript Wrapper's Encoder و Transcoder.
بعض الأمثلة البسيطة التي توضح كيفية استدعاء C ++ تشفير و API لمكتبة Transcoder مباشرة في example/examples.cpp
.
انظر الويكي هنا.
يمكنك تنزيل وتثبيت أساس Universal باستخدام مدير التبعية VCPKG:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
vcpkg install basisu
يتم الاحتفاظ بالأساس العالمي للمنفذ في VCPKG من قبل أعضاء فريق Microsoft والمساهمين في المجتمع. إذا كان الإصدار قديمًا ، فيرجى إنشاء مشكلة أو سحب طلب على مستودع VCPKG. (9/10/2024: دعم UASTC HDR غير متوفر هنا بعد.)
مكتبات الترميز والتشفير الأساسي هي Apache 2.0. لا يستخدم Transcoder أي مكتبات أو تبعيات من الطرف الثالث. انظر الترخيص.
مكتبة التشفير هي Apache 2.0 ، لكنها تستخدم بعض وحدات الطرف الثالث مفتوح المصدر (في "التشفير/3rdparty" وفي دليل "ZSTD") لتحميل. Qoi و .dds و .exr ، للتعامل مع ضغط ZSTD ، وللتحمل. قم بفك كتل نسيج ASTC. انظر التراخيص ومجلدات.
تم تحديث المستودع ليكون متوافقًا مع أداة فحص ترخيص إعادة الاستخدام (https://reuse.software/). انظر. .reuse
Subdedectory.
Online .exr HDR صورة ملف
Windows HDR + WCG Viewer - عارض صورة HDR حقيقي لنظام التشغيل Windows. انظر أيضا github repo.
Renderdoc
AMD ضاغط
Microsoft's DirectXtex
pvrtextool
أداة ضغط نسيج Mali - تم إهمالها الآن
للحصول على المزيد من الروابط والأوراق والأدوات/المكتبات ، راجع نهاية مواصفات نسيج UASTC HDR.
البريد الإلكتروني: info @ binomial dot info ، أو اتصل بنا على Twitter
إليكم صفحة Wiki.