Skip to content

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.

License

Notifications You must be signed in to change notification settings

bl33h/exploringTheSpace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

StorytellingFilesExternal DependenciesFeaturesHow 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) 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

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages