rythe-interactive / rythe-engine Goto Github PK
View Code? Open in Web Editor NEWRythe is a data-oriented C++17 game engine built to make optimal use of modern hardware.
Home Page: https://legion-engine.com
License: MIT License
Rythe is a data-oriented C++17 game engine built to make optimal use of modern hardware.
Home Page: https://legion-engine.com
License: MIT License
there's a need for a readonly_multiguard and a readwrite_multiguard of some sort.
Render Pass function
Render pass function should not always give pass color texture and depth texture. The user should be able to decide what input he wants. We probably want to acces stuff like depth texture, normal buffer etc within the shader, as a part of the shader library.
Shader Library
As mentioned in the issue above we want to make use of the shader library within post processing effects. We also want to add functionalities like depthTexture to the library.
Effect exectuion order
Priority is ambiguous (for me at least), is a low number low prio, or high prio?
I would change up the name or the variable to make that more clear or change the way effect execution order is handled.
For serialization and other parts of the engine we need to be able to easily request meta information about a type on runtime. A data structure and wrokflow for this needs to be created.
Describe the bug
Collisions appear to be broken
Collisions with more than 12 edges appears to break
(check linked pr for mre)
Expected behavior
normal collision
Desktop (please complete the following information):
Additional context
Messy Quick Hull is "messy" because it cannot properly be tested because of this.
Unless there is some good reason to keep them seperate I advise on joining these two
For which one please discuss in the comments or via discord
Working with Legion is quite a chore, especially setting up new projects and creating new files. A Visual Studio plugin could automate a lot of these tasks for the user and make working with Legion a lot easier.
there are two files with the same name "editor.hpp" one needs to find a better name.
@GlynLeine please make sure that your code correctly qualifies const & mutable
ecsregistry.cpp
In file included from ecs/ecsregistry.cpp:1:
In file included from ../core/ecs/ecsregistry.hpp:7:
In file included from ../core/ecs/component_container.hpp:5:
../core/containers/atomic_sparse_map.hpp:71:27: error: no matching constructor for initialization of 'async::readonly_guard'
{ async::readonly_guard lock(m_container_lock); return m_dense_value.cbegin(); }
^ ~~~~~~~~~~~~~~~~
../core/async/readonly_rw_spinlock.hpp:67:3: note: candidate constructor not viable: 1st argument ('const async::readonly_rw_spinlock') would lose const qualifier
readonly_guard(readonly_rw_spinlock& lock) : lock(lock)
^
../core/async/readonly_rw_spinlock.hpp:96:3: note: candidate constructor not viable: no known conversion from 'const async::readonly_rw_spinlock' to 'const args::core::async::readonly_guard' for 1st argument
readonly_guard(const readonly_guard&) = delete;
^
this is directly from develop/core
as you can see the right constructor is discared because it does not qualify const correctly, m_container_lock needs to be mutable
in this context
CSS style of the documentation pages is inconsistent with the branding of the Args-engine.
Describe the bug
When I attempt to spawn cubes during runtime, I will randomly crash on any given spawn instance.
Include a MRE
Go to the scene-management branch, run the engine, and press F5 till it crashes.
Expected behavior
Not crash
as it currently stands the repository is not backed by unit-tests!
We should invest some time into looking into which unit-test framework we want, and implement at least basic test such that subsequent ci runs can detect code that breaks the previous code-base
https://github.com/onqtam/doctest
https://github.com/catchorg/Catch2
https://www.boost.org/doc/libs/1_73_0/libs/test/doc/html/index.html
Additionally we should decide if we want advanced tools for our ci system like code-cov to asses the quality of the unit-test in addition to running them
Right now there is no way to serialize and deserialize scenes, entities, or components.
please create a design of the filesystem and put it in UML. it would allow others to understand it better and possibly help out with the implementation. it also allows other to check for design flaws before the implementation is finished.
Describe the bug
Entity Query does not contain the requested components even after instantiating an entity that has the required components
Include a MRE
Expected behavior
After adding an entity that has the requested queries, it should appear in the query.
Describe the bug
The OBJ loader fails to load textures that are stored in relative paths to the obj file. If such a path occurs, it simply adds the model's path to the path.
For example:
Include a MRE
Load any model where the mtl uses a relative texture path with ../
Expected behavior
The relative filepath should be resolved appropriately by checking for .. before combining the paths
Desktop (please complete the following information):
Describe the bug
when debug::drawline()
is called no line is drawn
Expected behavior
a line is drawn when drawline()
is called
Desktop (please complete the following information):
Additional context
Blocks #254
Describe the bug
For some reason OpenCL crashes in develop @ 6c5603b
I would recommend introducing a new macro
#define ARGS_CCONV __cdecl
as we might want different calling conventions on different platforms (i.e.: __fastcall
on windows)
it should also be part of ARGS_API
such that .dll or .so are consistent across the board
For the code to be automatically documented it needs to be well documented.(duh, I know)
Some files in the repository do currently not follow the common doxygen guidelines.
Describe the bug
cppcheck fails on every pull request.
Expected behavior
cppcheck should build and pass with no problems.
build-action caches old files, need to look into the checkout parameters of checkout@v2
Describe the bug
adding a lambda to a multicast_delegate causes the heap to break
Include a MRE
https://stackoverflow.com/help/minimal-reproducible-example
ImGuiStage::OnGuiRender += [this]
{
this->view = math::mat4(1.0f); // anything from error writing to invalid position to heap corruption
}
Desktop (please complete the following information):
Describe the bug
Inline static variables have a very unstable and hard to predict behaviour when headers with them get included in multiple different .cpp files. they should be avoided for now and an alternative solution should be found.
Include a MRE
baz.hpp:
struct baz
{
static inline int var;
static void foo();
};
baz.cpp:
#include <iostream>
#include "baz.hpp"
void baz::foo()
{
var = 1;
std::cout << var << std::endl;
}
bar.hpp:
struct bar
{
static void foo();
};
bar.cpp:
#include <iostream>
#include "baz.hpp"
#include "bar.hpp"
void bar::foo()
{
std::cout << baz::var << std::endl;
}
main.cpp:
#include <iostream>
#include "baz.hpp"
int main()
{
baz::foo();
bar::foo();
return 0;
}
will output:
1
0
Screenshots
printing out the size of AssetImporter::m_converters in multiple places throughout the engine:
Describe the bug
Voro++ has unresolved references
Include a MRE
https://stackoverflow.com/help/minimal-reproducible-example
voronoi = physics::PhysicsStatics::GenerateVoronoi(points);
Expected behavior
build
Right now there are no scenes. You can't create scenes, you can't load or destroy scenes. We need a system that allows us to load and unload scenes synchronously and asynchronously. We need the system to also allow us to keep track of a scene queue for linear level progression and a scene stack for handling recursively loaded scenes like sub-scenes in an open world.
Describe the bug
Renderstages that are attached after the renderer has been initialized will not have their setup functions called
Include a MRE
#pragma once
#include <core/core.hpp>
#include <rendering/util/gui.hpp>
#include <rendering/pipeline/gui/stages/imguirenderstage.hpp>
class GuiTestSystem : public System<GuiTestSystem>
{
void setup() override
{
static_cast<DefaultPipeline*>(Renderer::getMainPipeline())->attachStage<ImGuiStage>();
//gui code goes here
ImGuiStage::OnGuiRender += [this]() ///// !CRASH! because ImGuiStage::setup was never called!
{
imgui::base::ShowDemoWindow();
};
}
};
Expected behavior
A clear and concise description of what you expected to happen.
When adding a stage after the init() call has been made stages should have the setup() function called in-place
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
My use case uses Blender for level design, and all static geometry is loaded in as a single model (with sub-meshes) from a GLTF file. This limits me in some aspects as I can not simply edit in light sources into the "scene".
Describe the solution you'd like
Since we use Blender for level editing, it'd be very convenient if lights could also be configurable through Blender. This is possible by supporting the GLTF 2.0 KHR_lights_punctual extension enlisted here https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual
Describe alternatives you've considered
Other alternatives would include a custom editor or scene file, both of which would take significantly more time. Supporting the lights extension should take fairly little time and would greatly expand the flexibility of the model loader.
I'm willing to take this upon myself once I have the time but if anyone else is able to start on this sooner then that'd be greatly appreciated as well.
LAP-4 #This is a test
Describe the bug
Docs action is failing on main.
Expected behavior
Documentation should be built and updated
Right now there is no reference implementation for asset management. So each new asset needs to create its own systems and API. this also causes the API around assets to not be coherent. Additionally adding new custom assets is very difficult.
Describe the bug
When building the engine from fresh download (main) the solution tries to lookup a lib in a random folder that has no association with the project.
Include a MRE
Not applicable / Issue with tooling
Expected behavior
The engine builds
Desktop (please complete the following information):
LAP-43 see this
Describe the bug
Delegates might have unused parts, and might not destruct propperly when used with non static non member functions
Expected behavior
delegates should work with any callable type and construct and cleanup propperly.
Describe the bug
Due to the severely varying iteration times of all the threads, some threads never get the chance to lock because they're too slow. A queue would help slower threads get a chance at locking as well.
Expected behaviour
Locking a spinlock should not take minutes.
Additional context
Run feature/window enough times and sometimes the windows won't get created or won't respond. either the rendering or input threads have gotten stuck on a spinlock. if you pause the program you'll pause inside a spinlock.
Describe the bug
Before I try and deserialize a scene for loading I try and destroy the scene root object so I can get rid of the first scene. When I do so the engine crashes with a read access violation
If you would like to reproduce the error just look to the SceneManager::loadScene() function, there you should see my method of destruction, I have attached screenshots.
debug tools like assertions and logging should probably be part of the core::logging part of the engine. this was later on when we build editor consoles we can also log asserts to the editor.
Describe the bug
A clear and concise description of what the bug is.
Kernel either crashes on multiple invocations or Leaks GPU memory
Include a MRE
https://stackoverflow.com/help/minimal-reproducible-example
std::vector<int> lhs = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
std::vector<int> rhs = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
std::vector<int> res(16);
compute::function f = fs::view("assets://kernel/vector_add.cl").load_as<compute::function>("vector_add");
f(16,lhs,rhs,res);
f(16,lhs,rhs,res); //crash!
Expected behavior
No crash
Desktop (please complete the following information):
Additional context
This happens because Kernels release their command Queues on finish()
this should happen in the dtor instead
To create a good editor, we need a general editor framework. We can ensure that all editor code will adhere to a certain architecture and stays organised with the framework.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.