Guest User

Blur Lua

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