Giter Site home page Giter Site logo

lugdunum3d / lugdunum Goto Github PK

View Code? Open in Web Editor NEW
240.0 21.0 25.0 37.19 MB

[UNMAINTAINED] A modern cross-platform 3D engine built with Vulkan, glTF 2.0 and modern C++14.

License: MIT License

CMake 3.73% C++ 77.83% Shell 0.28% GLSL 1.97% C 16.02% PowerShell 0.17%
vulkan-api cpp14 rendering vulkan pbr

lugdunum's Introduction

📜 Unmaintained 📜

19/03/18 : We worked very hard on Lugdunum during two years, it was our end-of-study project and we are very proud of it. It runs flawlessly of Android, Windows and Linux. It has detailled technical and user documentation too. As of today, we finished our studies and aren't maintaining it actively. Feel free to keep going this project :) We'll still up answer any of your questions to help you to do so 👍

If you are interested to take over this repository, please open an issue!



Lugdunum3D

A modern cross-platform 3D rendering engine built with Vulkan and modern C++14. Documentation and more are available on the homepage.

Building

Our build system is CMake and this repository contains the appropriate build files to build on Linux, Windows and Android using a C++14 compiler (see tested toolchains). Third party dependencies are built using Lugdunum-ThirdParty and the thirdpary.yml file located at the root of this repository. Follow the instructions on our documentation to build Lugdunum.

Linux

CircleCI

Windows

AppVeyor

Examples

All the examples can be built using the CMakeLists.txt in the ./samples directory.

The simplest of all. Renders a colored triangle.



This basic example draws a procedurally generated rotating cube.



This example draws a procedurally generated rotating sphere using PBR, which is lit by 4 directional lights.


This basic examples draws an array of procedurally generated spheres using PBR, the whole array shows a gradient of the PBR parameters. The spheres are also lit by 4 directional lights, and a free moving camera allows to explore the different materials and reflections.

Displays the classic Battle Damaged Sci-fi Helmet - PBR by theblueturtle_ with a skybox and a free moving camera.



Tests

Tests can be enabled using the BUILD_TESTS CMake flag.

Tested toolchains

Compiler Operating System Architecture Version String
Clang 3.8 Android NDK r14b with Unified Header arm64-v8a Android clang version 3.8.275480 (based on LLVM 3.8.275480)
Visual Studio 2017 Windows 10 Build 16170 x64 MSVC 19.10.25017.0
GCC 6.2.0 Linux Ubuntu 16.04.1 with kernel 4.8 x64 gcc version 6.2.0 20160901
GCC 6.2.0 Linux Tegra-Ubuntu 4.4.15 aarch64 gcc version 6.2.0 20160901

lugdunum's People

Contributors

alexandrequivy avatar gsabatie avatar nokitoo avatar quentin01 avatar saveman71 avatar stuartsulaski avatar sumenia avatar yoannpicquenot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lugdunum's Issues

a few questions on building the samples

I am using VS2017, and I had no problems building the libraries.

When running cmake and configuring for the samples I need to specify a LUG_MISC_DIR, not sure where this is supposed to point to. In addition I get the following error:

CMake Error at C:/Program Files/CMake/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find LUG (missing: LUG_LIBRARIES)
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:377 (_FPHSA_FAILURE_MESSAGE)
F:/Lugdunum/cmake/modules/FindLUG.cmake:180 (find_package_handle_standard_args)
Macros.cmake:137 (find_package)
base/CMakeLists.txt:27 (lug_add_sample)

What do I need to do to get the samples to build?

Thanks!

Shaders (on models)?

How would you go about applying shaders onto models, the only shaders i see are the light shaders and they are defined for loading in Forward.cpp.

Should I use Pipeline::createGraphicsPipeline too?

Is it also possible at this time to render 2D in the engine via shaders, if no. Will custom shaders be exposed to developers. Or will i have to make a fork?

Finally, is it possible to apply screenspace shaders? like color filters, etc.

Custom asset format loading?

Will there be capabilities to specify your own content loading functions. For example if you want to compress all your shaders into a single file with a header pointing to the positions of each shader, and such?

Warnings on imgui on compilation

Currently on dev we have the following warnings displayed:

/home/arch/tmp/Lugdunum/thirdparty/imgui/src/imgui_draw.cpp: In function ‘bool ImFontAtlasBuildWithStbTruetype(ImFontAtlas*)’:
/home/arch/tmp/Lugdunum/thirdparty/imgui/src/imgui_draw.cpp:90:38: warning: ‘spc.stbtt_pack_context::nodes’ may be used uninitialized in this function [-Wmaybe-uninitialized]
 #define STBTT_free(x,u)    ((void)(u), ImGui::MemFree(x))
                                      ^
/home/arch/tmp/Lugdunum/thirdparty/imgui/src/imgui_draw.cpp:1391:24: note: ‘spc.stbtt_pack_context::nodes’ was declared here
     stbtt_pack_context spc;
                        ^~~
In file included from /home/arch/tmp/Lugdunum/thirdparty/imgui/src/imgui_draw.cpp:98:0:
/home/arch/tmp/Lugdunum/thirdparty/imgui/include/stb_truetype.h:3629:25: warning: ‘spc.stbtt_pack_context::padding’ may be used uninitialized in this function [-Wmaybe-uninitialized]
             stbrp_coord pad = (stbrp_coord) spc->padding;
                         ^~~
/home/arch/tmp/Lugdunum/thirdparty/imgui/src/imgui_draw.cpp:1391:24: note: ‘spc.stbtt_pack_context::padding’ was declared here
     stbtt_pack_context spc;
                        ^~~
/home/arch/tmp/Lugdunum/thirdparty/imgui/src/imgui_draw.cpp:1391:24: warning: ‘spc.stbtt_pack_context::stride_in_bytes’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/arch/tmp/Lugdunum/thirdparty/imgui/src/imgui_draw.cpp:1461:25: warning: ‘spc.stbtt_pack_context::pack_info’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         stbrp_pack_rects((stbrp_context*)spc.pack_info, tmp.Rects, n);
         ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Would be nice to get rid of them somehow, and to invetigate if we can do something about it upstream.

Log "spam" when rendering fails.

Could Lugdunum hold a bit back with spamming the error messages, or have different error message modes which could be enabled or disabled. For example, when i tried creating a light, a bunch of error messages was repeatedly spammed into the logs, making it hard for me to read the logs over the spammed entries.

Possible solutions(?):

  • After a log entry has been repeated from the same source up to 5 times, the log will instead of spam just count up and for every 50 entry put the error message, prefixed with [x50]
  • Different debug modes that can be enabled and disabled for each log source?

(also sorry all of the issues im creating, if you want me to stop just say xD)

**Cards**

Cards can be added to your board to track the progress of issues and pull requests. You can also add note cards, like this one!

Error during build - can't find FMT

What am I doing wrong?

PS D:\Lab\Lugdunum\build> cmake -G"Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX="D:\Lab\Lugdunum-build" -DLUG_ACCEPT_DL=ON ../
-- Thirdparty hash: 995755d
-- Expected MD5 will be ''
-- Downloading https://thirdparty-dl.lugbench.eu/995755d/windows.zip
CMake Error at cmake/Macros.cmake:245 (file):
  file DOWNLOAD HASH mismatch

    for file: [D:/Lab/Lugdunum/build/thirdparty-995755d.zip]
      expected hash: []
        actual hash: [d41d8cd98f00b204e9800998ecf8427e]
             status: [7;"Couldn't connect to server"]

Call Stack (most recent call first):
  CMakeLists.txt:52 (lug_download_thirdparty)


-- Extracting...
-- Done!
-- Found Vulkan: C:/VulkanSDK/1.0.68.0/Lib/vulkan-1.lib
-- Could NOT find Fmt (missing: FMT_INCLUDE_DIR)
CMake Error at CMakeLists.txt:72 (message):
  Can't find fmt in the thirdparty directory


-- Configuring incomplete, errors occurred!
See also "D:/Lab/Lugdunum/build/CMakeFiles/CMakeOutput.log".
PS D:\Lab\Lugdunum\build>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.