Jump to content

  • Log In with Google      Sign In   
  • Create Account


Need help loading/rendering a fullscreen directx 9 shader


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 pachesantiago   Members   -  Reputation: 172

Like
0Likes
Like

Posted 01 March 2012 - 04:25 PM

Hy guys.
I'm stuck in loading fullscreen shaders. I know that i have to render to a texture, and pass it to a quad, but I don't know how to make it if the shader have multiple textures, for example a bloom shader.
I don't need the specific code, I just want the pseudocode to the incorporate it into my engine.
In short, what i need is a way to load and render a fullscreen shader with an arbitrary number of passes and textures, like in bloom, that you got the main texture, the downsample1 and downsample 2, the H_blur , the V_blur and the final image.
Please I need this for my engine and I'm really stuck.
Any thought is welcome.

PS: I attached to the post a simple blur shader that I use
PSS: I don't use the annotations, this shader is taken directly from DarkShader, the program I use to write and test the shaders.

string Description = "This shader blurs everything in the scene";
string Thumbnail = "Blur.png";
float2 ViewSize : ViewSize;
//box filter, declare in pixel offsets convert to texel offsets in PS
float2 PixelOffsets[9] =
{
	{ -1,  -1 },
	{ -1,  0  },
	{ -1,  1  },
	{ 0,   1  },
	{ 1,   1  },
	{ 1,   0  },
	{ 1,   -1 },
	{ 0,   -1 },
	{ 0,   0  },
};
//scene image
texture frame : RENDERCOLORTARGET
<
string ResourceName = "";
float2 ViewportRatio = { 1.0, 1.0 };
>;
sampler2D frameSamp = sampler_state {
	Texture = < frame >;
	MinFilter = Linear; MagFilter = Linear; MipFilter = Linear;
	AddressU = Clamp; AddressV = Clamp;
};
//downsample image
texture Downsample1Img : RENDERCOLORTARGET
<
string ResourceName = "";
float2 ViewportRatio = { 0.5, 0.5 };
>;
sampler2D Downsample1Samp = sampler_state {
	Texture = < Downsample1Img >;
	MinFilter = Linear; MagFilter = Linear; MipFilter = Linear;
	AddressU = Clamp; AddressV = Clamp;
};
struct input
{
float4 pos : POSITION;
float2 uv : TEXCOORD0;
};

struct output {
float4 pos: POSITION;
float2 uv: TEXCOORD0;
};
output VS( input IN )
{
output OUT;
//quad needs to be shifted by half a pixel.
	//Go here for more info: http://www.sjbrown.co.uk/?article=directx_texels
  
float4 oPos = float4( IN.pos.xy + float2( -1.0f/ViewSize.x, 1.0f/ViewSize.y ),0.0,1.0 );
OUT.pos = oPos;
float2 uv = (IN.pos.xy + 1.0) / 2.0;
uv.y = 1 - uv.y;
OUT.uv = uv;

return OUT;
}
//downsample used to blur the image
float4 PSDownsample( output IN, uniform sampler2D srcTex, uniform float reduceRatio ) : COLOR
{
	float4 color = 0;
	float2 scale = reduceRatio/ViewSize;
  
	for (int i = 0; i < 9; i++)
	{
		//convert pixel offsets into texel offsets via the inverse view values.
		color += tex2D( srcTex, IN.uv + PixelOffsets[i].xy*scale );
	}
	return color / 9;  
}
//copy the low res downsample into a high res screen quad using bilinear filtering
float4 PSPresent( output IN, uniform sampler2D srcTex ) : COLOR
{
	return tex2D(srcTex,IN.uv);
}

technique Blur
<
//specify where we want the original image to be put
string RenderColorTarget = "frame";
>
{
//downsample this image to achieve a blur effect
pass Downsample
<
  string RenderColorTarget = "Downsample1Img";
>
{
  ZEnable = False;
  VertexShader = compile vs_1_1 VS();
  PixelShader = compile ps_2_0 PSDownsample( frameSamp, 0.5 );
}

//send the blurred image to the screen
pass Present
<
  string RenderColorTarget = "";
>
{
  VertexShader = compile vs_1_1 VS();
  PixelShader = compile ps_1_1 PSPresent( Downsample1Samp );
}
}


Sponsor:

#2 pachesantiago   Members   -  Reputation: 172

Like
0Likes
Like

Posted 02 March 2012 - 07:45 AM

any ideas?

#3 pachesantiago   Members   -  Reputation: 172

Like
0Likes
Like

Posted 03 March 2012 - 05:33 PM

Please guys dont let me down!

#4 pachesantiago   Members   -  Reputation: 172

Like
0Likes
Like

Posted 24 March 2012 - 01:20 PM

Fixed, thanks for nothing




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS