Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!

1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


Member Since 26 Jul 2012
Offline Last Active Sep 11 2012 06:16 PM

Topics I've Started

DirectX10 + HLSL Constantbuffer problem

02 August 2012 - 04:00 PM


I don't know why but dx10 always give me back a false result when I try to create buffer, in this case a constantbuffer.

[source lang="cpp"]struct SPSSSAOPerFrameBuffer{ float m_sample_rad; float m_scale; float m_intensity; float m_bias; float m_screen_size_x; float m_screen_size_y; float m_random_size;};ID3D10Buffer* g_pPSSSAOPerFrameBuffer = 0;D3D10_BUFFER_DESC PSSSAOPerFrameBufferDesciptor;PSPerFrameBufferDesciptor.ByteWidth = sizeof(SPSSSAOPerFrameBuffer);PSPerFrameBufferDesciptor.Usage = D3D10_USAGE_DYNAMIC;PSPerFrameBufferDesciptor.BindFlags = D3D10_BIND_CONSTANT_BUFFER;PSPerFrameBufferDesciptor.CPUAccessFlags = D3D10_CPU_ACCESS_WRITE; PSPerFrameBufferDesciptor.MiscFlags = 0;Result = g_pDevice->CreateBuffer(&PSSSAOPerFrameBufferDesciptor, 0, &g_pPSSSAOPerFrameBuffer);if (Result != S_OK){ return false;}[/source]

I'm getting back, in Result, the value E_INVALIDARG.
And thats the constantbuffer in hlsl.
[source lang="cpp"]cbuffer CBPSSSAOPerFrameBuffer{ float1 m_sample_rad; float1 m_scale; float1 m_intensity; float1 m_bias; float1 m_screen_size_x; float1 m_screen_size_y; float1 m_random_size;};[/source]

Before you think I'm just too lazy to find a solution, I've already read the part for constantbuffers in the msdn (http://msdn.microsoft.com/en-us/library/windows/desktop/bb205130(v=vs.85).aspx#Create_a_Constant_Buffer) :).
And they are doing exactly the same. I really don't know what I'm doing wrong :(

I hope somebody can help me, thx so far.

write out normalbuffer for ssao

29 July 2012 - 02:03 PM


just a short question, a normal can point in any direction so it can cotain negativ values. So whats the best way to handle negativ values for an normalbuffer which will be used for ssao. (I'm writing the normals on rendertarget with 4 floats)
Or are these values saved as they are, even if they are negativ?

using previous Rendertarget in next Shader

26 July 2012 - 12:57 PM


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 ShaderPSInput 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 Shaderfloat4 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.