Welcome to cyCodeBase, an open source programming resource intended for graphics programmers. Here you can download code releases of some of my general-purpose C++ classes as easy to use header files. They are written in a clean form and documented. You can also find tutorials and simple solutions to common graphics programming problems in the solutions section.

cyPolynomial

July 9, 2022

A new code release cyPolynomial is now available in the code release section. This release includes an implementation of my High-Performance Polynomial Solver. See Solving Polynomials to find out how to use it.

Removed Legacy Headers

July 9, 2022

Some old code releases that are no longer used are removed. I do not expect that they were used by many people, so hopefully this will be an uneventful cleanup.

cyVector and cyIVector

August 22, 2019

The old cyPoint and cyIPoint code releases are replaced with the new cyVector and cyIVector code releases. The new releases provide the same classes as the old ones with different names and some minor improvements. cyPoint and cyIPoint are kept for backwards compatibility.

cyAlphaDistribution release

May 14, 2018

A new code release cyAlphaDistribution is now available in the code release section. This release includes an implementation of the AlphaDistribution methods for alpha testing.

cyLightingGrid code release

October 13, 2017

A new code release cyLightingGrid is now available in the code release section. This release includes an implementation of the Lightin Grid Hierarchy method.

cyGL code release

January 24, 2017

A new code release cyGL is now available in the code release section. This release includes classes that simplify the use of some OpenGL functionalities.

cyIPoint code release

December 23, 2016

A new code release cyIPoint is now available in the code release section. This release includes classes for 2D, 3D, and ND integer points.

Using BCC Files

December 23, 2016

I released my yarn-level cloth models in a format that I call Binary Curve Collection (BCC). I added a tutorial in the solution section about using BCC files.

Sample Elimination

November 21, 2016

An implementation of the weighted sample elimination algorithm for generating blue noise (Poisson disk) sample sets and supporting PointCloud (using a k-d tree) and Heap classes are added.

Templates and GIT

September 18, 2016

cyCodeBase is now on github! Also, many fundamental classes are converted to templates for supporting both single precision and double precision floating point operations. The old Cg classes are removed.

Updated Points and Matrices

September 17, 2016

Minor fixes, performance improvements, and additional methods for matrix classes in the cyPoint and cyMatrix code releases.

Update for Matrices

September 30, 2015

Bug fixes, performance improvements, and additional methods for matrix classes in the cyMatrix code release.

MTL file format support

November 30, 2014

Updates to the cyTriMesh code release. The new version can parse MTL files while loading an OBJ file.

Bounding Volume Hierarchy

September 29, 2013

The new code release cyBVH has a general purpose bounding volume hierarchy (BVH) class, as well as a BVH class for triangular meshes.

Triangular Mesh class

September 23, 2013

The new code release cyTriMesh has a triangular mesh class that can read OBJ files and triangulate the non-triangular faces.

Color class

September 17, 2013

The new code release cyColor has color classes with 3 or 4 channels, each of which are single precision floats or 8-bit bytes.

Minor Update

August 23, 2012

Minor bug fix to the matrix classes. The GetInverse methods are now declared as const, as they should have been.

Quaternion class

October 6, 2007

The new code release cyQuat has a quaternion class designed for rotation operations of 3D vectors.

HAIR file class

September 10, 2007

The new code release cyHair has methods to read and write HAIR model files. There is also a new solution for using HAIR files.

Cg code release update

September 5, 2007

New methods to destroy Cg programs added to cyCgBaseProgram. You can download the new version in the code release section.

String class

June 10, 2007

A general purpose string class for char arrays is added to the code release section.

Timer classes

June 9, 2007

There is a new code release that includes timer classes. There is also a new solution for easy performance analysis using these classes.

Spatial Vector Algebra

June 7, 2007

A new code release for spatial vector algebra classes is in the code release section. There are also minor updates in other code releases.

Cg classes

May 30, 2007

A new code release is waiting for you in the code release section. This release includes classes that simplifies the use of Cg shaders with OpenGL.