Ds is an Open Source C++ class library for OpenGL-based graphics application development. It contains classes and templates for math objects (vectors, points, quaternions, and transformations), spatial data structures (grids, trees, and bounding volume hierarchies), scene graph management ("Unity-like" scene object hierarchy and components such as triangle meshes, lights, and cameras), and basic OpenGL rendering and ray-tracing support, among others.
Ds has been employed in the teaching of subjects such as computer graphics, visualization, and games, in undergraduate and graduate courses in Computer Science at the Faculty of Computing of the Federal University of Mato Grosso do Sul. Ds has also been used in several research projects in physics-based animation and geometric processing.
The current master version is 1.11 and supports Windows 10 and later. All headers and source files are in the cg/ folder. The only dependencies are GLFW and Dear ImGui. All headers, source files, and libraries needed are already included in the cg/externals/ folder. The project file for Visual Studio 2022 is located in the cg/build/vs2022/ folder. There is also a pre-compiled binary available in the cg/lib/ folder.
Ds Demo is a simple ray-tracing application built on top of Ds. The headers, source files, and a Windows binary are available in the apps/cgdemo/ folder. The Solution and project files for Visual Studio 2022 are in the apps/cgdemo/build/vs2022.
The ray tracing relies on bounding volume hierarchies (BVHs) for accelerating ray/object intersections. Also, the code includes a scene reader with a LL(1) parser. The grammar for the specification of a scene and its scene objects is here. The scene file shown in this example is available here.
Ds-Vis is a simple "VTK-like" scientific visualization library extending Ds. The API contains classes and templates for datasets and processes. A dataset consists of a structure (geometry and topology defined by vertices and cells) and attributes (e.g., scalars and/or vectors at vertices and cells). The API provides classes for point sets, triangle meshes, triangle mesh instancing, and sets of graphics primitives containing points, lines, and triangles. Processes can be sources (dataset producers), filters (dataset transformers), and sinks (dataset consumers). Processes are connected to each other in a visualization pipeline such that the output of a source or filter is the input of another filter or sink. A mapper is a type of sink capable of rendering its input dataset. Every actor in a scene has a mapper.
All headers and source files of Ds-Vis are in the cgvis/ folder. The project file for Visual Studio 2022 is located in the cgvis/build/vs2022/ folder. A pre-compiled binary is available in the cgvis/lib/ folder.
Ds-Vis Demo is a visualization application built using Ds and Ds-Vis. The headers, source files, and a Windows binary are available in the apps/cgvisdemo/ folder. The Solution and project files for Visual Studio 2022 are in the apps/cgvisdemo/build/vs2022.
Some of the goals for 2023 are:
- Full API documentation
- CMake project and support for macOS and Linux with Clang and GCC
- Textured and transparent materials
Basic scientific visualization API- Demos for 2D/3D neighbor particle searching with regular grids and quadtrees/octrees
- Bézier and B-spline curves and surfaces rendering API
Developed by Paulo Pagliosa.
Ds is licensed under the zlib License, see LICENSE.txt for more information.
If you have questions related to the use of Ds, a bug to report or a
feature you would like to request, please send an e-mail to:
ppagliosa @ gmail dot com