Jump to content
mondi

OpenGL renderer

Recommended Posts

Lighting, materials, geometry, texturing - There's some buffer stuff to be fixed before the full range lighting / post fx / etc come online, but I thought I'd post a progress shot:

post-4129-1226525606_thumb.jpg

I like it! Fun stuff, it seems?

Share this post


Link to post
Share on other sites
I like it! Fun stuff, it seems?

Definitely!

Just need to petition the universe for that 36 hour day so I can work on this for more than a couple of hours a day :)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

In addition to the gdp pointer, I would also check whether the value of GU_Detail::getMetaCacheCount() is different.

Share this post


Link to post
Share on other sites
In addition to the gdp pointer, I would also check whether the value of GU_Detail::getMetaCacheCount() is different.

Thanks edward, I'll give that a try as soon as I get a free moment :)

Share this post


Link to post
Share on other sites

First pass with new light-buffer setup. Some weirdness with context size / fbo sizing, but nothing that seems insurmountable.

post-4129-1226880624_thumb.jpg

post-4129-1226880663_thumb.jpg

Share this post


Link to post
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..

Share this post


Link to post
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...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Second pass.

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

post-4129-1230587177_thumb.jpg

Share this post


Link to post
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?

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×