• Advertisement
Sign in to follow this  

SSAO with Odd Color In normal RT & position RT

This topic is 1752 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi everyone !.

 

I'm really sorry to talk about this problem again just like I talked some days ago. But I really dont know :

 

1.Render Target - Normal Texture looks just has r and g value , so where is blue ?.(I use Render Target pixel format A32B32G32R32F)

2.Render Target - Position Texture looks really strange, what I think is position just like normal has 3 floats value, but why there is no

   brightness change??It looks really blue !?

3.The problem above is RenderMonkey's problem or my code error ?

 

Figure and vertex shader code?

[attachment=14694:SSAO 5.jpg]

 

Pixel shader code?

[attachment=14695:SSAO 6.jpg]

Share this post


Link to post
Share on other sites
Advertisement

1.Render Target - Normal Texture looks just has r and g value , so where is blue ?.(I use Render Target pixel format A32B32G32R32F)

 

If you think about what blue stands fors, namely the direction component on the z-axis (or is it x in this case?), we can safely assure that "blue" in this case is negative ( < 0.0f), since said axis points away from the camera, models normals towards it. Also, your format is overkill for normals, just convert them to 0.0f -> 1.0f range an store them in X8R8G8B8-target. You will later on want to convert them back, which is easy as well.

 

//convert to 0.0f - 1.0f
out.vNrm.rgb = 0.5 * in.vNrm.rgb + 0.5;

//convert from 0.0f -1.0f 
out.vNrm.rgb = 2.0* in.vNrm.rgb - 1.0;

 

2.Render Target - Position Texture looks really strange, what I think is position just like normal has 3 floats value, but why there is no

brightness change??It looks really blue !?

 

In contrast to normals, which are at least in range from -1.0f to 1.0f, position ranges up to XXXXX.Xf, so the light gradient areas are the once that lie in displayable 0.0f - 1.0f range, everything else is clamped to maximum 1.0f. You can't display color values beyond 1.0f, that is.

 

 

3.The problem above is RenderMonkey's problem or my code error ?

Neighter, nor, its just how graphics work ;)

 

EDIT: Some pictures how my gbuffer looks like, from the actual app:

EDIT2: Actually, note that my g-buffer is in world space, not in view projection space, so that explains why it looks slightly different.

ndbtgp3u.png

 

Now look at this picture, you should see a similar change when you turn the camera:

 

umxqnpev.png

Edited by Juliean

Share this post


Link to post
Share on other sites

1.Render Target - Normal Texture looks just has r and g value , so where is blue ?.(I use Render Target pixel format A32B32G32R32F)

 

If you think about what blue stands fors, namely the direction component on the z-axis (or is it x in this case?), we can safely assure that "blue" in this case is negative ( < 0.0f), since said axis points away from the camera, models normals towards it. Also, your format is overkill for normals, just convert them to 0.0f -> 1.0f range an store them in X8R8G8B8-target. You will later on want to convert them back, which is easy as well.

 

//convert to 0.0f - 1.0f
out.vNrm.rgb = 0.5 * in.vNrm.rgb + 0.5;

//convert from 0.0f -1.0f 
out.vNrm.rgb = 2.0* in.vNrm.rgb - 1.0;

 

>2.Render Target - Position Texture looks really strange, what I think is position just like normal has 3 floats value, but why there is no

brightness change??It looks really blue !?

 

In contrast to normals, which are at least in range from -1.0f to 1.0f, position ranges up to XXXXX.Xf, so the light gradient areas are the once that lie in displayable 0.0f - 1.0f range, everything else is clamped to maximum 1.0f. You can't display color values beyond 1.0f, that is.

 

 

3.The problem above is RenderMonkey's problem or my code error ?

Neighter, nor, its just how graphics work ;)

 

……

 

Thank you, you're so kind.Now I know the reason of those phenomenons. : )

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement