View difference between Paste ID: 10DumXhb and kkrXFhkf
SHOW: | | - or go back to the newest paste.
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-
	shader = dxCreateShader("client/blur/shader.fx")
10+
11
	if not shader then
12
		outputDebugString("Failed to create blur shader")
13-
		outputDebug("Failed to create blur shader")
13+
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-
		outputDebug("Failed to create a render target for blur shader")
22+
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-
		outputDebug("Failed to create a screen source for blur shader")
33+
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