Skip to content
This repository has been archived by the owner on Feb 13, 2023. It is now read-only.

NQADE - This is designed as an easy starting point to quickly get set up on a new project. It includes a number of utilities that I use for these little tech demos / prototypes / projects / etc.

Notifications You must be signed in to change notification settings

0xBAMA/not-quite-a-demo-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

not-quite-a-demo-engine (aka NQADE /eŋkweɪd/)

Setup

  • Requires libsdl2-dev on Ubuntu.
  • Make sure to recurse submodules to pull in FastNoise2, tracy, and hoard-of-bitfonts code - git submodule update --init --recursive, alternatively just run scripts/init.sh to do the same thing.
  • Run scripts/build.sh in order to build on Ubuntu. It just automates the building of the executable and moves it to the root directory, as files are referenced relative to that location, and then deletes the build folder (if called with the "clean" option).

Features

Graphics Stuff

  • SDL2 is used for windowing and input handling
  • GLEW as an OpenGL function loader
  • OpenGL Debug callback for error/warning reporting
  • Dear ImGui Docking Branch 1.83.2 + ImGuiColorTextEdit
    • Setup to spawn platform windows
  • Fast text renderer overlay applied as a post process, currently used for reporting of main loop timing but I eventually want to extend it to a drop down in engine terminal a la guake, renderer is loosely based on / inspired by this implementation.
  • WIP software rasterizer, SoftRast

Noise

  • Diamond-Square algorithm heightmap generation
  • FastNoise2 - flexible, powerful, very fast noise generation
  • 4 channel blue noise texture from Christoph Peters

Utilities

  • CMake parallel build setup
  • OpenGL texture bindings management with bindsets
  • GLM for vector and matrix types
  • Image wrapper for loading/saving/resizing/etc of images ( 4 channel, 8-bit default - STB and LodePNG I/O backends )
    • Incorporates the irFlip2 image swizzling utility
    • WIP floating point support, supports saving 32-bit per channel floating point images with TinyEXR
  • JSON parsing using nlohmann's single header implementation
  • XML parsing using TinyXML2
  • TinyOBJLoader for loading of Wavefront .OBJ 3D model files
  • Brent Werness' Voxel Automata Terrain ( VAT ), converted from processing to C++
    • BigInt library required by the VAT implementation ( to replace java/processing BigInt )
  • Startup config in json format, setting application parameters at startup without recompiling
  • Tick() / Tock() timing wrapper around std::chrono
  • Orientation Trident from Voraldo13, with the addition of multisampled AA in this implementation
  • Tracy profiler integration ( client mode )

Data Resources

  • Bayer pattern header, size 2, 4, 8 patterns
  • Header with some color utilities
  • PNG encoded data resources with loader/decoder

About

NQADE - This is designed as an easy starting point to quickly get set up on a new project. It includes a number of utilities that I use for these little tech demos / prototypes / projects / etc.

Topics

Resources

Stars

Watchers

Forks

Languages