Code Monkey home page Code Monkey logo

horde3d's Introduction

Horde3D

Horde3D is a 3D rendering engine written in C++ with an effort being as lightweight and conceptually clean as possible.

Horde3D requires a fully OpenGL 2.0 compatible graphics card. In terms of DirectX that means a card supporting at least Shader Model 2.0 or higher.

Features

  • Modern, cross-platform, shader-based architecture (requires OpenGL 2.0+)
    • Lightweight, non-intrusive design with very few dependencies, avoiding complexity where possible
    • C-style API for easy usage from virtually any programming language
  • Resource management
    • Garbage collected resources, loaded from virtually any type of data stream
    • Hot-reloading of resources for more increased productivity during development
    • Access to vertex data for collision detection and interoperability with physics engines
  • Übershader-based, customizable rendering pipeline
    • Hot-reloading of pipelines for rapid testing of different rendering techniques
    • Support for post processing effects like bloom, DOF or motion blur
    • Support for almost all forward, deferred and High Dynamic Range rendering techniques
    • Support for real-time reflections and other techniques that require several cameras
    • Real-time shadows using Parallel Split Shadow Maps (PSSM)
    • Particle systems that can cast shadows and have effects like motion blur
  • Unified scene system
    • World, models and skeletons are scene nodes instead of special objects
    • Frustum culling based on spatial graph
    • Hardware occlusion culling
    • Level of detail for model geometry and materials
  • Unified, low-level animation system
    • Key frame animation for joints and meshes
    • Skeletal animation with up to 4 weights per vertex for articulated models
    • Layered animation blending and mixing using masks and additive channels
    • Morph targets for facial animation and lip synchronization
    • Access to joint data for dynamic animations and ragdoll physics
  • Content Pipeline
    • Mixture of binary and XML formats for best tradeoff between performance and productivity
      • Pipeline, material and scene descriptions are XML
      • Model and animation are binary for maximum performance
      • Textures are common image formats (DDS, PNG, JPEG, etc.)
    • COLLADA Converter for importing assets from many common DCC tools
      • Calculation of tangent space basis for normal mapping
      • Optimization of geometry for GPU post-transform vertex cache
    • Editor for composing scenes, developing shaders and rendering techniques

Building

You need to have a C++ compiler and CMake 2.4+ installed. CMake is a meta-build system, e.g. it creates Makefiles or Visual Studio files using Generators. The main ways to use CMake are cmake-gui (Qt Interface), ccmake (Curses Interface) and cmake (Commandline Interface). Instructions for commonly used generators:

  • Qt Creator: open CMakeLists.txt as new project, follow the instructions, hit build and you're done.
  • Visual Studio: start cmake-gui, choose OGDF as source path, build-vs as build path, press generate, open build-vs\Horde3D.sln and start compiling.
  • Makefiles: open up a terminal, navigate to the repository and run mkdir build-make && cd build-make && cmake -G "Unix Makefiles" .. && make (hint: use export JOBS=MAX to speed things up).
  • Ninja: open up a terminal, navigate to the repository and run mkdir build-ninja && cd build-ninja && cmake -G "Ninja" .. && ninja.

What's next

Here are some quick links to help you get started:

License

Horde3D is licensed under the Eclipse Public License v1.0 (EPL).

The EPL is a quite liberal license and has fewer restrictions than the popular LGPL. Basically it allows you to use Horde3D in free and commercial projects as long as you contribute improvements like bug fixes, optimizations and code refactorings back to the community. The EPL allows static linking and is not viral; hence it does not affect any other modules of your application.

horde3d's People

Contributors

horde3d avatar zuck avatar bosoni avatar schulzch avatar cloudwu avatar dervus avatar cleversoap avatar severtsev avatar

Watchers

James Cloos avatar  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.