Libraries & Frameworks#
Core Frameworks#
Kitchensink Frameworks#
- https://github.com/facebook/folly
- https://abseil.io/
- https://github.com/bkaradzic/bx
- https://github.com/septag/sx
- MUtils Useful C++
- Misc C Headers
- bitsquid foundation library
- foundation lib: rpmalloc's author's foundation lib
Allocators#
Core Libs#
- Filesystem: https://icculus.org/physfs/
- Immutable Data Structures: https://sinusoid.es/immer/introduction.html
- Python Binding: https://github.com/pybind/pybind11
Containers#
- EASTL
- https://github.com/hogliux/semimap
- https://github.com/serge-sans-paille/frozen
- https://github.com/lemire/EWAHBoolArray
- https://github.com/RoaringBitmap/CRoaring
Hashing#
- Fast hash tables https://abseil.io/about/design/swisstables
- https://github.com/cmuratori/meow_hash
- xxHash
Reflection#
- https://cista.rocks/
- https://github.com/Manu343726/ctti CTTI Compile Time Type Information
- https://github.com/apolukhin/magic_get
- https://github.com/Neargye/nameof
- https://github.com/onqtam/cmake-reflection-template
- https://github.com/preshing/FlexibleReflection/tree/part1
- RTTR
- StaticTypeInfo: Compile time type info
- Compile-time type info using constexpr
- Refureku: C++ reflection library based on Kodgen
- Kodgen: C++ parser & codegen
- clReflect: C++ Reflection using clang
C++ Templates#
- https://github.com/TartanLlama/optional
- https://github.com/TartanLlama/expected
- https://github.com/TartanLlama/tl
- https://github.com/tacticalmelonfarmer/cxl
- https://github.com/doom/meta
- callable_traits
- function type traits
C++ Utilities#
- Functional programming: https://github.com/Dobiasd/FunctionalPlus
- magic enum
- Global Static objects: https://github.com/graphitemaster/0xABAD1DEA
- Asset Lib: https://github.com/gpakosz/PPK_ASSERT
- Debug Print Expression Macros: ocs.google.com/
C++ Type erasure#
Dev/Debug#
CPU/Memory Profilers#
- Tracy Profiler
- https://github.com/milostosic/MTuner
- https://www.puredevsoftware.com/mempro/Features.htm
Multi-Threading#
Task/Job System#
- Taskflow Task library: https://github.com/taskflow/taskflow
Coroutines#
- libaco: A blazing fast and lightweight C asymmetric coroutine library
- https://github.com/Tencent/libco
- Stackless coroutine
Serialization#
JSON#
Math#
General#
- Math library: https://github.com/nfrechette/rtm
- cglm: better version of glm
- Procedural math tricks: https://github.com/zalo/MathUtilities - grab bag of some of the neat math and physics tricks
- Curves Library: https://github.com/ethz-asl/curves/tree/master/curves/include/curves
- Splines/Curves library: https://github.com/andrewwillmott/splines-lib
Geometry#
- libigl: header only C++ geometry processing library
- geometry-central: from Keenan Crane/GeometryProcess lab, containing implementations of Keenan's papers
Database#
- lmdb
- Firefox Design Review: Key-Value Storage: simple key-value storage based on LMDB
- LMDB vs BoltDB
- sqlightning
- libmdbx
- leveldb
- realm.io
- dntree: implementation showing how LDAP DNs can be stored in an lmdb database, structured as a hierarchical adjecency list
- sqlite orm
Compute/GPU#
- https://github.com/imageworks/OpenShadingLanguage
- slang
- Falcor
- yocto-gl
- Blitz++ Multi-Dimensional Array Library: https://github.com/blitzpp/blitz
- https://github.com/mitsuba-renderer/enoki
Data Flow/Graph#
Networking#
Platform#
App Support#
- Update patching, https://wyday.com/
- Logging: https://github.com/amrayn/easyloggingpp/tree/master
- Logging https://github.com/gabime/spdlog
OS Support#
- Windows Implementation Libraries: https://github.com/microsoft/wil
- Api Hooking: https://github.com/microsoft/Detours
Hot reload#
- Windows PE file parser: https://github.com/serge1/COFFI
- Blink: function level runtime patching with pdb+COFF reader, linker, etc
- Run code from object files:
- http://h3.gd/posts/how-not-to-use-dlls/
- https://github.com/h3r2tic/relocdll
- CR: single file header-only live reload solution for C, written in C++
Animation#
Libs#
Skinning#
- https://github.com/sansumbrella/Choreograph
- https://github.com/CMU-Perceptual-Computing-Lab/openpose
- Dem Bones: Skinning Decomposition
- https://github.com/damian0815/skellington
- Fast and Efficient Skinning of Animated Meshes: clean implementation in python
- Sparse Localized Deformation Components: extract sparse, spatially localized deformation modes from animated mesh sequence
- splocs implementation
Compilers#
Parallel Programming#
- Nvidia CCCL: unified Nvidia CUDA C++ Core Libraries for GPU-Accelerated
- Thrust: high-level GPU API for parallel algorithms/data structures library
- Thrust Project Page: C++ Parallel Algorithm Library with high-level API with GPU/CPU configurable backends e.g. CUDA, TBB, OpenMP
- CUB
- libcudacxx
- Nvidia CUDA-X: Nvidia GPU-Accelerated Libraries
- CppSPMD
- SPIRV-Cross: Intel's SPIR-V to ISPC translator; convert GPU Compute to CPU
- SPIRV-Cross Demo: compiling a GLSL compute shader -> SPIR-V -> ISPC
- SPIRV-Cross Live: live demo support in Shader Playground
- Taichi Programming Language
Algebraic Effects#
- libhandler: algebraic effects and handlers in portable C99
- libmprompt: robust multi-prompt delimited control and effect handlers in C/C++
Parsing#
- tree-sitter: incremental parser
- https://github.com/orangeduck/mpc: parser combinator
- http://www.buildyourownlisp.com/contents
- https://github.com/TheLartians/Parser
- https://github.com/taocpp/PEGTL
- https://github.com/yhirose/cpp-peglib
- https://github.com/codeplea/tinyexpr
- https://github.com/foonathan/cppast
GPU/HLSL/Compute Specific#
- https://github.com/Celtoys/ComputeBridge
- Shader debugger: https://github.com/dfranx/SHADERed
- Shader Writer & Shader AST https://github.com/DragonJoker/ShaderWriter
- HLSL Shader Parser/AST:
- https://github.com/dfranx/hlslparser
- https://github.com/Nomoresleep/hlslparser
- https://github.com/Thekla/hlslparser
- https://github.com/dfranx/glsl-parser
Code Gen/JIT/VM#
- TinyC Compiler: https://bellard.org/tcc/
- Detours: https://github.com/microsoft/Detours
- DynamoRIO: Tracing JIT framework: dynamic binary instrumentation framework for the development of dynamic program analysis tools
- highlevel overview
- github
- Alternatives:
- Reflective DLL Injection: https://github.com/rokups/ReflectiveLdr
- https://github.com/BitFunnel/NativeJIT
- Zig: https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html
- https://github.com/dfranx/aGen
- https://github.com/dfranx/BlueVM
- https://github.com/RuntimeCompiledCPlusPlus/RuntimeCompiledCPlusPlus/wiki/Alternatives
- AngelScript: https://www.angelcode.com/angelscript/documentation.html
- JIT
- http://www.llpe.org/
- EasyJit
- C/C++ live compilers
- Xbyak: C++ interface for JIT assembler
- DynAsm: LuaJIT preprocessor and tiny runtime library for creating assemblers and JIT compilers in C or C++
Decompiler#
- RetDec
- COFFI
- Ghidra
- Software Reverse Engineering with Ghidra: video tutorial series
- Introduction to Decompiling C++ with Ghidra: abridged version of above
- Binary Ninja
- IDA Pro Decompiler Plugin
- HexRaysCodeXplorer
- Radare2
- Redare2 Book
- Reko
- rizin: UNIX-like reverse engineering framework and command-line toolset
- github
- cutter: Free and Open Source RE Platform powered by Rizin
- github
Debugger#
- https://github.com/dfranx/ShaderDebugger
- Backtrace/Stacktrace: https://github.com/ianlancetaylor/libbacktrace
UI#
Libs#
- https://sinusoid.es/lager/index.html
- ImGui
- Manual: https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html
- Net/Remote ImGui: https://github.com/sammyfreg/netImgui
Editors#
- https://github.com/JSandusky/Blocks
- https://github.com/farbrausch/fr_public
- VSCode's Monaco Editor https://microsoft.github.io/monaco-editor/index.html
- Text Engine https://github.com/xi-editor/xi-editor
- Light Table: https://github.com/LightTable/LightTable/tree/master
- https://github.com/mikesart/gpuvis
- https://github.com/directus/directus
Apps#
Widgets#
General Widgets#
- ImGui Useful Widget collection
- Graphing/Plotting: https://github.com/epezent/implot
- Imgui widget collection:
- https://github.com/ocornut/imgui/wiki
- https://github.com/ocornut/imgui/labels/useful widgets
- https://github.com/Flix01/imgui/wiki/ImGui-Addons-Branch-Home
- Progress bar: https://github.com/ocornut/imgui/issues/1901
- PIE Menu: https://github.com/ocornut/imgui/issues/434
- Knobs: https://github.com/ocornut/imgui/issues/942
- Toggle Button: https://github.com/ocornut/imgui/issues/1537
- Alternating listview: https://github.com/ocornut/imgui/labels/useful widgets
- Pinned Tooltip: https://github.com/ocornut/imgui/issues/1345
- Filebrowser: https://github.com/AirGuanZ/imgui-filebrowser
Editor Widgets#
- https://github.com/nlguillemot/arcball_camera
- https://github.com/nlguillemot/flythrough_camera
- https://github.com/glampert/debug-draw
- Gizmo:
- ImGuizmo (3d translation/rotation Gizmo) https://github.com/CedricGuillemet/ImGuizmo
- imGuiZMO.quat (3d translation/rotation Gizmo) https://github.com/BrutPitt/imGuIZMO.quat
Animation Widgets#
- Bezier/Curve Editors: https://github.com/ocornut/imgui/issues/786
- Sequencer: https://github.com/CedricGuillemet/ImGuizmo
- Sequentity: https://github.com/alanjfs/sequentity
Property editor#
- Imgui demo file
- https://gitlab.com/LIONant/properties
- https://alejandrohitti.com/projects/code-samples/entity-inspection/
- https://github.com/Csabix/imgui/tree/master/auto
Text Editors#
Debug Widgets#
- Plotting widget: https://github.com/soulthreads/imgui-plot
- FlameGraphs: https://github.com/bwrsandman/imgui-flame-graph
- Metrics Widgets: https://github.com/GameTechDev/MetricsGui
Styling#
- imgui-spectrum
Misc#
- Excellent collection of useful nuggets/gems: https://github.com/CedricGuillemet/Imogen/projects/1
- https://github.com/Cmdu76/AwesomeCppGameDev
- https://awesomecpp.com/
- http://fffaraz.github.io/awesome-cpp/#debug
- https://github.com/raizam/gamedev_libraries
- https://github.com/betsegaw/windowwalker
- C++ Best Practices & Conventions: https://lefticus.gitbooks.io/cpp-best-practices/content/
- C++ Project Layout: https://api.csswg.org/bikeshed/?force=1&url=https://raw.githubusercontent.com/vector-of-bool/pitchfork/develop/data/spec.bs
Tips/Tricks/Gems#
_ReturnAddress()
for debugging: http://www.virtualdub.org/blog/pivot/entry.php?id=181- Functional Property Modifiers
- https://twitter.com/Donzanoid/status/1164274159171584001
- https://gist.github.com/dwilliamson/8fb72ed4be7b5022b856eb4ff2d05d04