BlueFramework is divided into different parts e.g. Core, ImageProcessing, Rasterizer, and Engine.
The Core contains basic functionality for logging, vector and matrix algebra, string handling and some basic diagnostic functionality.
The ImageProcessing module offers basic functionality for image manipulation and loading and storing image files.
The Rasterizer is a thin abstract layer for graphic APIs such as Direct3D 11, Direct3D 12, OpenGL 3.x and up and Vulkan. Currently, there is a feature complete Direct3D 11 and Direct3D 12 implementation available (BlueFramework.D3D11RenderSystem, BlueFramework.D3D12RenderSystem). The OpenGL backend currently supports only a subset of the complete feature set of the Rasterizer module. The Vulkan implementation is still work in progress. As a user of the BlueFramework library, or more specifically as a user of the BlueFramework.Rasterizer module you program to an abstract interface that is internally mapped to the different render systems. This gives your application the advantage to use different graphic APIs by only writing code once.
The Engine module over functionality to download resources such as textures from URLs, a basic camera for first person and model view orientation, a view cube and basic resource management.
(Country Kitchen scene by Jay-Artist)
Copyright (c) 2023 Technical University of Munich Chair of Computational Modeling and Simulation.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
BlueFramework version 3.0.0.0 and up uses several software libraries. The corresponding licenses can be found in the Licenses folder distributed with this source code:
- boost 1.65.1 (http://www.boost.org/) (Boost Software License) ({root_dir}/Licenses/boost.LICENSE_1_0.txt)
- Eigen 3.3.4 (http://eigen.tuxfamily.org/) (MPL2) ({root_dir}/Licenses/Eigen.COPYING.MPL2)
- Google Test 1.8.0 (https://github.com/google/googletest) (BSD 3-Clause License) ({root_dir}/Licenses/GoogleTest.LICENSE)
- TinyXML-2 (https://github.com/leethomason/tinyxml2) (zlib license) ({root_dir}/Licenses/TinyXML-2.txt)
- Qt 5.10.0 (http://doc.qt.io/qt-5/lgpl.html) (LGPL version 3) ({root_dir}/Licenses/Qt.LGPL_version_3.txt)
- glew 2.0.0 (http://glew.sourceforge.net/) (Modified BSD License, the Mesa 3-D License (MIT) and the Khronos License (MIT)) ({root_dir}/Licenses/glew.LICENSE.txt)
Some code has also been copied from the following projects:
- OGRE3D (http://www.ogre3d.org/) (MIT License) ({root_dir}/Licenses/OGRE3D.MIT.txt)
- API DESIGN FOR C++ (http://www.apibook.com/) (MIT license) ({root_dir}/Licenses/apibook.LICENSE)
- appleseed (http://appleseedhq.net/) (MIT license) ({root_dir}/Licenses/appleseed.LICENSE.txt)
- CML (Configurable Math Library) (Boost Software License) ({root_dir}/Licenses/CML.LICENSE.txt)
- DirectX-Graphics-Samples (https://github.com/Microsoft/DirectX-Graphics-Samples) ({root_dir}/Licenses/DirectX-Graphics-Samples.LICENSE.txt)
- folly (https://github.com/facebook/folly) (Apache License Version 2.0) ({root_dir}/Licenses/folly.LICENSE.txt)
- GPUOpen-LibrariesAndSDKs/HelloD3D12 (https://github.com/GPUOpen-LibrariesAndSDKs/HelloD3D12) (BSD) ({root_dir}/Licenses/HelloD3D12.LICENSE.txt)
- Improved Console 5.0 (https://www.c-plusplus.net/code/ic/) ({root_dir}/Licenses/ic.License.txt)
- Nori Version 2 (https://github.com/wjakob/nori) (GPL v3) ({root_dir}/Licenses/Nori2.GPL_version_3.txt)
- Oryol (https://github.com/floooh/oryol) (MIT License) ({root_dir}/Licenses/Oryol.LICENSE)
- StackWalker (https://stackwalker.codeplex.com/) (New BSD License) ({root_dir}/Licenses/StackWalker.LICENSE.txt)
- tinyformat (https://github.com/c42f/tinyformat) (Boost Software License - Version 1.0) ({root_dir}/Licenses/tinyformat.LICENSE.txt)
- UtfConvert from The LLVM Compiler Infrastructure (https://github.com/plenluno/convertutf/tree/19e1e918f4cb15bd8b61a26d00286688c6974f3b) (BSD) ({root_dir}/Licenses/LLVM_Release_License.txt)
Where appropriate the source code documents the original source.
Notes
- BlueFramwork versions 0.4.1845.* to 2.4.1077.* were developed by Julian Amann and used code derived from niven that was not licensed in a correct way. The Copyright of niven belongs to Matthäus G. Chajdas. Those copyright issues have been fixed in this version (version 3.0.0.0 and up).
- BlueFramework version 3.0.0.0 and up is developed by the Chair of Computational Modeling and Simulation of the Technical University of Munich. It is a complete rewrite.