Jump to content

OpenGL renderer


Recommended Posts

  • Replies 80
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

A little better lighting, better transparency support, normal mapping( with some brokenness, a hack for now )

Still need to update my light buffer setup so I can use the engine's internal render layer setup .. hopefully this weekend.

Quick question: Currently I'm using the gdp pointer as an ID for the incoming data, so I can buffer as much as possible, I'd like to use the actual object ID if possible, and query topology / data changes - is this possible at all? Is it even possible to extract OP / OBJ information from a GU_Detail?

edit:: Just realized that this is what's being done internally in Houdini to an extent, which I'm pretty much overriding with the display list environment option. I guess I'll try linking the materials to the lights so that changes get pushed.

Have a nice weekend.

post-4129-1226707416_thumb.jpg

Edited by mondi
Link to comment
Share on other sites

  • 2 weeks later...

Not a fun image reply..

I'm in the middle of some pretty major production crunch right now, so time is a little scarce ;)

I did fix the sizing / aspect ratio stuff though, so as soon as I finish the Houdini side of things for this project, I'll reinstall the dso and put up a couple of new pics.

But now, sleep time..

Link to comment
Share on other sites

Not a fun image reply..

I'm in the middle of some pretty major production crunch right now, so time is a little scarce ;)

I did fix the sizing / aspect ratio stuff though, so as soon as I finish the Houdini side of things for this project, I'll reinstall the dso and put up a couple of new pics.

But now, sleep time..

I don't know what it is, but I like it!

;)

Looking forward to seeing your next series...

Link to comment
Share on other sites

  • 3 weeks later...

Project went great :)

Fixed up some issues with relative positioning tonight.. All my test models were at the origin before, so I didn't catch this one earlier.

I thought I'd post a quick comparison: Lights / Model are identical, and the materials are as similar as I could get them within the available parameters. The next step is to read values from the default Houdini material types.

1 - VEX Super Material ( I can't test the OGL2 stuff as Houdini on OSX doesn't support that path last I checked )

post-4129-1228948990_thumb.jpg

2 - Same scene - similar camera, with my renderer / custom material:

post-4129-1228949046_thumb.jpg

And finally - unresized render:

post-4129-1228949761_thumb.jpg

Link to comment
Share on other sites

There are some issues with camera projection - I'm not entirely sure how to extract the info I need from the HDK, but I thought I'd add this anyway:

Simple model + 1 light + video: Everything so far has used my somewhat ambiguous models :)

edit:: Removed the video temporarily. I need to fix some problems with my website

Edited by mondi
Link to comment
Share on other sites

  • 3 weeks later...

What a lovely vacation - hope you guys got some time to decompress :)

Been working on the post fx / layering / buffer system in preparation for deferred shading and a better shadow map implementation - and as a side project, I thought I'd do some experiments with screen space ambient occlusion. It's not quite right yet, and there's much tweaking to be done, but the results are encouraging so far. Very little hit on framerate which is nice - 100% GPU calculated.

post-4129-1230563674_thumb.jpg

post-4129-1230563722_thumb.jpg

Link to comment
Share on other sites

Second pass.

No blurring or fanciness yet, but the basics are fleshing out nicely.

post-4129-1230587177_thumb.jpg

Hey Mondi!

I love what you're doing, but it'd be nice to know how it differs from the unmodified OpenGL viewport.. any chance you can post a comparison pic?

Also; since you've got your fingers deep into this.. have you looked a trying a SSAO (Screen-Space Ambient Occlusion) renderer?

Link to comment
Share on other sites

Hey Mondi!

I love what you're doing, but it'd be nice to know how it differs from the unmodified OpenGL viewport.. any chance you can post a comparison pic?

Also; since you've got your fingers deep into this.. have you looked a trying a SSAO (Screen-Space Ambient Occlusion) renderer?

Sure thing - That's exactly what I'm working on right now :).

Houdini standard viewport, 1 pointlight

post-4129-1230641482_thumb.jpg

Viewport, 1 pointlight, with pass3 of SSAO, still tweaking parameters.

post-4129-1230641534_thumb.jpg

There's obviously a great amount of work to be done, but I'm pretty happy with the results thus far.

There is a little trickery going on in those pictures - I had to increase the pointlight falloff for the standard viewport so you could see anything, so it's a tad more contrasty just by default. Both are straight captures though - no post processing other than scaling

Link to comment
Share on other sites

Thanks - I'd love to see people using this stuff, just need to tie it all together a bit more :)

We'd love to:) Are you going to post the source-code, perhaps? :)

Latest: More tweaks to the ssao shader, with rudimentary depth of field. It's almost time to do an optimization pass, but this currently runs at around 14fps @ 1675 * 1280 with 4xMSAA.

post-4129-1231004418_thumb.jpg

This is very very nice work, thanks Mondi. Just looking at your occlusion effect, it seems to cast a "shadow" on the background, making it appear as if there is a sheet of paper underneath the scene, which kinda defeats some of the distant depth feel. Is there a way to stop that?

Wouldn't it be cool if SESI could come up with a way to pass arguments to RenderHook plugins, perhaps a new "Viewport Plugins" section in the Display Options? Along with a way to bypass these plugins with a toggle. Currently the only way I'm aware of for doing such a thing is to analyze geometry detail attributes - which are not really appropriate for global viewport settings.

post-4-1231007970.jpg

Link to comment
Share on other sites

We'd love to:) Are you going to post the source-code, perhaps? :)

This is very very nice work, thanks Mondi. Just looking at your occlusion effect, it seems to cast a "shadow" on the background, making it appear as if there is a sheet of paper underneath the scene, which kinda defeats some of the distant depth feel. Is there a way to stop that?

Yeah, I'm not discarding any samples based on the depth comparison yet, It's on the list. Plus, once I get the depth peeling setup implemented, I'll be working with multiple depth buffers, which should get rid of most of those sort of artifacts, as well as allow for better occlusion inside clusters of objects... So many items on the list :)

Between platform specific code, and parts of the code that are a little secret (:) - Got some ideas going) It'll be a bit before any source is posted, but I'm definitely looking to put together a binary distribution in the nearish future, which I'll happily release along with any relevant script interfaces / header files

Wouldn't it be cool if SESI could come up with a way to pass arguments to RenderHook plugins, perhaps a new "Viewport Plugins" section in the Display Options? Along with a way to bypass these plugins with a toggle. Currently the only way I'm aware of for doing such a thing is to analyze geometry detail attributes - which are not really appropriate for global viewport settings.

That's something I've been thinking a lot about recently. My plan is to clean up the actual hook soon, and get together a list of requests for the hdk interface. I'm sure if we got a few heads together, we could come up with quite a few ideas.

Link to comment
Share on other sites

Well, instead of using attributes, one could also use one of the display options when overriding GR_RenderHook::getWireMask() and GR_RenderHook::getShadedMask(). Now that there's custom display options, one could easily create one and use some predefined name for enabling/disabling render hooks. Take a look at GR_DisplayOption's getUserOption() and getUserOptionState() methods.

Link to comment
Share on other sites

Well, instead of using attributes, one could also use one of the display options when overriding GR_RenderHook::getWireMask() and GR_RenderHook::getShadedMask(). Now that there's custom display options, one could easily create one and use some predefined name for enabling/disabling render hooks. Take a look at GR_DisplayOption's getUserOption() and getUserOptionState() methods.

I'll definitely look into that.

Sorry for the long delay - between getting an awful cold, and looking for work, I've been a bit preoccupied :)

Anyway, found and fixed a fairly embarrassing lighting problem, and am starting to put the engine back together after tearing it apart to integrate the new buffer system. What's nice now, is that with just a little more work, I can implement a fairly extensive post effects system, with very little overhead other than the actual shading time

post-4129-1231875264_thumb.jpg

Edited by mondi
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...