Skip to content

DXT00/BlackPearl-Rendering-Engine

Repository files navigation

BlackPearl Engine

BlackPearl Engine is a dynamic GI rendering engine to simulate different dynamic GI algorithm,such as light probe based GI,voxel cone tracing GI, image based lighting, SDF DDGI.You can select the algorithm you want to simulate in SandBox.

Supported Platforms

Supports Windows and Android platforms. Currently, the lighting system on the Android platform is still relatively simple, and GI is still under planning.

Platform Graphics API
Windows OpenGL ,Vulkan
Android GLES

Environment

Windows

  1. NVIDIA GeForce RTX 2060/PCIe/SSE2
  2. Windows 10
  3. OpenGL Version :4.5.0

Android: Test on two devices: Android 10 Mali/ Android 12 Adreno

Featrues

  1. IBL
  2. voxel cone tracing
  3. light probe GI
  4. SDF DDGI
  5. Gpu Driven
  6. Batch rendering
  7. Forward pipeline
  8. Deffered pipeline
  9. PBR material
  10. Simple Shadowmap, PCSS
  11. Terrain
  12. SSR
  13. RHI support Vulkan, OpenGL, GLES

Documentation

Dynamic Global illumination PPT-DXT00 Master thesis

https://github.com/DXT00/BlackPearl-Rendering-Engine/blob/master/Dynamic%20Global%20illumination%20PPT-DXT00%20Master%20thesis.pdf

SDF Based DDGI

dynamic enviroment light (day and night shifting)

Wiki: https://github.com/DXT00/BlackPearl-Rendering-Engine/wiki/Global-DF-Based-DDGI

DDGI0 DDGI1 DDGI2

CubeMap Based Light probe GI

sort diffuse probe based on Areas

lightprobe_Map

cache object's nearyby diffuse probes

lightprobe_diffuse+specular

dynamic enviroment light (day and night shifting)

lightprobe_update_one_diffuse_probe_per_frame

Voxel Cone Tracing - 3D texture cone tracing

3Dtexture_coneTracing

indirect specular light

3Dtexture_coneTracing

indirect diffuse light

3Dtexture_coneTracing

DirectX Raytracing - RTX

DXR pipline rendering

DXR pipline rendering

Mesh Shader

Support meshlet rendering

meshlet rendering

batch rendering

per object rendering:

per object rendering

batch rendering:

batch rendering only need 9 drawcalls,and maintain 60 fps. improve (objs num/batch num) performance per object rendering

Terrain rendering

Terrain rendering

MultiIndirect DrawCall rendering

rendering dynamic objs:

since the transform matrix needs to be updated every frame ,can only reach 20 fps Terrain rendering

rendering static objs:

upload all data to gpu once, can reach 60 fps Terrain rendering

GPU Driven hiz culling

hiz culling

PCSS

pcss

Cloud rendering

cloud

SSR

cloud

Get start

Before starting, you need to download the third-party libraries and Assets. see BlackPearl vendor

Windows

  1. Open the directory: app/src/main/cpp
  2. select render API, modify the RenderAPI Settings in GenerateProject.bat:
call vendor\bin\premake\premake5.exe vs2022 --RenderAPI=opengl
PAUSE

You can choose RenderAPI from the following three options:
{ "opengl", "OpenGL" },
{ "vulkan", "Vulkan (Windows only)" }

  1. run GenerateProject.bat to set up visual studio project

  2. set Sandbox or SandboxVK as the startup project.

Android

  1. compile BlackPearl and SandBoxAndroid using Clion.
ANDROID_NDK ANDROID_PLATFORM
25.1.8937393 android-26 Or any of the above versions

camke settings:

cmake -DCMAKE_BUILD_TYPE=Debug -G Ninja -DCMAKE_SYSTEM_NAME=Android -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_SYSTEM_VERSION=26 -DANDROID_PLATFORM=android-26 -DANDROID_ABI=arm64-v8a -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -DANDROID_NDK=${Path-to-AndroidSDK}\ndk\25.1.8937393 -DCMAKE_ANDROID_NDK=${Path-to-AndroidSDK}\ndk\25.1.8937393 -DCMAKE_TOOLCHAIN_FILE=${Path-to-AndroidSDK}\ndk\25.1.8937393\build\cmake\android.toolchain.cmake -DCMAKE_CXX_FLAGS=-std=c++11 
  1. open blackpearl app by Android Studio

  2. run the app

BlackPearl vendor

vendor library:

Please download the vendor library at the following link: url:https://pan.baidu.com/s/1JtBzMzp5xZo1HRNRfrIkHQ?pwd=1234 Extract code:1234

copy to app\src\main\cpp\BlackPearl\vendor

assets library:

Please download the assets library at the following link: https://pan.baidu.com/s/1qclUPOsQ73bas0TnDH_gNA?pwd=1234 Extract code:1234

copy to app\src\main\cpp\assets

About

BlackPearl Rendering Engine

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •