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 7.0
needed for C# components.
To use xzbuild
, python3.7+ is required.
To build C++ parts, a C++17 compiler is needed and C++20 is recommanded (defaultly used for gcc>=9 and clang>=9).
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, tested on gcc(9~11) and clang(9~12).
- gcc7 has compatibility issue with SIMD.hpp
- clang8 has ICE with SystemCommon
- gcc8 has ICE with SystemCommonTest
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.0.0 -
Google Test
submodule
1.14.0 -
boost 1.83.0 (not included in this repo)
-
fmt
submodule
10.1.0 -
ghc-filesystem
submodule
1.5.12 -
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.