No it's not a renderer.
That's just an excuse for me to write a collection of utilities which "will be used for the renderer".
Maintaing and growing the project is much more fun than make it actually renderable. 😅
The old preject is here
- fixed pipeline --> GLSL shader
- x64/AVX2 only RayTracing --> multi versions of acceleration RayTracing(may also include OpenCL)
- GLUT based GUI --> simple GUI with FreeGLUT, complex GUI with WPF
- coupling code --> reusable components
| Component | Description | Language | Platform |
|---|---|---|---|
| 3rdParty | 3rd party library | C,C++ | N/A |
| common | Basic but useful things | Multi | N/A |
| SystemCommon | System-level common library | C++ | Win & Linux & Android & iOS |
| Nailang | A customizable language | C++ | Win & Linux & Android & iOS |
| ImageUtil | Image Read/Write Utility | C++ | Win & Linux & Android & iOS |
| XComputeBase | Base Library for Cross-Compute | C++ | Win & Linux & Android & iOS |
| OpenGLUtil | Wrapper of OpenGL things | C++ | Win & Linux & Android |
| OpenCLUtil | Wrapper of OpenCL things | C++ | Win & Linux & Android |
| OpenCLInterop | OpenCL Interoperation utility | C++ | Win & Linux |
| FontHelper | Helper for displaying font in OpenGL | C++ | Win & Linux |
| TextureUtil | Texture Utility | C++ | Win & Linux |
| WindowHost | Multi-threaded GUI host | C++ | Win & Linux & Android |
| ResourcePackager | Resource (de)serialize support | C++ | Win & Linux |
| RenderCore | Core of DizzRenderer | C++ | Win & Linux |
| RenderCoreWrap | C++/CLI Wrapper for RenderCore | C++/CLI | Win |
| CommonUtil | Basic utilities for C# | C# | Win |
| AnyDock | Flexible dock layout like AvalonDock for WPF | C# | Win |
| OpenGLView | Wrapper of OpenGL window in WinForm | C++/CLI | Win |
| DizzTest | Test Program(C++) (using WindowHost) | C++ | Win & Linux |
| UtilTest | Utilities Test Program(C++) | C++ | Win & Linux |
| WPFTest | Test Program(C#) in WPF (using OpenGLView) | C# | Win |
Since C++/CLI is used for C# bindings, and multiple DLL hacks are token for DLL-embedding, it's Windows-only.
For Windows parts, Windows SDK Target is 10(latest). .Net Core 8.0 needed for C# components.
To use xzbuild, python3.7+ is required.
To build C++ parts, a C++20 compiler is needed. CI Tests are on gcc(11~14) and clang(12~19).
For Windows, project uses VisualStudio2022, VS2022(>17.6) is needed for the vcproj version.
For Linux, project uses xzbuild (need python3.7+) with make. Utilities that have xzbuild.proj.json inside are capable to be compiled on Linux.
- gcc9 does not support
constexpr std::array::operator== - gcc10/clang11 does not support
avx-vnni - clang13/clang14 has compatibility issue1/2 with libstdc++
Example usage of
xzbuild
python3 xzbuild help
python3 xzbuild list
python3 xzbuild build all
python3 xzbuild buildall UtilTestboost headers folder should be found inside include path. It can be added in SolutionInclude.props on Windows, or specified by environment variable CPP_DEPENDENCY_PATH on *nix.
gl.h and glu.h headers should be found inside include path\GL.
nasm needed for libjpeg-turbo --- add it to system environment path
ispc compiler needed for ispc_texcomp --- add it to system environment path.
-
gsl
submodule4.2.0 -
Google Test
submodule1.17.0 -
boost 1.89.0 (not included in this repo)
-
fmt
submodule11.2.0 -
ghc-filesystem
submodule1.5.14 -
rapidjson
submodule1.1.0 master -
digestpp
submodulemaster -
FreeType
submodule2.13.2 -
ISPCTextureCompressor
submodule -
half 2.2.0
-
cpuinfo
submodule
RayRenderer (including its component) is licensed under the MIT license.