View Full Version : Si può testare la grafica??
Guardando un po' i risultati di copertura del codice da parte dei test, si nota subito come le parti più scoperte riguardino il codice di "basso" livello, ovvero che va a picchiare direttamente su LWGL o OpenAL.
Quindi mi scatta in automatico la domanda, che potrebbe interessare anche i miei piccoli progetti:
la grafica si può testare???
Forse avete già risposto agli inizi del progetto, ma io non c'ero :cry:
Per esempio: Fek, ma quando vai a lavorare sui tuoi shaders li testi o usi solo gli occhi :D :D
cdimauro
24-03-2006, 07:22
Penso che, oltre che visivamente, Francesco effettui anche dei controlli per quanto riguarda i dati generati, verificando che siano in linea con quanto si aspetta dall'algoritmo.
Alla fine uno shader è pur sempre una funzione matematica, con dei valori in ingresso e dei valori in uscita. ;)
E' pertanto possibile pensare anche di effettuare dei test automatici che accertino il buon funzionamento degli shader, in ragione di un certo margine d'errore, chiaramente.
Per quanto riguarda Diamonds, in effetti hai ragione: le parti meno coperte sono quelle relative all'interfacciamento con quelle librerie.
Mi sto ristudiando questa parte per un eventuale utilizzo delle librerie SDL al posto di LWJGL (purtroppo sulla mia macchina l'esecuzione del gioco fallisce, per cui vorrei capire se usando un'altra libreria questi problemi vengono risolti), e ho la stessa impressione.
Da una parte ti posso dire che va bene così: queste librerie le dobbiamo usare esclusivamente per i fini che ci siamo imposti con Diamonds.
Dall'altra parte, essendo un po' criptica, è difficile capire come funziona il tutto. Inoltre nomi come engine.DrawQuad() non rendono immediatamente l'idea di quello che si sta facendo (non ho mai usato OpenGL in vita mia).
Guardando un po' i risultati di copertura del codice da parte dei test, si nota subito come le parti più scoperte riguardino il codice di "basso" livello, ovvero che va a picchiare direttamente su LWGL o OpenAL.
Testare il funzionamento delle librerie non ci interessa. Quello è il lavoro dei loro autori. Certo se trovi dei bug nelle api delle librerie è meglio documentarlo con un test cosi te ne ricordi sempre. Poi per esempio la nostra build machine non ha una scheda audio quindi ci sarebbe impossibile tesatre openal.
Quindi mi scatta in automatico la domanda, che potrebbe interessare anche i miei piccoli progetti:
la grafica si può testare???
Forse avete già risposto agli inizi del progetto, ma io non c'ero :cry:
Per esempio: Fek, ma quando vai a lavorare sui tuoi shaders li testi o usi solo gli occhi :D :D
Sarebbe interessante imporre a opengl di fare il rendering su una immagine di tipo png. In questo modo si potrebbe confrontare con una ritenuta ok in modo automatico. Magari usando qualche algoritmo come psnr o ssim per far passare il test anche in presenza di piccolissime differenze se necessario.
ciao ;)
Testare il funzionamento delle librerie non ci interessa. Quello è il lavoro dei loro autori.
Certamente :D
Dicevo testare come noi le utilizziamo...ovvero coprire con test le invocazioni su LWGL per vedere se le abbiamo messe bene insieme. ;)
Sarebbe interessante imporre a opengl di fare il rendering su una immagine di tipo png. In questo modo si potrebbe confrontare con una ritenuta ok in modo automatico. Magari usando qualche algoritmo come psnr o ssim per far passare il test anche in presenza di piccolissime differenze se necessario.
:eekk: :eekk:
Ecco....non sapevo neanche si potesse pensare una cosa così.
Ma con questa soluzione non è che stiamo un po' sforzando il TDD??? :mbe:
Certamente :D
Dicevo testare come noi le utilizziamo...ovvero coprire con test le invocazioni su LWGL per vedere se le abbiamo messe bene insieme. ;)
Questo già lo facciamo. Ci sono i mock simulano il comportamento delle librerie senza doverle usare.
:eekk: :eekk:
Ecco....non sapevo neanche si potesse pensare una cosa così.
Ma con questa soluzione non è che stiamo un po' sforzando il TDD??? :mbe:
Sforzare? No anzi. Può essere utile per scovare delle regressioni per esempio quando si cerca di ottimizzare qualche funzione che può avere a che fare con la qualità finale della grafica.
ciao ;)
Questo già lo facciamo. Ci sono i mock simulano il comportamento delle librerie senza doverle usare.
Quindi anche se quel codice, quello che invoca direttamente le librerie, non si testa è "uguale"...ok ;)
cdimauro
24-03-2006, 13:14
Sarebbe interessante imporre a opengl di fare il rendering su una immagine di tipo png. In questo modo si potrebbe confrontare con una ritenuta ok in modo automatico. Magari usando qualche algoritmo come psnr o ssim per far passare il test anche in presenza di piccolissime differenze se necessario.
Su questo sono un po' perplesso per due motivi: il primo è che il nostro è un gioco 2D e quando dico, ad esempio, di voler tracciare uno sprite mi aspetto che la resa grafica sia esattamente quella voluta (quindi senza differenze); il secondo è che già adesso l'engine permette di scegliere pixel format a 16 o 24 bit, a seconda di ciò che la scheda video mette a disposizione, per cui si dovrebbe tenere in considerazione della differente risoluzione delle componenti colore.
Su questo sono un po' perplesso per due motivi: il primo è che il nostro è un gioco 2D e quando dico, ad esempio, di voler tracciare uno sprite mi aspetto che la resa grafica sia esattamente quella voluta (quindi senza differenze); il secondo è che già adesso l'engine permette di scegliere pixel format a 16 o 24 bit, a seconda di ciò che la scheda video mette a disposizione, per cui si dovrebbe tenere in considerazione della differente risoluzione delle componenti colore.
Il mio voleva essere un discorso piuttosto generico non riferito a diamond. Per esempio su un pixel shader si potrebbe sacrificare un po' in precisione per avere maggiori prestazioni. In quel caso si potrebbe fare un controllo non bit a bit.
Nel nostro gioco non abbiamo cose cosi complicate quindi potremmo fare semplicemente un controllo confrontando l'hash dei due file immagine.
ciao ;)
cdimauro
24-03-2006, 13:36
OK, è chiaro. In tal caso dovremmo avere 2 hash diversi, a seconda del pixel format.
Fare uno screenshot e crearne un file in un formato non dovrebbe essere un problema. Anzi dovrebbe essere semplicissimo grazia a DEVIL e LWJGL. Se vi interessa una cosa simile potrei aiutarvi.
cdimauro
27-03-2006, 08:22
Vedremo se se ne presenterà la necessità.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.