Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Screeb
Dec 28, 2004

status: jiggled

Entheogen posted:

I am trying to do some volume rendering using OpenGL and Java.

here are some preliminary results (there are 6 million triangles in each):





The frame rate is not that great. I use display lists right now. The volume data itself doesn't change. If anyone can suggest a better method, please do.

Vertex Buffer Objects (VBO's) are what you want. WAY better than display lists.

Adbot
ADBOT LOVES YOU

Screeb
Dec 28, 2004

status: jiggled

Entheogen posted:

I do not understand. Display list is compiled list of commands, VBOs on the other hand still have to be rendered using some primitive? How could it be faster?

I am using Java, but it is pretty close to the way OpenGL is used in C, so your example code could be very useful for me.

Read this: http://www.spec.org/gwpg/gpc.static/vbo_whitepaper.html

However, after looking at your screenshots again, I see that you get much better FPS when further away from the volume - i.e. when it only takes up a portion of the screen. That means that the bottleneck is actually the fillrate, which makes sense given you're rendering millions of semi-transparent triangles. In that case, I don't know what to suggest to be honest.

What kind of performance do you get rendering it as a point cloud instead?

Screeb
Dec 28, 2004

status: jiggled
One of my personal projects is a 3D game framework. It's a bit old now and pre-pre-pre-alpha. Pretty much the only part that's anywhere near useful is the GUI system.



(It's a lot nicer than it appears)

I recently came back to it and added some nice smooth animations (like for when you hover over a button, or expand/contract a listbox).


I've also been using the framework as a playground for testing some physics. Here's some cloth physics I've been working on:



This one is 400x400 vertices, with approximately 1,120,000 spring and angular constraints.




I think this one's about 100x100.

Yes, the FPSs are accurate. I used 600 iterations (time slices) per frame for the first pic in order to get it nice and cloth like (ie not stretchy). Combined with the stupidly high "resolution" of the simulation means it takes a while for each frame.

I guess it goes to show how easily distracted I get. I really want to make the rest of the framework, but cloth sim is so much more satisfying :(


My biggest personal project is my ray tracer, though. I don't have any pics at the moment cause I'm not an artist so everything I render with it looks dumb. It's quite advanced though. Fully OO (even the camera lens), global illumination (including caustics), heavily savagely optimised Oct-Tree (optional, due to being OO. You could replace it with whatever. Or have a mix), depth of field, motion blur, etc. Basically everything you need to render a photorealistic picture.

Screeb fucked around with this message at 16:46 on Oct 26, 2008

Screeb
Dec 28, 2004

status: jiggled

Zakalwe posted:

Very nice feature set :)

I'll assume you're working on an offline renderer as you're doing GI and distribution ray-tracing and mention the word "photorealistic". You did however talk about savagely omptimising your oct-tree so I guess you do care about speed. Forgive me if I'm giving unwanted advice, but this is my area of research and I love to talk about it :)

Dump the Oct-tree ASAP. SAH based KD-Trees perform much much better. Implement packet tracing also if you haven't yet for a ~3x speedup. There's a ton of literature out there, but Carsten Benthin's PhD is a great resource for getting a highly optimized ray-tracer up and running. http://graphics.cs.uni-sb.de/~benthin/phd.pdf Feel free to PM me if you want to chat about ray-tracing and making it FAST.

Yep, it's offline, but of course, speed is still a priority - just as long as it doesn't introduce artifacts / isn't a big hack.

I started implementing a KD-tree a while ago, but didn't get around to using SAH (so right now it's just a very slow naive one). I'm probably going to implement a BVH as well, as it's almost as fast, but much simpler.

I haven't yet packetised it, as I want to figure out a clean way to implement it in my architecture (one of my focuses is good clean code - no nasty hacks if I can help it).

I see you've been on http://ompf.org/forum/ - I often go there and read up on the latest stuff, so I'm aware of all the neatest tricks around, I just don't have the time to implement them all.

I haven't seen that PHD - looks good, cheers.

Thanks for the advice and the offer. Do you have your own pet renderer at all? If so, I'd love to hear about it.


samiamwork posted:

I'd actually like to see a couple of screenshots if you wouldn't mind. Even basic shapes look cool with some of the features you're talking about. At least I find it interesting anyway. This thread isn't exactly filled with gorgeous art. It's all about seeing things people made.

Alrighty, I'll see what I can do. I do have a few shots lying around that shouldn't be too bad I guess.

Edit:


Click here for the full 800x600 image.


Classic Cornell Box with some scanned models inside (not made by me!). You might notice you can't see the light - that's because if I'd made it visible, it would've introduced "fireflies" - little bright pixels around the place - due to technical reasons (I could have included it and rendered it for a longer time, which would have gotten rid of them, but it would be a LONG time to get the same visual quality. A more advanced lighting algorithm would solve it, such as bi-directional path tracing, which I haven't gotten around to implementing yet).




(Again, model not by me). Ignore the black light bulbs - I'd forgotten to increase a certain parameter (number of light bounces) when I rendered it. I couldn't be bothered rendering it again.



Click here for the full 640x480 image.


A simple example demonstrating HDRI environment maps and caustics (yes I made this one :P Not the HDRI map though)



Click here for the full 640x480 image.


A whoooole lot of bunnies (totaling over 123 billion polygons)



Click here for the full 640x480 image.


Wanky artsy shot demonstrating depth of field.

Screeb fucked around with this message at 06:46 on Oct 28, 2008

Screeb
Dec 28, 2004

status: jiggled

Zakalwe posted:

BVH is only really fast in a few scenarios all of which are tied to dynamic scenes. Because BVH builds faster, in engines requiring per frame rebuilds, the slowdown in render speed is offset by the speedup gained building the BVH. BVHs can also be defromed in O(logn) up to a point, negating the need for an O(nlogn) full rebuild every frame. BVH *can* work nice with very large packets and entry point search, but as you haven't implemented packet tracing yet that point is moot. Bottom line is that the kD-Tree is king and on static scenes the BVH is actually quite sucky. In fact your octree should beat the pants off it.

Ah, true. I guess I'll do the kd-tree first then. I do want to do animated stuff down the line (not real time), but yeah I guess there's not much point in implementing BVH at the moment if it's not going to be anywhere near as good for static scenes.


Zakalwe posted:

code:
__m128 a,b,c;

a = b + c;

Cool, didn't know you could do that. Most of my hesitance with packetisation though is in modifying my data structures to suit, which I'll have to do some thinking on.


Zakalwe posted:

BTW what triangle/ray intersection method are you using? You can precalculate on a per-tri basis parts of the intersection for a decent speedup (~15% according to my figures).

I'm using Möller-Trumbore. I was previously precomputing two edges and d, but I recently took it out due to the heavy space penalty - I wanted to render models like the 28M Lucy statue, which wasn't fitting in my 2GB ram. I might put it back in though, now that I've got 8GB in my new machine. I miss the speed :(


Zakalwe posted:

Ingo Wald's thesis is worth a read too, as is Vlastimil Havran's. Some outdated stuff in the latter, but the section on kd-tree building and SAH is still relevant.

Cool, thanks. I don't think I've fully read through those, but I've at least glanced over them in the past.


Zakalwe posted:

My own render is a multi-core SIMD real-time ray-tracer. I mostly use an SAH O(nlogn) kd-Tree builder with perfect splitting and a new entry point traversal similar to MLRTA (paper on new EP search algorithm hopefully to be published at Eurographics 2009 - fingers crossed) . I do use BVH and Bounding Interval Hierarchy for parts of my dynamic scene support though.

Nice, real time ray tracers are crazy. How does your renderer stack up to Arauna?

Good luck on your paper being accepted! You should talk about it on ompf.


Zakalwe posted:

My pictures are boring as I'm mostly working on data structures and algorithms to improve performance :)

Haha, sounds like me. I'VE NO TIME TO RENDER DAMMIT, GOTTA OPTIMISE THIS poo poo. That's what it's all about :)



I think one of my next steps is going to be network-distributed rendering. I did a project this year rendering quaternion julia sets with a little Java ray tracer I shat out that rendered on my university's grid, which was pretty neat. Obviously I don't have access to a proper grid for leisure, but hey, a few extra PCs should be worth it.

Screeb
Dec 28, 2004

status: jiggled

brian posted:

Haha the shadows are built into the sprites, when I have time i'm first getting networking working, then i'm going for alot of graphical snazzery and i'll remember this one. I want to make it as faithful to the original 3 games as possible both in terms of GUI, effects and everything related to the animation. The battle scenes at the moment are entirely scripted events and ideally i'd like to make it a bit more like the dudes are actually shooting more than that both sides are playing certain animations at certain points. But basically yeah lots of graphical stuff to do but very much at the bottom of the queue right now.

I think he means the shadows of the numbers at the top left and right.

Screeb
Dec 28, 2004

status: jiggled
What's the hue if there are multiple routes to the same location? Or does it only work for mazes with one path to each location?

Screeb
Dec 28, 2004

status: jiggled

XHydralisk posted:


A deck randomizer for games like ThunderStone and Dominion. It can read a decklist from a file and randomize it for you!

Are you using drop-down buttons for a menu? :crossarms:

Screeb
Dec 28, 2004

status: jiggled

XHydralisk posted:

Yes, I think I should be using a menustrip instead? I'm new to .NET and didn't notice the menustrip when I was making this.

Yeah, MenuStrip.

Screeb
Dec 28, 2004

status: jiggled

forelle posted:

Mari

Ah, Mari. I worked at Weta briefly a few years ago and had a look at Mari's intranet info page. Looked really interesting, and I really wanted to work on it. At the time someone had done a comparison of Mari's brushes with equivalent Photoshop brushes, and I noticed that Mari's brush antialiasing wasn't very good. I sperged about it to one of the Mari guys during I think the Christmas party. Don't remember his name though - could've been you! Good times.

Screeb
Dec 28, 2004

status: jiggled
A good friend of mine is programming a game (with a friend from his old university doing some art, sound, and voices) with the UDK. I haven't worked on it myself, so I hope it's ok to post, but I just wanted to share it cause it looks awesome. It's called Heaven Variant, and is a side-scrolling space shooter, currently in alpha (note: models are placeholder). Once he gets a build working I'll be able to test it :woop:

https://www.youtube.com/watch?v=epeTMdQAXDU

Adbot
ADBOT LOVES YOU

Screeb
Dec 28, 2004

status: jiggled
I heard there were teapots? *blows dust off old box of source code*


(click for big)

Post perfect spheres and the ray tracingest teapots you got.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply