Code Monkey home page Code Monkey logo

dtrajko / moravaengine Goto Github PK

View Code? Open in Web Editor NEW
295.0 16.0 18.0 706.42 MB

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.

License: Apache License 2.0

GLSL 7.40% C++ 81.72% C 7.99% CMake 0.73% C# 1.26% Haskell 0.67% HLSL 0.22%
voxel voxel-engine marching-cubes opengl instancing rendering 3d-graphics particles phong-lighting shaders glsl raycasting imgui pbr framebuffers cpp c-plus-plus vulkan directx

moravaengine's Introduction

MoravaEngine

About

2D/3D graphics engine written in C++ language.

It currently supports the following graphics APIs:

  • OpenGL 4.5+
  • Vulkan 1.2
  • DirectX 11

Its current purpose is to experiment with various CG concepts and techniques:

  • Phong lighting model
  • Shadows (directional light, omni-directional shadows)
  • Physically based rendering (PBR)
  • Image based lighting (IBL)
  • Screen-space ambient occlusion (SSAO)
  • Particle systems
  • Instanced rendering
  • Surface reflection and refraction
  • Framebuffers
  • Post-processing
  • Level of detail
  • Scene editor
  • Perlin noise generator
  • Procedural landmass generation
  • Voxel based volumes
  • Marching cubes algorithm
  • Physics simulations
  • Skeletal animation

Credits

Installation

Build automation based on CMake (in progress)

Project setup:

$ git clone --recursive https://github.com/dtrajko/MoravaEngine.git
$ cd MoravaEngine
  • Build the MoravaEngine with CMake
$ mkdir ./MoravaEngine/build
$ cd ./MoravaEngine/build
$ cmake ..
  • Open the solution ./MoravaEngine/build/MoravaEngine.sln

  • Change Runtime Library from Multi-threaded DLL to Multi-threaded for the project glfw3
    Go to Properties > Configuration Properties > C/C++ > Code Generation > Runtime Library
    Change Runtime Library to either
    "Multi-threaded Debug (/MTd)" (Debug) or
    "Multi-threaded (/MT)" (Release)
    (All projects in MoravaEngine solution should have the Runtime Library option set to either /MTd (Debug) or /MT (Release))

  • Build projects DirectXTex and glfw3

  • Build the project MoravaEngine

Keyboard and Mouse shortcuts

  • Add Mesh or Model: Left CTRL + Left Mouse Button
  • Camera Rotation: Right Mouse Button
  • Camera Movement: W) forward, A) left, S) back, D) right, Q) down, E) up
  • Fast Movement: Left SHIFT + W|A|S|D|Q|E
  • Enable Gizmo: TAB + Left Mouse Button
  • Toggle Gizmo Modes: 1) Translate, 2) Scale, 3) Rotate, 4) Disable
  • Scene Save: Left CTRL + S
  • Scene Reset: Left CTRL + R
  • Scene Load: Left CTRL + L
  • Toggle Wireframe Mode: R
  • Copy scene object: Left CTRL + C

Images

image

image

image

image

image

image

image

image

image

moravaengine's People

Contributors

dtrajko 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

moravaengine's Issues

Linux Cmake Error (CSharp only for MSVS)

Environment variable 'MORAVA_BUILD_TYPE' = 'Debug'
CMake Error at /usr/share/cmake-3.19/Modules/CMakeDetermineCSharpCompiler.cmake:5 (message):
  C# is currently only supported for Microsoft Visual Studio 2010 and later.
Call Stack (most recent call first):
  CMakeLists.txt:1010 (project)


CMake Error: CMAKE_CSharp_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

Linux Compile Error

[ 95%] Building CXX object CMakeFiles/MoravaEngine.dir/main.cpp.o
In file included from /data/projects/morava/trunk/MoravaEngine/MoravaEngine/main.cpp:43:
/data/projects/morava/trunk/MoravaEngine/MoravaEngine/./src/Hazel/Events/Event.h:37:83: error: pasting "::" and "MouseMoved" does not give a valid preprocessing token
   37 | #define EVENT_CLASS_TYPE(type) static EventType GetStaticType() { return EventType::##type; }\
      |                                                                                   ^~
/data/projects/morava/trunk/MoravaEngine/MoravaEngine/./src/Hazel/Events/MouseEvent.h:22:2: note: in expansion of macro 'EVENT_CLASS_TYPE'
   22 |  EVENT_CLASS_TYPE(MouseMoved);
      |  ^~~~~~~~~~~~~~~~

Mac platform errors

/MoravaEngine/vendor/cross-platform/assimp/contrib/zlib/adler32.c:180:15: error:
conflicting types for 'adler32_combine64'
uLong ZEXPORT adler32_combine64(adler1, adler2, len2)
^
/Users/Engine/MoravaEngine/MoravaEngine/../vendor/cross-platform/assimp/contrib/zlib/zutil.h:183:27: note:
previous declaration is here
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
^
1 error generated.
make[2]: *** [CMakeFiles/zlibstatic.dir/Users//Engine/MoravaEngine/vendor/cross-platform/assimp/contrib/zlib/adler32.c.o] Error 1
make[1]: *** [CMakeFiles/zlibstatic.dir/all] Error 2
make: *** [all] Error 2

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.