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 |
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 |
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(10~14) and clang(10~17).
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==
- 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 UtilTest
boost
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
submodule
4.1.0 -
Google Test
submodule
1.15.2 -
boost 1.86.0 (not included in this repo)
-
fmt
submodule
11.0.2 -
ghc-filesystem
submodule
1.5.14 -
rapidjson
submodule
1.1.0 master -
digestpp
submodule
master -
FreeType
submodule
2.13.2 -
ISPCTextureCompressor
submodule
-
half 2.2.0
-
cpuinfo
submodule
RayRenderer (including its component) is licensed under the MIT license.