All Projects → YuqiaoZhang → PatriotEngine

YuqiaoZhang / PatriotEngine

Licence: LGPL-3.0 license
PatriotEngine aims to be a state-of-the-art real-time image synthesis engine.

Programming Languages

C++
36643 projects - #6 most used programming language
Makefile
30231 projects
c
50402 projects - #5 most used programming language
shell
77523 projects
awk
318 projects
HTML
75241 projects

Project Description

PatriotEngine aims to be a state-of-the-art real-time image synthesis(rendering) engine and I believe that more and more Chinese programmers unabatedly endeavor to resist and develop their own engines.

Although there is no official standard of the rendering engine at present, the functionality of the rendering engine has steadily stabilized due to the evolution of the rendering engine during the past few decades and thus has formed the de facto standard.

It is widely establish that "program = data structure + algorithm" and this engine will elaborate the rendering from two aspects: scene (data structure) and rendering pipeline (algorithm).

Here is the document of this engine: https://yuqiaozhang.github.io/PatriotEngine/index.html

Continuous build status

Build Type Status
Build Posix Linux X11 On Ubuntu Build Posix Linux X11 On Ubuntu
Build Win32 Desktop Build Win32
Build Posix Linux Android On Ubuntu Build Posix Linux Android On Ubuntu
Build Posix Linux Android On MacOSX Build Posix Linux Android On MacOSX
Build Posix Mach OSX Build Posix Mach OSX
Build Posix Mach Catalyst Build Posix Mach Catalyst

Design Philosophy

We may treat the image synthesis engine as the 3D version X11 server.
The geometry(e.g. mesh, hair, terrain) / material / texture / light(e.g. directional light, punctual light, area light, light probe) are analogous to the pixmap on X11 server
and the hierarchy of the scenetree / scenegraph are analogous to the relationship of the "child-parent" window on X11 server.

The asset streaming process is totally asynchronous. This means that the calling thread will not halt at all. Thus we can definitely call these functions in the gameplay logic and no performance penalty will be introduced.

    pt_gfx_connection_init
    pt_gfx_connection_destroy

    // scene related
    pt_gfx_connection_create_node // Top-Level-Structure // to reuse mesh etc 
    gfx_connection_create_selector //LOD etc  
    gfx_connection_create_...
    
    pt_gfx_node_set_mesh
    pt_gfx_node_set_material
    gfx_node_set ...

    // asset related
    pt_gfx_connection_create_mesh
    gfx_connection_create_hair
    pt_gfx_connection_create_texture
    gfx_connection_create_light_probe
    gfx_connection_create_...

    // asset streaming
    pt_gfx_mesh_read_input_stream
    pt_gfx_material_init_with_texture
    pt_gfx_mesh_destroy
    pt_gfx_material_destroy

    // wsi related
    gfx_connection_wsi_on_resized

    // usage
    // [current thread] app on_redraw_needed //drawInMTKView 
    // [arbitrary thread] app update info which doesn't depend on accurate time ( scenetree etc ) //app may update in other threads 
    // [current thread] app call gfx acquire //gfx sync ( from other threads ) and flatten scenetree //and then gfx frame throttling
    // [current thread] app update time-related info ( animation etc ) //frame throttling make the time here less latency //scenetree update here (include update from other threads) is ignored in current frame and to impact on the next frame
    // [current thread] app call gfx release //gfx draw and present //gfx not sync scenetree here
    gfx_connection_wsi_on_redraw_needed_acquire

    // app related update

    gfx_connection_wsi_on_redraw_needed_release

Platform Support

  • Vulkan
    • MemoryAllocator
      • VMA
    • TextureLoader
      • DDS
      • PVR
      • KTX
    • ModelLoader
      • PMX
      • GLTF
      • ALEMBIC
      • USD
      • FBX
    • WSI
      • PosixLinuxX11
      • PosixLinuxAndroid
      • PosixMachOSX
      • PosixMachIOS
      • Win32Desktop
  • Metal
    • TextureLoader
      • DDS
      • PVR
      • KTX
    • ModelLoader
      • PMX
      • GLTF
      • ALEMBIC
      • USD
      • FBX
    • WSI
      • PosixMachOSX
      • PosixMachIOS
  • Direct3D12
    • MemoryAllocator
      • AMD VMA
    • TextureLoader
      • DDS
      • PVR
      • KTX
    • ModelLoader
      • PMX
      • GLTF
      • ALEMBIC
      • USD
      • FBX
    • WSI
      • Win32Desktop

Feature List

  • Scene
    • SceneGraph / SceneTree
    • Switch Algorithm //LOD ...
    • Culling Algorithm //Frustum Culling, Occlusion Culling ...
  • Geometry
    • Mesh
    • Decal
    • Hair
    • Cloth
    • Ocean
    • Terrain
    • Grass
    • Tree
  • Participating Media
    • Volumetric Lighting/Fog/Cloud ...
  • Color
    • UHD Display
  • Material
    • MDL Frontend
    • OSL Frontend
    • LLVM IR
    • GLSL Backend
    • MSL Backend
    • HLSL Backend
  • Light //The first item of the Liouville–Neumann series of the Rendering Equation
    • Illumination //Tiled Shading, Clustered Shading, OIT ...
    • Shadow Map //CSM, PCF, VSM ...
  • Light Probe //The second item of the Liouville–Neumann series of the Rendering Equation
    • Spherical Function //SH, LTC, Spherical Wavelets ...
    • IBL //Importance Sampling ...
    • SSR
    • SSAO/HBAO/HBAO+/SSDO
  • Global Illumination //The Whole Rendering Equation
    • Radiosity
    • Ray Tracing //VXGI, RTX ...
  • PostProcess
    • Color //UHD Display ...
    • AA //FXAA, TAA ...
    • Effect //DOF ...
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].