Pagina 1 di 1

Antialiasing per le draw functions (senza surface scalata)

Inviato: 19/05/2015, 19:10
da ScemEnzo
Premessa: so che questo tutorial è molto basilare ed aggiunge veramente poco alla cultura generale sul GML.
Ho intenzione di usare questo piccolo spazio più come un promemoria per me, con in più il buon proposito di poter aiutare qualcuno che, come me, ha perso giornate intere a cercare la soluzione a questo problema.
P.S.: su internet spopola una soluzione alternativa fatta scalando le surface, ma io ho voluto cercare qualcosa di intrinseco al GML.

Se si desidera ottenere delle figure perfettamente smussate, bisogna giocare con la funzione display_reset(aa,vsync) e la variabile nativa display_aa.
In sostanza, basta specificare in "aa" nella funzione display_reset il valore di antialiasing che noi preferiamo, eseguendo tale istruzione all'avvio dell'applicazione.
Per un valore di aa = 8 le curve cominciano ad essere ottimamente soffici.

Il framerate medio della mia basilare applicazione con un solo draw_circle è passato da circa 170 a circa 130 frame al secondo ponendo aa = 8, dunque è bene fare attenzione alla stabilità del programma.

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 19:17
da doom13
ScemEnzo ha scritto:è passato da circa 170 a circa 130 frame al secondo ponendo aa = 8.
Azz è tanto

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 19:35
da ScemEnzo
Assolutamente si, infatti è una mossa disperata per rendere le draw function perfette nella loro forma "pixelosa".
Purtroppo è noto che le draw function di moltissimi software sono troppo pesanti per ottenere immagini dettagliate ed elaborate, quindi in questo periodo ho cambiato direzione ed ho cominciato ad interessarmi agli shaders, visto che con le draw functions c'è poco da fare

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 19:37
da doom13
ScemEnzo ha scritto:Assolutamente si, infatti è una mossa disperata per rendere le draw function perfette nella loro forma "pixelosa".
Purtroppo è noto che le draw function di moltissimi software sono troppo pesanti per ottenere immagini dettagliate ed elaborate, quindi in questo periodo ho cambiato direzione ed ho cominciato ad interessarmi agli shaders, visto che con le draw functions c'è poco da fare
Fai bene, gli shaders vorrei impararli anche io ma non ho ancora trovato un buon tutorial :cry:

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 19:50
da ScemEnzo
doom13 ha scritto: gli shaders vorrei impararli anche io ma non ho ancora trovato un buon tutorial :cry:
Allora sappi che avevi la soluzione sotto al naso e non te ne sei accorto: io ho chiesto consiglio al sommo Tizzio (che Dio lo benedica), dal momento che ho scoperto che il suo Glare engine usava gli shaders.
Lui è stato a sua volta istruito da Jak, ma la cosa importante è che mi ha passato un documento che sto leggendo: è semplice, simpatico e molto molto piacevole.
È perfetto per chi vuole introdursi al codice GLSL senza troppe pretese

Tiè: http://patriciogonzalezvivo.com/2015/thebookofshaders/

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 19:51
da Tizzio
Avevo ideato un metodo per le linee con antialiasing sfruttando l'interpolazione lineare
ecco un gmk: draw_line_aa

I poligoni non sono "pieni", però si può ottenere un effetto antialiasing, tracciando varie linee intorno alla figura
quindi bisogna combinare il disegno del bordo col disegno della figura interna

Immagine

Ci sono dei piccoli artefatti (soprattutto nel cerchIo), ma è un buon compromesso.
Non ho testato la differenza di prestazioni rispetto all'MSAA standard fatto dalla scheda video, ma credo che sui vecchi PC e telefoni sia molto meglio la tecnica dell'interpolazione

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 20:01
da ScemEnzo
Tizzio ha scritto:Avevo ideato un metodo per le linee con antialiasing sfruttando l'interpolazione lineare
Ho visto il progetto ed è molto interessante, anche se la forma pixellosa rimane molto.
Anche io ho provato a creare qualche script quando ho sviluppato "When We Talk" basandomi su alcuni documenti sull'antialiasing, ma non sono mai stato soddisfatto delle soluzioni.
Sapevo di poter trovare qualcosa di nativo a GM e alla fine l'ho trovato dopo tantissimo tempo.

La cosa positiva di questa funzione nativa è che qualunque figura appartenente alle draw functions di Game Maker viene elaborata con un antialiasing come Dio comanda, anche le figure geometriche create con vertici.

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 20:02
da doom13
ScemEnzo ha scritto:
doom13 ha scritto: gli shaders vorrei impararli anche io ma non ho ancora trovato un buon tutorial :cry:
Allora sappi che avevi la soluzione sotto al naso e non te ne sei accorto: io ho chiesto consiglio al sommo Tizzio (che Dio lo benedica), dal momento che ho scoperto che il suo Glare engine usava gli shaders.
Lui è stato a sua volta istruito da Jak, ma la cosa importante è che mi ha passato un documento che sto leggendo: è semplice, simpatico e molto molto piacevole.
È perfetto per chi vuole introdursi al codice GLSL senza troppe pretese

Tiè: http://patriciogonzalezvivo.com/2015/thebookofshaders/
Bello bello, converto tutto in un bel pdf.

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 20:03
da Tizzio
doom13 ha scritto: Bello bello, converto tutto in un bel pdf.
Ma il bello di quel sito è l'interattività :asd:
Puoi modificare il codice e vedere i cambiamenti in realtime

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 20:06
da ScemEnzo
Aspetta un attimo!!! Ho appena visto la tua immagine nel post aggiornato e a me non si vede in quel modo!
A me il disegno è molto più pixeloso.
Ho controllato e l'interpolazione è attiva.
Avvio da Windows 7 a 64 bit

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 20:07
da ScemEnzo
Tizzio ha scritto: Ma il bello di quel sito è l'interattività :asd:
Concordo assolutamente. io stavo per stamparmi tutto, poi però mi sono accorto dei fichissimi codici in real time @ç@

Re: Antialiasing per le draw functions (senza surface scalat

Inviato: 19/05/2015, 20:11
da doom13
Tizzio ha scritto:
doom13 ha scritto: Bello bello, converto tutto in un bel pdf.
Ma il bello di quel sito è l'interattività :asd:
Puoi modificare il codice e vedere i cambiamenti in realtime
O.o eh vabbé quando sto in giro però preferisco avere un pdf sul cellulare.