IsoSurface Demo - Dev blog experiment... (released)

@nehon said: I have 400 fps with default settings, around 90 fps when everything is on. Nvidia GTX 670 + core i7

Nice! I get like 22 FPS with everything on. :slight_smile:

Just tested again… sorry, yeah it seems I meant with everything switched on and maxed out, it gets far too slow. It’s fine with the default settings. I think I have a habit now of just pushing all the buttons :smiley:

But then again, its pretty standard to have all those post effects enabled in games these days, I don’t really consider them optional any more personally. They’re kind of the “baseline” post effects set you need in any modern game. The top engines do all that plus PBR, GI, TXAA etc on top of that stuff so there must be tweaks we can make I guess!

@monkeychops said: Just tested again... sorry, yeah it seems I meant with everything switched on and maxed out, it gets far too slow. It's fine with the default settings. I think I have a habit now of just pushing all the buttons :D

But then again, its pretty standard to have all those post effects enabled in games these days, I don’t really consider them optional any more personally. They’re kind of the “baseline” post effects set you need in any modern game. The top engines do all that plus PBR, GI, TXAA etc on top of that stuff so there must be tweaks we can make I guess!

Yeah, but for example, SSAO does almost nothing in this scene and in my game I will likely do shadows a different way. Those are the two biggest frame grabbers as they are geometry dependent… and there are a lot of triangles.

The others are pretty much just constant frame hits. (For me about 3-4 FPS each.)

What is GI?

Also note: with the wide field of view, everything is also slower. If you go to the camera panel and set field of view back to the default 45 degrees then performance improves (at least for me) pretty dramatically. But the land looks too small to me with the lower field of view. High FoV is a nice way to trick us into thinking there is more land than there is.

GI is global illumination
@monkeychops most games have deferred rendering. It helps a lot for post processing that need an additional geometry pass in a forward context, like SSAO (we render the normals of the scene). In a deferred rendering you just add a render target to the backbuffer pass, it’s almost free.
But yeah I guess we have some progress to do on that side. Deferred will be implemented at some point.

I thought some of you might find this interesting. Personally, I think data is kind of neat.

I’m looking at plotting other random things in addition to the grass so I decided to visualize the fractal I used to plant the grass. The hope is that if I can come with a single “planting plan” that I won’t need to do overlap testing and so on. The trees will plot where they plot, the rocks where they plot, and the grass where they plot… and nothing will overlap because it all comes from the same fractal.

Anyway, so I plotted it with color classification. Here is one of my favorite places to test and take pic. Grass is turned off but the plot fractal is visualized:

Red indicates places where the surface would allow grass but the fractal offset was too low. Blue represents a small offset, pink a little higher, then green, and finally yellow.

Here is roughly the same area from above:

There are two other channels in the final fractal that I haven’t even looked at. I’m going to visualize those next just to see what’s what. It will be a more complicated visualization, though, so I’m posting this one. :slight_smile:

I believe I can work with this… but for rocks I’m pretty sure I’m going to have to intersect with one of the other channels. For trees, I may simply sample the yellow area at a lower frequency. We’ll see.

5 Likes

@nehon

I read an interesting thread about this on the Ogre forum from one of the core devs: http://www.ogre3d.org/forums/viewtopic.php?f=1&p=505215#p505090

I'm actively working on PBS. Don't have screenshots to show yet. However we won't back deferred shading (Ogre 2.0 will provide deferred shading examples, it will be much easier to setup for those interested). Deferred Shading is a dead end by now, but it's still very much alive because you're seeing the culmination of many engines' work. DS is a dead end because of its extreme bandwidth requirement (no GPU in the market can push a 4k resolution using DS) I'm working on Forward+ 2.5 solutions that eliminate the need of a Z-prepass. Although it has a few tradeoffs compared to DS (i.e. probably slightly slower at regular resolutions), it solves the bandwidth problem, the antialising problem, and the transparency problem.

There is a paper about this new forward+ 2.5D culling here: https://sites.google.com/site/takahiroharada/storage/2012SA_2.5DCulling.pdf?attredirects=2

@pspeed Looks sort of like a hippy grass shader :smiley:

Got some basic trees plotted. Thought I would drop in with some screen shots.

Currently, they are batched and not instanced… so the whole thing is pretty much a memory pig even with only this many trees. Also, I’m only doing branches at the moment and there is no LOD. The far trees suffer for this on several fronts… leaves and lower LOD would prevent them from ‘twinkling’ as I move around.

Also, I’m not varying rotation and scale at all and they all point exactly straight up.

Still, it’s a bit encouraging to get this far even:

5 Likes

No surprise, but a little variation goes a long way.

Proper rotations (no scale variation yet):

5 Likes

I got leaves working… and this is why I wanted to wait to tweak the leaf texture. Until you see it in context, it’s impossible to know “will it fit right” or not. Clearly, to me: “not”… but anyway.

No LOD yet so I’ve limited the render distance for the trees to just 32-64 meters… and I couldn’t decide which pic so here is all of them:

Note: framerate is slow because of shadows being enabled. I need to add a ‘drop shadows’ toggle for some more efficient shadows.



Anyway, it’s clear that even though the colors are off, leaves really add a lot of character.

Next on my agenda: get proper LOD working and have more than one type of tree.

Support for LOD information is the last missing feature of the paging library, by the way.

7 Likes

Got multiple tree types and LOD working… so I made a video.

There are still some kinds to work out and the leaves are still kind of an ugly color under certain lighting directions but I’m happy with the progress.

As it stands, I eventually run out of memory if I keep flying around. I’m not sure if it’s because I have a leak or because I hit a particularly populated section of the world and just run out. I have direct memory limited to 512 meg, though… so could be that upping a bit makes the problem go away completely.

Note: I turned shadows off part way through because it was halving the frame rate that fraps was already halving.

6 Likes

pspeed, this looks really cool. I’ve been following your work for quite a while and I’m using simarboreal in my own work. Thanks for your contributions, they’re excellent.

I don’t intend to hijack this thread but I’m curious about how you limit the direct render memory to 512MB. I’ve been working with JME for only six months so I still have a lot to learn. I’ve read tutorials, documentation and tons of forums posts but haven’t seen anything about configuring direct render memory so your input would be super helpful.

@JoeMama said: pspeed, this looks really cool. I've been following your work for quite a while and I'm using simarboreal in my own work. Thanks for your contributions, they're excellent.

I don’t intend to hijack this thread but I’m curious about how you limit the direct render memory to 512MB. I’ve been working with JME for only six months so I still have a lot to learn. I’ve read tutorials, documentation and tons of forums posts but haven’t seen anything about configuring direct render memory so your input would be super helpful.

Normally the direct memory max is much lower than that. It’s a java command line setting to increase it and can be passed in the run properties for your project.

Thanks for the info. For anybody that runs into this, the command appears to be

-XX:MaxDirectMemorySize

@pspeed

Awesome work!

A couple questions:

  1. Do you plan on supporting run time changes to the density volume? In other words, real-time modifiable terrain?

  2. I’m assuming that trees and grass are all oriented world -y axis down. What if you wanted a planetoid(s) where everything is oriented to a local center?

@aaronperkins said: @pspeed

Awesome work!

A couple questions:

  1. Do you plan on supporting run time changes to the density volume? In other words, real-time modifiable terrain?

There is no reason that it can’t be supported. I don’t know that I will add it but the code doesn’t really care. Meaning: modifiable terrain should be as easy as changing the value in the density field and telling the zone to rebuild.

@aaronperkins said: 2. I'm assuming that trees and grass are all oriented world -y axis down. What if you wanted a planetoid(s) where everything is oriented to a local center?

The pager assumes flat earth… so it’s a pretty struct x,y,z grid.

However, the trees and grass can face any direction… in fact, the grass and trees already do lean based on their terrain location. So the mesh supports it… but the pager is locked into y up.

This is great, good job!
This is moving the terrain itself, and not the camera, right? Because I had a really ugly glitch with water when I translated the camera.

@fabsterpal said: This is great, good job! This is moving the terrain itself, and not the camera, right? Because I had a really ugly glitch with water when I translated the camera.

Yes, it moves the terrain and the camera stays still in the x,z plane. I have a different glitch in that the water doesn’t move with the terrain… which can look a bit strange if you are looking for it.

@pspeed said: Yes, it moves the terrain and the camera stays still in the x,z plane. I have a different glitch in that the water doesn't move with the terrain... which can look a bit strange if you are looking for it.

That’s not as disturbing as the blocky effect when you move the camera on XZ.

Edit: Couldn’t you change the water filter to apply the translation? The only issue is that might (probably will) cause the same problems as moving the camera (not sure).

This is awesome!

You make most of us look like idiots diddling with sticks and rocks :D.