Ho appena finito di uppare sul cvs la prima versione del dialog che consent=
e
di cambiare le uniform variables presenti in ogni shader.
In questa versione funzionano le seguenti cose:
- viene visualizzato un dialogo con i nomi, valori e tasto per cambiare ogn=
i
variabile dello shader
- =E8 possibile cambiare le variabili contraddistinte dal tipo "colore"
(specificato nel file .gdp) tramite il dialogo standard per la specifica de=
i
colori
- =E8 possibile cambiare i valori degli int e dei float singoli
- viene mostrato un messaggio di errore in caso di errori di linking o di
compilazione degli shader
cosa da fare:
1) le variabili di tipo array di float (2,3,4 dimensioni) non hanno ancora
un dialogo che permette di cambiarle (si accettano anche consigli in tal
senso)
2) non ho ancora implementato il dialogo con gli "sliders" che alcune
variabili utilizzano (vale sia per quelle singole che per quelle array)
3) non viene impostato ancora lo stato di opengl
4) la "grafica" del dialogo fa schifo, si accettano consigli (una delle cos=
e
che vorrei mettere =E8 un riquadro accanto alle variabili colore con una
preview dello stesso)
5) comportamento del dialogo:
all'inizio avevo fatto in modo che l'utente dovesse premere il tasto "ok"
prima di vedere applicato lo shader.
Adesso invece mostro semplicemente il dialogo e consento all'utente di
vedere subito lo shader applicato e di poter modificarne le variabili
visualizzando subito i cambiamenti, penso sia molto meglio cos=EC.
tuttavia a questo punto i tasti "ok" e "cancel" non servono pi=F9, li
cambierei con un pi=F9 tranquillo "close".
Sempre restando in argomento:
=E8 normale che cambiando il colore la modifica ha effetto istantaneamente
(provate con il toon shader), mentre cambiando un valore numerico (tipo il
phong) =E8 necessario cliccare sul contesto opengl per vedere la modifica? =
se
s=EC, c'=E8 un modo per farlo direttamente?
6) il tasto "default" non funziona, dovrebbe ripristinare i valori delle
variabili come inizialmente definite nel file .gdp e si fa presto a
realizzarlo (sempre se =E8 gradito).
7) il dialogo QInputDialog::getDouble paradossalmente non ha un parametro
"step" e quindi incrementa la variabile direttamente da 0 a 1 (che in molte
uniform =E8 il range predefinito). il
campo step invece =E8 presente nel metodo getInt, la cosa mi lascia un po'
perplesso.
pu=F2 darsi che abbia visto male io (data anche l'ora), cmq penso che
risolver=F2 creando un dialogo "a mano" col parametro step impostabile.
8) va implementato lo scaling, anche se ho notato che gli shader che pi=F9
utilizzano questa funzione (wood per esempio) hanno gi=E0 una variabile di
scaling.
purtroppo la variabile ha range da 0 a 1, settata di default 1: abbassando
tale valore la distanza tra le venature del legno aumenta. Tuttavia alcuni
model (tipo il coniglio) sono ancora troppo piccoli affinch=E8 lo shader si=
a
visto in maniera corretta.
Come dovrei implementare questa funzione di scaling e su quali variabili?
9) va migliorato il codice per gestire i messaggi di log
Conclusioni:
La parte "dura" =E8 fatta, penso di essere a buon punto ormai, entro domani
conto di dimezzare almeno questo elenco di cose da fare.
Notte a tutti
|