December 03, 2020, 07:58:08 PM

Author Topic: [bb] Fast FullScreen Blur/Fade by Richard Betson [ 1+ years ago ]  (Read 581 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
Title : Fast FullScreen Blur/Fade
Author : Richard Betson
Posted : 1+ years ago

Description : This example shows how to Blur/Fade screen fast using Blit's. Works at 640 x 480 x 16.

I get as high as 330 FPS with this demo.

L8r,
R. Betson


Code :
Code: BlitzBasic
  1. ;Blur/Fade Demo for B+ ver.beta
  2. ;Copyright 2003, Richard R Betson
  3. ;www.redeyeware.50megs.com
  4. ;vidiot@getgoin.net
  5.  
  6.  
  7. ;Blur/Fade FAST! Blit Method
  8. ;640 x 480 x 16 I get 330 Fps avg.
  9. ;
  10.  
  11.  
  12. Const width=640
  13. Const height=480
  14. Const depth=16
  15. Global fade_clr=2
  16. Global fade#=7.57
  17. Global blur=4;.05
  18. Global height1=height-1
  19. Global width1=(width/2)-1
  20.  
  21.  
  22. xx1=308
  23.  
  24.  
  25. Graphics width,height,depth,1
  26.  
  27.  
  28. Global blockbank=CreateBank(500*500*4)
  29. Global clrbank=CreateBank(height*width*4)
  30.  
  31.  
  32. Global  clrt=((254/8 Shl 27) Or((24/4) Shl 21) Or((20/8) Shl 16) Or ((254/8) Shl 11) Or ((24/4) Shl 5) Or (20/8))  
  33.  
  34.  
  35. SetBuffer BackBuffer()
  36.  
  37.  
  38.  
  39. LockBuffer
  40. For y=0 To 49
  41.         offset=y*LockedPitch()
  42.        
  43.         For x= 0 To 24
  44.                 PokeInt blockbank,offset+x*4,clr;
  45.         Next
  46. Next
  47. UnlockBuffer
  48.  
  49.  
  50. Repeat
  51.  
  52. If KeyHit(1) Then End
  53.         If fpsl=True
  54.                 blur_fade()
  55.         Else
  56.                 If ct<MilliSecs()
  57.                         ct=MilliSecs()+80
  58.                         blur_fade()
  59.                 EndIf
  60.         EndIf
  61.  
  62.  
  63.                 If ct1<=MilliSecs()
  64.                         ct1=MilliSecs()+10
  65.                         clrt=((254/8 Shl 27) Or((Rnd(32)/4) Shl 21) Or((Rnd(254)/8) Shl 16) Or ((254/8) Shl 11) Or ((Rnd(32)/4) Shl 5) Or (Rnd(254)/8))  
  66.                
  67.                         LockBuffer
  68.                        
  69.                         xx=xx+2
  70.                         For i= 0 To 90
  71.                         yy=Rnd(468)+1
  72.                         ;xx=Rnd(288)+1
  73.  
  74.                         For y=yy To yy+1
  75.                                 offset=y*LockedPitch()
  76.                                 For x=xx To 10+xx
  77.                                         PokeInt clrbank,offset+x*4,clrt
  78.  
  79.                                 Next
  80.                         Next
  81.                         Next
  82.                         If xx>=306 Then xx=0
  83.                         clrt=((254/8 Shl 27) Or((Rnd(32)/4) Shl 21) Or((Rnd(254)/8) Shl 16) Or ((254/8) Shl 11) Or ((Rnd(32)/4) Shl 5) Or (Rnd(254)/8))  
  84.                        
  85.                         xx1=xx1-2
  86.                         For i= 0 To 90
  87.                         yy=Rnd(468)+1
  88.                         ;xx=Rnd(288)+1
  89.  
  90.                         For y=yy To yy+1
  91.                                 offset=y*LockedPitch()
  92.                                 For x=xx1 To 10+xx1
  93.                                         PokeInt clrbank,offset+x*4,clrt
  94.  
  95.                                 Next
  96.                         Next
  97.                         Next
  98.                         If xx1<=2 Then xx1=308
  99.                         UnlockBuffer
  100.                         ;xx1=2         
  101.                 EndIf
  102.  
  103.  
  104.  
  105.        
  106.                 tm=MilliSecs()
  107.  
  108.         fps=fps+1
  109.         If fps_t<MilliSecs()
  110.         fp$=" "+Str$(fps)
  111.         fps2=fps
  112.         fps_t=1000+MilliSecs()
  113.         fps=0
  114.         EndIf
  115.         ;Color 255,255,255
  116.         Text 10,15,"FPS: "+fp$
  117.  
  118. If KeyHit(6)=True
  119.         SetBuffer FrontBuffer()
  120.         SaveBuffer(FrontBuffer(),"shot.bmp")
  121. EndIf
  122.  
  123.  
  124.  
  125.  
  126.         Flip 0
  127.        
  128.        
  129. Forever
  130.  
  131. End
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139. Function blur_fade()
  140.  
  141.  
  142. LockBuffer
  143.         bank=LockedPixels()
  144. For y=1 To height
  145.  
  146.         offset=y*LockedPitch()
  147.         offsetn=(y-1)*LockedPitch()
  148.         offsets=(y+1)*LockedPitch()
  149.         offsetz=(y-f_step)*LockedPitch()
  150.  
  151.         For x= 1 To width1
  152.  
  153.         If csa>10
  154.  
  155.                 tc=tc4
  156.                 tc2=tc5
  157.                 tc3=tc6
  158.  
  159.                 lc=((tc Shl 11) Or (tc2 Shl 5) Or (tc3))
  160.  
  161.                 PokeShort clrbank,(offsetz)+x*4,lc
  162.         EndIf
  163.  
  164.                 tmpa=PeekShort(clrbank,(offset+2)+x*4)
  165.                 c1=PeekShort(clrbank,(offsetn+2)+x*4)
  166.                 c2=PeekShort(clrbank,(offsets+2)+x*4)
  167.                 c3=PeekShort(clrbank,(offset+2)+(x-1)*4)
  168.                 c4=PeekShort(clrbank,(offset+2)+(x+1)*4)
  169.  
  170.  
  171. csa=(tmpa+c1+c2+c3+c4)
  172.  
  173. If csa>10
  174.  
  175.         tmp=((tmpa Shr 11) ) And $1F; And 255
  176.         tc4=((tmp *blur)+(c1 Shr 11 And $1F) +(c2 Shr 11 And $1F) +(c3 Shr 11 And $1F) +(c4 Shr 11 And $1F))/fade; Shr 3
  177.         tmp=(tmpa Shr 5 ) And $3F;And$FF;And 255
  178.         tc5=((tmp*blur)+(c1 Shr 5 And $3F) +(c2 Shr 5 And $3F) +(c3 Shr 5 And $3F) +(c4 Shr 5 And $3F) )/fade
  179.         tmp=(tmpa ) And $1F;And$FF
  180.         tc6=((tmp*blur)+(c1 And $1F)  + (c2 And $1F) + (c3 And $1F) + (c4 And $1F)) /fade
  181.  
  182.  
  183. tc4=(tc4-fade_clr)
  184. tc5=(tc5-fade_clr)
  185. tc6=(tc6-fade_clr)
  186.  
  187. If tc4<0 Then tc4=0
  188. If tc5<0 Then tc5=0
  189. If tc6<0 Then tc6=0
  190.  
  191. hc=((tc4 Shl 11) Or (tc5 Shl 5) Or (tc6))
  192.  
  193. PokeShort clrbank,(offsetz+2)+x*4,hc
  194.  
  195. EndIf
  196.  
  197.  
  198. PokeInt bank,offset+x*4,(hc Shl 16 Or lc)
  199.  
  200.                
  201.         Next
  202. Next
  203.  
  204. UnlockBuffer
  205.  
  206.  
  207. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal