Microsoft Details DirectX Raytracing Tier 1.1, nouvelles fonctionnalités DirectX 12



Microsoft detailed feature additions to the DirectX 12 3D graphics API, and an expansion of its DirectX Ray-tracing (DXR) API to Tier 1.1. The updated APIs will be included with the Windows 10 major update that's scheduled for the first half of 2020 - the features are accessible already for developers in Windows Insider preview builds. DXR 1.1 is the first major update to the API since its Q4-2018 launch, and adds three major features. To begin with, it brings support for extra shaders to an existing ray-tracing PSO (pipeline-state object), increasing the efficiency of dynamic PSO additions. Next up, is ExecuteIndirect for Raytracing support, described by Microsoft as 'enabling adaptive algorithms where the number of rays is decided on the GPU execution timeline.' This could be a hint what to expect from NVIDIA's next-generation GPUs that are expected for next year. Lastly, the API introduces support for Inline Raytracing, which gives developers more control over ray traversal and scheduling.

Dans l'API DirectX 12 principale, Microsoft introduit la prise en charge de Mesh Shaders, qui apporte des modifications systémiques au pipeline graphique. `` Les shaders de maillage et les shaders d'amplification sont la prochaine génération de capacité de traitement de la géométrie du GPU, remplaçant l'assembleur d'entrée actuel, le vertex shader, le hull shader, le tessellateur, le domaine shader et les étapes de géométrie shader '', écrit Microsoft dans son blog. DirectX Sampler Feedback contribue à la gestion de la mémoire en permettant aux jeux de mieux comprendre quels actifs de texture sont plus fréquemment utilisés et doivent rester résidents.

Microsoft décrit l'impact des performances de DirectX Sampler Feedback sur deux fonctionnalités clés de l'API: les textures diffusées et l'ombrage de l'espace de texture, comme suit:

Streaming de texture
De nombreux jeux de nouvelle génération ont le même problème: lors du rendu de mondes de plus en plus grands avec des textures de meilleure qualité, les jeux souffrent d'un temps de chargement plus long, d'une pression mémoire plus élevée, ou des deux. Les développeurs de jeux doivent réduire la qualité de leurs actifs ou charger des textures lors de l'exécution plus que nécessaire. Lorsque vous ciblez une résolution 4k, le MIP 0 entier d'une texture de haute qualité prend beaucoup de place! Il est hautement souhaitable de pouvoir charger uniquement les portions nécessaires des niveaux MIP les plus détaillés.

Une solution à ce problème est le streaming de texture, comme indiqué ci-dessous, où Sampler Feedback améliore considérablement la précision avec laquelle les bonnes données peuvent être chargées au bon moment.
  • Rendez la scène et enregistrez les tuiles de texture souhaitées à l'aide de la rétroaction de l'échantillonneur.
  • Si les tuiles de texture aux niveaux MIP souhaités ne sont pas encore résidentes:
    o Rendre la trame actuelle en utilisant un niveau MIP inférieur.
    o Soumettre la demande d'E / S disque pour charger les tuiles de texture souhaitées.
  • (Asynchrone) Mappez les tuiles de texture souhaitées aux ressources réservées lors du chargement.
Ombrage Texture-Espace
Un autre scénario intéressant est le Texture Space Shading, où les jeux calculent et stockent dynamiquement des valeurs de shader intermédiaires dans une texture, réduisant ainsi la redondance du rendu spatial et temporel. Le flux de travail ressemble à ce qui suit. Là encore, Sampler Feedback améliore considérablement l'efficacité en évitant le travail redondant en calculant des parties d'une texture qui n'étaient pas réellement nécessaires.
  • Dessinez une géométrie avec des shaders simples qui enregistrent les commentaires de l'échantillonneur pour déterminer quelles parties d'une texture sont nécessaires.
  • Soumettez un travail de calcul pour remplir les textures nécessaires.
  • Dessinez à nouveau la géométrie, cette fois avec de vrais shaders qui appliquent les données de texture générées.
Autres caractéristiques
  • Prise en charge DRED pour les marqueurs PIX
  • Nouvelles API pour interagir avec la couche de cartographie D3D9on12
  • Format R11G11B10_FLOAT pris en charge pour les ressources partagées
  • Nouveaux indicateurs d'allocation de ressources qui permettent de créer des ressources D3D12 sans les rendre également résidentes dans la mémoire du GPU, ou sans les initialiser à zéro, ce qui peut améliorer les performances de création de ressources
  • D3DConfig: un nouvel outil pour gérer les paramètres du panneau de configuration DirectX
Prise en charge PIX
La prise en charge PIX de ces nouvelles fonctionnalités DirectX 12 sera disponible dans les prochains mois. Nous fournirons plus de détails lors de la plongée en profondeur dans chaque fonctionnalité dans les semaines à venir.
Source: Microsoft DirectX Developer Blog