Er zijn nieuwe rendering-engines voor OpenGL en Vulkan toegevoegd aan GTK

De ontwikkelaars van de GTK-bibliotheek hebben de beschikbaarheid aangekondigd van twee nieuwe rendering-engines - "ngl" en "vulkan", die gebruik maken van de grafische API's OpenGL (GL 3.3+ en GLES 3.0+) en Vulkan. Nieuwe motoren zijn opgenomen in de experimentele release van GTK 4.13.6. In de experimentele GTK-branch wordt nu standaard de ngl-engine gebruikt, maar als er significante problemen worden geïdentificeerd in de volgende stabiele branch 4.14, zal de oude "gl"-renderingengine worden geretourneerd.

Nieuwe motoren zijn gepositioneerd als verenigd en samengesteld uit één enkele codebasis. De essentie van de unificatie is dat de Vulkan API als basis wordt gebruikt, waarbovenop een apart abstractieniveau voor OpenGL is gecreëerd, waarbij rekening wordt gehouden met de verschillen tussen OpenGL en Vulkan. Deze aanpak maakte het mogelijk om in beide motoren een gemeenschappelijke infrastructuur te gebruiken voor het verwerken van de scènegrafiek, transformaties, caching-texturen en glyphs. Unificatie vereenvoudigde ook aanzienlijk het onderhoud van de codebasis van beide motoren en hield ze up-to-date en gesynchroniseerd.

In tegenstelling tot de oude gl-engine, die een afzonderlijke, eenvoudige shader gebruikte voor elk type renderknooppunt en de gegevens periodiek opnieuw sorteerde tijdens offscreen-rendering, gebruiken de nieuwe engine in plaats van offscreen-rendering een complexe shader (ubershader) die de gegevens uit de buffer interpreteert. . In de huidige vorm blijft de nieuwe implementatie qua niveau van optimalisaties nog steeds achter bij de oude, omdat de nadruk in de huidige fase vooral ligt op correcte bediening en onderhoudsgemak.

Nieuwe functies die ontbreken in de oude gl-engine:

  • Contourvereffening - hiermee kunt u fijne details behouden en vloeiendere contouren bereiken.
    Er zijn nieuwe rendering-engines voor OpenGL en Vulkan toegevoegd aan GTK
  • Vorming van willekeurige gradiënten, die een willekeurig aantal kleuren kunnen gebruiken, en anti-aliasing (in de gl-engine werden alleen lineaire, radiale en conische gradiënten met 6 stopkleuren ondersteund).
    Er zijn nieuwe rendering-engines voor OpenGL en Vulkan toegevoegd aan GTK
  • Fractionele schaal, waarmee u niet-gehele schaalwaarden kunt instellen. Wanneer u bijvoorbeeld een schaal van 125% gebruikt voor een venster van 1200x800, wordt een buffer van 1500x1000 toegewezen, en niet 2400x1600 zoals in de oude engine.
  • Ondersteuning voor DMA-BUF-technologie voor het gebruik van meerdere GPU's en het overbrengen van individuele bewerkingen naar een andere GPU.
  • Veel renderingknooppunten die problemen hadden in de oude implementatie, worden correct verwerkt.

De beperkingen van de nieuwe motoren omvatten het gebrek aan ondersteuning voor positionering door niet-gehele waarden (fractionele positie) en glshader-knooppunten, die sterk verbonden waren met de kenmerken van de oude engine, en die niet langer nodig waren na het toevoegen van ondersteuning voor knooppunten met maskers (masker) en texturen met transparantie. Er wordt ook vermeld dat er een mogelijkheid bestaat dat er mogelijke problemen met grafische stuurprogramma's optreden als gevolg van veranderingen in de manier waarop met stuurprogramma's wordt gewerkt.

In de toekomst, op basis van het nieuwe uniforme model, is het maken van rendering-engines met behulp van Metal in macOS en DirectX in Windows niet uitgesloten, maar de creatie van dergelijke motoren wordt gecompliceerd door het gebruik van andere talen voor shaders (de “ngl ' en 'vulkan'-engines gebruiken de GLSL-taal, dus voor Metal en Direct zullen shaders moeten worden gedupliceerd of een laag moeten worden gebruikt die is gebaseerd op de SPIRV-Cross-toolkit).

Toekomstige plannen omvatten het bieden van HDR-ondersteuning en tools voor correct kleurbeheer, ondersteuning voor Path-rendering aan de GPU-kant, de mogelijkheid om glyphs weer te geven, off-stream rendering en prestatie-optimalisaties voor oudere apparaten en apparaten met een laag energieverbruik. In zijn huidige vorm liggen de prestaties van de "vulkan"-motor dicht bij de prestaties van de oude "gl"-motor. De "ngl"-engine is qua prestaties inferieur aan de oude "gl"-engine, maar de beschikbare prestaties zijn voldoende voor weergave op 60 of 144 FPS. De verwachting is dat de situatie na optimalisatie zal veranderen.

Bron: opennet.ru

Voeg een reactie