Autore Topic: [Hollywood] Semplice effetto Blur  (Letto 3214 volte)

Offline Allanon

  • Administrator
  • Synthetic Voodoo
  • *****
  • Post: 3498
  • Karma: +17/-4
    • Mostra profilo
    • http://www.a-mc.biz
[Hollywood] Semplice effetto Blur
« il: 04 Luglio 2011, 23:33:01 »
Pubblico un programmino semplice con l'implementazione di un effetto Blur anch'esso basilare, giusto per dare l'idea o qualche spunto... l'applicazione mostra anche lo scaling engine interno di Hollywood, secondo me abbastanza potente :)

Codice: [Seleziona]
; SIMPLE BLUR FX
; ------------------------------------------------------------------------------
; Inizializza la finestra
@DISPLAY { Width=320, Height=200,
           Color=#BLACK,
           Sizeable=True,
           ScaleMode=#SCALEMODE_AUTO, SmoothScale=TRUE, KeepProportions = True }
           
Function setup()
   SetFontColor($00FFFF00)
   SetFillStyle(#FILLCOLOR)
EndFunction

Function render()
   Box(0, 0, 320, 200, $F0000000)
   TextOut(Rnd(320), Rnd(200), "Hello!")
EndFunction


; setup
setup()

; Installa una chiamata alla routine di rendering ogni 50ms
SetInterval(Nil, render, 50)

; Loop infinito
Repeat
   WaitEvent()
Forever

Oltre alla semplice tecnica di blur si può vedere anche come sia possibile chiamare una routine a determinati intervalli di tempo, in questo caso la routine di rendering ogni 50 millisecondi.

Non commento il codice ulteriormente perchè mi sembra abbastanza semplice, però se ci sono domande non esitate

Allego un po' di eseguibili per rendere l'idea, per terminare l'applicazione premere CTRL-C, ALT-ENTER per attivare/disattivare il fullscreen, in modalità finestra questa può essere ridimensionata.

AROS, OS4, MorphOS, Windows, Linux, OS3.x
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Z80Fan

  • Administrator
  • Guru
  • *****
  • Post: 1671
  • Karma: +13/-2
    • Mostra profilo
    • http://z80fan.altervista.org
Re: [Hollywood] Semplice effetto Blur
« Risposta #1 il: 05 Luglio 2011, 19:24:25 »
Molto carino, non capisco però cos'è che genera l'effetto fading che si nota nell'eseguibile.
E' stato aggiunto altro codice?

EDIT: Forse ho capito, è quella funzione "box" che sovrappone all'immagine un quadrato nero semitrasparente?
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re: [Hollywood] Semplice effetto Blur
« Risposta #2 il: 05 Luglio 2011, 19:40:19 »
@Z80Fan: penso di si... invece di pulire la schermata completamente, gli applica uno strato nero con alpha al 94% (F0, cioè 240 su 255).
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Allanon

  • Administrator
  • Synthetic Voodoo
  • *****
  • Post: 3498
  • Karma: +17/-4
    • Mostra profilo
    • http://www.a-mc.biz
Re: [Hollywood] Semplice effetto Blur
« Risposta #3 il: 05 Luglio 2011, 22:43:00 »
Esatto :)
Il trucco sta proprio li, è abbastanza dispendioso in termini di calcolo ma è anche una delle soluzioni più semplici da applicare, variando la trasparenza del box varia la velocità di fade delle scritte.
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Z80Fan

  • Administrator
  • Guru
  • *****
  • Post: 1671
  • Karma: +13/-2
    • Mostra profilo
    • http://z80fan.altervista.org
Re: [Hollywood] Semplice effetto Blur
« Risposta #4 il: 05 Luglio 2011, 23:52:50 »
Citazione da: "Allanon"
Esatto :)
Il trucco sta proprio li, è abbastanza dispendioso in termini di calcolo ma è anche una delle soluzioni più semplici da applicare, variando la trasparenza del box varia la velocità di fade delle scritte.
Si è veramente semplice, ed anche furba come soluzione!
E penso che non sia poi così dispendiosa, bisognerebbe vedere la difficoltà nel farlo nel modo "giusto".
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Allanon

  • Administrator
  • Synthetic Voodoo
  • *****
  • Post: 3498
  • Karma: +17/-4
    • Mostra profilo
    • http://www.a-mc.biz
Re: [Hollywood] Semplice effetto Blur
« Risposta #5 il: 06 Luglio 2011, 00:23:42 »
Per dispendioso intendo unicamente il comando box() che colora col nero semitrasparente... se apro un schermo grandino, tipo un 1024x768, credo che questa soluzione non sia più così efficace.
Tieni presente che al momento Hollywood non utilizza nessuna accelerazione hw per le funzioni grafiche: fa tutto la CPU.

Comunque se ci fossero solo un paio di oggetti sullo schermo sarebbe uno spreco untilizzare questo codice, sarebbe molto più efficiente utilizzare delle soluzioni da applicare alle singole aree occupate dagli oggetti.

Hollywood offre molte soluzioni, addirittura si potrebbe utilizzare l'effetto <FadeOut> sulle singole scritte, oppure dei layer (una specie di sprite) dove utilizzare il medesimo trucco del box()...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline Z80Fan

  • Administrator
  • Guru
  • *****
  • Post: 1671
  • Karma: +13/-2
    • Mostra profilo
    • http://z80fan.altervista.org
Re: [Hollywood] Semplice effetto Blur
« Risposta #6 il: 06 Luglio 2011, 00:49:47 »
Citazione da: "Allanon"
Per dispendioso intendo unicamente il comando box() che colora col nero semitrasparente... se apro un schermo grandino, tipo un 1024x768, credo che questa soluzione non sia più così efficace.
Tieni presente che al momento Hollywood non utilizza nessuna accelerazione hw per le funzioni grafiche: fa tutto la CPU.

Comunque se ci fossero solo un paio di oggetti sullo schermo sarebbe uno spreco untilizzare questo codice, sarebbe molto più efficiente utilizzare delle soluzioni da applicare alle singole aree occupate dagli oggetti.

Hollywood offre molte soluzioni, addirittura si potrebbe utilizzare l'effetto <FadeOut> sulle singole scritte, oppure dei layer (una specie di sprite) dove utilizzare il medesimo trucco del box()...
Si l'idea era proprio di creare delle bitmap separate per ogni scritta e poi comporre il tutto sullo schermo, ma se c'è l'istruzione apposita, tanto meglio!
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Tags: