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.
Storytelling • Files • External Dependencies • Features • How To Use
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.
- 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.
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.
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.
To clone and run this application, you'll need WSL (Windows Subsystem for Linux) and the following tools installed on it: Git, C++ compiler, CMake, Make, glew, glm, tbb, and SDL2. From your command line:
# 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