This repository has been archived by the owner. It is now read-only.
🎨 sandbox of experimental & reusable code in C++11 & modern openGL
Clone or download
Latest commit fd4aa4d Mar 28, 2018
Permalink
Failed to load latest commit information.
assets additional editor profiling Mar 26, 2018
clustered-shading frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
examples ui hidden for all field types Mar 19, 2018
frosted-glass frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
geometric-decals frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
gl merge Mar 28, 2018
lib-incubator frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
lib-model-io finish forward renderer refactor that initially started on a long air… Jan 3, 2018
lib-render additional editor profiling Mar 26, 2018
particle-system frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
portal-rendering frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
projective-texturing frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
sandbox frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
scene-editor additional editor profiling Mar 26, 2018
terrain-scan-effect frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
third_party additional input handling tweaks Mar 18, 2018
vr-environment frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
.gitignore ignore nonfree assets folder Jul 30, 2017
COPYING more progress on asset import Dec 13, 2017
LICENSE readme update Mar 12, 2016
algo_misc.hpp minor fixes Dec 8, 2017
appveyor.yml appveyor Dec 8, 2017
arcball.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
asset_io.hpp active changes for tiny-gizmo; need to contribute back Mar 18, 2018
bit_mask.hpp namespace refactor part 1 Jan 10, 2016
circular_buffer.hpp fix warnings and project build settings Dec 14, 2017
dsp_filters.hpp minor file refactor Nov 18, 2017
file_io.hpp scenes now round-tripping through serialization system Sep 10, 2017
geometry.hpp geometry and runtime_mesh are the same thing now for consistency Dec 12, 2017
human_time.hpp timestamp string helper (also change utc to local) Oct 15, 2017
impl.cpp bringing up pbr with a single point light Mar 18, 2017
index.hpp reintroduce sample for a No Man's Sky terrain scanning effect (plus a… Jan 2, 2018
kmeans.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
linalg.h update linalg.h Feb 25, 2017
lru_cache.hpp minor Mar 8, 2017
math-common.hpp further documentation and cleaning up of the 'core math' functionality Dec 4, 2017
math-core.hpp further documentation and cleaning up of the 'core math' functionality Dec 4, 2017
math-euclidean.hpp construct superfrustum for frustum culling purposes in virtual realit… Dec 6, 2017
math-projection.hpp integrate superfrustum into fwd renderer Dec 6, 2017
math-ray.hpp further documentation and cleaning up of the 'core math' functionality Dec 4, 2017
math-spatial.hpp further documentation and cleaning up of the 'core math' functionality Dec 4, 2017
movement_tracker.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
mpmc_blocking_queue.hpp normalization Mar 5, 2017
mpmc_bounded_queue.hpp normalization Mar 5, 2017
mpsc_bounded_queue.hpp normalization Mar 5, 2017
mpsc_queue.hpp queue modifications and circular buffer refactor Mar 5, 2017
octree.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
one_euro.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
oriented_bounding_box.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
parabolic_pointer.hpp geometry and runtime_mesh are the same thing now for consistency Dec 12, 2017
parallel_transport_frames.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
pointcloud_processing.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
poisson_disk.hpp frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018
procedural_mesh.hpp frosted glass checkpoint (somewhat working, needs tweaking) Jan 2, 2018
quick_hull.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
radix_sort.hpp more formatting Mar 7, 2017
reaction_diffusion.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
readme.md reintroduce sample for a No Man's Sky terrain scanning effect (plus a… Jan 2, 2018
running_statistics.hpp namespace refactor part 1 Jan 10, 2016
signal.hpp namespace refactor part 1 Jan 10, 2016
simple_timer.hpp additional editor profiling Mar 26, 2018
simplex_noise.hpp remove deprecated textured_model_app Dec 9, 2017
solvers.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
splines.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
spmc_stealing_queue.hpp more formatting Mar 7, 2017
spsc_bounded_queue.hpp normalization Mar 5, 2017
spsc_queue.hpp normalization Mar 5, 2017
string_utils.hpp more progress on asset import Dec 13, 2017
svd.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
trajectory.hpp big header file cleanup; geometric.hpp is no more, now split into sev… Dec 4, 2017
tweens.hpp reintroduce sample for a No Man's Sky terrain scanning effect (plus a… Jan 2, 2018
util.hpp frosted glass updates; crufty code removal and scene editor ui-ux Jan 5, 2018

readme.md

Graphics Sandbox

License is Unlicense

Platform Build Status
Visual Studio 2017 Build status

A collection of C++11/14 classes and opengl utilities united under the arbitrarily namespace "avl" (short for Anvil).

Project Structure

  • scene-editor\ - A scene editor
  • particle-system\ - Work-in-progress CPU and GPU particle system simulator and renderer
  • projective-texturing\ - Implements projective surface texturing (i.e. Unity's projector object)
  • portal-rendering\ - A simple sample for source/target portal rendering. Does not handle nested portals.
  • frosted-glass\ - A recreation of the frosted/dirty glass window effect from Doom 2016/idTech6.
  • terrain-scan-effect\ - A terrain scanning effect inspired by No Man's Sky.
  • vr-environment\ - Incomplete sample for physics + VR interaction using Bullet 3
  • clustered-shading\ - A minimally viable implementation of clustered shading for point-lights
  • lib-render\ - Implements a forward renderer, physically-based materials, and asset serialization.
  • lib-incubator\ - Shared code between public & private projects.
  • examples\ - Tests of functionality in lib-incubator. Not likely to compile if you are not me.

Recent

  • Game-Dev, Procedural Geometry, and Simulation Algorithms
    • Ballistic trajectories - firing solutions for static and dynamic targets (i.e. tower defense)
    • Parabolic pointer - the computational geometry impl of a teleportation mechanic for VR
    • Parallel transport frames (PTF) - useful for creating tube geometries and virtual camera trajectories
    • Supershapes - modeling framework for natural forms based on the Gielis superformula (patented, unfortunately)
    • Library of procedural meshes (cube, sphere, cone, torus, capsule, etc)
    • Simplex noise generator (flow, derivative, curl, worley, fractal, and more)
    • 2D & 3D poisson disk distribution generator
    • Reaction-diffusion CPU simulation (Gray-Scott)
    • Kmeans clustering of pointclouds
    • Quickhull of pointclouds
  • Rendering
    • Lightweight, header-only opengl wrapper (gl-api.hpp)
    • Decal projection on arbitrary meshes
    • Spherical environment mapping (matcap shading)
    • Billboarded triangle mesh line renderer
    • Procedural sky dome with Preetham and Hosek-Wilkie models
    • Island terrain with a simple water shader (waves, reflections)
  • App-Dev
    • GLSL shader program hot-reload (via efsw library)
    • 2D resolution-independent layout system for screen debug output (textures, etc)
    • Dear-Imgui Bindings
  • DSP Algorithms & Filters
    • One-euro, complimentary, and exponential filters for 1D data
    • Ad-hoc statistical analysis (variance, skewness, kurtosis, etc)

lib-incubator incorporates a considerable amount of permissively-licensed and public-domain code adapted for linalg.h types or readability/usability/extensibility (like various lock-free queues and graphics samples). See COPYING for full attribution of code found in this repository.