Skip to content

Quakken/woop

Repository files navigation

 _    _  ___   ___ ______ 
| |  | |/ _ \ / _ \| ___ \
| |  | | (_) | (_) | |_/ /
| |/\| |\___/ \___/|  __/ 
\  /\  /           | |    
 \/  \/            \_|  

Overview

Woop is a DOOM-style rendering engine made to learn more about binary-space partitioning and early 3D rendering techniques! It's written in C++17 and uses OpenGL as a rendering backend.

Features

Woop is still being developed! See issues for all planned features.

  • Post-processing support via GLSL
  • TOML configuration
  • Full WAD parsing
  • Software rendering via OpenGL textures and PBOs
    • Occlusion culling
    • Front-to-back rendering via BSP traversal
  • Basic player controller

Getting Started

  1. Clone this repository
  2. Build the project
  3. Copy your DOOM wads to assets/wads
    • Be sure to place them relative to the output executable (build/src by default)
    • If this folder doesn't exist, create it!
    • If you don't own the original DOOM, many episodes have been distributed as shareware. You can find one such episode here.
  4. Specify which wad/level to load in config.toml
  5. Launch the executable!

Building from Source

Requirements:

  • Your favorite C++17 compiler
  • CMake v3.40 or higher

From the project's root directory, run the following:

mkdir build
cd build
cmake ..
cmake --build .

The output can then be found here!

Dependencies

Woop relies on a few external libraries to compile. These should be managed automatically via CMake.

  • GLFW - Windowing, input
  • GLAD - OpenGL function loading
  • GLM - Vector math
  • toml++ - Config parsing

Screenshots

E1M1 overlook E1M3 hallway E1M4 opening E1M5 door

About

DOOM-style rendering in C++

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors