Jump to content

SpiderPig

Members
  • Posts

    2,348
  • Joined

  • Last visited

Posts posted by SpiderPig

  1. I've placed a grass and dirt texture in the flow regions.  I think that when these maps are combined with height and slope texturing too they'll look quite nice.

    FlowMapTextured.thumb.png.5286cce5c421379357d6c706380848a9.png

    @Josh is it possible for me to create a shader for my voxel terrain that supports multiple materials like your terrain system does?

    • Like 1
  2. In UESystem.h declare a variable after the class like this:

    extern UESystem CoreSystem;

    (I've only ever used raw pointers for this but I assume it will work the same)

    Then in you main.cpp keep your definition of:

    UESystem CoreSystem;

    Then you can include UESystem.h where ever you want and access its public members and methods ike so:

    CoreSystem.world ...etc.

    • Like 1
  3. That'd would be cool.  I'm going to try to do something like that.  I'll probably generate a separate cave system beneath the surface with 3D simplex noise and then have it erode through the surface into it somehow.

    I'm a bit closer with the erosion map now.  I'd like to separate the data into 3 layers like world machine.  Wear map, flow map, and deposition map.  I think the flow map could be separated by using the droplets speed perhaps.

    TerrainFlowMap.thumb.png.758c3212bb35cd843a428507aa24f9c9.png

    • Like 2
  4. Yeah it does a bit.  Actually - it might be because each drop is randomly placed on the terrain with Random(0, terrain_size) and all I'm really drawing to the texture is the positions the drops are falling on... <_<  You have given me something to think about...

    • Haha 1
  5. The same hills and terrain size but as a voxel terrain.  This has the one texture at the moment and currently has flat shading enabled.  I will probably need to upload the heightmap to the vertex shader to do smooth shading.  I want to try creating vertical cliffs as well as overhangs that can all be part of the erosion process.  But we will see.

    TerrainVoxels.thumb.png.49a4d540bb98f6c881afda441a2c4e4a.png

    I sample the heightmap like this;

    float CalculateTerrainSurface(shared_ptr<VoxelObject> voxel_object, shared_ptr<VoxelBrush> brush, VoxelNode* node, Decimal3& position) {
        auto plane = Plane(Vec3(0,64,0), Vec3(0, 1, 0));
        auto x = (int)position.x;
        auto z = (int)position.z;
        auto height = terrain_generator->GetHeight(x, z);
    
        return plane.DistanceToPoint(position.x, position.y, position.z) - height;
    }

     

    • Like 3
  6. Green is default, red is sediment deposition and blue is erosion.  Longer droplet lifetimes push the sediment further into the valleys and increasing the sediment capacity cuts larger grooves into the terrain.

    TerrainErrosionColors.thumb.png.e3f62cc6be780e83764ac53e10d3e9fb.png

    With Textures:

    TerrainErrosionTextures.thumb.png.1ca6bf0ff78739e01ae022d1d0973f0c.png

    I think now I start experimenting with merging different terrain types together and changing textures based on biome as well slope & height.

    • Like 3
  7. I don't fully understand the code I implemented yet, but at some stage I will compare them and see what works best.

    Here's a basic erosion map overlay.  I just did something quick, I think the dirt is being shown along the deposit positions.  I will need to read through the erosion code to build a better erosion map.  Ideally I'd like the flow and deposition maps to be separate channels / textures.

    TerrainErosionMap.thumb.png.73148fc73de17256783b87094165627a.png

    • Like 1
  8. I've just realised there's probably no way to blend it seeing as Ultra can use so many different terrain materials.  I guess though you could assign a material per channel and do something like what I think I just got working...

    for (int y = 0; y < 512; y++) {
        for (int x = 0; x < 512; x++) {
            auto value = terrain_gen->GetErrosion(x, y);
    
            if (value != 0.0f) {
                terrain->SetMaterial(x, y, rocks, value);
            }
        }
    }

     

  9. I have spent the last few hours working on this.  Quite pleased with the result.  It generates a 512x512 terrain with simplex noise and then erodes it with hydraulic erosion.  I used the code found here.  I believe I can speed up the code a lot and use a few more threads.  First I want to use the erosion data to make a splat map for texturing.  Soon I will use this to create terrain for my voxel terrain.  Stats are in release mode.

    Without Erosion:

    TerrainNoise.thumb.png.c385af81357d8dba71a548dfb8a91211.png

    With Erosion:

    TerrainErosion.thumb.png.42d8ad5419c27955a88c8289ce8737fd.png

  10. Every once in while I get this error when opening up the client app and I will then have to enter my details again.  It usually happens after a long period of not opening the client up, maybe a week or two...  Is it a brief network issue it's detecting or perhaps something else as my internet is fine as far as I can tell...

    ConnectionError.thumb.png.e4aedb4c7bbc34c9bd69cf7b849e9277.png

×
×
  • Create New...