3D Procedural Terrain Generation Tool in OpenGL/C++



GitHub repo size Lines of code GitHub commit activity
GitHub all releases SourceForge GitHub



TerraGen3D

3D Procedural Terrain Generation Tool in OpenGL/C++

Showcase1

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

Give your valuable feedback : https://github.com/Jaysmito101/TerraGen3D/discussions/6

Tutorials : Youtube

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

TerraGen3D - 3D Procedural Node Based Terrain Generation Tool | Product Hunt

What can this do?

  • Generte 3D Terrain Procedrally
  • Export Terrain mesh as OBJ
  • You can write and test your own shaders
  • An Inbuilt IDE for shaders
  • Test under different lighting
  • A 3D viewer
  • A Node based as well as Layer based workflow
  • Save the project(custom .terr3d files)
  • Hieght map visualizer in node editor
  • Wireframe mode
  • Custom Lighiting
  • Customizable Geometry Shaders included in rendering pipeline
  • Skyboxes
  • Multithreded Mesh Generation
  • Lua scripting to add custom algotrithms
  • Export to heightmaps(both PNG and also custom format)
  • Custom Skyboxes
  • Completely usable 3D procedural modelling and texturing pipeline

Future Goals

  • Procedural grass and foliage
  • Fix more bugs!

Screenshots

Screenshot 1

Screenshot 2

Screenshot 3

Support

I am just a Highschool student so I may not have the best quality of code but still i am trying my best to write good code!

Any support would be highly appretiated!

For example you could add a feature and contribute via pull requests or you could even report any issues with the program!

And the best thing you could do to support this project is spread word about this so that more people who might be interested in this may use this!

Please considering tweeting about this!

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

Give your valuable feedback : https://github.com/Jaysmito101/TerraGen3D/discussions/6

Tutorials : Youtube

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

TerraGen3D - 3D Procedural Node Based Terrain Generation Tool | Product Hunt

Comments
  • The application only works with the debug version of the c library and not the release version!

    The application only works with the debug version of the c library and not the release version!

    The application only works with the debug version of the c library and not the release version!

    To Reproduce Steps to reproduce the behavior:

    1. Switch to release mode
    2. In the compioer options switch from /MTd to /MT
    3. Build the app
    4. On runni g you see that the mesh is not be9ng rendered

    Expected behavior Should run just same as when compiped in debug mode.

  • Fixed Bug Crash

    Fixed Bug Crash

    I have changed the original if statement from a 2 integer to an INFINITY integer. I also created a nodeCounter in case that is something you would like to keep track of.

  • Documentation Needed

    Documentation Needed

    We need a documentation for this project. For this I am opening this Issue. Incase anyone is interested in helping you are welcome! Also if you need any help you can contact directly via : https://discord.gg/gJjvDHFpSh

  • Python syntax error in Setup.bat

    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.

  • Add heightmap node

    Add heightmap node

    Hi, while playing around with CPU node editor, I found the texture node didn't work well for heightmaps. The smoothness gets worse extremely quickly as the mesh resolution increases. I created a node for properly dealing with and interpolating 16-bit heightmap images.

    Because I use Linux, I had to try fixing the file selection dialog first.

    Comparison with Texture node

    Here's a quick comparison. The Heightmap node was tested with a 4096 mesh resolution, which seems to be when more precision would be needed. The Texture node was unusable at only 1024.

    comparison

  • Linux fix paths

    Linux fix paths

    PR to the #31 I've renamed PATH_SEPERATOR by PATH_SEPARATOR as it is the correct spelling. Then, I've replaced every \\, where it is not windows only, by PATH_SEPARATOR including Platform.h where it was missing.

    Hope nothing breaks :sweat_smile:

  • [ImgBot] Optimize images

    [ImgBot] Optimize images

    Beep boop. Your images are optimized!

    Your image file size has been reduced by 19% 🎉

    Details

    | File | Before | After | Percent reduction | |:--|:--|:--|:--| | /TerraForge3D/vendor/imnodes/img/imnodes.gif | 1,481.72kb | 294.72kb | 80.11% | | /Screenshots/Showcase/HeightMap1.png | 366.59kb | 135.12kb | 63.14% | | /Binaries/Data/textures/ui_thumbs/cube.png | 9.72kb | 4.34kb | 55.38% | | /Binaries/Data/textures/ui_thumbs/cone.png | 7.31kb | 3.54kb | 51.61% | | /Binaries/Data/textures/ui_thumbs/sphere.png | 9.99kb | 5.61kb | 43.86% | | /Binaries/Data/textures/ui_thumbs/torus.png | 20.59kb | 12.11kb | 41.19% | | /Binaries/Data/textures/ui_thumbs/cylinder.png | 4.29kb | 2.76kb | 35.66% | | /TerraForge3D/vendor/zip/zip.png | 5.15kb | 3.50kb | 32.11% | | /Screenshots/Showcase/Volcano.png | 2,616.80kb | 1,834.77kb | 29.88% | | /resources/icons-png-secondary/icon-7.png | 11.80kb | 8.80kb | 25.42% | | /Screenshots/Showcase/Desert Night.png | 435.51kb | 329.57kb | 24.33% | | /resources/icons-png-secondary/icon-5.png | 5.17kb | 3.95kb | 23.57% | | /resources/icons-png-secondary/icon-6.png | 8.27kb | 6.34kb | 23.34% | | /resources/icons-png-secondary/icon-8.png | 21.06kb | 16.51kb | 21.61% | | /Screenshots/UI/Screenshot (481).png | 352.78kb | 277.46kb | 21.35% | | /resources/icons-png/icon-7.png | 5.95kb | 4.68kb | 21.28% | | /resources/icons-png/icon-8.png | 9.79kb | 7.78kb | 20.45% | | /Screenshots/UI/CB.png | 479.71kb | 382.30kb | 20.31% | | /resources/icons-png/icon-9.png | 12.33kb | 9.85kb | 20.13% | | /resources/icons-png-secondary/icon-4.png | 3.62kb | 2.90kb | 19.91% | | /Screenshots/Showcase/Grassy Hillock.png | 642.65kb | 516.69kb | 19.60% | | /Screenshots/Showcase/Muddy Forest.png | 6,210.30kb | 5,005.30kb | 19.40% | | /resources/icons-png/icon-6.png | 4.06kb | 3.27kb | 19.31% | | /Screenshots/UI/Screenshot (482).png | 726.03kb | 588.44kb | 18.95% | | /Binaries/Data/textures/ui_thumbs/plane.png | 12.45kb | 10.13kb | 18.59% | | /Screenshots/UI/Screenshot (483).png | 423.43kb | 347.25kb | 17.99% | | /Screenshots/UI/Screenshot (484).png | 246.92kb | 202.85kb | 17.85% | | /Screenshots/Showcase/Sandy Desert 1.png | 3,539.60kb | 2,956.14kb | 16.48% | | /Screenshots/UI/Screenshot (485).png | 645.36kb | 539.27kb | 16.44% | | /Screenshots/UI/Screenshot (486).png | 645.36kb | 539.27kb | 16.44% | | /Screenshots/Showcase/Sandy Desert 2.png | 3,437.91kb | 2,885.90kb | 16.06% | | /resources/icons-png-secondary/icon-3.png | 2.26kb | 1.92kb | 15.11% | | /Screenshots/UI/NEFE.png | 673.23kb | 572.78kb | 14.92% | | /Screenshots/UI/Screenshot (493).png | 601.14kb | 513.61kb | 14.56% | | /Screenshots/UI/Screenshot (495).png | 552.94kb | 473.35kb | 14.39% | | /Screenshots/UI/Screenshot (494).png | 575.79kb | 493.37kb | 14.31% | | /Screenshots/UI/Screenshot (491).png | 476.63kb | 408.52kb | 14.29% | | /Screenshots/UI/NE.png | 562.55kb | 483.85kb | 13.99% | | /resources/icons-png-secondary/icon-9.png | 26.83kb | 23.08kb | 13.99% | | /Screenshots/UI/Screenshot (505).png | 507.44kb | 441.25kb | 13.04% | | /Screenshots/UI/Screenshot (507).png | 450.30kb | 392.92kb | 12.74% | | /Screenshots/UI/Screenshot (490).png | 357.04kb | 312.59kb | 12.45% | | /Screenshots/UI/Screenshot (492).png | 557.14kb | 490.68kb | 11.93% | | /Screenshots/UI/Screenshot (480).png | 616.42kb | 545.03kb | 11.58% | | /Screenshots/UI/Screenshot (504).png | 576.16kb | 511.00kb | 11.31% | | /resources/icons-png-secondary/icon-2.png | 1.61kb | 1.43kb | 11.21% | | /TerraForge3D/vendor/glfw/docs/spaces.svg | 107.67kb | 96.72kb | 10.17% | | /Screenshots/UI/Screenshot (503).png | 586.88kb | 527.25kb | 10.16% | | /Screenshots/UI/Screenshot (502).png | 572.66kb | 514.49kb | 10.16% | | /Screenshots/UI/Screenshot (500).png | 398.44kb | 362.88kb | 8.93% | | /Screenshots/UI/Screenshot (496).png | 381.57kb | 348.68kb | 8.62% | | /resources/icons-materials/diamond icon-9.png | 49.55kb | 45.65kb | 7.87% | | /Screenshots/UI/VC.png | 483.22kb | 445.45kb | 7.82% | | /Screenshots/UI/Screenshot (497).png | 375.93kb | 349.06kb | 7.15% | | /Screenshots/UI/Screenshot (501).png | 271.94kb | 254.87kb | 6.28% | | /Screenshots/UI/Screenshot (498).png | 466.45kb | 442.23kb | 5.19% | | /resources/icons-materials/bronze icon-9.png | 34.42kb | 32.71kb | 4.96% | | /Screenshots/UI/Screenshot (499).png | 463.93kb | 441.37kb | 4.86% | | /Screenshots/UI/Screenshot (506).png | 303.66kb | 290.45kb | 4.35% | | /Screenshots/UI/Screenshot (508).png | 234.18kb | 224.20kb | 4.26% | | /Screenshots/UI/Screenshot (489).png | 376.87kb | 362.86kb | 3.72% | | /resources/icons-materials/platinum icon-9.png | 29.55kb | 28.48kb | 3.62% | | /Screenshots/Showcase/Asteroid.png | 152.02kb | 146.62kb | 3.55% | | /Screenshots/UI/QB.png | 269.28kb | 263.33kb | 2.21% | | /resources/icons-materials/gold icon-9.png | 34.84kb | 34.08kb | 2.16% | | /Binaries/Data/textures/water_dudv.png | 252.30kb | 249.16kb | 1.25% | | /Screenshots/UI/Screenshot (488).png | 355.43kb | 351.24kb | 1.18% | | /Screenshots/UI/Screenshot (487).png | 355.43kb | 351.24kb | 1.18% | | /resources/icons-png/icon-3.png | 1.52kb | 1.52kb | 0.19% | | /resources/ReadmeHeader.png | 97.65kb | 97.50kb | 0.14% | | /resources/icons-png/icon-4.png | 2.00kb | 2.00kb | 0.10% | | /resources/icons-png/icon-5.png | 2.50kb | 2.49kb | 0.08% | | | | | | | Total : | 35,599.55kb | 28,873.02kb | 18.89% |


    📝 docs | :octocat: repo | 🙋🏾 issues | 🏪 marketplace

    ~Imgbot - Part of Optimole family

  • Add a Gitter chat badge to README.md

    Add a Gitter chat badge to README.md

    Jaysmito101/TerraGen3D now has a Chat Room on Gitter

    @Jaysmito101 has just created a chat room. You can visit it here: https://gitter.im/TerraGen3D/community.

    This pull-request adds this badge to your README.md:

    Gitter

    If my aim is a little off, please let me know.

    Happy chatting.

    PS: Click here if you would prefer not to receive automatic pull-requests from Gitter in future.

  • Assertion Failure on Windows 8.1 - Will not run.

    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
  • Use higher bit-depth for texture baking

    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

  • Please make AppImage package for 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: versionGLIBCXX_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?

  • MacOS support

    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

  • Request for Nord Theme

    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 .

Procedural Mesh Modeling Toolkit for Unreal Engine Artists
Procedural Mesh Modeling Toolkit for Unreal Engine Artists

OpenLand Mesh Procedural Mesh Modeling Toolkit for Unreal Engine Artists. Installation Get it via the marketplace ??️ For non-commercial projects, you

Nov 19, 2022
A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input

GLFW Introduction GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan application development. It provides a simple, platf

Jan 1, 2023
A legacy OpenGL simulator for OpenGL 4.4, written in C++.

the-ancient-tri A legacy OpenGL simulator for OpenGL 4.4, written in C++. Why? My Uni forces us to use legacy OpenGL (eww!), and I didn't want to lear

Feb 10, 2022
This repository accompanies Ray Tracing Gems II: Next Generation Rendering with DXR, Vulkan, and OptiX
This repository accompanies Ray Tracing Gems II: Next Generation Rendering with DXR, Vulkan, and OptiX

Apress Source Code This repository accompanies Ray Tracing Gems II: Next Generation Rendering with DXR, Vulkan, and OptiX by Adam Marrs, Peter Shirley

Dec 29, 2022
BRDF LUT generation for PBR Pipelines
BRDF LUT generation for PBR Pipelines

BRDF Generator This is a simple program that generates Smith GGX BRDF lookup tables for the split sum approximation of the UE4-based PBR pipeline. The

Dec 28, 2022
Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal
Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal

Low Level Graphics Library (LLGL) Documentation NOTE: This repository receives bug fixes only, but no major updates. Pull requests may still be accept

Jan 8, 2023
Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.
Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.

This project is not actively maintained. NanoVG NanoVG is small antialiased vector graphics rendering library for OpenGL. It has lean API modeled afte

Jan 2, 2023
Epoxy is a library for handling OpenGL function pointer management for you

Epoxy is a library for handling OpenGL function pointer management for you. It hides the complexity of dlopen(), dlsym(), glXGetProcAddress(), eglGetP

Dec 19, 2022
3D engine from scratch (without OpenGL or any other 3D graphics library)
3D engine from scratch (without OpenGL or any other 3D graphics library)

Simple 3d engine based on SFML library. I tried to make this engine powerful and easy to understand.

Dec 10, 2022
RGL - 3D visualization device system for R using OpenGL
RGL - 3D visualization device system for R using OpenGL

RGL - 3D visualization device system for R using OpenGL INTRODUCTION The RGL package is a visualization device system for R, using OpenGL or WebGL as

Dec 27, 2022
OpenGL Demo: Simulating Ocean Waves with FFT
OpenGL Demo: Simulating Ocean Waves with FFT

OceanFFT Realistic ocean wave simulation, primarily based on J. Tessendorf's paper, using OpenGL compute shaders. Checkout the demo video here. In the

Dec 27, 2022
OBS Linux Vulkan/OpenGL game capture

OBS Linux Vulkan/OpenGL game capture OBS plugin for Vulkan/OpenGL game capture on Linux. Requires OBS with EGL support (currently unreleased, you need

Jan 1, 2023
NodeEditor basiced on Qt and OpenGL/CV

Vapour 基于Qt的轻量级的节点式几何建模工具与shader材质生成工具 可能加入图像处理(合成)的功能 日志: 2021-5-17: 完成背景绘制,右键菜单,节点连线,节点删除,初步拓扑排序 (细节)连线位于节点层级之下,使用lambda处理右键菜单slot,节点创建生成在鼠标位置处 2021

Dec 19, 2022
C Wavefront OBJ loader for OpenGL

OBJ GL Loader v2 Quite fast .OBJ loader written in C How to use it Put objgl2.c and objgl2.h files in Your project and include them. To put it simply:

Oct 14, 2022
Orbit is a multiplatform-focus graphical engine build on top of OpenGl, ImGui
Orbit is a multiplatform-focus graphical engine build on top of OpenGl, ImGui

Orbit Engine Orbit is a multiplatform-focus graphical engine build on top of OpenGl, ImGui and more... The development of the engine is documented via

Jul 3, 2021
Dec 31, 2022
A 2d Graphing Calculator using OpenGL

glGraph A 2d Graphing Calculator using Modern OpenGL Demo glGraph.mp4 Information This has only been tested on Fedora 34, it should work on other OS's

Nov 26, 2022
Tetris written with C++ and OpenGL.

Tetrec This is yet another Tetris game, which is in 3D, written using C++ and OpenGL 2.1, aiming at being lightweight towards not-so-beefy computers (

Jan 17, 2022
OpenGL made easy.

SmartGL OpenGL made easy. Demo video: https://youtu.be/zDuNxg4LJ18 (sorry for low-quality recording) For an example of how my engine is used, please r

Nov 11, 2022