Vesper is a lightweight 2D/3D engine and editor inspired by TheCherno's Game Engine Architecture series for the Hazel engine.
It provides a renderer, scene & entity system, editor UI, input handling, and utilities to build simple games and interactive applications in C++ (C++17).
It is generally usable as an easily modifiable base line for creating graphics and software applications.
The specific purpose is for the creation of Particle System demos, experiments, and visualizations.
It is not intended to be a full-featured game engine,
But rather an application to create a range of visual effects and particle system simulations.
Quick overview
- Language: C++17
- Platforms: Windows
- Third-party libraries:
- entt (entity-component system)
- Glad (OpenGL function loading)
- GLFW (windowing and input)
- glm (math library)
- ImGui (editor UI)
- spdlog (logging)
- stb (image loading)
- Core features:
- Scene / Entity / Component system
- 2D renderer with orthographic and perspective cameras
- ImGui-based editor layer
- Input and event handling
- Starter particle system and instrumentation
New Project example code
#include <Vesper/Core/EntryPoint.h>
#include "imgui/imgui.h"
{
public:
ExampleLayer()
: Layer("ExampleLayer")
{
}
~ExampleLayer() override = default;
void OnUpdate(Vesper::Timestep ts)
override {}
ImGui::Begin("Example Layer");
ImGui::Text("Hello from ExampleLayer!");
ImGui::End();
}
void OnEvent(Vesper::Event& e)
override {}
};
{
public:
YourAppNameHere() {
}
~YourAppNameHere() { }
};
return new YourAppNameHere();
}
Main header file for the Vesper engine. For use by clients in Vesper applications.
The core application class that manages the main loop, window, layers, and event handling.
Definition Application.h:35
void PushLayer(Layer *layer)
Adds a layer to the application layer stack.
Definition Application.cpp:41
Represents a reusable application layer that receives lifecycle callbacks (attach,...
Definition Layer.h:17
virtual void OnEvent(Event &event)
Called when an event is dispatched to the layer.
Definition Layer.h:41
virtual void OnDetach()
Called when the layer is detached from the application.
Definition Layer.h:31
virtual void OnUpdate(Timestep ts)
Called every frame to update the layer with the given timestep.
Definition Layer.h:36
virtual void OnImGuiRender()
Called when the layer should render its ImGui components.
Definition Layer.h:50
virtual void OnAttach()
Called when the layer is attached to the application.
Definition Layer.h:28
Application * CreateApplication()
Definition VesperEditorApp.cpp:23