Coder Social home page Coder Social logo

dagon's Introduction

dagon logo

The goal of this project is to create a modern, easy to use, extensible 3D game engine for D language. Dagon is based on OpenGL 4.0 core profile. It currently works on Windows and Linux.

The engine is still under development and lacks many important features. It is currently not recommended to use Dagon in production due to API instability. Follow the development on Trello to see the priority tasks.

Dagon uses modern graphics techniques and so requires a fairly powerful graphics card to run. Turing-based NVIDIA cards are recommended (although ray tracing support is not required). The engine is only desktop, support for mobile and web platforms is not planned.

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

GitHub Actions CI Status DUB Package DUB Downloads License

Screenshots

Screenshot1

Screenshot2

Screenshot3

Screenshot4

Screenshot5

Features

  • Static and animated meshes, glTF, OBJ and IQM formats support
  • Textures in PNG, JPG, DDS, HDR, TGA, BMP formats + GIF and PSD via extension
  • Deferred pipeline for opaque materials, forward pipeline for transparent materials and materials with custom shaders
  • Physically based rendering (PBR)
  • HDR rendering with Reinhard, Hable/Uncharted, Unreal, ACES, Filmic and AgX tonemappers
  • HDRI environment maps. Preconvolved DDS cubemaps
  • Directional lights with cascaded shadow mapping and volumetric scattering
  • 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
  • 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, DoF, lens distortion, motion blur, glow, color grading)
  • UTF-8 text rendering using TTF fonts via Freetype
  • GUI extension based on Dear ImGui
  • Keyboard, mouse and joystick input. Input manager with abstract bindings and file-based configuration
  • Unicode text input
  • Ownership memory model
  • Entity-component model
  • Built-in camera logics for easy navigation: freeview and first person views
  • Physics using Newton Dynamics.

Planned in future:

  • Screen-space reflections.

Getting Started

The recommended way to start using Dagon is creating a game template with dub init. Create an empty directory for the project, cd to it and run the following:

dub init --type=dagon
dub build

Do not delete data/__internal folder! It is used to store engine's internal data such as shaders and textures.

Runtime Dependencies

Runtime dependencies are automatically deployed on 64-bit Windows and Linux. On other platforms, you will have to install them manually.

Known Bugs and Limitations

  • The engine doesn't support macOS
  • dagon:nuklear extension has problems under Linux
  • dagon:newton crashes under Linux when loading Newton plugins (NewtonPhysicsWorld.loadPlugins)

Documentation

See tutorials and corresponding examples.

License

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

Sponsors

Jan Jurzitza (WebFreak), Daniel Laburthe, Rafał Ziemniewski, Kumar Sookram, Aleksandr Kovalev, Robert Georges, Rais Safiullin (SARFEX), Benas Cernevicius, Koichi Takio, Konstantin Menshikov.

Made with Dagon

dagon's People

Contributors

gecko0307 avatar timu5 avatar dayllenger avatar roobie avatar my-ijet avatar tichau avatar mankeyyename avatar burner avatar isaacs-dev avatar

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.