GTKге OpenGL жана Vulkan үчүн жаңы рендеринг кыймылдаткычтары кошулду

GTK китепканасынын иштеп чыгуучулары OpenGL (GL 3.3+ жана GLES 3.0+) жана Vulkan графикалык API'лерин колдонуу менен эки жаңы рендеринг кыймылдаткычтарынын - “ngl” жана “vulkan” болушун жарыялашты. Жаңы кыймылдаткычтар GTK 4.13.6 эксперименталдык чыгарылышында камтылган. Эксперименталдык GTK бутагында ngl кыймылдаткычы азыр демейки боюнча колдонулат, бирок кийинки 4.14 туруктуу бутагында олуттуу көйгөйлөр аныкталса, эски "gl" рендеринг кыймылдаткычы кайтарылып берилет.

Жаңы кыймылдаткычтар бирдиктүү болуп жайгаштырылган жана бир коддук базадан чогултулган. Бириктирүүнүн маңызы Vulkan API негиз катары колдонулат, анын үстүнө OpenGL менен Vulkan ортосундагы айырмачылыктарды эске алуу менен OpenGL үчүн өзүнчө абстракция деңгээли түзүлгөн. Бул ыкма эки кыймылдаткычта тең жалпы инфраструктураны сахнанын графигин, трансформацияларды, кэштелген текстураларды жана глифтерди иштетүү үчүн колдонууга мүмкүндүк берди. Унификация ошондой эле эки кыймылдаткычтын коддук базасын тейлөөнү жана аларды жаңыртып жана синхрондоштурууну кыйла жөнөкөйлөттү.

Рендердик түйүндүн ар бир түрү үчүн өзүнчө жөнөкөй шейдерди колдонгон жана экрандан тышкаркы рендеринг учурунда маалыматтарды мезгил-мезгили менен иреттеп турган эски gl кыймылдаткычынан айырмаланып, жаңы кыймылдаткычтар экрандан тышкаркы рендерингдин ордуна буферден алынган маалыматтарды чечмелеген татаал шейдерди (ubershader) колдонушат. . Учурдагы формада жаңы ишке ашыруу оптималдаштыруунун деңгээли боюнча мурдагысынан артта калууда, анткени азыркы этапта негизги көңүл туура иштөөгө жана тейлөөнүн жөнөкөйлүгүнө бурулат.

Эски gl кыймылдаткычында жок болгон жаңы функциялар:

  • Контурду тегиздөө - майда деталдарды сактоого жана жылмакай контурларга жетишүүгө мүмкүндүк берет.
    GTKге OpenGL жана Vulkan үчүн жаңы рендеринг кыймылдаткычтары кошулду
  • Каалаган сандагы түстөрдү жана антиалиазингди колдоно ала турган ыктыярдуу градиенттерди түзүү (gl кыймылдаткычында 6 токтоо түстүү сызыктуу, радиалдык жана конус градиенттери гана колдоого алынган).
    GTKге OpenGL жана Vulkan үчүн жаңы рендеринг кыймылдаткычтары кошулду
  • Бөлчөк шкала, бүтүн эмес шкала маанилерин коюуга мүмкүндүк берет, мисалы, 125x1200 терезе үчүн 800% масштабын колдонууда, эски кыймылдаткычтагыдай 1500x1000 эмес, 2400x1600 буфер бөлүнөт.
  • Бир нече GPU колдонуу жана жеке операцияларды башка GPUга түшүрүү үчүн DMA-BUF технологиясын колдоо.
  • Эски ишке ашырууда көйгөйлөр болгон көптөгөн рендеринг түйүндөрү туура иштетилет.

Жаңы кыймылдаткычтардын чектөөлөрү бүтүн эмес маанилер (бөлчөк позициясы) жана эски кыймылдаткычтын өзгөчөлүктөрү менен тыгыз байланышта болгон жана колдоону кошкондон кийин кереги жок болгон глшейдер түйүндөрүнүн позициясын колдоонун жоктугун камтыйт. маскалар (маска) жана ачыктык менен текстуралар менен түйүндөр. Ошондой эле, драйверлер менен иштөө ыкмасын өзгөртүүдөн улам келип чыккан графикалык драйверлер менен мүмкүн болгон көйгөйлөрдүн болушу мүмкүн экендиги айтылат.

Келечекте, жаңы бирдиктүү моделдин негизинде, macOS-те Metal жана DirectX-те Windows-та рендеринг кыймылдаткычтарын түзүү жокко чыгарылган эмес, бирок мындай кыймылдаткычтарды түзүү шейдерлер үчүн башка тилдерди колдонуу менен татаалдашат ("ngl" ” жана “vulkan” кыймылдаткычтары GLSL тилин колдонушат, ошондуктан Metal жана Direct үчүн шейдерлерди кайталаш керек же SPIRV-Cross инструменттеринин негизинде катмарды колдонуу керек).

Келечектеги пландарга HDR колдоосун жана түстөрдү туура башкаруу үчүн куралдарды, GPU тарабында Path рендерингди колдоону, глифтерди көрсөтүү мүмкүнчүлүгүн, агымдан сырткары рендерингди жана эски жана аз кубаттуу түзмөктөр үчүн иштөө оптималдаштырууну камтыйт. Азыркы формада «вулкан» кыймылдаткычынын иштеши эски «гл» кыймылдаткычынын иштешине жакын. "ngl" кыймылдаткычы эски "gl" кыймылдаткычына караганда иштеши боюнча төмөн, бирок жеткиликтүү аткаруу 60 же 144 FPSде көрсөтүү үчүн жетиштүү. Оптимизациядан кийин абал өзгөрөт деп күтүлүүдө.

Source: opennet.ru

Комментарий кошуу