Skip to content

Latest commit

History

1,160 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RayRenderer

CI

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. 😅

Changes from old project

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

ComponentDescriptionLanguagePlatform
3rdParty3rd party libraryC,C++N/A
commonBasic but useful thingsMultiN/A
SystemCommonSystem-level common libraryC++Win & Linux & Android & iOS
NailangA customizable languageC++Win & Linux & Android & iOS
ImageUtilImage Read/Write UtilityC++Win & Linux & Android & iOS
XComputeBaseBase Library for Cross-ComputeC++Win & Linux & Android & iOS
OpenGLUtilWrapper of OpenGL thingsC++Win & Linux & Android
OpenCLUtilWrapper of OpenCL thingsC++Win & Linux & Android
OpenCLInteropOpenCL Interoperation utilityC++Win & Linux
FontHelperHelper for displaying font in OpenGLC++Win & Linux
TextureUtilTexture UtilityC++Win & Linux
WindowHostMulti-threaded GUI hostC++Win & Linux & Android
ResourcePackagerResource (de)serialize supportC++Win & Linux
RenderCoreCore of DizzRendererC++Win & Linux
RenderCoreWrapC++/CLI Wrapper for RenderCoreC++/CLIWin
CommonUtilBasic utilities for C#C#Win
AnyDockFlexible dock layout like AvalonDock for WPFC#Win
OpenGLViewWrapper of OpenGL window in WinFormC++/CLIWin
DizzTestTest Program(C++) (using WindowHost)C++Win & Linux
UtilTestUtilities Test Program(C++)C++Win & Linux
WPFTestTest Program(C#) in WPF (using OpenGLView)C#Win

Platform Requirements

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.

Build

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.

Incompatibles

  • 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 UtilTest

Additional Requirements

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.

Dependency

License

RayRenderer (including its component) is licensed under the MIT license.

About

My Renderer

Resources

Stars

24 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages