Outerra forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

Download Outerra Tech Demo. Unofficial Outerra Discord server, MicroProse Discord server for OWS.

Pages: 1 [2]

Author Topic: Terrain engine project I’m working on, inspired by Outerra  (Read 25463 times)

Occams Razer

  • Jr. Member
  • *
  • Posts: 48
  • Freelance Graphic and Game Designer, 3D Artist
Re: Terrain engine project I’m working on, inspired by Outerra
« Reply #15 on: September 02, 2016, 12:28:21 am »

Don't get me wrong, I too wished a much faster development, but OT schooled me in patience.
They probably would need a few more talented coders sharing the same vision to speed things up.

I've had half a mind in the past to offer 'donations' of my skills and time to various projects that I wanted to see succeed or succeed more quickly, volunteering to help with development. Though the list does include Outerra, I only really know 3D and art, which isn't particularly in demand among the Outerra devs at present.
Logged

theFrenchDutch

  • Newbie
  • Posts: 8
  • newbie
Re: Terrain engine project I’m working on, inspired by Outerra
« Reply #16 on: November 06, 2016, 01:37:22 pm »

Quick update to show something I've been working on on and off since a few months : a try at a different rendering technique for vegetation with ray-casting. I was previously using a geometry shader, but it was very limiting in this project in terms of vegetation distance and draw distance when wanting realistic sceneries. This new method makes it possible but is still very heavy, depending on the screen render resolution : http://thomasdeliot.wixsite.com/blog/single-post/2016/11/05/Rendering-infinite-forests-with-raycasting

I think it has potential though. Unfortunately my studies currently leave me very little time to work on it as much as I'd like too, for a few months more still. Outerra does feature an impressive draw distance with trees already, and I'm wondering if the solution you use is something similar to the "standard" technique  with a geometry shader generating quads facing the camera ?
Logged

cameni

  • Brano Kemen
  • Outerra Administrator
  • Hero Member
  • *****
  • Posts: 6721
  • No sense of urgency.
    • outerra.com
Re: Terrain engine project I’m working on, inspired by Outerra
« Reply #17 on: November 09, 2016, 04:05:39 pm »

It's an interesting technique, I planned to use it to extend the distance of tree cover. As you point out in the blog, this would be less advantageous for sparser vegetation, so I guess maybe a compromise or a mixed technique could be better. We know the number of trees produced in tiles and can draw just the non-empty ones. Hmm, maybe the grid could be generated by geometry shader as well, and only for cells with trees (nearby). How are you handling camera view from below the tree line?

Yes, OT currently uses a geometry shader generating quads.
Logged

theFrenchDutch

  • Newbie
  • Posts: 8
  • newbie
Re: Terrain engine project I’m working on, inspired by Outerra
« Reply #18 on: November 19, 2016, 01:41:27 pm »

It would probably be best suited to a mix of different techniques, with maybe a switch to our previous geometry shader technique before switching to 3D objects up close. Currently I don't handle the camera being inside the shell mesh of the forests, as there is no real case where this is problematic  (the method isn't usable for trees close to the player).

I have been able to get a lot more performance out of it recently with optimizations that I don't understand fully, but probably due to how the GPU works. Mainly with the loop that traverses the simulated vegetation grid, I had to set a constant iteration amount instead of using the amount of cells traversed that I compute before the loop (as compiler doesn't want a variable amount of iterations), but I break out of the loop once it exceeds that computed amount so I thought performance-wise it would be the same. I had it set to a safe amount that I was sure would be higher than the computed amount of loop iterations. However reducing the constant iteration amount much closer to what the computed amount is on average, got me a huge performance boost, with no degradation to the quality of the tree detection.

I still have a loooot to learn on working with GPUs I guess  =D I can now run it in full screen at very good framerates for the computer that I use (gtx 850m laptop) depending on the scene , between 30-50fps without shadows, 15-20 with. It still varies wildly though and frametime is very inconsistent. But it seems like a viable method, and it's interesting to see that you were thinking about something similar too :) I would be very interested in seeing what you could achieve yourself with this idea, and seeing that in Outerra.

I have also began trying some ideas to get 3D vegetation instead of flat billboards using the same method, by replacing the quad-intersection test with a full raymarching procedure inside a cube representing the bounds of a single tree. I was very surprised to see that it actually runs at the same performance level than the billboard-only method... Which I don't really understand yet. But with this, I can try two different things:
- raymarch a voxelized representation of the tree, stored in a 3D texture. The rendering method isn't the same but I think it could end up looking a lot like this : http://phildec.users.sourceforge.net/Research/VolumetricBillboards.php. However up until now I used 2D texture arrays to store the different trees' billboard textures, and I would need 3D texture arrays to be able to do this, and these don't exist in either DirectX or Unity's API... So I can't really do that at all at the moment.
- raymarch a standard billboard tree but with a displacement map, to give volume to the tree. I don't know how good the results could be, but it would give the volume that is lacking with the flat billboards. Don't know when I'll have the time to code something to generate the displacement maps (speedtree's billboards only come with color and normal maps)
« Last Edit: November 19, 2016, 01:45:27 pm by theFrenchDutch »
Logged
Pages: 1 [2]