Zhangir Nurmukhambetov

Engine Programmer

zhangir.dev@gmail.com

2nd year student at Breda University of Applied Sciences in Creative Media and Game Technologies.

💼 Open for a 6-12 month internship starting September 2025

← Back

Preview image for Custom C++ Terrain Editor

Custom C++ Terrain Editor

January 24, 2025

Custom C++ Terrain Editor was a solo research project. The project features editable terrain and variety of brushes. The Terrain Editor would later become based for the Fire Ant Engine.

My Contributions: Terrain Mesh Deformation via Height Maps | Vertex Shader with Dynamic Normals & Displacement | Fully Custom Brush Framework | Normals-based Object Placement

Engine/Tools: C++, OpenGL, GLSL (Vertex & Fragment Shaders), ImGui, GLM

Team Size: Solo

Platforms: Windows

Duration: 8 weeks (Nov 2024 - Jan 2025)

🏔️ Terrain Editor – My Contributions

🔍 What It Does

The Custom C++ Terrain Editor is a solo-developed terrain sculpting tool and rendering system built in C++ using OpenGL. It enables real-time terrain editing via an intuitive brush interface, allowing users to raise/lower terrain, flatten areas, smooth contours, and scatter foliage—all with visual feedback. It also includes dynamic heightmap-based terrain rendering and an interactive camera system for navigation.

This project served as the predecessor to the Terrain Editor in Fire Ant, laying the groundwork for compute-driven tools and brush architecture used in later engine projects.

I have written a blog post about the project here.


🔨 My Contributions


🌄 Terrain Rendering

image1

I built a full rendering pipeline for heightmap-displaced terrain using a custom vertex shader that dynamically adjusts vertex positions based on height texture values.

Key Features:

Challenges:


🖌️ Brush System

I developed a fully functional brush-based editing interface that modifies terrain heightmap data in real time. Each brush operates on a targeted region and modifies texture data on the CPU before uploading it back to the GPU.


🧱 Raise and Lower Brush

image1

image1

What It Does: Raises or lowers terrain in a circular region using a Gaussian distribution, with optional “average terrain” filtering to sculpt only selected elevations.

Key Features:

Challenges:


🏔️ Plateau Brush

image1

What It Does: Flattens terrain within the brush area to a target height—either manually set or sampled from the terrain via mouse click.

Key Features:

Challenges:


🧩 Smoothing Brush

image1

What It Does: Averages surrounding terrain to eliminate sharp edges and create smooth transitions between sculpted features.

Key Features:

Challenges:


🌳 Foliage Brush

image1

What It Does: Spawns props (like trees) along terrain, with random scattering and optional alignment to terrain normals.

Key Features:

Challenges:


🕹️ Camera System

I implemented a free-fly 3D camera system with full keyboard and mouse support to allow intuitive navigation across the terrain.

Key Features:

Challenges:


🧠 Key Engineering Techniques


🎯 Impact

This project taught me the fundamentals of shader-based terrain deformation, interactive editor systems, and real-time tool development. It directly led to major architectural improvements in later projects like the Terrain Editor in Fire Ant.

My brush system, heightmap-based editing, and real-time feedback loop laid a reusable foundation for more scalable GPU-powered editing tools.