Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikipédial'encyclopédie libre
Rechercher

OptiX

Un article de Wikipédia, l'encyclopédie libre.
OptiX

Description de l'image OptiX Julia set.png.
Informations
Développé parNvidiaVoir et modifier les données sur Wikidata
Écrit enC++ etCVoir et modifier les données sur Wikidata
Système d'exploitationMicrosoft Windows,Linux etmacOSVoir et modifier les données sur Wikidata
EnvironnementIBM compatible PCVoir et modifier les données sur Wikidata
TypeLancer de rayonVoir et modifier les données sur Wikidata
Site webdeveloper.nvidia.com/optixVoir et modifier les données sur Wikidata

modifier -modifier le code -voir Wikidata(aide)

Le moteur d'accélération logicielOptiX est uneinterface de programmation (API) delancer de rayons[1], développée parNvidia. Les calculs sont confiés auxprocesseurs graphiques (GPU) par l'intermédiaire de l'API introduite avec le langage de programmationCUDA, disponible uniquement pour lescartes graphiques Nvidia. OptiX fait partie de la suite logicielle Nvidia GameWorks. C'est une API de haut niveau, "au service de l'algorithme", ce qui signifie qu'elle est conçue pour englober l'ensemble de l'algorithme dont leray tracing fait partie, et pas seulement le ray tracing lui-même. Cela permet au moteur OptiX d'exécuter l'algorithme le plus complet avec une grande flexibilité sans avoir à modifier l'application.

Généralement, les jeux vidéo utilisent pour leurrendu larastérisation plutôt que lelancer de rayons.

SelonNvidia, OptiX est conçu pour être suffisamment flexible pour les «définitions de procédures et les approches de rendu hybrides». Outre le renduinfographique, OptiX facilite également la conceptionoptique etacoustique, la recherche sur lesrayonnements et l'électromagnétisme[2], les requêtes d'intelligence artificielle et l'analyse descollisions[3].

Spécificités du ray tracing

[modifier |modifier le code]
Unensemble de Julia dessiné avec OptiX, servant également d'exemple dans le kit de développement logiciel (SDK).

OptiX fonctionne à partir d'instructions fournies par l'utilisateur (sous la forme de noyauxCUDA), relatives à l'action d'un rayon dans des circonstances particulières pour simuler un processus complet de lancer de rayons[4].

Un rayon lumineux (ou tout autre type de rayon) peut avoir un comportement différent lorsqu'il frappe une surface particulière plutôt qu'une autre. OptiX permet de personnaliser ces conditions de frappe avec des programmes fournis par l'utilisateur. Ces programmes sont écrits en CUDA C ou directement en codePTX et sont liés entre eux lorsqu'ils sont utilisés par le moteur OptiX.

Pour utiliser OptiX, le système doit disposer d'unGPU compatible avecCUDA et de la boîte à outils (toolkit) CUDA.

L'utilisation du moteur OptiX dans une application de lancer de rayons implique généralement les étapes suivantes :

  • Définition de programmes pour la génération de rayons (les rayons peuvent par exemple être tirés en parallèle, enperspective ou comme un champ degradient), l'absence de rayon (lorsqu'un rayon ne traverse aucun objet), un programme d'exception facultatif (si le rayon ne peut pas être lancé pour une raison quelconque), un programme deboîte englobante (qui fournit un test d'intersection de boîte englobante pour un objet donné) et un programme de calcul d'intersection.

Plusieurs exemples de ces programmes sont disponibles avec lekit de développement (SDK) du programme.

// Exemple de code utilisant l'API OptiX ///* Programme de génération de rayon */rtProgramCreateFromPTXFile(*context,path_to_ptx,"pinhole_camera",&ray_gen_program);rtContextSetRayGenerationProgram(*context,0,ray_gen_program);/* Programme d'absence de rayon */rtProgramCreateFromPTXFile(*context,path_to_ptx,"absence",&miss_program);rtContextSetMissProgram(*context,0,miss_program);/* Programme de boîte englobante et d'intersection */rtProgramCreateFromPTXFile(context,path_to_ptx,"boite_limites",&box_bounding_box_program);rtGeometrySetBoundingBoxProgram(*box,box_bounding_box_program);rtProgramCreateFromPTXFile(context,path_to_ptx,"boite_intersection",&box_intersection_program);rtGeometrySetIntersectionProgram(*box,box_intersection_program);

Les programmes de boîtes englobantes sont utilisés pour définir les volumes englobants destinés à accélérer le processus de lancer de rayons dans les structures d'accélération comme lesarbres kd ou dehiérarchie des volumes englobants.

  • Création des programmes de frappe la plus proche (closest hit) et frappe quelconque (any hit) : ces deux programmes déterminent le comportement d'un rayon lors de sa première intersection (frappe la plus proche) ou une intersection générique (frappe quelconque)
// Exemple de code utilisant l'API OptiX //rtProgramCreateFromPTXFile(context,path_to_ptx,"closest_hit_radiance",&closest_hit_program);rtProgramCreateFromPTXFile(context,path_to_ptx,"any_hit_shadow",&any_hit_program);/* Associe à une matière les programmes de frappe la plus proche et frappe quelconque */rtMaterialCreate(context,material);rtMaterialSetClosestHitProgram(*material,0,closest_hit_program);rtMaterialSetAnyHitProgram(*material,1,any_hit_program);
  • Définition desmémoires tampons et desvariables qui peuvent être utilisées dans les programmes fournis. Les mémoires tampons sont des zones de mémoire qui permettent au code hôte (le codeCPU normal) de communiquer avec le code du périphérique (le code exécuté sur leGPU) et vice versa. En interne, OptiX utilise les variables pour communiquer et transférer des données dans les deux sens grâce aux mémoires tampons.
  • Définition de la hiérarchie OptiX des objets, groupes, sélecteurs et autres nœuds de géométrie pour générer un graphe arborescent de l'ensemble de la scène à restituer
Un exemple de graphe pour NVIDIA OptiX

Afin de restituer une scène complexe ou de tracer des chemins différents pour n'importe quel rayon, OptiX tire profit du calcul parGPGPU en exploitant la plateforme NVIDIACUDA. Comme le processus de tir des rayons et la définition de leur comportement sont extrêmement personnalisables, OptiX peut être utilisé dans une multitude d'autres applications que celle du lancer de rayons.

OptiX Prime

[modifier |modifier le code]

À partir de la version 3.5.0 d'OptiX, une deuxième bibliothèque, appelée OptiX Prime, est ajoutée à l'ensemble. Elle fournit uneAPI rapide de bas niveau pour le lancer de rayons - construction de la structure d'accélération, traversée de la structure d'accélération etintersection rayon-triangle. Prime propose également une fonction de repli vers le processeur lorsqu'aucun GPU compatible n'est trouvé sur le système. Contrairement à OptiX, Prime n'est pas une API programmable, et ne prend donc pas en charge les primitives non triangulaires et lesombrages personnalisés. N'étant pas programmable, OptiX Prime n'encapsule pas l'intégralité de l'algorithme dont le lancer de rayons fait partie. Ainsi, Prime ne peut pas recompiler l'algorithme pour de nouveaux GPU, refaçonner le calcul en fonction des performances, ou utiliser un dispositif réseau comme leQuadro VCA.

Logiciels utilisant OptiX

[modifier |modifier le code]
  • Blender prend en charge OptiX depuis la version 2.81[5]
  • Le module complémentaire BlenderD-NOISE utilise des binaires OptiX pour le débruitage accéléré par IA[6]
  • FurryBall - Rendu d'images finales en qualité de production sur GPU en temps réel utilisant le lancer de rayon ainsi que la rastérisation
  • Ausalon SIGGRAPH 2011,Adobe présente OptiX dans une démonstration technologique de lancer de rayons par GPU pour l'animation[7]
  • AuSIGGRAPH 2013, OptiX est présenté dans l'outil de prévisualisation d'éclairage en temps réel basé sur GPU dePixar .
  • OptiX est intégré à la bibliothèque des développeurs de GameWorks avecPhysX et d'autres moteurs et frameworks graphiques basés surCUDA[8]
  • Adobe After Effects CC[9]
  • Daz Studio utilisait OptiX Prime Acceleration depuis son intégration àIray, mais la fonction a été supprimée dans la version 4.12.1.8[10]

Références

[modifier |modifier le code]
  1. « Scheduling in OptiX, the Nvidia ray tracing engine »,
  2. RobertFelbecker, LeszekRaschkowski, WilhelmKeusgen et MichaelPeter,2012 6th European Conference on Antennas and Propagation (EUCAP), IEEE Xplore,, 488–492 p.(ISBN 978-1-4577-0920-3,DOI 10.1109/EuCAP.2012.6206198), « Electromagnetic wave propagation in the millimeter wave band using the NVIDIA OptiX GPU ray tracing engine »
  3. Steven G. Parker, Heiko Friedrich, David Luebke et Keith Morley, « Magazine Communications of the ACM - GPU ray tracing »,Communications of the ACM, ACM,‎(lire en ligne, consulté le)
  4. Steven G. Parker, Heiko Friedrich, David Luebke et Keith Morley, « OptiX: a general purpose ray tracing engine »,ACM Transactions on Graphics (Tog), ACM,‎(DOI 10.1145/1778765.1778803,lire en ligne, consulté le)
  5. « Blender 2.81 Benchmarks On 19 NVIDIA Graphics Cards - RTX OptiX Rendering Performance Is Incredible », phoronix.com,(consulté le)
  6. « D-NOISE: Rapid AI Denoising for Blender »,Remington Creative,(consulté le)
  7. « Adobe showcasing OptiX in a technology demo for ray tracing motion graphics with GPUs », NVIDIA,(consulté le)
  8. « Nvidia announces Gameworks Program at Montreal 2013; supports SteamOS », NVIDIA,(consulté le)
  9. « GPU changes (for CUDA and OpenGL) in After Effects CC (12.1) | After Effects region of interest »(consulté le)
  10. « Daz Studio Changelog »,DAZ 3D(consulté le)

Voir aussi

[modifier |modifier le code]

Liens externes

[modifier |modifier le code]
v ·m
TechnologiesNvidia
Processeur graphique
Premiers Chipsets
Série RIVA
SérieGeForce
Architectures
Autres séries
GPU pourconsole
Électronique grand public
Chipsets nForce
Technologies
Logiciels
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=OptiX&oldid=212168678 ».
Catégories :
Catégories cachées :

[8]ページ先頭

©2009-2025 Movatter.jp