Nieuwe rendering-engines voor OpenGL en Vulkan zijn toegevoegd aan GTK.

De ontwikkelaars van de GTK-bibliotheek hebben de beschikbaarheid aangekondigd van twee nieuwe render-engines - 'ngl' en 'vulkan', die gebruikmaken van de grafische API's OpenGL (GL 3.3+ en GLES 3.0+) en Vulkan. De nieuwe engines zijn opgenomen in de experimentele release GTK 4.13.6. In de experimentele tak van GTK wordt de ngl-engine nu standaard gebruikt, maar als er aanzienlijke problemen worden vastgesteld, zal in de volgende stabiele versie 4.14 de oude 'gl' render-engine worden teruggeplaatst.

De nieuwe engines worden gepositioneerd als uniform en zijn opgebouwd uit een enkele codebasis. Het idee van uniformiteit is dat de API Vulkan als basis wordt gebruikt, bovenop welke voor OpenGL een apart abstractieniveau is gecreëerd dat rekening houdt met de verschillen tussen OpenGL en Vulkan. Deze benadering heeft het mogelijk gemaakt om in beide engines een gemeenschappelijke infrastructuur te benutten voor het verwerken van het scène-grafiek, transformaties, het cachen van texturen en glyphs. Uniformiteit heeft ook de onderhoudbaarheid van de codebasis van beide engines aanzienlijk vereenvoudigd en ervoor gezorgd dat deze up-to-date en gesynchroniseerd blijft.

In tegenstelling tot de oude 'gl' engine, waarin voor elk type rendernode een aparte eenvoudige shader werd gebruikt en periodiek de gegevens werden hersorteerd tijdens offscreen-rendering, passen de nieuwe engines in plaats van offscreen-rendering een complexe shader (ubershader) toe, die gegevens uit de buffer interpreteert. In de huidige fase blijft de nieuwe implementatie achter bij de oude qua optimalisatie-niveau, omdat de huidige focus ligt op de correctheid van de werking en de eenvoud van het onderhoud.

Nieuwe mogelijkheden die ontbreken in de oude 'gl' engine:

  • Antialiasing - stelt je in staat om kleine details te behouden en zorgt voor een meer gelijkmatige weergave van de contouren.
    Nieuwe rendering-engines voor OpenGL en Vulkan zijn toegevoegd aan GTK.
  • Het creĆ«ren van willekeurige gradiĆ«nten, waarbij elk aantal kleuren en antialiasing kan worden gebruikt (de 'gl' engine ondersteunde alleen lineaire, radiale en conische gradiĆ«nten met 6 kleur stops).
    Nieuwe rendering-engines voor OpenGL en Vulkan zijn toegevoegd aan GTK.
  • Fractionele schaal (fractional scale), waarmee niet-natuurlijke schaalwaarden kunnen worden ingesteld, bijvoorbeeld bij een schaal van 125% voor een venster van 1200Ɨ800 zal een buffer van 1500Ɨ1000 worden toegewezen, in plaats van 2400Ɨ1600 zoals in de oude engine.
  • Ondersteuning voor DMA-BUF-technologie voor het gebruik van meerdere GPU's en om bepaalde bewerkingen naar een andere GPU te verplaatsen.
  • Veel rendering knooppunten worden correct verwerkt, waar er problemen waren in de oude implementatie.

Bij de beperkingen van de nieuwe engines wordt genoemd dat er geen ondersteuning is voor positionering op fractionele waarden en glshader knooppunten, die sterk afhankelijk waren van de kenmerken van de oude engine en waarvan de noodzaak is verdwenen na de toevoeging van ondersteuning voor knooppunten met maskers en texturen met transparantie. Ook wordt de mogelijkheid vermeld van mogelijke problemen met grafische stuurprogramma's als gevolg van de wijziging in de manier van werken met stuurprogramma's.

In de toekomst is het niet uitgesloten dat er rendering engines worden gemaakt op basis van het nieuwe uniforme model, die Metal gebruiken in macOS en DirectX in Windows, maar het creƫren van dergelijke engines wordt bemoeilijkt door het gebruik van andere talen voor shaders (in de engines "ngl" en "vulkan" wordt de GLSL-taal gebruikt, dus voor Metal en Direct moet ofwel de shaders worden gedupliceerd, ofwel is er een laag op basis van de SPIRV-Cross-tool nodig).

In de toekomstplannen wordt de ondersteuning voor HDR en middelen voor correcte kleurbeheer genoemd, evenals de ondersteuning voor padrendering aan de GPU-kant, de mogelijkheid om glyphs te renderen, rendering buiten de hoofdthread en prestatiesoptimalisatie voor oude en low-end apparaten. Op dit moment is de prestaties van de "vulkan" engine vergelijkbaar met die van de oude "gl" engine. De "ngl" engine presteert slechter dan de oude "gl" engine, maar de huidige prestaties zijn voldoende voor rendering met 60 of 144 FPS. Verwacht wordt dat de situatie zal veranderen na optimalisatie.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster