Parliamo di 3D

Qui si parla di sprites, backgrounds, effetti speciali, programmi di disegno, ecc.
Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: Parliamo di 3D

Messaggio da Sla »

<<
Ultima modifica di Sla il 25/03/2013, 10:29, modificato 8 volte in totale.
eppure mi sembra tutto giusto...

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: Parliamo di 3D

Messaggio da Sla »

Scusate, avrei da fare una piccola rettifica.
Contrariamente a quanto detto non credo di portare a termine questo progetto su Game Maker. È vero che sarebbe una bella cosa avere un esempio completo in GML, ma mi sono reso conto che non è fisicamente possibile.
Ovviamente mi sono già fatto un piccolo engine di rendering in game maker, ma per modelli un goccio complessi e senza nessun effetto (senza nemmeno usare le texture) il framerate arriva all'ordine di 1/(60*n),essendo purtroppo n un numero naturale.
Non è neanche da dare la colpa al mio computer, che è ben sopra la norma
(è un vecchio i7, anche se con supporto ht e clockato a 4+ ghz. non è neanche da pensare a problemi di swap di memoria, visto che ho 16 gb di ram con lo swap disabilitato).
Ho quindi deciso di abbandonare il progetto in GML e di lavorare solo in C++.
So che non è facile per voi valutare codice c++, ma vi chiedo di fare un "salto nel buio" e di fidarvi, cercherò di commentarlo il più possibile. Spero che questa immagine vi aiuti a constatare l' "esattezza" del codice che sto scrivendo:
Spoiler
A destra: Arthas (il re dei lich) da WoW renderizzato dal D3D interno di game maker, a sinistra lo stesso modello con (circa) le stesse impostazioni di visualizzazione, renderizzato dal mio engine:
Immagine
L'fps alto è dovuto al fatto che il rendering non è in realtime: il modello è stato disegnato su una surface una sola volta.
eppure mi sembra tutto giusto...

Avatar utente
civic71
GMI Advanced
Messaggi: 2210
Iscritto il: 23/10/2003, 17:31
Specialità: Risotto con zucchine
Uso: GM:Studio 1.4 Pro
Località: Jesolo (venezia)
Contatta:

Re: Parliamo di 3D

Messaggio da civic71 »

Hai un i7 ma non ottieni buone performance con il d3d di GM , solo 45 fps :shock:
Ma hai GM 8.0 o GM 8.1 perché avevo letto da qualche parte che quest'ultimo era nettamente migliore in termini di prestazioni.
Se con il tuo engine ottieni quasi 5000 fps :rockrock: , ma poi aggiungendo l'illuminazione e le texture logicamente caleranno un pò :fapensare: .
In ogni caso buon lavoro per il tuo engine sperando che non faccia la fine di quello di Jack :mrgreen: :lol:

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: Parliamo di 3D

Messaggio da Sla »

Leggi bene sotto l'immagine. Il modello viene disegnato in una surface una sola volta all'inizio, poi nell'evento draw disegno la surface bella e pronta, non è rendering in real time.
Per gm 8.1 credo si tratti di quella storia della geometria statica (il d3d_model_draw prima del 8.1, se non ricordo male, era fatto coi piedi: disegnava triangolo per triangolo come fosse una primitiva invece di usare i metodi di DX per i modelli interi)
Per "preparare" la surface ci metto circa un minuto :D
I 45 fps del d3d non dipendono dal processore, ma dalla scheda video.
Ad ogni modo non sono indicativi di nulla, probabilmente la room speed in quell'esempio è bassa, non ricordo.
Cmq ho una vecchia ma buona ati radeon 5700
eppure mi sembra tutto giusto...

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: Parliamo di 3D

Messaggio da Sla »

Da qualche giorno ho ripreso questo vecchio progetto abbandonato ricostruendo da 0 un engine di software rendering in c++.
Se riesco ad ottenere buoni risultati potrei continuare a parlare di matematica.
Spoiler
Immagine
texture mapping - affine e perspective corrected - mipmapping
per-pixel lighting (point light)
Immagine
test con assimp - directional light + point light
Immagine
test - prima implementazione SSAO
Immagine
normal mapping
Immagine
normal mapping + parallax mapping (test prima implementazione)
Vorrei coprire almeno ancora una decina di effetti.
Infine vorrei scrivere un manuale matematico / pratico di riferimento per il forum in maniera più ordinata e comprensibile di come ho già fatto.
Naturalmente potrebbero volerci ere, anche perché intanto l'università ruba la maggior parte del mio tempo. Per questo, di tanto in tanto, vi delizierò con qualche screen (spero, forse ..).
Un possibile sviluppo successivo, oltre alle varie ottimizzazioni sfruttando il multithread, è quello di provare a far girare il tutto sulle schede video con OpenCL. Naturalmente sarebbe una speculazione completamente inutile, e funzionerebbe solo sulle schede relativamente recenti supportante da OpenCL, ma suvvia, chi potrebbe vantare di aver fatto un gioco "senza openGL né DirectX, ma col mio engine". Esatto, solo un nerd completo.
eppure mi sembra tutto giusto...

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 61 ospiti