All Projects → kimkulling → osre

kimkulling / osre

Licence: MIT License
An open source render engine

Programming Languages

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

Projects that are alternatives of or similar to osre

Yave
Yet Another Vulkan Engine
Stars: ✭ 211 (+122.11%)
Mutual labels:  engine, vulkan, 3d-graphics
DummyEngine
Small cross platform Vulkan/OpenGL 3d engine for personal experimentation
Stars: ✭ 76 (-20%)
Mutual labels:  engine, vulkan
tortuga
A modern game engine built using dot net core
Stars: ✭ 14 (-85.26%)
Mutual labels:  engine, vulkan
pygfx
Like ThreeJS but for Python and based on wgpu
Stars: ✭ 72 (-24.21%)
Mutual labels:  vulkan, 3d-graphics
Explosion
💥 A modern cross-platform game engine (WIP)
Stars: ✭ 102 (+7.37%)
Mutual labels:  engine, vulkan
SlimTracin
Software ray tracer written from scratch in C that can run on CPU or GPU with emphasis on ease of use and trivial setup
Stars: ✭ 49 (-48.42%)
Mutual labels:  engine, 3d-graphics
SourceRenderer
A tiny 3D engine that loads and renders Source engine maps - Also known as dreieck.exe
Stars: ✭ 32 (-66.32%)
Mutual labels:  vulkan, 3d-graphics
goma-engine
A simple C++ 3D game engine with Vulkan support.
Stars: ✭ 34 (-64.21%)
Mutual labels:  engine, vulkan
vkOpenArena
Old games never die, they just fade away...
Stars: ✭ 58 (-38.95%)
Mutual labels:  engine, vulkan
rend3
Easy to use, customizable, efficient 3D renderer library built on wgpu.
Stars: ✭ 546 (+474.74%)
Mutual labels:  vulkan, 3d-graphics
PhasmaEngine
3D Graphics Engine
Stars: ✭ 39 (-58.95%)
Mutual labels:  vulkan, 3d-graphics
Wasabi
Wasabi Vulkan Game Engine
Stars: ✭ 34 (-64.21%)
Mutual labels:  engine, vulkan
Berserk
[WIP] High performance 3D graphics game engine
Stars: ✭ 31 (-67.37%)
Mutual labels:  vulkan, 3d-graphics
delphi3d-engine
A 3D-graphic and game engine for Delphi and Windows.
Stars: ✭ 52 (-45.26%)
Mutual labels:  engine, 3d-graphics
Flingengine
A Vulkan game engine with a focus on data oriented design
Stars: ✭ 239 (+151.58%)
Mutual labels:  engine, vulkan
wgpu-mc
Rust-based replacement for the default Minecraft renderer
Stars: ✭ 254 (+167.37%)
Mutual labels:  engine, vulkan
Aether3d
Aether3D Game Engine
Stars: ✭ 177 (+86.32%)
Mutual labels:  engine, vulkan
Vulkan Renderer
A new 3D game engine using modern C++ and Vulkan API
Stars: ✭ 205 (+115.79%)
Mutual labels:  engine, vulkan
nautilus
another graphics engine
Stars: ✭ 16 (-83.16%)
Mutual labels:  vulkan, 3d-graphics
rabbit-hole
An experimental voxel engine.
Stars: ✭ 39 (-58.95%)
Mutual labels:  engine, 3d-graphics

OSRE

OSRE - Just another Open Source Render Engine

This is just another open-source render-engine made by Kim Kulling. This is a playground project for myself to work on my own side-projects.

The Core-Features:

  • My first Multithreaded Renderer
  • Platform abstraction to support Windows, Linux and more platforms
  • Simple Asset-import provided by the Asset-Importer-Lib (see https://github.com/assimp/assimp)
  • Virtual file-system for reading zip-archives
  • CMake base build environment

Discussions: Join the chat at https://gitter.im/kimkulling/osre

Documentation

Build Status

Build status Coverity Scan Build Status Documentation Status

Supported compilers

  • Windows:
    • Visual Studio 2017
    • Visual Studio 2019
    • Visual Studio 2022
  • Linux:
    • GCC
    • Clang

Quick Start

#include <osre/App/App.h>
#include <osre/Common/Logger.h>
#include <osre/RenderBackend/RenderBackendService.h>
#include <osre/Scene/MeshBuilder.h>
#include <osre/Scene/Camera.h>
#include <osre/Platform/AbstractWindow.h>
#include <osre/RenderBackend/glm_common.h>

using namespace ::OSRE;
using namespace ::OSRE::App;
using namespace ::OSRE::RenderBackend;

class QuickStartdApp : public App::AppBase {
    /// The transform block, contains the model-, view- and projection-matrix
    TransformMatrixBlock m_transformMatrix;
    /// The entity to render
    Entity *mEntity;

public:
    /// The class constructor with the incoming arguments from the command line.
    QuickStartdApp(int argc, char *argv[]) :
            AppBase(argc, (const char **)argv),
            m_transformMatrix(),
            mEntity(nullptr) {
        // empty
    }

    /// The class destructor.
    ~QuickStartdApp() override {
        // empty
    }

protected:
    bool onCreate() override {
        if (!AppBase::onCreate()) {
            return false;
        }

        AppBase::setWindowsTitle("Quickstart! Rotate with wasd, scroll with qe");
        World *world = getActiveWorld();
        mEntity = new Entity("entity", *AppBase::getIdContainer(), world);
        Scene::Camera *camera = world->addCamera("camera_1");
        ui32 w, h;
        AppBase::getResolution(w, h);        
        camera->setProjectionParameters(60.f, (f32)w, (f32)h, 0.001f, 1000.f);

        Scene::MeshBuilder meshBuilder;
        RenderBackend::Mesh *mesh = meshBuilder.allocTriangles(VertexType::ColorVertex, BufferAccessType::ReadOnly).getMesh();
        if (nullptr != mesh) {
            mEntity->addStaticMesh(mesh);
            world->addEntity(mEntity);            
            camera->observeBoundingBox(mEntity->getAABB());
        }

        return true;
    }

    void onUpdate() override {
        glm::mat4 rot(1.0);
        if (AppBase::isKeyPressed(Platform::KEY_A)) {
            m_transformMatrix.m_model *= glm::rotate(rot, 0.01f, glm::vec3(1, 0, 0));
        }
        if (AppBase::isKeyPressed(Platform::KEY_D)) {
            m_transformMatrix.m_model *= glm::rotate(rot, -0.01f, glm::vec3(1, 0, 0));
        }

        if (AppBase::isKeyPressed(Platform::KEY_W)) {
            m_transformMatrix.m_model *= glm::rotate(rot, 0.01f, glm::vec3(0, 1, 0));
        }

        if (AppBase::isKeyPressed(Platform::KEY_S)) {
            m_transformMatrix.m_model *= glm::rotate(rot, -0.01f, glm::vec3(0, 1, 0));
        }

        if (AppBase::isKeyPressed(Platform::KEY_Q)) {
            m_transformMatrix.m_model *= glm::scale(rot, glm::vec3(1.01f, 1.01, 1.01f));
        }

        if (AppBase::isKeyPressed(Platform::KEY_E)) {
            m_transformMatrix.m_model *= glm::scale(rot, glm::vec3(0.99f, 0.99f, 0.99f));
        }

        // Set the model-matrix in the renderpass
        RenderBackendService *rbSrv = getRenderBackendService();

        rbSrv->beginPass(PipelinePass::getPassNameById(RenderPassId));
        rbSrv->beginRenderBatch("b1");

        rbSrv->setMatrix(MatrixType::Model, m_transformMatrix.m_model);

        rbSrv->endRenderBatch();
        rbSrv->endPass();

        AppBase::onUpdate();
    }
};

OSRE_MAIN(QuickStartdApp)

OSRE-Ed

ESRE-Ed

The engine provdes an 3D-Editor called OSRE-Ed. It is still experimental:

Get involved

If you want to contribute just use the github project page or reach us via Gitter: Join the chat at https://gitter.im/kimkulling/osre

What is cooking?

The project roadmap https://github.com/kimkulling/osre/projects/1

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