GithubHelp home page GithubHelp logo

jaysmito101 / terraforge3d Goto Github PK

View Code? Open in Web Editor NEW
910.0 910.0 88.0 644.92 MB

Cross Platform Professional Procedural Terrain Generation & Texturing Tool

Home Page: https://Jaysmito101.github.io/TerraForge3D/

License: MIT License

C 0.10% C++ 94.15% GLSL 5.55% CMake 0.20%
3d cpp game-development gamedev gpu-acceleration hacktoberfest imgui nodeeditor open-source opengl opensource precedural-textures procedural-generation terrain-generation

terraforge3d's Introduction



GitHub repo size Lines of code GitHub commit activity
GitHub all releases SourceForge GitHub
Maintenance Support me on Patreon



TerraForge3D

TerraForge3D is a powerful cross platform procedural terrain generation and texturing tool. This is being maintained actively. This has got everything you need to bring your imagination to life.

A huge benefit is that TerraForge3D is 100% free and opensource. TerraForge3D is very easy to get started with. There are also a series of tutorials(on youtube), documentations for your help.

Also if you have any question or problem or suggestion you can directly reach out to me via my email [email protected] . Or you could join our official discord server with a charming community(including me) to help you out with any issues.

Showcase

Here are some of the terrains created with TerraForge3D. (You can send your artwork either via the discord server or #10)






For more visit : https://jaysmito101.github.io/TerraForge3D/

Screenshots

Here are some of the screenshots of the application with all its ui, ...







A Request

Please consider Giving your valuable feedback : #6

Also Please consider starring this repository.

Also if possible please considering supporting the project through patreon or opencollective it helps a lot.

Tutorials : Youtube

Features

TerraForge3D has got a series of features. Listing all of them is a very difficult task. Here are some of the major features.

GPU Powered Terrain Generation

TerraForge3D utilizes the power of your GPU to generate the terrains blazing fast. TerraForge3D utilizes OpenCL 2.0 to use your GPU. With GPU mesh generation you can work with extremely huge meshs in realtime.

CPU Powered Terrain Generation

There are somethings which cannot be done on a GPU as efficiently(like the node editor) so you can optionally mix GPU generation with CPU generation to get more control. Also if your GPU doesnt support OpenCL 2.0 you can still use the CPU mesh Generation. Also TerraForge's CPU Mesh Generation algorithms are made keeping efficiency and speed in mind thus they are extremely fast.

No Limit on Resolution

Most terrain generation applications limit you to a certain maximum resolution or only certain resolutions like (128, 256, ...) but not TerraForge3D! TerraForge3D allows you to work with any resolution you can imagine.

Dedicated Texture Baker

Bake any node output, the heightmap, anything you want to a high quality texture! Bake a huge resolution texture at once or bake it in tiles!

Shader Nodes

Like Blender, TerraForge3D has a shader node editor which lets you texture your terrain exactly how you want, exactly how you imagined it. You can also export the shader node setup into functional GLSL code for your own project!

Cross Platform

One of the biggest benefits of Terraforge3D is that its cross platform! Also TerraForge3D is the only high end Procedural generator supported on linux!

Physically Based Renderer

Preview your terrains in photo realistic quality!

Advanced Node Editor

TerraForge3D has a very advanced Node Editor with 40+ different nodes which let you completely control how the terrain is generated. You can even use mathematical functions to shape your terrain!

Physically Based Erosion

TerraForge3D has several erosion algorithms(hydraulic, wind, ...) which lets you simulate the simulation on you procedurally generated terrains giving it an extra touch of realism. These algorithms simulate actual rain, wind, dust to give the best effect.

Custom Shape Generation

Procedural is great! But sometimes there must be a human touch! Thus TerraForge3D lets you customize your terrain by manually placing terrrain features like hills, caters, cliffs, etc and combine it with procedural terrain.

Custom Sky

TerraForge3D allows you to completely customize the sky. You can use a sky box, sky dome. You can procedurally generate a sky or use a HDRI.

Sea Level Visualization

TerraForge3D also lets you visualize a sea to give you a idea of the sea level.

Custom Shaders

TerraForge3D allows you to have a custom shader(in GLSL). TerraForge3D also provides an inbuilt editor for writing your shaders!

Texture Store & Texture Settings

TerraForge3D gives you a huge collection of textures to download and use free of cost! Also TerraForge3D's texture settings give you fine control over how the mesh is textured.

Universal

TerraForge3D can export to a whole lot of 3D file formats like OBJ, GLTF, GLB, STL, ... . Also you can export heightmaps as PNG, JPG, ... . This makes TerraForge3D totally compatible with any program you can think of! Be it Blender, Unreal Engine, Uniy, Maya, anything.

Some Advices

  • When you are starting up the app for first time it will need to download some things and cache them.You can see the console for details
  • You can Show/Hide the console from Menu > Options > Toggle System Console.
  • Whenever you feel that something is wrong or the app is slow check the console for updates

Contributing

Since this project has become very large I would really love some help. For a guide on how to get started developing TerraForge3D https://terraforge3d.gitbook.io/docs/developers-guide

Support

Any support is highly appreciated! Please consider tweeting about this to spread the word and help this project grow. You could join my patreon and get early access to TerraForge3D builds, some great terrain files, many more things (Patreon)

Tweet: Check out TerraGen3D Free and Open Source Procedural Modelling and Texturing Software : https://github.com/Jaysmito101/TerraGen3D

Give your valuable feedback : #6

Tutorials : Youtube

Join the Discord Server : https://discord.gg/AcgRafSfyB

TerraForge3D - Free And Opensource Alternative to Gaea And World Machine | Product Hunt

Visitors

terraforge3d's People

Contributors

drhaynes avatar excitedelf avatar fiplox avatar jaysmito101 avatar ltjax avatar lunaboards-dev avatar malikumane avatar malpas avatar som-ansh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

terraforge3d's Issues

Erosion filter is ignored by height map baker

Describe the bug
The erosion filter is not baked into the height map.

To Reproduce
Steps to reproduce the behavior:
create a terrain
apply errosion
open Texture Baker
The Erosion is neither applied to the preview image nor to the exported png file.

Expected behavior
erosion in the height map

Desktop (please complete the following information):
Windows 10

Additional context
tested with release version 2.3
Maybe add erosion as a node instead of having it as an independent filter.

Request for Nord Theme

This is something i need help with.
It is to add a nord theme to terraforge3d!
You can jse the theme editor to customize ui and styling ans save it as a normal savefile.
Or you can also directly write the imgui code .

terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'

Describe the bug

terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
what(): filesystem error: directory iterator cannot open directory: No such file or directory [/media/creatxr/DATA/DOWNLOAD/TerraForge3D.Linux/TerraForge3Dsystems,48x48@2/filesystems,48x48/intl,48x48@2/intl,48x48/mimetypes,48x48@2/mimetypes,48x48/places,48x48@2/places,48x48/status,48x48@2/status,48x48/stock/chart,48x48@2/stock/chart,48x48/stock/code,48x48@2/stock/code,48x48/stock/data,48x48@2/stock/data,48x48/stock/form,48x48@2/stock/form,48x48/stock/image,48x48@2/stock/image,48x48/stock/io,48x48@2/stock/io,48x48/stock/media,48x48@2/stock/media,48x48/stock/navigation,48x48@2/stock/navigation,48x48/stock/net,48x48@2/stock/net,48x48/stock/object,48x48@2/stock/object,48x48/stock/table,48x48@2/stock/table,48x48/stock/text,48x48@2/stock/text,64x64/actions,64x64@2/actions,64x64/animations,64x64@2/animations,64x64/apps,64x64@2/apps,64x64/categories,64x64@2/categories,64x64/devices,64x64@2/devices,64x64/emblems,64x64@2/emblems,64x64/emotes,64x64@2/emotes,64x64/filesystems,64x64@2/filesystems,64x64/intl,64x64@2/intl,64x64/mimetypes,64x64@2/mimetypes,64x64/places,64x64@2/places,64x64/status,64x64@2/status,64x64/stock/chart,64x64@2/stock/chart,64x64/stock/code,64x64@2/stock/code,64x64/stock/data,64x64@2/stock/data,64x64/stock/form,64x64@2/stock/form,64x64/stock/image,64x64@2/stock/image,64x64/stock/io,64x64@2/stock/io,64x64/stock/media,64x64@2/stock/media,64x64/stock/navigation,64x64@2/stock/navigation,64x64/stock/net,64x64@2/stock/net,64x64/stock/object,64x64@2/Data/modules/]
Aborted

To Reproduce

download linux's version
then extract it
then enter the directory
then run ./TerraForge3D

Desktop (please complete the following information):

  • OS: Bodhi LInux 7 RC

App crash on mesh resolution = 0

The app crashes when the mesh resolution is set to 0.
I can't tell which version I am using inside the application, but I assume its the latest as I got it directly from the website.

To reproduce go to Dashboard -> Change Current Base -> Mesh Resolution -> set value to 0 -> app crashes.

Fix would be an error saying that the resolution cannot be zero, or similar behavior.
Initially caused by typo due to pets in the room =)

macOS build fails to launch with error: GLFW Error: 65543: Requested OpenGL version 4.3, got version 4.1

Describe the bug
Fails to launch on macOS due to wrong version of OpenGL present.

To Reproduce
Steps to reproduce the behavior:

  1. Build gen3 branch for macOS, see: #56
  2. Run ./build/tf3d
  3. See error GLFW Error: 65543: Requested OpenGL version 4.3, got version 4.1

Desktop (please complete the following information):

  • OS: macOS
  • Version: Ventura 13.5

Additional context
macOS has deprecated OpenGL and the version that ships with macOS is stuck at 4.1 (until it will presumably be removed entirely).

Presumably the features from 4.3 (compute shaders, etc.) are required, so we can't simply downgrade to 4.1.

If this is the case, it will probably be required to switch to Vulkan and a Vulkan-atop-Metal library like MoltenVK on macOS. This is, afaik, what the Godot project has done.

There is also the Zink project, which implements OpenGL on Vulkan, which may be another option: https://www.collabora.com/news-and-blog/blog/2018/10/31/introducing-zink-opengl-implementation-vulkan/

Update Readme file new features

Description

Hello @Jaysmito101

Features I want to add -

  • add the contribution guidelines.
  • Add the maintainer details
  • Add new features for more attractiveness

These are important features of the readme file of any open-source project. kindly assign me this issue.
Submit this issue under IWOC

Assertion Failure on Windows 8.1 - Will not run.

Assertion Failure
Screenshot (106)

To Reproduce
Steps to reproduce the behavior:

  1. Launch TerraForge3D.exe
  2. Within seconds Assertion error occurs

Expected behavior
Expected it to run as on Linux.

Screenshots
See above

Desktop (please complete the following information):

  • OS: Windows 8.1

MacOS support

Describe the solution you'd like
I'd like to see support for the mac by terraforge, because of the recent linux support when that becomes stable it shouldn't be a big problem adding macOS support. If needed, I can build terraforge for mac on my mac every time you want a new release! I would help with the code itself but I'm not familiar with the codebase and I'm relatively busy with exams and ongoing projects however, let me know if there's a small task I can help with on the repo! I'm sure that apple silicon will only get more relevant and powerful into the future based off the amazing performance of the new M1 chips.

Describe alternatives you've considered
I've already tried running terraforge in asahi and a vm, but it's terribly slow and gets me out of my workflow

Commenting the code

This is a simple issue i would like to open for contributers to get started with TerraFoebe3D development. TerraForge3D uses a completely automatic documentation generation system. Now this system generates the docs based on comments. You can comment code like https://github.com/Jaysmito101/TerraForge3D/blob/master/TerraForge3D/include/Modules/Module.h .

To get strted you can follow the developers guide to setup TerraForge3D for development https://jaysmito101.github.io/TerraForge3D/documentation/d5/d38/md__docs_markdowns_index.html also for any help feel free to contact me at https://discord.gg/9ebyYwSktZ

Forgot to include `<cstdint>`?

https://github.com/Jaysmito101/TerraForge3D/blob/gen2/TerraForge3D/include/Base/Heightmap.h

In file included from src/Base/Heightmap.cpp:1:
include/Base/Heightmap.h:9:27: error: expected ')' before 'width'
    9 |         Heightmap(uint32_t width, uint32_t height) : m_Width(width), m_Height(height), m_Data(nullptr), m_RendererID(0) {}
      |                  ~        ^~~~~~
      |                           )
include/Base/Heightmap.h:17:9: error: 'uint32_t' does not name a type
   17 |         uint32_t GetWidth() const
      |         ^~~~~~~~
include/Base/Heightmap.h:5:1: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
    4 | #include <string>
  +++ |+#include <cstdint>
    5 |
include/Base/Heightmap.h:21:9: error: 'uint32_t' does not name a type
   21 |         uint32_t GetHeight() const
      |         ^~~~~~~~
include/Base/Heightmap.h:21:9: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
include/Base/Heightmap.h:25:9: error: 'uint16_t' does not name a type
   25 |         uint16_t *GetData() const
      |         ^~~~~~~~
include/Base/Heightmap.h:25:9: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
include/Base/Heightmap.h:29:9: error: 'uint32_t' does not name a type
   29 |         uint32_t GetRendererID() const
      |         ^~~~~~~~
include/Base/Heightmap.h:29:9: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
include/Base/Heightmap.h:34:9: error: 'uint16_t' does not name a type
   34 |         uint16_t Sample(float x, float y, bool interpolated) const;
      |         ^~~~~~~~
include/Base/Heightmap.h:34:9: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
include/Base/Heightmap.h:37:9: error: 'uint32_t' does not name a type
   37 |         uint32_t m_Width, m_Height;
      |         ^~~~~~~~
include/Base/Heightmap.h:37:9: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
include/Base/Heightmap.h:38:9: error: 'uint16_t' does not name a type
   38 |         uint16_t *m_Data;
      |         ^~~~~~~~
include/Base/Heightmap.h:38:9: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
include/Base/Heightmap.h:39:9: error: 'uint32_t' does not name a type
   39 |         uint32_t m_RendererID;
      |         ^~~~~~~~
include/Base/Heightmap.h:39:9: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
include/Base/Heightmap.h:43:9: error: 'uint16_t' does not name a type
   43 |         uint16_t Get(uint32_t x, uint32_t y) const;
      |         ^~~~~~~~
include/Base/Heightmap.h:43:9: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
HeightmapNode.cpp
src/Base/Heightmap.cpp: In constructor 'Heightmap::Heightmap(std::string)':
src/Base/Heightmap.cpp:20:5: error: 'm_Data' was not declared in this scope; did you mean 'm_Path'?
   20 |     m_Data = static_cast<uint16_t*>(data);
      |     ^~~~~~
      |     m_Path
src/Base/Heightmap.cpp:21:5: error: 'm_Width' was not declared in this scope; did you mean 'width'?
   21 |     m_Width = width;
      |     ^~~~~~~
      |     width
src/Base/Heightmap.cpp:22:5: error: 'm_Height' was not declared in this scope; did you mean 'height'?
   22 |     m_Height = height;
      |     ^~~~~~~~
      |     height
src/Base/Heightmap.cpp:24:23: error: 'm_RendererID' was not declared in this scope
   24 |     glGenTextures(1, &m_RendererID);
      |                       ^~~~~~~~~~~~
src/Base/Heightmap.cpp: In destructor 'Heightmap::~Heightmap()':
src/Base/Heightmap.cpp:48:13: error: 'm_Data' was not declared in this scope; did you mean 'm_Path'?
   48 |         if (m_Data)
      |             ^~~~~~
      |             m_Path
src/Base/Heightmap.cpp:50:38: error: 'm_RendererID' was not declared in this scope
   50 |                 glDeleteTextures(1, &m_RendererID);
      |                                      ^~~~~~~~~~~~
src/Base/Heightmap.cpp: At global scope:
src/Base/Heightmap.cpp:55:10: error: no declaration matches 'uint16_t Heightmap::Sample(float, float, bool) const'
   55 | uint16_t Heightmap::Sample(float x, float y, bool interpolated) const
      |          ^~~~~~~~~
src/Base/Heightmap.cpp:55:10: note: no functions named 'uint16_t Heightmap::Sample(float, float, bool) const'
include/Base/Heightmap.h:6:7: note: 'class Heightmap' defined here
    6 | class Heightmap
      |       ^~~~~~~~~
src/Base/Heightmap.cpp:90:10: error: no declaration matches 'uint16_t Heightmap::Get(uint32_t, uint32_t) const'
   90 | uint16_t Heightmap::Get(uint32_t x, uint32_t y) const
      |          ^~~~~~~~~
src/Base/Heightmap.cpp:90:10: note: no functions named 'uint16_t Heightmap::Get(uint32_t, uint32_t) const'
include/Base/Heightmap.h:6:7: note: 'class Heightmap' defined here
    6 | class Heightmap
      |       ^~~~~~~~~

Use higher bit-depth for texture baking

Texture baking currently only exports an image with 8 bit depth. This causes noticeable stepping, because there are only 256 possible values to use. Supporting a 16 bit-depth is important for using the terrain with any other tool.

Example

When you take the texture baking output of this terrain:
example

And try to use it in something like Blender, you get this:

example-blender

It's also flipped for some reason (ExportTexture.cpp:23).

Heightmap:
height

LINUX Fix Paths

There are several file path in app that use \ as seperator that has to be changed to PATH_SEPERATOR from Platform.h for preventing issues with linux.

Please make AppImage package for Linux

not running in Ubuntu 18.04 LTS

./TerraForge3D: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.29' not found (required by ./TerraForge3D) ./TerraForge3D: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.26' not found (required by ./TerraForge3D)

i have
libstdc++6, 8.4.0-1ubuntu1~18.04 installed Ubuntu 18.04 LTS
libc6 is 2.27-3ubuntu1.5

Cn you release AppImage packages?

Python syntax error in Setup.bat

When running scripts/Setup.bat I am getting the following python error:

Traceback (most recent call last):
File "Setup.py", line 6, in
import Utils
File "D:\Programming\TerraForge3D\scripts\Utils.py", line 27
print(f"URL Error encountered: {e.reason}. Proceeding with backup...\n\n")
^
SyntaxError: invalid syntax

What version of python is needed? I am running 2.7.5 and I don't see in the docs what version is expected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.