GithubHelp home page GithubHelp logo

dcarlus / harmful Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 135.99 MB

Libraries for programming video games and interactive 2D/3D applications.

Home Page: https://dcarlus.github.io/hARMful/

License: GNU General Public License v3.0

Shell 0.23% C++ 97.22% CMake 1.16% GLSL 1.38%
libraries 3d linux windows-desktop video-game

harmful's Introduction

hARMful banner Codacy Badge

hARMful is a project aimed at making a whole experience for programming video games and interactive 2D/3D applications.

Learn more and read the documentation on https://dcarlus.github.io/hARMful/.

⚠️ On June, 28th 2020 the development is paused for few weeks.

Repository

The repository is structured in different parts:

  • Libraries: the source code of the libraries that compose the project;
  • Softwares: some demos to show how to use the libraries and their capabilities;
  • Tools: some internal tools developed to help creating the libraries. They are not required to use the library nor to be integrated into the applications;
  • UnitTests: unit tests to check that the different classes and modules are working as expected, without regressions. The unit tests use a home-made build system. They are run at each commit through the continuous integration;

hARMful render

Dependencies

HOPEful (OpenGL rendering)

  • GLFW 3.2.1 (for window and inputs)
  • GLEW 2.1.0 (for modern OpenGL functions)
  • Assimp 5.1.0 (for importing 3D file models)
  • Hardware supporting OpenGL 4.5 or higher is required

MINDful (mathematics tools)

  • A "modern" Intel/AMD CPU with, at least, SSE2 support is required
  • SSE4 support is recommanded for improved performances
  • ARM CPUs with NEON are not yet supported

Compilation

GNU/Linux

The compilation process for GNU/Linux users is shown in this video : https://www.youtube.com/watch?v=zECjVr_6qko

Requirements

  • CMake 2.8.12 or above;
  • A C++17 compliant compiler is required, g++9 and above is advised.

Optional tools

  • Conan (you can install conan with your package manager or using pip).

Build steps

Install the requirements on your system.

❗ You can either choose to install the dependencies from your distribution package manager, or let Conan select the right libraries from its own repository. Just build the project and CMake will select the right ones according to what is installed on your system.

To compile on a GNU/Linux system, enter the Library folder and type ./build.sh in a command prompt. It will generate the .so files.

Microsoft® Windows™

The compilation process for Windows users is shown in this video: https://www.youtube.com/watch?v=W5kpHneNB9I

Requirements

  • CMake 2.8.12 or above (add CMake to the PATH environment variable);
  • Visual Studio 2019 and above. Notice that Visual Studio Community is free to use. Previous versions of Visual Studio cannot build the project!
  • Conan
    • If you have troubles using Conan, you can install it with pip (Python 3). Think to add Python to the PATH environment variable then install Conan by typing the pip install conan command.

Build steps

  • Install all the requirements.
  • Open the CMake GUI:
    • Select the hARMful Tools\GLSL2Cpp\build directory for both "source code" and "build" folders.
    • Press the "Configure" button, no matter the compiler you use. Select either the Win32 or x64 configuration.
    • Press the "Generate" button then open the GLSL2Cpp.sln file with Visual Studio. Build the tool, no matter it is in debug or release mode.
    • Quit Visual Studio once it's done then launch the Tools\GLSL2Cpp\bin\**\glsl2cpp.exe file where you provide the path to the hARMful root directory. It will ask for administrator rights to create the shortcut to the HOPEful library directory, so accept the request. The glsl2cpp tool copies the content of the embedded GLSL shaders into C++ files (hpp/cpp), in order to embed the shaders inside the DLL itself. That's all!
  • Come back to the hARMful home directory.
  • Open the CMake GUI:
    • Select the hARMful Library directory for both "source code" and "build" folders.
    • Press the "Configure" button, check that Visual Studio 2019 is selected and use the x64 platform in combobox. Press "Finish" when it's done. Wait until the configuration is complete (it can take a while if the dependencies have to be downloaded by Conan).
    • Press the "Generate" button then close CMake.
  • Open the generated hARMful.sln file with Visual Studio 2019. Compile the projects in either Release or Debug mode.
  • The DLLs are built in their library directories.
  • Notice that you have to copy the dependencies for SPITE and HOPE from the .conan directory (look into your user directory) to run your hARMful-based applications.

Mac™ OS

Not officially supported.

hARMful render
Rendered with hARMful v1.x using Blinn-Phong materials

harmful's People

Contributors

dcarlus avatar

Watchers

 avatar

harmful's Issues

SSAO: "lit edges"

The is a "lit trim" between objects and their shadow, even without MSAA.

Skybox draws a shadow

Skybox shadow is visible at the center of the world. Make it invisible on shadow depth map rendering!

Operations order on CameraComponent gives different results

Create a CameraComponent and its Entity.
Setting the lookAt() of the CameraComponent before/after adding it to the Entity gives different results...

So...

m_cameraEntity -> addComponent(m_cameraComponent) ;
m_cameraComponent -> lookAt(Mind::Vector3f(0.f, 0.f, 0.f)) ;

is different from

m_cameraComponent -> lookAt(Mind::Vector3f(0.f, 0.f, 0.f)) ;
m_cameraEntity -> addComponent(m_cameraComponent) ;

The camera does not move the same way and do not look a fixed point in the second case (everything is right with the first code).

Correctly apply render effects

Find a way to properly apply render effects.
For example, for now shadows are applied when rendering the ambient occlusion pass... This is not wanted, of course!

Remove FBO correctly

Correctly remove a FBO at the end of a framegraph branch.
That is, if a FBO node is used as parent of several children, it must be kept active for every child = do not unbind it at the end of the first child branch!!

Camera override in a multiple viewports configuration

The cameras of the different viewports are all overriden by the one in the last viewport in which the scene is rendered.
For example: set a perspective in a viewport, an orthographic one in another viewport. Both will be orthographic!

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.