Skip to content

Illation/PlanetRenderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PlanetRenderer

Work in this repository has been discontinued. The project lives on in a new repository, as it has been merged with my openGL framework: https://github.com/Illation/ETEngine

A repo for my research on planet rendering in c++ | opengl

Description

Basic Planet rendering using a version of the CDLOD algorithm with triangles instead of quads on an icosahedron. I regularly post updates about this project on my blog: http://leah-lindner.com/blog/category/project/planet-renderer/

Terrain

There is a recursively subdividing icosahedron. Triangles subdivide based on the distance from the camera and get culled when outside of the frustum. When drawn, every triangle instances a patch geometry, which allows for insane level of detail at high framerates, and morphs smoothly between subdivision levels.

Text Rendering Moon Planet terrain LOD Leah Lindner OpenGL Planet terrain LOD Rendering Leah Lindner

Demo Video (Click to open)

Link

Controls

Keys Function
F1 Screenshot
F2 Toggle Debug UI
W - S Change Camera Altitude
A - D Change Camera Longitude
NUM4 - NUM6 Change Camera Zoom
Z Toggle Wireframe
SPACE Lock Frustum
R Rotate Planet
UP - Down Change max subdivisions
LMB Rotate View

Framework

A lot of the code for the framework is copied from my openGL framework, but since I want a barebones techdemo as a result in order to keep all the code relevant, I did not code this in the framework itself.

Currently there is context managment, time, input managment, window settings, opengl and sdl initialization, shaders, camera, transforms, textures and text rendering.

Libraries

Libraries used: SDL2, GLM, OpenGL, DevIL

Font files created with BMFont.

Building

This framework uses Genie to generate project files: https://github.com/bkaradzic/GENie You need to install it and use it from a terminal, the easiest way to do that is adding it to your PATH You should obviously also be running on a computer that has the hardware and drivers for modern openGL.

Windows

Navigate to the folder where this readme is located in a terminal

genie --file=build\genie.lua vs2015

Open the generated visual studio solution

To build the project you need to define an environment variable or a macro for visual studio to find the above mentioned libraries. The variable is called "S_LIBS", and the value would be something like "C:\Dev\StaticLibraries". That folder needs to contain the .lib files and the include folders of SDL2, GLM and DevIL. For DevIL I suggest downloading the Windows SDK at version 1.8.

Hit F5

If there are any linker errors, check if your library directory matches the include and library paths, you might need to remove the version name from your folder. Alternativly you can modify the visual studio project include and library paths to suit your setup.

Linux

Make sure you have libraries for SDL2, GLM and DevIL installed, with -dev packages where applicable. You might need to change the path in the includedirs configuration in "build/genie.lua"

Navigate to the folder where this readme is located in a terminal

genie --file=build\genie.lua gmake

make

cp -R ./PlanetFramework/Fonts/ ./bin/release/
cp -R ./PlanetFramework/Textures/ ./bin/release/
cp -R ./PlanetFramework/Shaders/ ./bin/release/

Navigate to the release folder to make sure that it is your working directory (for file loading)

cd ./bin/release
./PlanetFramework