Original Post
Hi,
so as you could see I'm trying to use a rendertarget in the next shader. So I'm postprocessing some data and want to use it as a fullscreentexture in the next shader. So far so good, no problem with shaderresourceviews and setting and so on.
But I have the following problem: I want to use the previously generated texture on the whole screenspace and not only on an object in the screen, atm I can see in the center of the screen with a part of texture with a big border around it which has the color of the clearing color.
I'm trying to implement a SSAO algorithm, just so you know, but I'm still pretty new to HLSL and DX10.
In the first shader I write out normals and depth for each pixel on seperate rendertargets and afterwards I set them as shaderressources for use in SSAO shader.
[source lang="cpp"]Texture2D g_SSAODepthMap : register(t0);
Texture2D g_SSAONormalMap : register(t1);
struct VSInput
{
float4 m_Position : POSITION
float4 m_Color : COLOR;
float4 m_Normal : NORMAL
};
struct PSInput
{
float4 m_Position : SV_POSITION;
float4 m_Color : COLOR0;
float3 m_Normal : NORMAL;
float2 m_Tex : TEXCOORD;
};
// SSAO Vertex Shader
PSInput VSSSAOShader(VSInput _Input)
{
PSInput Output = (PSInput) 0;
Output.m_Position = _Input.m_Position;
Output.m_Tex.x = 0.5 * (1 + _Input.m_Position.x);
Output.m_Tex.y = 0.5 * (1 - _Input.m_Position.y);
return Output;
}
// SSAO Pixel Shader
float4 PSSSAOShader(PSInput _Input) : SV_Target0
{
float4 result = g_SSAODepthMap.Sample(samplerLinear, _Input.m_Tex);
result += g_SSAONormalMap.Sample(samplerLinear, _Input.m_Tex);
return result;
}[/source]
I have to say I didnt implement SSAO, this is just for testing and I'm using DirectX 10 and ps_4_0 and vs_4_0.
Maybe I didnt understand how to get the right coordinates in the textures.
I read something about a Fullscreenquad and also tried that, but it doesnt really worked, it would be pretty nice if somebody would be able to describe how I can use a texture as, i would say, layer.
I would appreciate any help, because I'm really stuck here.
so as you could see I'm trying to use a rendertarget in the next shader. So I'm postprocessing some data and want to use it as a fullscreentexture in the next shader. So far so good, no problem with shaderresourceviews and setting and so on.
But I have the following problem: I want to use the previously generated texture on the whole screenspace and not only on an object in the screen, atm I can see in the center of the screen with a part of texture with a big border around it which has the color of the clearing color.
I'm trying to implement a SSAO algorithm, just so you know, but I'm still pretty new to HLSL and DX10.
In the first shader I write out normals and depth for each pixel on seperate rendertargets and afterwards I set them as shaderressources for use in SSAO shader.
[source lang="cpp"]Texture2D g_SSAODepthMap : register(t0);
Texture2D g_SSAONormalMap : register(t1);
struct VSInput
{
float4 m_Position : POSITION
float4 m_Color : COLOR;
float4 m_Normal : NORMAL
};
struct PSInput
{
float4 m_Position : SV_POSITION;
float4 m_Color : COLOR0;
float3 m_Normal : NORMAL;
float2 m_Tex : TEXCOORD;
};
// SSAO Vertex Shader
PSInput VSSSAOShader(VSInput _Input)
{
PSInput Output = (PSInput) 0;
Output.m_Position = _Input.m_Position;
Output.m_Tex.x = 0.5 * (1 + _Input.m_Position.x);
Output.m_Tex.y = 0.5 * (1 - _Input.m_Position.y);
return Output;
}
// SSAO Pixel Shader
float4 PSSSAOShader(PSInput _Input) : SV_Target0
{
float4 result = g_SSAODepthMap.Sample(samplerLinear, _Input.m_Tex);
result += g_SSAONormalMap.Sample(samplerLinear, _Input.m_Tex);
return result;
}[/source]
I have to say I didnt implement SSAO, this is just for testing and I'm using DirectX 10 and ps_4_0 and vs_4_0.
Maybe I didnt understand how to get the right coordinates in the textures.
I read something about a Fullscreenquad and also tried that, but it doesnt really worked, it would be pretty nice if somebody would be able to describe how I can use a texture as, i would say, layer.
I would appreciate any help, because I'm really stuck here.