Les nouvelles fonctionnalités de DirectX Raytracing (DXR) Tier 1.1 peuvent fonctionner avec une seule prise en charge du pilote sans modification matérielle lourde

Matériel / Les nouvelles fonctionnalités de DirectX Raytracing (DXR) Tier 1.1 peuvent fonctionner avec une seule prise en charge du pilote sans modification matérielle lourde 3 minutes de lecture

Xbox



Le Ray Tracing est certainement une fonctionnalité que les joueurs, en particulier avec les cartes graphiques haut de gamme de NVIDIA et AMD, attendent avec impatience. Les principaux fabricants de GPU, qui incluront bientôt également Intel, construisent activement leur matériel pour prendre en charge la fonctionnalité qui rend de manière réaliste les effets de lumière et d'ombre basés sur les lois du monde réel de la physique et apporte des visuels hyperréalistes et immersifs.

Pendant ce temps, Microsoft s'assure que l'écosystème du système d'exploitation Windows est bien adapté en tant que plate-forme idéale pour jouer à des jeux haut de gamme. La plate-forme DirectX de la société, qui est depuis longtemps un standard de premier plan pour les jeux de bureau, est en cours de modification pour prendre en charge de manière native et même renforcer le «Ray Tracing en temps réel». En fait, le DirectX Raytracing (DXR) Tier 1.1 est le dernier standard qui prend en charge un ensemble de nouvelles fonctionnalités. Certaines des fonctionnalités intéressantes que le lancer de rayons en temps réel pourrait prendre en charge dans la fonctionnalité proche incluent le lancer de rayons en ligne, Appels DispatchRays () via ExecuteIndirect () , Objets d'état croissants via AddToStateObject () , GeometryIndex () dans les shaders de lancer de rayons , et plus. Examinons certaines des nouvelles fonctionnalités prises en charge par DirectX 12 pour Windows 10 pour le lancer de rayons.



Lancer de rayons en ligne:

Autre forme de lancer de rayons, le lancer de rayons en ligne n'utilise pas de shaders dynamiques ni de tables de shaders distincts. L'API de la fonctionnalité masque l'accès à la structure d'accélération (par exemple, traversée de la structure de données, boîte, intersection de triangle). Cela laisse essentiellement au matériel / pilote. Il est intéressant de noter que tout le code d'application nécessaire pour gérer à la fois les appels des candidats énumérés et le résultat d'une requête (par exemple, hit vs miss) peut être autonome dans le shader pilotant le RayQuery .



Le traçage de rayons en ligne offre aux développeurs la possibilité de pousser pour plus de processus de traçage de rayons, au lieu de confier entièrement la planification du travail au système. Inutile d'ajouter, cette optimisation des processus est assez utile pour les développeurs qui se bousculent avec plusieurs ombres. De plus, les développeurs ont une liberté totale pour passer dynamiquement au formulaire en ligne pour de simples rayons récursifs.



DispatchRays () Appels via ExecuteIndirect ():

Cette fonctionnalité permet aux shaders sur le GPU de générer une liste de DispatchRays () appels. Ceux-ci incluent des paramètres individuels tels que le nombre de threads, les paramètres de la table de shader et d'autres paramètres de paramètres racine. Le meilleur aspect de la fonctionnalité est que la liste entière peut être exécutée sans que le processus n'ait jamais besoin d'un aller-retour intermédiaire vers le processeur.



Tous les scénarios qui préparent le travail de raytracing sur le GPU, puis le génèrent immédiatement, devraient énormément bénéficier de cette fonctionnalité. Inutile d'ajouter, cette fonctionnalité devrait beaucoup aider avec plusieurs scénarios de lancer de rayons adaptatifs tels que l'élimination, le tri, la classification et le raffinement basés sur les shaders.

Objets d'état croissants via AddToStateObject ():

Une fonctionnalité d'optimisation, cette nouvelle tente de réduire les threads de traitement inutiles. De nombreuses applications et processus créent aujourd'hui un pipeline de traçage de rayons entièrement rempli, ce qui gaspille beaucoup de ressources et pèse sur le système. Actuellement, le runtime D3D12 analyse toujours l'objet d'état complet créé à partir des blocs de construction.

Même si cela est fait pour vérifier l'exactitude, avec AddToStateObject () , un nouvel objet d'état peut être créé en ajoutant des shaders à un objet d'état de shader existant. Inutile d'ajouter que la surcharge du processeur restera proportionnelle uniquement aux données ajoutées.

GeometryIndex () Dans les shaders de lancer de rayons:

Cette fonction permet aux ombrages de distinguer les géométries dans les structures d'accélération de niveau inférieur. Auparavant, les géométries pouvaient être distinguées en variant les données dans les enregistrements de la table de shader pour chaque géométrie, mais avec la nouvelle méthode, l'application est libérée de la charge. De plus, si toutes les géométries partagent le même shader, l'application peut choisir de définir le MultiplierForGeometryContributionToHitGroupIndex paramètre à TraceRay () 0.

Cela garantira essentiellement que l'indice de géométrie ne sera plus pris en compte dans le calcul d'indexation de la table d'ombrage à fonction fixe. Pourtant, si nécessaire ou souhaité, les shaders peuvent utiliser GeometryIndex () pour indexer dans les propres structures de données de l'application.

Outre les fonctionnalités susmentionnées, le DirectX Raytracing (DXR) Tier 1.1 comprend également RAY_FLAG_SKIP_TRIANGLES et RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES drapeaux. Bien que ces indicateurs soient disponibles pour les appels de raytracing individuels, ils peuvent également être déclarés globalement via la configuration du pipeline de raytracing.

Il est tout à fait clair que Microsoft tente d'optimiser DirectX 12 pour les jeux à forte intensité graphique. De plus, avec le lancer de rayons promettant d'être l'une des fonctionnalités les plus importantes pour les jeux et les joueurs haut de gamme, la société veille à ce que le système, le processeur et Les GPU sont utilisés de manière optimale avec des redondances minimales.

Mots clés directx nvidia tracé laser RTX