Advertisement
Guest User

Blur Lua

a guest
Aug 31st, 2015
2,857
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Blur = {}
  2.  
  3. local shader = false
  4. local renderTarget = false
  5. local screenSource = false
  6. local screenWidth, screenHeight = guiGetScreenSize()
  7.  
  8. function Blur.createShader()
  9.     shader = dxCreateShader("shader.fx")
  10.  
  11.     if not shader then
  12.         outputDebugString("Failed to create blur shader")
  13.         return false
  14.     end
  15.  
  16.     renderTarget = dxCreateRenderTarget(screenWidth, screenHeight, true)
  17.  
  18.     if not renderTarget then
  19.         destroyElement(shader)
  20.         shader = false
  21.         outputDebugString("Failed to create a render target for blur shader")
  22.         return false
  23.     end
  24.  
  25.     screenSource = dxCreateScreenSource(screenWidth, screenHeight)
  26.  
  27.     if not screenSource then
  28.         destroyElement(renderTarget)
  29.         destroyElement(shader)
  30.         shader = false
  31.         renderTarget = false
  32.         outputDebugString("Failed to create a screen source for blur shader")
  33.         return false
  34.     else
  35.         dxSetShaderValue(shader, 'texture0', renderTarget)
  36.     end
  37.  
  38.     return true
  39. end
  40.  
  41. function Blur.render(alpha, strength)
  42.     -- Update screen source
  43.     dxUpdateScreenSource(screenSource, true)
  44.    
  45.     -- Switch rendering to our render target
  46.     dxSetRenderTarget(renderTarget, false)
  47.    
  48.     -- Prepare render target content
  49.     dxDrawImage(0, 0, screenWidth, screenHeight, screenSource)
  50.    
  51.     -- Repeat shader align on the image inside the render target
  52.     for i = 0, 8 do
  53.         dxSetShaderValue(shader, 'factor', 0.0020 * strength + (i / 8 * 0.001 * strength))
  54.         dxDrawImage(0, 0, screenWidth, screenHeight, shader)
  55.     end
  56.    
  57.     -- Restore the default render target
  58.     dxSetRenderTarget()
  59.    
  60.     dxDrawImage(0, 0, screenWidth, screenHeight, renderTarget, 0, 0, 0, tocolor(255, 255, 255, alpha))
  61. end
  62.  
  63. function Blur:getScreenTexture()
  64.     return renderTarget
  65. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement