Welcome to the official site for Geometric Tools, a collection of source code for computing in the fields of mathematics, geometry, graphics, image analysis and physics. The engine is written in C++ 14 and, as such, has portable access to standard constructs for multithreading programming on cores. The engine also supports high-performance computing using general purpose GPU programming (GPGPU). Portions of the code are described in various books as well as in documents available at this site. The source code is freely downloadable, covered by the Boost License. The schedule for releases and related information is listed below.

If you use Linux and OpenGL, you need OpenGL 4.5 or later. I use the
NVIDIA proprietary drivers rather than the Nouveau Open Source drivers in order
to satisfy this constraint. Any attempt to run the sample applications without
the specified version will fail gracefully with the console-window output:
*OpenGL 4.5 is required*.

**Geometric Tools Engine 6.0**. The mathematics code is in a header-only
library (GTMathematics). A mathematics library with GPU-based implementations is
provided (GTMathematicsGPU). The CPU-based common graphics engine code is in its
own library (GTGraphics). DirectX 11 wrappers are provided for graphics
(GTGraphicsDX11) and applications (GTApplicationsDX11). OpenGL 4.5 wrappers are
provided for graphics (GTGraphicsGL45) and applications (GTApplicationsGL45).

• | Released on January 6, 2022 |

• | Microsoft Windows 10 or 11; DirectX 11.1 or OpenGL 4.5; Microsoft Visual Studio 2019 and 2022; Intel C++ Compiler 2022; C++ Clang tools for Windows 12.0.0 |

• | Ubuntu 20.04.1 LTS; OpenGL 4.5, NVIDIA graphics drivers; Visual Studio Code 1.49.2; CMake 3.15.2; gcc 9.3.0 |

• | Fedora 35; OpenGL 4.5, NVIDIA graphics drivers; Visual Studio Code 1.49.2; CMake 3.18.3; gcc 11.2.1 |

The source code distribution is available as a download from this site but is also available at Geometric Tools on GitHub. The online code is a snapshot that is posted after a significant batch of changes are made. However, the GitHub distribution always contains the latest fixes and updates as they are made in GTE.

**Geometric Tools Library**. The motivation for Geometric Tools was my
graduate studies in medical image processing; it was then named MAGIC
Software (*M*y *A*lternate *G*raphics and *I*mage
*C*ode). When I entered the 3D video game industry, I spent less
time on image code and more time on graphics, physics and mathematics
code. Much of the code was a result of helping people who posted problems
to the Usenet forum *comp.graphics.algorithms*. Technical support
questions over recent years have made it clear to me that the mathematics
and geometry code is what people use the most, so I will focus on those
topics now.

The Geometric Tools Library (GTL) will be a reworking of the mathematics
and geometry code in GTE followed by adding new code as time permits. I am
attempting to streamline the code, to provide consistent naming and
interfaces, and to extend the capabilities. Some of the GTE geometry code
already contains multithreading, especially useful when the numeric type
involves rational arithmetic and arbitrary-precision arithmetic, and I
plan to include multithreading in more algorithms. Separate code will be
available for GPGPU-based implementations using HLSL, GLSL and CUDA and
for SIMD-based implementations using Intel's SSE or AVX. I will be adding
a framework for a mixture of rational and symbolic computing, which is
described in my book *Robust and Error-Free Geometric Computing*.

The mathematics and geometry code base has associated documentation and a
unit-test suite. Code for graphics and applications exists only for
samples that illustrate the GTL algorithms. These will be contained in
separate libraries that are provided as-is without unit-test support.
The GTL source code will be freely downloadable and subject to the Boost
License.

I do not have a reliable estimated date for posting GTL. When I do, I will
announce it here. The GTL code will be available at GitHub.

Special thanks to Justin "Satriani" Hunt for the website design and support. |