DOMANDA Imparare la Programmazione Grafica 3D... come/dove??

Stato
Discussione chiusa ad ulteriori risposte.

xNemesiSx

Utente Attivo
218
14
CPU
AMD Phenom II x6 Black Edition
Scheda Madre
MSI Military Class 990FXA-GD80
HDD
1TB HDD, 500GB HDD
RAM
Corsair 8GB 1600mhz
GPU
2x AMD Radeon 6970 by Gigabyte - Crossfire
PSU
Enermax 80+ - 1250w
Case
Enermax Uber Chakra
OS
Windows 7 Ultimate 64bit
Salve gente! Non ho mai usato il forum di Tomshw per fare domande del genere.. ma eccomi qui :)

Sto cercando di capire da che parte iniziare a studiare il mondo che sta dietro alla computer grafica 3d.. intendo pipeline grafica, shaders, e altro (sia di api come opengl, che di engine già pronti come unity). Fino ad arrivare ad essere capaci di scrivere shader complesse, e magari in futuro anche un engine 3d tutto mio.

Non riesco a capire se esistono percorsi di studi tradizionali a riguardo (specialmente in italia).. magari qualche magistrale. master o dottorato che potrei seguire dopo aver concluso i miei studi ad ingegneria informatica.

Oppure è una cosa che va imparata da soli? Se si, da dove posso iniziare?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,210
1,846
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Mi sentirei di indirizzarti alle note di Encelo (Angelo) su del materiale utile: https://encelo.github.io/notes.html
Penso proprio possano esserti d'aiuto.

Ci sono anche testi comunque. Dai un occhio online, ma sul gamedev si trova un po' di materiale.
 

xNemesiSx

Utente Attivo
218
14
CPU
AMD Phenom II x6 Black Edition
Scheda Madre
MSI Military Class 990FXA-GD80
HDD
1TB HDD, 500GB HDD
RAM
Corsair 8GB 1600mhz
GPU
2x AMD Radeon 6970 by Gigabyte - Crossfire
PSU
Enermax 80+ - 1250w
Case
Enermax Uber Chakra
OS
Windows 7 Ultimate 64bit
Mi sentirei di indirizzarti alle note di Encelo (Angelo) su del materiale utile: https://encelo.github.io/notes.html
Penso proprio possano esserti d'aiuto.

Ci sono anche testi comunque. Dai un occhio online, ma sul gamedev si trova un po' di materiale.

Che tu sappia esistono percorsi di studio "standard"? Tipo lauree o PhD che ti facciano specializzate in questo settore
 

xNemesiSx

Utente Attivo
218
14
CPU
AMD Phenom II x6 Black Edition
Scheda Madre
MSI Military Class 990FXA-GD80
HDD
1TB HDD, 500GB HDD
RAM
Corsair 8GB 1600mhz
GPU
2x AMD Radeon 6970 by Gigabyte - Crossfire
PSU
Enermax 80+ - 1250w
Case
Enermax Uber Chakra
OS
Windows 7 Ultimate 64bit
Se non hai problemi a partire come autodidatta, allora questo e questo potrebbero aiutarti


Assolutamente nessun problema a partire da autodiatta :) semplicemente mi domandavo se esistesse un percorso di studi da seguire.. ne esistono?

Grazie per i libri.

Però dici che è meglio iniziare da directx o da opengl?
 

Marcus Aseth

Utente Attivo
404
138
OS
Windows 10
Assolutamente nessun problema a partire da autodiatta :) semplicemente mi domandavo se esistesse un percorso di studi da seguire.. ne esistono?

Grazie per i libri.

Però dici che è meglio iniziare da directx o da opengl?

Per i corsi di studio so che Digipen ha qualcosa, citando dal loro sito:
CS 251Introduction to Computer Graphics (3 cr.)
Prerequisite(s): CS 170
This course provides a high-level overview of 3D computer graphics. It is intended for game designers and artists to enable them to understand the fundamental components of graphics engines and their applications in real-time simulation and video game software. Course topics include graphics pipeline architecture, 3D transformation operations, viewing and projection, lighting and shading models, surface detail techniques, shadow algorithms, hidden object culling and removal techniques, 3D object modeling, and animation and physically-based motion control. The popular graphics programming languages (GDI plus, OpenGL, DirectX) and shader programming are also discussed in the course.
e scommetto che hanno anche altri corsi al riguardo, ma non so per certo.

Se vuoi provare come autodidatta, un'idea è magari prima di mettere mano ai libri che ho linkato, partire facendo giochi semplici 2D come pacman ecc... C'è proprio una "challenge" su gamedev.net nella sezione contest

Inizia con DirectX :)
l'API è migliore e piu facile da usare ed è meglio anche per altre ragioni, OpenGL ti offre la portabilità, ma puoi comunque imparare OpenGL in seguito. DirectX per iniziare è la scelta migliore
Se vuoi una spiegazione piu approfondita del perchè, ascolta lui a 13:05
 

Marcus Aseth

Utente Attivo
404
138
OS
Windows 10
inoltre sempre citando Digipen:
CS 200Computer Graphics I (3 cr.)


Prerequisite(s): CS 170, MAT 140



This course presents fundamental mathematical elements, data structures, and algorithms useful for animating and viewing 2D primitives. The course aims to fulfill two objectives. The first objective is to provide students with a sufficient mathematical and algorithmic background to design and implement 2D graphics applications. The second objective is to prepare students with the knowledge required for writing 3D graphics applications. The first half of the course deals with scan-conversion algorithms for rasterizing 2D primitives such as lines, circles, ellipses, triangles, and arbitrary polygons. The second half of the course is concerned with the viewing and animation of these 2D primitives. The course covers topics such as interpolation techniques, transformations, culling, clipping, animation techniques, and the 2D viewing pipeline.
CS 250Computer Graphics II (3 cr.)


Prerequisite(s): CS 200



This course examines the mathematical elements and algorithms used in the design and development of real-time 3D computer graphics applications, such as games, cockpit simulators, and architectural walk-throughs. 3D computer graphics involve drawing pictures of 3D objects, usually on a 2D screen. This process of generating a 2D image of a 3D graphics application can be described as a series of distinct operations performed on a set of input data. Each operation generates results for the successive one. This process is called the graphics rendering pipeline, and it is the core of real-time computer graphics. The graphics pipeline can be conceptualized as consisting of three stages: application, transformation, and rasterization. The course begins by introducing the 3D graphics pipeline. The application stage is examined from the viewpoint of the representation, modeling, and animation of 3D objects. Topics include user interaction, camera animation techniques, simulation of dynamic objects, and collision detection techniques. Next, the course examines the process of mapping 3D graphic objects from model-space to viewport coordinates. The transformation stage implements this process. Finally, the conversion of a geometric primitive in viewport coordinates into a 2D image is studied. The rasterization stage implements this final process.

CS 300Advanced Computer Graphics I (3 cr.)


Prerequisite(s): CS 250



This course introduces students to algorithms that are essential to creating photorealistic images in interactive simulations. Topics covered include an overview of modern GPU (graphics processor unit) architecture and the common graphics APIs used, including OpenGL and DirectX. Rendering techniques covered include texturing, illumination models, transparency, shading algorithms, mapping techniques (bump mapping, environment/reflection mapping, etc.), and shadows. Students learn how to implement all algorithms by using vertex and pixel shaders.
CS 350Advanced Computer Graphics II (3 cr.)


Prerequisite(s): CS 300



This course deals with the efficient representation and processing of complex 3D scenes in order to avoid bottlenecks in the use of the CPU and the GPU. Specific topics include a variety of spatial data structures (binary space-partitioning trees, octrees, kd-trees, and grid data structures), several object-culling methods (occlusion, viewport, and portal), and finally the construction and uses of bounding volumes and their hierarchies for collision detection and related geometric operations.
 

pabloski

Utente Èlite
2,868
916
Non riesco a capire se esistono percorsi di studi tradizionali a riguardo (specialmente in italia).. magari qualche magistrale. master o dottorato che potrei seguire dopo aver concluso i miei studi ad ingegneria informatica.

Se hai tempo prova questi corsi online https://www.coursera.org/specializations/game-development

Comunque sia ho visto che chiedevi se conviene usare Direct3D o OpenGL. Direi nessuna delle due. A meno che non ti interessi studiare le basi della manipolazione di spazi 3D, non c'è verso di realizzare qualcosa di utile usando semplicemente le API 3D. C'è troppa complessità tra un gioco e un'API 3D e la dovrai implementare tu.

Non è un caso che anche per apprendere si fa uso ed abuso di Unity3D. Il punto è che è facile venire assorbiti dalla mania di fare tutto, dal game engine al gioco completo. Non farlo. Un game engine è una bestia di una complessità assurda, che sfrutta modelli matematici complessi ( come se non bastasse già la complessità sul lato programmazione ). Finiresti per essere assorbito da un progetto che ti lascerebbe senza motivazione ed energie ben presto.
 

xNemesiSx

Utente Attivo
218
14
CPU
AMD Phenom II x6 Black Edition
Scheda Madre
MSI Military Class 990FXA-GD80
HDD
1TB HDD, 500GB HDD
RAM
Corsair 8GB 1600mhz
GPU
2x AMD Radeon 6970 by Gigabyte - Crossfire
PSU
Enermax 80+ - 1250w
Case
Enermax Uber Chakra
OS
Windows 7 Ultimate 64bit
Se hai tempo prova questi corsi online https://www.coursera.org/specializations/game-development

Comunque sia ho visto che chiedevi se conviene usare Direct3D o OpenGL. Direi nessuna delle due. A meno che non ti interessi studiare le basi della manipolazione di spazi 3D, non c'è verso di realizzare qualcosa di utile usando semplicemente le API 3D. C'è troppa complessità tra un gioco e un'API 3D e la dovrai implementare tu.

Non è un caso che anche per apprendere si fa uso ed abuso di Unity3D. Il punto è che è facile venire assorbiti dalla mania di fare tutto, dal game engine al gioco completo. Non farlo. Un game engine è una bestia di una complessità assurda, che sfrutta modelli matematici complessi ( come se non bastasse già la complessità sul lato programmazione ). Finiresti per essere assorbito da un progetto che ti lascerebbe senza motivazione ed energie ben presto.

Certo, se voglio fare un videogioco, specialmente se da solo, non penserei mai e poi mai di mettermi a fare il mio engine! Uso già unity 3d, volevo semplciemente imparare un api come opengl o directx per conoscenza personale e skill in più. Non che abbia intenzioni serie di partire da un foglio bianco e farmi un engine+gioco :)

Per i corsi di studio so che Digipen ha qualcosa, citando dal loro sito:

e scommetto che hanno anche altri corsi al riguardo, ma non so per certo.

Se vuoi provare come autodidatta, un'idea è magari prima di mettere mano ai libri che ho linkato, partire facendo giochi semplici 2D come pacman ecc... C'è proprio una "challenge" su gamedev.net nella sezione contest

Inizia con DirectX :)
l'API è migliore e piu facile da usare ed è meglio anche per altre ragioni, OpenGL ti offre la portabilità, ma puoi comunque imparare OpenGL in seguito. DirectX per iniziare è la scelta migliore
Se vuoi una spiegazione piu approfondita del perchè, ascolta lui a 13:05

Grazie per la dritta su directx :)

Non conoscevo questa digipen, sembra veramenre una bella scuola. Non ho ancora guardato bene il sito e non ho ben capito.. ma fa corsi online? Sono ugualmente riconosciuti?
 
Ultima modifica:

xNemesiSx

Utente Attivo
218
14
CPU
AMD Phenom II x6 Black Edition
Scheda Madre
MSI Military Class 990FXA-GD80
HDD
1TB HDD, 500GB HDD
RAM
Corsair 8GB 1600mhz
GPU
2x AMD Radeon 6970 by Gigabyte - Crossfire
PSU
Enermax 80+ - 1250w
Case
Enermax Uber Chakra
OS
Windows 7 Ultimate 64bit
Comunque mi sembra un percorso veramente arduo quello di imparare nel suo completo la programmazione grafica.. io alla fine dei conti sono interessato principalmente alle shader, e a capire i concetti base dietro ad un engine. Non a realizzarmene uno tutto mio.

Dite che si può essere bravissimi shader artist senza sapere come farsi un proprio engine? hahah
 

Marcus Aseth

Utente Attivo
404
138
OS
Windows 10
1)Non penso Digipen sia online.

2)Non vedo perchè non si potrebbe, se hai gia una buona padronanza di C++ puoi partire direttamente con "Introduction to 3d Game Programming using DirectX 11" e quello dovrebbe darti delle solide basi al riguardo.
 

xNemesiSx

Utente Attivo
218
14
CPU
AMD Phenom II x6 Black Edition
Scheda Madre
MSI Military Class 990FXA-GD80
HDD
1TB HDD, 500GB HDD
RAM
Corsair 8GB 1600mhz
GPU
2x AMD Radeon 6970 by Gigabyte - Crossfire
PSU
Enermax 80+ - 1250w
Case
Enermax Uber Chakra
OS
Windows 7 Ultimate 64bit
1)Non penso Digipen sia online.

2)Non vedo perchè non si potrebbe, se hai gia una buona padronanza di C++ puoi partire direttamente con "Introduction to 3d Game Programming using DirectX 11" e quello dovrebbe darti delle solide basi al riguardo.

Grazie ancora :)

Giusto un ultima domanda, sempre per informazione.. se volessi studicchiarmi la render pipeline di un engine già bello e pronto come Unity o Unreal? Come si fa? Da dove si parte :asd: Specialmente per unity, che di recente ha annunciato la nuova scriptable render pipeline
 

Marcus Aseth

Utente Attivo
404
138
OS
Windows 10
Bhe posso dirti per certo che la rendering pipeline è spiegata nel dettaglio nel libro sopra a partire dal quinto capitolo, percui direi che si parte da lì (se vai come autodidatta). Inoltre scaricando l'Unreal engine 4 hai accesso a tutto il codice dell'engine, percui se ti senti abbastanza avventuroso, potresti aprire qualcuno di quei .cpp e .h con visual studio e dare un'occhiata al codice di persona, anche se credo non ne verrà nulla di buono, solo mal di testa e frustrazione xD
 

Marcus Aseth

Utente Attivo
404
138
OS
Windows 10
By the way, stando ad un articolo del 2015, al tempo l'unreal engine codebase era oltre 2 Milioni di linee di codice... in pratica se ogni giorno studi 1000 linee del codice dell'engine, dovresti spendere 5 anni e mezzo per vedere tutto il codice... :D
Giusto per mettere in prospettiva di cosa stiamo parlando.
 
  • Mi piace
Reazioni: xNemesiSx

xNemesiSx

Utente Attivo
218
14
CPU
AMD Phenom II x6 Black Edition
Scheda Madre
MSI Military Class 990FXA-GD80
HDD
1TB HDD, 500GB HDD
RAM
Corsair 8GB 1600mhz
GPU
2x AMD Radeon 6970 by Gigabyte - Crossfire
PSU
Enermax 80+ - 1250w
Case
Enermax Uber Chakra
OS
Windows 7 Ultimate 64bit
By the way, stando ad un articolo del 2015, al tempo l'unreal engine codebase era oltre 2 Milioni di linee di codice... in pratica se ogni giorno studi 1000 linee del codice dell'engine, dovresti spendere 5 anni e mezzo per vedere tutto il codice... :D
Giusto per mettere in prospettiva di cosa stiamo parlando.

Non oso immaginare quanto lavoro di quante persone ci stia dietro :asd:
Ovviamente non tento nemmeno di studiare il codice, solo avere un idea un po' più specifica del suo funzionamento.
Se mi dici che nel libro viene spiegato bene, andrò per quello :)

Grazie
 
Stato
Discussione chiusa ad ulteriori risposte.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili