Que devrait écrire tout programmeur graphique [fermé]


18

J'ai vu cette question sur SO, mais ici je veux qu'elle se concentre sur GFX.

Donc, à votre avis, quelles applications / fonctionnalités chaque futur programmeur GFX devrait-il écrire / modifier pour s'améliorer?

Wiki communautaire car il n'y a pas de "bonne réponse".

LE: Ne fait pas référence à des jeux réels, mais à des fonctionnalités graphiques, par exemple changer quelque chose dans un moteur (par exemple, comment il charge des objets), faire un compositeur, etc.


Réponses:


22

Ma réponse est toujours la même: si vous n'en avez pas écrit auparavant, écrivez un raytracer.

Vous devrez traiter des structures d'optimisation, de la précision numérique et de toutes sortes d'autres problèmes, mais vous travaillerez également directement avec les mathématiques de la lumière d'une manière que vous faites rarement lorsque vous traitez avec tous les hacks et approximations qui composent un rendu de production en temps réel.

Supprimez tout l'édifice des systèmes de chargement, des mots à la mode de la semaine, différé ceci ou avant cela, et vous vous retrouvez enfin avec la lumière voyageant à travers un support. Au final, c'est tout ce qu'il y a de graphique.


Intéressant, j'envisageais de proposer également un raytracer, un très bon exercice de mathématiques. Je ne suis pas d'accord avec le fait que différé soit un mot à la mode de la semaine, c'est, comme le raytracing, un changement assez important dans la façon dont vous approchez votre rendu, ce qui, pour un programmeur graphique, semble être quelque chose dont vous devriez être conscient.
Kaj

Je dirais que l'optimisation n'est pas aussi importante que le traitement des maillages arbitraires, ce qui est une étape à laquelle beaucoup de gens ne parviennent jamais avec les raytracers.
Jonathan Fischoff

Je seconderais (troisième?) Cette suggestion, avec la mise en garde selon laquelle (comme mentionné), il doit prendre en charge les maillages, et ne pas s'arrêter simplement à des sphères brillantes sur un damier. Points bonus pour toute tentative d'illumination globale. Même si vous ne l'optimisez pas fortement en quelque chose de réellement utilisable , vous devez vous efforcer de comprendre quels bits sont lents et pourquoi.
JasonD

Et une mise en garde avec cette suggestion - bien que la lumière à travers un support soit tout ce qu'il y a de graphique, cela vous donnera très peu de formation sur ce dont vous avez besoin dans les environnements de production réels (actuels).
Kaj

1
+1 écrire un traceur de rayons était la chose la plus utile que j'ai apprise dans la classe de graphiste de mon collège
Bryan Denny

7

Il peut être de peu d'utilité pratique de nos jours, mais écrire sur un moteur de rendu logiciel, au moins un élémentaire (peut-être juste quelques cubes texturés en rotation), est un exercice utile.

Comprendre comment transformer, projeter, découper, trier en profondeur, pixelliser et texturer des polygones de carte vous-même vous permettra de mieux comprendre ce que font le matériel 3D et les API de rendu.


à peu près cela. sauf cela, un sprite blitter avec support alpha. ..ou au moins quelque chose, n'importe quoi, où vous manipulez les pixels par leurs valeurs de bits.
Lassi Kinnunen

6

Tout en ne rendant pas le code, je pense qu'écrire un compilateur BSP et le code de traversée qui l'accompagne est un bon exercice en mathématiques vectorielles.
Deuxièmement, un rendu différé. Non pas parce que c'est la réponse ultime au rendu, mais cela vous donnera un aperçu d'une autre approche du rendu.


2

Apprenez la mécanique et les compétences pour écrire de bons shaders. Bien que n'étant pas 100% nécessaire dans tous les cas, c'est une compétence précieuse à savoir.


Je suis d'accord avec votre réponse mais elle est trop large et certaines ressources et liens vers elles ne feraient pas de mal pour une réponse complète :).
lukas.pukenis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.