dagon ~dev_0.10

3D game engine for D


To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

Build Status DUB Package DUB Downloads License Patreon button

Dagon

The goal of this project is creating a modern, easy to use, extendable 3D game engine for D language. Dagon is based on OpenGL 4.0 core profile. It works on Windows and Linux, both 32 and 64-bit. It doesn't support macOS because Apple doesn't support OpenGL anymore.

Dagon is still under development and lacks a lot of important functionality. Currently it is not recommended to use Dagon in production due to unstable API. Follow Dagon development on Trello to see priority tasks.

If you like Dagon, please support its development on Patreon or Liberapay. You can also make one-time donation via PayPal. I appreciate any support. Thanks in advance!

Features

  • Static and animated meshes, OBJ and IQM formats support
  • Textures in PNG, JPG, TGA, BMP, HDR formats
  • Own asset format with Blender exporter
  • Flexible material system with simple user-defined data model (interface) and shaders (backend). You can implement custom materials, with your own shaders and parameters
  • Deferred pipeline for opaque materials, forward pipeline for transparent materials and materials with custom shaders
  • Physically based rendering (PBR)
  • HDR rendering with auto-exposure (eye adaptation), Reinhard, Hable/Uncharted and ACES tonemapping operators
  • Cube and equirectangular HDRI environment maps
  • Cubemap baking
  • Directional lights with cascaded shadow mapping
  • Spherical and tube area lights
  • Spot lights
  • Normal/parallax mapping, parallax occlusion mapping
  • Deferred decals with normal mapping and PBR material properties
  • Dynamic skydome with sun and day/night cycle. Simple and Rayleigh sky models
  • Particle system with force fields. Blended particles, soft particles, shaded particles with normal map support, particle shadows
  • Terrain rendering. Procedural terrain using OpenSimplex noise or any custom height field
  • Water rendering
  • Post-processing (FXAA, SSAO, lens distortion, motion blur, glow, LUT color grading)
  • UTF-8 text rendering using TTF fonts via Freetype
  • GUI based on Nuklear
  • 2D canvas framework that renders vector shapes - lines, Bézier curves, rectangles, circles, arcs, triangles, and polygons
  • Keyboard, mouse, joystick input, Unicode text input
  • Ownership memory model - every object belongs to some object (owner), and deleting the owner will delete all of its owned objects. This allows semi-automatic memory management - you have to manually delete only root owners
  • Entity-component model that allows game objects behave differently and combine many behaviours
  • Scene management. Any scene has its own assets, entities and logical context
  • Live asset reloading - asset can be automatically reloaded when the file is modified with external application
  • Built-in camera logics for quick and easy navigation (freeview and first person style view)
  • Box container support for assets
  • Built-in physics engine.

Planned in future:

  • Screen-space reflections

Screenshots

Screenshot1 Screenshot2 Screenshot3 Screenshot4

Video

https://www.youtube.com/watch?v=bvTX9kqtH08

Made with Dagon

Usage

To use latest stable Dagon, add the following dependency to your dub.json:

"dagon": "0.10.1"

If you want to test new features, use development branch: "dagon": "~dagon-ng".

Dependencies

Dagon depends on the following D packages:

Runtime dependencies (dynamic link libraries):

Under Windows runtime dependencies are automatically deployed if you are building with Dub. Under other OSes you have to install them manually. You can also compile Dagon without Freetype and Nuklear support, if you don't need text and UI rendering. To do that, add the following to your project's dub.json:

"subConfigurations": {
    "dagon": "Minimal"
}

Supported subConfigurations are also "NoNuklear" and "NoFreetype" to remove these dependencies separately.

Documentation

See Tutorials.

License

Copyright (c) 2016-2019 Timur Gafarov, Rafał Ziemniewski, Mateusz Muszyński, Björn Roberg, dayllenger. Distributed under the Boost Software License, Version 1.0 (see accompanying file COPYING or at http://www.boost.org/LICENSE10.txt).

Sponsors

Rafał Ziemniewski, Kumar Sookram, Aleksandr Kovalev.

Authors:
  • Timur Gafarov
  • Rafał Ziemniewski
  • Björn Roberg
  • dayllenger
  • Mateusz Muszyński
Dependencies:
bindbc-opengl, dlib, bindbc-sdl
Versions:
0.16.0 2024-Feb-24
0.15.0 2023-Aug-30
0.14.1 2022-Aug-30
0.14.0 2022-Aug-27
0.13.0 2022-Mar-02
Show all 40 versions
Download Stats:
  • 1 downloads today

  • 7 downloads this week

  • 35 downloads this month

  • 2103 downloads total

Score:
2.8
Short URL:
dagon.dub.pm