rapidobj
SpeciaLUT
rapidobj | SpeciaLUT | |
---|---|---|
5 | 3 | |
159 | 26 | |
- | - | |
5.9 | 3.4 | |
2 months ago | 6 months ago | |
C++ | C++ | |
MIT License | BSD 2-clause "Simplified" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
rapidobj
-
C++ Show and Tell - December 2022
I wrote a rapidobj library for parsing Wavefront .obj files. It's an old text format for 3D data. This library was optimised to quickly process large files (see benchmarks); it can parse millions and even tens of millions of triangles per second.
-
rapidobj: a fast .obj parser library
I just released rapidobj v1.0. It's a fast .obj file parser. May be useful to those who need to quickly load large .obj models (of course, you will still need to transform the data into something that's GPU friendly). Third party benchmarks: https://aras-p.info/blog/2022/05/14/comparing-obj-parse-libraries/
- RapidObj v0.1 - A fast, header-only, C++17 library for parsing Wavefront .obj files.
- RapidObj - Quick Loader/Parser for Wavefront .obj Geometry Files
- RapidObj v0.1 - First Public Release
SpeciaLUT
-
C++ Show and Tell - December 2022
I made SpeciaLUT to convert bool/enum runtime tests to compile-time conditionals — by compiling all branching combinations in hot functions and saving them in a lookup-table, so the optimal one can be called at runtime. Reason: as an HPC consultant I encountered many codes that grew without good architecture, in which features would just be added and branching would propagate through all levels. This yields 10% to 50% performance increase in such codes.
-
Runtime-constant propagation and branching optimization strategy
I have implemented this as a C++ library, where you extract const states as template parameters, and the library compiles all specializations and allows you to choose the optimal one at runtime.
-
Runtime calling of a template specialisation using compile-time LUTs
So here's my C++20 implementation of the above: SpeciaLUT
What are some alternatives?
tinyobjloader - Tiny but powerful single file wavefront obj loader
biteopt - Derivative-Free Global Optimization Method (C++, Python binding)
fast_float - Fast and exact implementation of the C++ from_chars functions for number types: 4x to 10x faster than strtod, part of GCC 12 and WebKit/Safari
uninttp - A universal type for non-type template parameters for C++20 or later.
AutoGeodesics - Easily integrate the geodesics equation using automatic differentiation.
relion - Image-processing software for cryo-electron microscopy
Vcpkg - C++ Library Manager for Windows, Linux, and MacOS
introspective - Compile-Time Reflection in C++ for use with Scripting Languages
earcut.hpp - Fast, header-only polygon triangulation
with-branching - An implementation of macroexpand-time conditionalization.
indicators - Activity Indicators for Modern C++
static_string - Experimental compile-time string manipulation C++17 library