All Projects → harfang3d → harfang3d

harfang3d / harfang3d

Licence: other
HARFANG 3D source code public repository

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
CMake
9771 projects
Smarty
1635 projects
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to harfang3d

Nabla
OpenGL/OpenGL ES/Vulkan/CUDA/OptiX Modular Rendering Framework for PC/Linux/Android
Stars: ✭ 235 (+35.84%)
Mutual labels:  vulkan, opengles, pbr
render-doctor
渲染医生,基于 RenderDoc 的渲染分析工具,以 html 形式展现方便阅读和分享。
Stars: ✭ 46 (-73.41%)
Mutual labels:  vulkan, directx, opengles
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+1138.15%)
Mutual labels:  vulkan, directx, pbr
bgfx-python
Python 3.7+ wrapper for the BGFX library. 🐍
Stars: ✭ 99 (-42.77%)
Mutual labels:  vulkan, bgfx, directx
bgfx-header-extension-library
Header-only effects and helper library for Bgfx to help you hit the ground running. Includes a bunch of post processing filters to complete common graphical tasks
Stars: ✭ 35 (-79.77%)
Mutual labels:  vulkan, bgfx, directx
MoravaEngine
2D/3D graphics engine written in C++ language. It currently supports the following graphics APIs: OpenGL 3.3+, Vulkan 1.2, DirectX 11. Its current purpose is to experiment with various CG concepts and techniques.
Stars: ✭ 129 (-25.43%)
Mutual labels:  vulkan, directx, pbr
RavEngine
A fast, easy to use C++20 3D game library for modern computers
Stars: ✭ 122 (-29.48%)
Mutual labels:  vulkan, bgfx, directx
Webxr Physics
Adds physics to WebXR
Stars: ✭ 18 (-89.6%)
Mutual labels:  physics, vr
Nebula Trifid
Nebula Trifid
Stars: ✭ 62 (-64.16%)
Mutual labels:  physics, vulkan
Rust Game Development Frameworks
List of curated frameworks by the **Game Development in Rust** community.
Stars: ✭ 81 (-53.18%)
Mutual labels:  physics, vulkan
game overlay sdk
Library to write messages on top of game window
Stars: ✭ 57 (-67.05%)
Mutual labels:  vulkan, directx
React Babylonjs
React for Babylon 3D engine
Stars: ✭ 299 (+72.83%)
Mutual labels:  physics, vr
Rootex
An advanced C++ 3D game engine powering an in-production game yet to be announced
Stars: ✭ 161 (-6.94%)
Mutual labels:  physics, directx
C3de
C3DE is a 3D Game Engine powered by MonoGame
Stars: ✭ 78 (-54.91%)
Mutual labels:  physics, vr
LocalSimulation
This plugin allows you to essentially create PxScene or Physic Scenes by placing an Actor, and adding other Static Mesh Components and soon Skeletal Mesh components within this space. Adding Constraints, and Forces will work as expected, but now with the additional layer of abstraction so that simulation can be anchored to a transform.
Stars: ✭ 42 (-75.72%)
Mutual labels:  physics, vr
Vivegrip
Physics-based grabbing for SteamVR development in Unity.
Stars: ✭ 159 (-8.09%)
Mutual labels:  physics, vr
Code Vr
🐍 Program and explore real applications with virtual reality! Learn how to program, compete to build apps, and even collaborate with other people in realtime, in game or not!
Stars: ✭ 131 (-24.28%)
Mutual labels:  vr, vulkan
Helixjs
A Javascript 3D game engine.
Stars: ✭ 84 (-51.45%)
Mutual labels:  physics, pbr
spirv cross
Safe Rust wrapper around SPIRV-Cross
Stars: ✭ 75 (-56.65%)
Mutual labels:  vulkan, directx
virtualGizmo3D
Virtual GIZMO - 3D object manipulator / orientator, via mouse, with pan and dolly/zoom features
Stars: ✭ 36 (-79.19%)
Mutual labels:  vulkan, directx

HARFANG® 3D engine

PyPI Downloads Downloads

HARFANG®3D is an all-in-one 3D visualization library usable in C++, Python, Lua and Go.

Table of contents

  1. About
  2. Download
  3. Building the SDK
  4. Using the C++ SDK
  5. Version
  6. License

About

HARFANG®3D is an easy-to-adapt, cross-platform, multi-language, powerful and optimized solution to integrate with embedded systems, into existing environments and combining features to meet the industrial standards of real-time 3D imaging.

The HARFANG®3D architecture makes it easy to meet the requirements for hardware integration, display performance and security.

HARFANG®3D is written in C++ and is based on the open-source bgfx library supporting Vulkan, Metal, DirectX (from 9 to 12), OpenGL and OpenGL ES. It Builds on Windows, Linux, Intel and ARM.

Features

Platforms supported

  • Win32 and Win64 Intel
  • Linux 64 Intel
  • Aarch 64 ARM

Scene API

  • Node & component based
  • Performance oriented

Rendering pipeline

  • Low-spec PBR rendering pipeline
  • High-spec 'AAA' rendering pipeline (screen space GI & reflection)
  • Support of user pipeline shaders

VR API

  • VR support via OpenVR/SteamVR with Eye tracking
  • Compatible with the HTC Vive/Vive Pro, Valve Index, Lenovo Explorer, Oculus Rift S

Physics API

  • Rigid bodies, collisions, mechanical constraints, ray casting

Audio API

  • Play/stream WAV/OGG formats
  • 3D audio spatialization

Languages supported

  • C++
  • Python (3.2+)
  • Lua (5.3)
  • Go (1+, experimental)

Screenshots

The following screenshots were captured on a 1080GTX in 1080P running at 60FPS.

alt text

alt text

(Sun Temple, courtesy of the Open Research Content Archive (ORCA))

Download

You can download the HARFANG binaries from the official website: https://dev.harfang3d.com/releases

Build the SDK

Prerequisites

  • Git
  • CMake 3.19+
  • CPython 3.2+
  • Go 1+ (for Harfang Go module)
  • Doxygen (for Harfang C++ SDK documentation)
  • Autodesk FBX SDK (for FBX Converter)

Windows

  • Visual Studio 2019 (C++ compiler and IDE)
  • MinGW (for Harfang Go module)

Linux

  • GCC 9 or above
  • CLang

Building

  1. Clone the Harfang 3D repository including its submodules.

    git clone --recursive -j8 https://github.com/harfang3d/harfang3d.git
    cd harfang3d
    
  2. Create build directory. Note that the described directory layout is not mandatory.

    mkdir build
    cd build
    
  3. Clone Fabgen.

    git clone https://github.com/ejulien/FABGen.git
    
  4. Download and install Autodesk FBX SDK.

  5. Create a directory that will hold the build system generated by CMake.

    mkdir cmake
    cd cmake
    
  6. Generate the build system using CMake. For example, on Windows it will be:

    cmake ../.. -G "Visual Studio 16 2019" -A x64 \
        -DCMAKE_INSTALL_PREFIX:PATH="D:/harfang/build/install" \
        -DPYTHON_EXECUTABLE:FILEPATH="C:/Python36/python.exe" \
        -DHG_FABGEN_PATH:PATH="D:/harfang/build/fabgen" \
        -DHG_FBX_SDK:PATH="D:/fbx_sdk" 
    
    • CMAKE_INSTALL_PREFIX specifies the directory where the Harfang SDK will installed.
    • PYTHON_EXECUTABLE is the path the Python 3 interpreter.
    • FABGEN_PATH is the path to Fabgen binding generator.
    • HG_FBX_SDK is the path to Autodesk FBX SDK.

     
    Here is the list of available CMake options.

    • C++ SDK
      • HG_BUILD_CPP_SDK : Build C++ SDK (default: OFF).
      • HG_BUILD_TESTS : Build C++ SDK unit tests (default: OFF).
      • HG_BUILD_DOCS : Build API and C++ SDK documentations (default: OFF).
      • HG_ENABLE_BULLET3_SCENE_PHYSICS : Enable Bullet physics API (default: ON).
      • HG_ENABLE_RECAST_DETOUR_API : Enable Recast/Detour navigation mesh and path finding API (default: ON).
      • HG_ENABLE_OPENVR_API : Enable OpenVR API (default: OFF).
      • HG_ENABLE_SRANIPAL_API : Enable VIVE Eye and Facial Tracking SDK (SRanipal) API (default: OFF).
    • Tools
      • HG_BUILD_ASSETC : Build AssetC asset compiler (default: ON).
      • HG_BUILD_ASSIMP_CONVERTER : Build Assimp based 3D model converter (default: ON).
      • HG_BUILD_FBX_CONVERTER : Build FBX converter (default: ON).
      • HG_BUILD_GLTF_IMPORTER : Build GLTF importer (default: ON).
      • HG_BUILD_GLTF_EXPORTER : Build GLTF exporter (default: ON).
    • Bindings
      • HG_BUILD_HG_LUA : Build Harfang LUA module (default: OFF).
      • HG_BUILD_HG_PYTHON : Build Harfang Python module (wheel) (default: OFF).
      • HG_BUILD_HG_GO : Build Harfang GO module (default: OFF).

     

  7. Build the SDK.

    cmake --build . --config Release --target INSTALL
    

    Note: On Linux you will need to explicitly specify the build type with -DCMAKE_BUILD_TYPE=Release

    Depending on the set of option passed to CMake the install directory will contain the following subdirectories:

    • cppsdk : Harfang C++ SDK.
    • hg_python : Harfang Python module.
    • hg_lua : Harfang LUA module.
    • hg_go : Harfang Go module.
    • assetc : Asset compiler.
    • assimp_converter : Assimp 3D model converter.
    • fbx_converter : FBX converter.
    • gltf_importer : GLTF importer.
    • gltf_exporter : GLTF exporter.

Notes on Visual Studio Code

  1. Install the CMakeTools extension.

  2. Copy the harfang/.vscode/template_settings.json file to harfang/.vscode/settings.json and edit it to reflect your local installation.

  3. Open the harfang folder in Visual Studio Code. CMakeTools should succesfully configure the project.

Use the SDK

The Harfang C++ SDK directory cppsdk contains the following:

  • bin : depending on the configuration used, this directory contains either a Release or Debug subdirectory with all the shared libraries.
  • lib : like the bin directory, it contains a subdirectories named after the configuration used during build (Release or Debug) with all the generated static libraries.
  • include : contains all the C++ include files of Harfang public API.
  • cmake : contains the CMake configuration files.

To add the Harfang C++ SDK to your CMake project, just add the following to the CMakeLists.txt file:

find_package(harfang REQUIRED
    COMPONENTS cppsdk
    PATHS ${HG_CPPSDK_PATH}
    NO_DEFAULT_PATH
)

with HG_CPPSDK_PATH the path to the cppsdk directory. For example, if we follow the directory layout given above, it will be D:/harfang/build/install/cppsdk.

Targets should link against the following libraries.

  • hg::engine
  • hg::foundation
  • hg::platform
  • hg::libluadll

The install_cppsdk_dependencies function installs the Harfang C++ SDK shared libraries dependencies.

install_cppsdk_dependencies(destination component)
  • destination : is the library where the shared libraries will be installed.
  • component : installation component name.

Version

Harfang follows the Semantic Versioning Specification (SemVer) (http://semver.org).

Given a version number MAJOR.MINOR.PATCH, increment the:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards-compatible manner, and
  • PATCH version when you make backwards-compatible bug fixes.

License

Harfang is licensed under the GPLv3, LGPLv3 and a commercial license:
https://www.harfang3d.com/license

More screenshots...

alt text

alt text

(Sun Temple, courtesy of the Open Research Content Archive (ORCA))

alt text

alt text

(Bistro, courtesy of the Open Research Content Archive (ORCA))

alt text

alt text

(Sponza Atrium GLTF, courtesy of Crytek/Themaister)

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