Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Terrain system #16

Open
BearishSun opened this issue Mar 16, 2018 · 8 comments
Open

Terrain system #16

BearishSun opened this issue Mar 16, 2018 · 8 comments
Labels
OFFICIAL type: enhancement [MAJOR] Feature that takes a few weeks up to few months to implement
Milestone

Comments

@BearishSun
Copy link
Member

Heightmap based terrain system with continuous level of detail. Texture splatting and detail textures. Ability to remove chunks so that it can be integrated with custom 3D models. Ability to use displacement mapping (tesselation) for fine grained details on the surface (e.g. rocks, grooves, etc.).

Terrain vegetation system:

  • High performance and high quality grass rendering
  • Tree rendering with level of detail (SpeedTree integration and/or custom open source system, to be decided)

Water rendering shader.

Likely for a later feature: Separate voxel based terrain system (or a generic voxel based system)

@BearishSun BearishSun added type: enhancement [MAJOR] Feature that takes a few weeks up to few months to implement OFFICIAL labels Mar 16, 2018
@BearishSun BearishSun added this to the v1.3 milestone Mar 16, 2018
@iontom
Copy link

iontom commented Mar 20, 2018

marching cubes look pretty nice:
https://0fps.net/2012/07/12/smooth-voxel-terrain-part-2/

There's a pretty cool implementation for a module in Unreal that is MIT license, for following the patterns there.
https://github.com/Phyronnaz/VoxelPlugin

@BearishSun
Copy link
Member Author

Thanks, always nice to have an existing implementation as a starting point.

@christianclavet
Copy link

christianclavet commented Mar 29, 2018

We could have a voxel terrain to model, then use the voxels to generate a mesh.
Using a voxel model to start with would give use total control over how the geometry is done (caves, etc.)

Could be something like this plugin for unity (Perhaps there is a way to "plug" it with Banshee. This is more than just terrain, it come with a vegetation system, and water systems...
V11
https://youtu.be/xS2b6qibmJc

V10
https://youtu.be/S9q3uxyunyo

Tools
https://youtu.be/51JNyjBcDMo
https://forum.unity.com/threads/terrainengine-voxel-terrain-smooth-cubic-2d-hexagonal-infinite-procedural-terrain.174595/

Edit: The technique utilized here is based on Transvoxels:
http://transvoxel.org/

The plugin mentioned by IONTOM is also based on transvoxel so definitively a good starting point!

@jonesmz
Copy link
Contributor

jonesmz commented Mar 30, 2018

@BearishSun Several of the people who've been making noise with the Banshee engine / bsf lately (including myself) are trying to collaborate on a game that we're currently calling "Open Space Program" where a major feature is going to be launching virtual rockets from the surface of a planet, and landing on other bodies in a solar system.

We're still trying to find an engine that we think fits our needs the most. I'm a big fan of Banshee because of how clean and modern the codebase is.

One of our collaborators is evaluating Urho3d and tinkering how one would go about making a planet renderer, with their WIP code here: https://github.com/TheOpenSpaceProgram/urho-osp

So long story short, if the terrain system, at the worst, doesn't make it impossible to render a planet with Banshee, that'd be super :-)

@BearishSun
Copy link
Member Author

@christianclavet When voxel painting is added I'll certainly add a way to bake it into a proper mesh. That's how Cryengine handles cave creation and it feels quite natural.

With a bit more features I'm sure many of these Unity plugins could be adapted to Banshee. But from personal experience with Unity plugins, and from the provided video, it seems like quite a performance intensive task. Likely because it needs to be done non-optimally using the scripting interface, rather than being a core part of the engine. So in Banshee I'd like it to be part of the core.

@jonesmz That sounds really nice. If you do decide on Banshee I'd love to offer any help I can, including moving the terrain system further up the priority list. A simple geomipmapped terrain system like Urho3D has can probably be whipped up pretty fast, and we can improve it from there.

If you do go with Urho3D I'd be wary of its single-threaded nature. I feel with procedural worlds it's going to be very important to do rendering on a separate thread, especially when you increase the scope of the project. Also an API like Vulkan can help even more by further reducing the CPU load.

@equalent
Copy link

Hello!
Is there any progress on the terrain system?

Best,
Andrey

@BearishSun
Copy link
Member Author

No progress yet. This feature is planned for v1.3, while I'm currently in the process of finishing up v1.1.

@equalent
Copy link

Oh, I see.
Anyways, thank you, Marko.

Best,
Andrey

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OFFICIAL type: enhancement [MAJOR] Feature that takes a few weeks up to few months to implement
Projects
None yet
Development

No branches or pull requests

5 participants