An open API service indexing awesome lists of open source software.

https://github.com/bl33h/exploringthespace

This OpenGL/C++ graphics app renders celestial bodies with realistic shaders and noise functions. It features a camera tracking a spaceship represented by a Blender .obj file.
https://github.com/bl33h/exploringthespace

3d-graphics blender cpp glm obj-files opengl sdl2 shaders space

Last synced: 3 months ago
JSON representation

This OpenGL/C++ graphics app renders celestial bodies with realistic shaders and noise functions. It features a camera tracking a spaceship represented by a Blender .obj file.

Awesome Lists containing this project

README

        

# exploringTheSpace
The program is a graphics application that generates and renders celestial bodies using OpenGL and C++. It employs a shader-based rendering pipeline to create visually appealing representations of planets, stars, and other celestial objects. The use of noise functions and shaders allows for dynamic and realistic rendering of various astronomical bodies. Additionally, the program features a camera that follows a spaceship, represented by a Blender-created .obj file, adding an interactive element to the celestial simulation.




pic



Storytelling
Files
External Dependencies
Features
How To Use

## Storytelling
It introduces a narrative where the spaceship, having crashed, embarks on a journey to find another planet to land on, enhancing the immersive experience of celestial exploration.

## Files
- **configure.sh**: A shell script to set up the project dependencies and environment.
- **build.sh**: A shell script to build the project using CMake.
- **run.sh**: A shell script to execute the compiled graphics application.
- **clean.sh**: A shell script to clean up build artifacts and generated files.
- **src**: A directory containing the source code files for the graphics application.
- **barycentric.cpp**: Source code file for barycentric coordinate calculations.
- **camera.h**: Header file defining the camera class for viewpoint control.
- **colors.h**: Header file containing color definitions.
- **fragment.h**: Header file defining functions for fragment processing.
- **framebuffer.cpp**: Source code file for framebuffer management.
- **framebuffer.h**: Header file defining the framebuffer class.
- **main.cpp**: Main source code file for the graphics application.
- **noise.h**: Header file for noise generation functions.
- **print.h**: Header file containing print functions.
- **shaders.h**: Header file defining shader functions for different celestial bodies.
- **triangleFill.cpp**: Source code file for triangle filling functions.
- **triangleFill.h**: Header file for triangle filling functions.
- **trianglea.h**: Header file for triangles functions.
- **triangles.cpp**: Source code file containing functions related to triangles.

## External Dependencies
The project makes use of the FastNoise library by Jordan Peck ([email protected]). Specifically, it includes the files FastNoise.h and FastNoise.Lite.h for advanced noise generation.

## Features

The main features of the graphics application include:

- Implementation of various shaders for different celestial bodies (Earth, Neptune, Sun, Moon, Venus, Pluton, Random, Destroyed Spaceship).
- Shader-Based Rendering: Utilizes shaders to achieve realistic and dynamic rendering of celestial bodies, enabling the simulation of diverse visual effects.
- Procedural Generation: Employs procedural techniques to generate planets with realistic surface features, such as oceans, landmasses, and atmospheric effects.
- Noise Generation: Incorporates FastNoiseLite library for procedural noise generation, enhancing the realism of surface details and textures.
- Dynamic Lighting: Implements dynamic lighting effects, including the illumination of planets and stars based on their positions and characteristics.
- Background Stars: Generates a realistic starry background using procedural noise, contributing to the overall immersive experience.
- Spaceship and Camera Interaction: Introduces a spaceship model created in Blender (.obj file) and features a camera that dynamically follows the spaceship, allowing users to explore the celestial environment.
- Flexible Configuration: Allows for the configuration of celestial bodies through dedicated shaders, enabling customization of visual properties such as color, intensity, and atmospheric effects.

## How To Use

To clone and run this application, you'll need [WSL (Windows Subsystem for Linux)](https://learn.microsoft.com/en-us/windows/wsl/install) and the following tools installed on it: [Git](https://git-scm.com), [C++ compiler](https://www.fdi.ucm.es/profesor/luis/fp/devtools/mingw.html), [CMake](https://cmake.org/download/), [Make](https://linuxhint.com/install-make-ubuntu/), [glew](https://zoomadmin.com/HowToInstall/UbuntuPackage/libglew-dev), [glm](https://sourceforge.net/projects/glm.mirror/), [tbb](https://www.intel.com/content/www/us/en/developer/tools/oneapi/onetbb.html), and [SDL2](https://www.oreilly.com/library/view/rust-programming-by/9781788390637/386c15eb-41b2-41b4-bd65-154a750a58d8.xhtml). From your command line:

```bash
# Clone this repository
$ git clone https://github.com/bl33h/exploringTheSpace

# Open the project
$ cd exploringTheSpace

# Give execution permissions
$ chmod +x configure.sh
$ chmod +x build.sh
$ chmod +x run.sh

# Run the app
$ ./run.sh