https://github.com/teograjqevci/raymarching_tool
A 3D modeling tool written in C++ and OpenGL, leveraging Signed Distance Fields (SDFs) to create, blend, and manipulate primitive shapes.
https://github.com/teograjqevci/raymarching_tool
3d c cpp glsl glsl-shaders graphics macos modeling opengl raymarching raymarching-distance-fields software tool tooling
Last synced: 2 months ago
JSON representation
A 3D modeling tool written in C++ and OpenGL, leveraging Signed Distance Fields (SDFs) to create, blend, and manipulate primitive shapes.
- Host: GitHub
- URL: https://github.com/teograjqevci/raymarching_tool
- Owner: TeoGrajqevci
- Created: 2025-03-01T16:27:49.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-03-23T17:46:13.000Z (2 months ago)
- Last Synced: 2025-03-23T18:33:29.768Z (2 months ago)
- Topics: 3d, c, cpp, glsl, glsl-shaders, graphics, macos, modeling, opengl, raymarching, raymarching-distance-fields, software, tool, tooling
- Language: Makefile
- Homepage: https://github.com/TeoGrajqevci/RayMarching_tool/tree/main
- Size: 80.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ray Marching Tool
A **3D modeling tool** written in **C++** and using **OpenGL**, leveraging **Signed Distance Fields (SDFs)** to create, blend, and manipulate primitive shapes.
> **Note**: This is an early-stage project. Proper HDRi support, an improved raster-based renderer, and a path tracing renderer are in progress. Future plans include additional blend modes, multiple lights, more parameters, and a wider range of primitive shapes.
---
## Table of Contents
1. [Features](#features)
2. [Preview](#preview)
3. [Getting Started](#getting-started)
4. [Building from Source](#building-from-source)
5. [Usage](#usage)
6. [Roadmap](#roadmap)---
## Features
- **SDF Modeling**
- Add or remove primitive shapes (currently sphere, round box, cylinder, torus, with more on the way).
- Apply blending operations: **Union**, **Subtract**, **Intersect**.
- Control blending smoothness per shape.- **Shape Hierarchy**
- Blend modes depend on their position in the shape directory hierarchy.- **Color & Lighting Controls**
- Change the color of shapes individually.
- Adjust the light color, position, and intensity.- **Interactive Interface**
- Real-time feedback using an ImGui-based GUI.
- Transform shapes (translate, rotate, scale) via a user-friendly interface and key-bingings.- **Rendering**
- OpenGL raster-based rendering (improvements in progress).
- **HDRi support** (in progress).
- **Path tracing renderer** (in progress).---
## Preview

---
## Getting Started
These instructions will help you set up a copy of the project on your local machine for development and testing.
### Prerequisites
- A C++ compiler supporting C++11 or later (e.g., gcc, clang, or MSVC).
- CMake 3.11 or higher.
- Git for cloning the repository (optional but recommended).### Cloning the Repository
```bash
git clone https://github.com/TeoGrajqevci/RayMarching_tool.git
cd RayMarching_tool
```### Creating a Build Directory
From the root of the project:
```bash
mkdir build
cd build
```### Configuring with CMake
Run CMake to configure the project and download external dependencies (GLAD, ImGui, GLFW, stb):
```bash
cmake ..
```### Compilation
Once the configuration is complete:
```bash
make
```
or
```bash
cmake --build .
```After compilation, you will get an executable named `RayMarchingTool`.
### Execution
Run the compiled binary from the build directory:
```bash
./RayMarchingTool
```---
## Roadmap
- **HDRi Support**
Implement proper HDR environment maps for improved lighting realism.
- **Path Tracing Renderer**
Develop an optional path tracing mode for high-quality offline rendering.
- **Additional Blend Modes**
Experiment with different SDF blend operations beyond union, subtraction, and intersection.
- **Multiple Lights**
Allow multiple light sources with adjustable parameters (color, intensity, shadows, etc.).
- **More Primitive Shapes**
Expand the SDF primitive library.
- **Advanced Material System**
Enable advanced surface properties such as transmission, sheen and texture mapping.---