# Shader not working

**URL:** https://discourse.threejs.org/t/shader-not-working/23756
**Category:** Questions
**Tags:** post-processing
**Created:** [February 23, 2021, 11:11am UTC](https://discourse.threejs.org/t/shader-not-working/23756 "2021-02-23T11:11:21Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Borec](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/borec/32/16587_2.png) [@Borec](https://discourse.threejs.org/u/Borec)
#### Post date: [February 23, 2021, 11:11am UTC](https://discourse.threejs.org/t/shader-not-working/23756/1 "2021-02-23T11:11:21Z")

</div>

Hi there,  
I am making glow effect, but the blur shaders don’t work.  
My code is this:

```javascript
const hblur = new ShaderPass(HorizontalBlurShader);
const vblur = new ShaderPass(VerticalBlurShader);

var bluriness = 3;

hblur.uniforms["h"].value = bluriness / SCREEN_WIDTH;
vblur.uniforms["v"].value = bluriness / SCREEN_HEIGHT;

var renderModelGlow = new RenderPass(glowscene, camera);
const glowcomposer = new EffectComposer(renderer, renderTargetGlow);

glowcomposer.addPass(renderModelGlow);
glowcomposer.addPass(hblur);
glowcomposer.addPass(vblur);
const finalshader = {
	uniforms: {
		tDiffuse: { type: "t", value: 0, texture: null },
		tGlow: { type: "t", value: glowcomposer.renderTarget2, texture: null }
	},

	vertexShader: [
		"varying vec2 vUv;",

		"void main() {",

		"vUv = vec2( uv.x, uv.y );",
		"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",

		"}"
	].join("\n"),

	fragmentShader: [
		"uniform sampler2D tDiffuse;",
		"uniform sampler2D tGlow;",

		"varying vec2 vUv;",

		"void main() {",

		"vec4 texel = texture2D( tDiffuse, vUv );",
		"vec4 glow = texture2D( tGlow, vUv );",
		"gl_FragColor = texel + vec4(0.5, 0.75, 1.0, 1.0) * glow * 2.0;",

		"}"
	].join("\n")
};
var renderModel = new RenderPass(scene, camera);
var finalPass = new ShaderPass(finalshader);
finalPass.needsSwap = true;
finalPass.renderToScreen = true;
const renderTarget = new THREE.WebGLRenderTarget(SCREEN_WIDTH, SCREEN_HEIGHT, renderTargetParameters);
const finalcomposer = new EffectComposer(renderer, renderTarget);
finalcomposer.addPass(renderModel);
finalcomposer.addPass(finalPass);
glowcomposer.render();
finalcomposer.render();

```

Can you help me?

---

<div class="post-metadata">

### Author: ![Mugen87](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/mugen87/32/5645_2.png) [@Mugen87](https://discourse.threejs.org/u/Mugen87)
#### Post date: [February 23, 2021, 11:51am UTC](https://discourse.threejs.org/t/shader-not-working/23756/2 "2021-02-23T11:51:24Z")

</div>

The blur shaders actually work fine, see [https://jsfiddle.net/gpz5a40w/1/](https://jsfiddle.net/gpz5a40w/1/)

On what algorithm is your glow effect based on? Do you mind sharing a reference?

---

<div class="post-metadata">

### Author: ![Borec](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/borec/32/16587_2.png) [@Borec](https://discourse.threejs.org/u/Borec)
#### Post date: [February 23, 2021, 11:53am UTC](https://discourse.threejs.org/t/shader-not-working/23756/3 "2021-02-23T11:53:02Z")

</div>

Yes, they are working, when they are directly rendered, but when I use them as shader input, they don’t work.

---

<div class="post-metadata">

### Author: ![Mugen87](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/mugen87/32/5645_2.png) [@Mugen87](https://discourse.threejs.org/u/Mugen87)
#### Post date: [February 23, 2021, 11:57am UTC](https://discourse.threejs.org/t/shader-not-working/23756/4 "2021-02-23T11:57:44Z")

</div>

> [@Borec](#):
>
> `glowcomposer.renderTarget2`

It is not intended that you do this. The render target properties are meant to be internal since the composer is constantly swapping targets. Meaning they change their role as read or write buffers.

I suggest you encapsulate your logic similar to [SSAOPass](https://github.com/mrdoob/three.js/blob/4d90e23c8f1663842f789bf2b19638719134075c/examples/jsm/postprocessing/SSAOPass.js). You need to maintain a beauty render target that you can use to produce the blur and afterwards the glow.

---

<div class="post-metadata">

### Author: ![Borec](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/borec/32/16587_2.png) [@Borec](https://discourse.threejs.org/u/Borec)
#### Post date: [February 23, 2021, 3:57pm UTC](https://discourse.threejs.org/t/shader-not-working/23756/5 "2021-02-23T15:57:21Z")

</div>

I tried using renderTarget that I put as 2nd parametr to the effect composer constructor and the hblur is ok, but the vblur still doesn’t work,
