Jump to content

How to do SSAO in houdini (screen space ambient occlusion)


Recommended Posts

Hi:

I am very interested in doing this in houdini. It is being used in games to get fast occlusions.

SSAO or Screen Space

http://en.wikipedia.org/wiki/Screen_Space_Ambient_Occlusion

It exists in COPs as the "Depth Darkening COP", I understand. Now that Houdini 9.5 beta supports GLSL much better, perhaps we can convince SESI to implement it in their viewport?

And here: http://forums.odforce.net/index.php?showto...035&hl=SSAO

Hi:

They also implemented it in blender:

http://www.bigbuckbunny.org/index.php/appr...ient-occlusion/

Look here for point-based occlusion: http://forums.odforce.net/index.php?showtopic=2876

Enjoy,

Jason

Link to comment
Share on other sites

They also implemented it in blender:

http://www.bigbuckbunny.org/index.php/appr...ient-occlusion/

Any tips on how to do this in houdini?

That occlusion in Blender isn't SSAO. It's a point based occlusion. There are several ways to implement SSAO in Houdini - as Jason said you can use COPs - some kind of Houdini's "imager" context extension to Mantra (Mantra doesn't have imager context but we can use COPs to simulate this). Also I suppose it's possible to calculate SSAO in fog context using point cloud as Z-buffer. It's possible to calculate SSAO using OpenGL but for this we have to prerender somehow depth buffer. Hopefully this is possible to do with HDK using gr hook. And then we can render SSAO in viewport in gr hook or applying an OpenGL shader. I could be wrong but should be something like that.

Point based occlusion baked in SOPs and rendered in viewport with OpenGL shader.

post-312-1213911610_thumb.jpg

Link to comment
Share on other sites

  • 1 year later...

came across an SSAO implemented in GLSL....

http://www.gamedev.net/community/forums/topic.asp?topic_id=556187

but i've yet to get it working ( completely ) inside Houdini, but i'm new to GLSL. the GLSL code that was provided in the GameDev thread compiles just fine, but to get it working one would need to generate the normal and depth maps in GLSL as well... some sort of deferred shading.

furthermore, there's a RenderMonkey project in that same thread that is complete and includes the "fill g_buffer" ( normal and depth map shader code ), but everything is in HLSL.

if anybody has anything they could add i'd be curious if this could be accomplished inside H.

peace & 42

Link to comment
Share on other sites

Yeah the file to look at in that thread is the last one posted by user ArKano22 called ssao_corrected.zip.

Its kind of a hybrid between previous ssao methods and true occlusion, with the speed of ssao. I don't see why this couldn't be done in houdini, but I havent gotten round to trying myself.

Link to comment
Share on other sites

It's possible to calculate SSAO using OpenGL but for this we have to prerender somehow depth buffer. Hopefully this is possible to do with HDK using gr hook. And then we can render SSAO in viewport in gr hook or applying an OpenGL shader. I could be wrong but should be something like that.

I've been able to access buffers through the hdk but what I couldnt figure out was how to bind to them through glsl. It would be great if someone could share that.

Link to comment
Share on other sites

Yeah the file to look at in that thread is the last one posted by user ArKano22 called ssao_corrected.zip.

Its kind of a hybrid between previous ssao methods and true occlusion, with the speed of ssao. I don't see why this couldn't be done in houdini, but I havent gotten round to trying myself.

I've been able to access buffers through the hdk but what I couldnt figure out was how to bind to them through glsl. It would be great if someone could share that.

the rendermonkey project uses HLSL, but supposedly HLSL can be converted to GLSL.

if you can get your HDK buffer into an image file, you just add an "image file" param and then just put "uniform sampler2D img_file_param ;" at the top of the shader's code section.

but is this a buffer that needs to be generated whenever the view is moved?

Link to comment
Share on other sites

is there a way to render to an FBO ( Frame Buffer Object ) in GLSL and have that be read back into another GLSL shader inside Houdini?

it seems, to me, that I can render to a texture ( FBO? ) but i cannot seem to get this fed into another GLSL shader that can use it. am i missing something obvious?

something not so obvious?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...