Coder Social home page Coder Social logo

hhsaez / crimild Goto Github PK

View Code? Open in Web Editor NEW
33.0 33.0 5.0 479.95 MB

A scene graph based framework for interactive 3D applications

License: BSD 3-Clause "New" or "Revised" License

CMake 0.47% C++ 90.26% Objective-C 4.05% Objective-C++ 1.11% GLSL 0.19% Metal 0.11% C 3.80% Shell 0.01%
c-plus-plus game-development game-engine ios opengl

crimild's People

Contributors

hhsaez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

crimild's Issues

Editor projects

  • Create a new project or load existing ones
  • A project has a name and version number
  • Add directory panel
  • Use JSON for encoding project files
  • Project settings panel

Add support for prefabs

This applies to scenes and nodes, but it could apply to other resources, like Textures and Audio.

Basically, a prefab is a Codable object that is linked to a file in the project. If the original file changes, all prefabs linking to that file should be updated as well. Editing a prefab (if possible from Crimild) should update its linked file too.

Prefabs can be implemented as a Decorator object.

Posible prefab-able resources:

  • Node
  • Image
  • AudioClip
  • Behavior

A prefab must support the following operations:

  • When an object is exported as prefab (or dropped into a directory), a new file is saved using the object's name
  • When a prefab is dragged from a directory into the scene hierarchy panel, a new Node hierarchy is created using that prefab as based and automatically attached to a parent (if dropped into a group).

When saving a scene, the AssetManager should also be saved with the same scene. That way, all references to assets outside of the scene are going to work correctly.

Use of numeric_limits instead of limit constants

Allows compilation with g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4

diff --git a/core/src/Foundation/FixedAllocator.hpp b/core/src/Foundation/FixedAllocator.hpp
index c274a8c..e8007f9 100644
--- a/core/src/Foundation/FixedAllocator.hpp
+++ b/core/src/Foundation/FixedAllocator.hpp
@@ -43,7 +43,7 @@ namespace crimild {

    private:
        static constexpr unsigned char MIN_OBJECTS_PER_CHUNK = 8;
  •       static constexpr unsigned char MAX_OBJECTS_PER_CHUNK = UCHAR_MAX;
    
  •       static constexpr unsigned char MAX_OBJECTS_PER_CHUNK = std::numeric_limits<unsigned char>::max();
    
    private:
        using ChunkArray = std::vector< Chunk >;
    

Split Editor and Player and support multiple windows

  • Implement frame graph for Vulkan operations
  • Move to a fully async render operations using multiple command buffers
  • Simplify multiple buffer rendering by having framegraph copies
  • Implement RenderDeviceCache
  • Build Editor, Player and examples in CI

Improve shadows for all lights

  • Directional lights using cascade shadow maps
  • Spot lights using simple orthographic shadow map
  • Point shadows using cubemaps
  • Implement PCF
  • Support many lights casting shadows

Improve model import workflow

  • Use TinyGLTF to load models instead of Assimp
  • Remove Assimp
  • Add option to import GLTF and OBJ from editor
  • Update related examples

Cleanup CMake config

  • Use WIN32, MACOS_BUNDLE?
  • Create a crimild_base INTERFACE target with the basic setup for all crimild libraries
  • Create a crimild_example INTERFACE target with dependencies for all examples
  • Create a crimild_app INTERFACE target with depencies for all apps
  • Use target_sources() for specifying source files for each target (add_library does not include any source at all)

Editor Improvements

  • When cloning nodes in the scene hierarchy, add the new node next to the one that it's been cloned and with the same parent
  • Improve load/saving projects
  • Keep current scene file name in project, so it is easier to load/save
  • Disable some file menus if project is not yet loaded
  • Terminate program when using Quit menu item.

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.