yattabyte / revision Goto Github PK
View Code? Open in Web Editor NEWRendering Engine
License: MIT License
Rendering Engine
License: MIT License
Add more error reporting, like framebuffer status checking, etc.
I forgot to finish writing a more safe mechanism for dealing with shader binaries. I need to write in a better mechanism for when binary loading fails, to load the text from disk instead.
ECS system missing support for deregistering ecs constructors.
Maybe a different approach is needed, but it stands to reason that we should have this.
To better future-proof the project, we should hide as much of GLFW as possible from anything other than the main engine class.
As it is, most input is handled there, mapped into the ActionState class, but we use our own state enumerations like FORWARD, BACK, LEFT.
In commit c93e2ca we hid the mouse input modes using the engine class, let's continue doing things like that until glfw isn't used anywhere else but directly in the engine class.
remove the redundant property meshSize
The lighting techniques don't appear to work on window resize, even with the new preference listener system.
They've been disabled for now, and they need reworked in several ways.
For one, they required the old camera system, which we no longer use. So they need to copy the old camera attributes, push their own, render, and then push back the old camera attributes.
It would be nice if they didn't cause the entire engine to trigger window resize callbacks, but I don't think that's possible.
They were also experiencing a bug where it they weren't setting the correct size back, causing the engine to save the reflector texture size as the user's display port size.
Some objects are flickering while rendering during the reflector regeneration pass
I think its clashing with the main rendering pass, as the first frame after it finishes causes some objects to go invisible.
Let's make a single cache point that can be easily cleared all at once, like a cache folder.
Some models appear to have in assimp 3 materials, and the material offset for each mesh goes to the second set of materials, which is null is undefined in the material manager.
ie: closing too soon
There is an infrequent crash that occurs on launch, very early on.
A few assets will have loaded by this point.
The UI currently exhibits no keyboard controls, aside from the deprecated TextInput control.
We need to look at some other UI systems, and figure out how to organize which items get controlled with user bound directional keys, etc...
Apparently windows prefers uploading images in BGR format, which I think freeimage does for us by default anyways.
https://www.khronos.org/opengl/wiki/Common_Mistakes
The engine.h and engine.cpp files have a separate struct responsible for wrapping the glfw context/window
I'm not totally sold on my previous implementation of this from last year, I want to clean this out and do it from scratch.
I don't like the current style of error reporting. I want a more flexible system.
Add header comments to shaders, giving brief explanations of what they're for.
Move unregistering callbacks into the class itself that manages the callbacks
-> check if valid before doing the callback, remove many unregister lines in class destructors
The ECSSystemList class is given raw pointers, which tend to be created during the function call "addSystem()", but are never deleted
I think we should rework this class like such:
I'd like to have some sort of a loading indicator, like a spinning ring on the lower right hand side when the level is loading and not fully useable yet.
We should have hard-coded default binds, just like how we have default preferences.
I don't want to use a separate file like binds_default.cfg, just like how we don't have a preferences_default.cfg, as these can be lost, corrupted, or changed.
I'm not sure how we're going to do this yet, as the preferences are managed using a preference manager. We may need to implement a bind manager, but I haven't thought it all out yet.
With that, add a new system to sync the radius of a point light, or change the way the radius is used in point shadows
A control binding screen is crucial. This should be implemented before 4.0 ships, even if the controls are rudimentary.
For this to be done, we should look over our binding system and ensure it is future proofed.
The following list of video/graphics settings have no impact or break, until the game restarts. All settings can be changed back to their previous value, reverting all issues.
Cannot currently load separate maps, the previous world persists.
The asset creation functions often pass around shared pointers by reference.
I feel that at the beginning of this chain, we should be returning a new shared pointer to the one needing it created, and the rest of the references should be const or something.
I want to clean this up so that if an SharedAsset is created, copied, and the original deleted all before the asset has finished initializing or finalizing, it won't crash. This should be easily fixable, maybe at most 2hr of work.
The UI menu buttons start off with a text color of white, changing to their appropriate color after first hover-over.
For some reason, only the last added skeleton component is animating.
When using the world example with multiple point lights, the lights appear to flicker rapidly (or their shadows).
This might be a shadow scheduling issue, or an issue with view-frustum culling (visibility calc. failing)
Why are the backfaces rendering
Static models seem to be in full shadow again, maybe their shadows aren't getting generated properly?
A pause "escape" menu would be nice.
Options for it could include:
There's an issue with the global illumination model used.
Although the implementation uses the same technique to stabilize itself as the cascades from directional lights (CSM's), moving around in the world causes artifacts.
When more than 1 of the same model is used, the textures go all wrong.
Can make it always import 16 or 8 bit, also formatted as rgba
If only 1 extra thread is used, it can stall, presumably waiting on an asset to complete.
See if there is anyway to detect this case within the thread and change its behavior to prevent stalling.
Add triple buffering to dynamic buffers, hopefully it will get rid of the flickering when we have many objects on the screen.
Effect is self evident
There is an issue with models sometimes not rendering after successfully loading.
If unchecked, this bug will cause major problems later on in larger scenes. The problem is evident when the scene is composed of a few key models.
I'm unsure why this happens at this point. All the way up until this point, this issue has NEVER occured with primitive assets, only with model assets. All of them should be properly mutex'd and have sync flags. As a starting point, those assumptions should be rechecked.
Objects (both static and animated) flicker periodically
Create a KeyboardEvent class, similar to mouse event, to better deal with the differences between keyboard input methods and specific enumerations, like KEY_ENTER, KEY_BACPSPACE, KEY_PRESS, KEY_RELEASE, etc.
For some reason the GI appears to have data when zero lights are present
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.