xenation / ionengine Goto Github PK
View Code? Open in Web Editor NEWExperimental Game Engine (uses Clustered Deferred)
License: MIT License
Experimental Game Engine (uses Clustered Deferred)
License: MIT License
Add proper copy constructors for entities, meshes, textures and others.
Improve Texture creation, to allow for more customisation and avoid unnecessary allocations
When preprocessing a shader, for each uniform buffer layout, check for missing fields and add them. This can currently only be done for the global buffers.
Expected fields:
mat4x4 projectionMatrix
mat4x4 viewMatrix
ivec2 resolution
uint sampleCount
Input code:
layout (std140, binding = 1) uniform Camera {
ivec2 resolution;
uint sampleCount;
};
Output code:
layout (std140, binding = 1) uniform Camera {
mat4x4 projectionMatrix;
mat4x4 viewMatrix;
ivec2 resolution;
uint sampleCount;
};
Cap the deltaTime to avoid extreme movements on lag spikes.
Boxi | Boxf | Recti | Rectf | Ray2f | Ray3f | Line2f | Line3f | Segment2f | Segment3f | Plane | OBB2D | OBB3D | Frustum3f | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Boxi | X | X | X | X | X | X | X | X | ||||||
Boxf | X | X | X | X | X | X | X | X | ||||||
Recti | X | X | X | X | X | X | ||||||||
Rectf | X | X | X | X | X | X | ||||||||
Ray2f | X | X | X | X | X | X | ||||||||
Ray3f | X | X | (X) | (X) | X | X | X | |||||||
Line2f | X | X | X | X | X | X | ||||||||
Line3f | X | X | (X) | (X) | (X) | X | X | X | ||||||
Segment2f | X | X | X | X | X | X | ||||||||
Segment3f | X | X | (X) | (X) | (X) | X | X | X | ||||||
Plane | X | X | X | X | X | X | X | X | ||||||
OBB2D | X | X | X | X | X | X | ||||||||
OBB3D | X | X | X | X | X | X | X | X | ||||||
Frustum3f | X | X | X | X | X | X | X | (X) |
Boxi | Boxf | Recti | Rectf | Ray2f | Ray3f | Line2f | Line3f | Segment2f | Segment3f | Plane | OBB2D | OBB3D | Frustum3f | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Boxi | Boxi | Boxf | Vec3f | Vec3f | Vec3f | SIDE | / | / | ||||||
Boxf | Boxf | Boxf | Vec3f | Vec3f | Vec3f | SIDE | / | / | ||||||
Recti | Recti | Rectf | Vec2f | Vec2f | Vec2f | / | ||||||||
Rectf | Rectf | Rectf | Vec2f | Vec2f | Vec2f | / | ||||||||
Ray2f | Vec2f | Vec2f | Vec2f | Vec2f | Vec2f | Vec2f | ||||||||
Ray3f | Vec3f | Vec3f | (Vec3f) | (Vec3f) | Vec3f | Vec3f | Vec3f | |||||||
Line2f | Vec2f | Vec2f | Vec2f | Vec2f | Vec2f | Vec2f | ||||||||
Line3f | Vec3f | Vec3f | (Vec3f) | (Vec3f) | (Vec3f) | Vec3f | Vec3f | Vec3f | ||||||
Segment2f | Vec2f | Vec2f | Vec2f | Vec2f | Vec2f | Vec2f | ||||||||
Segment3f | Vec3f | Vec3f | (Vec3f) | (Vec3f) | (Vec3f) | Vec3f | Vec3f | Vec3f | ||||||
Plane | SIDE | SIDE | Vec3f | Vec3f | Vec3f | (Line3) | / | / | ||||||
OBB2D | / | / | Vec2f | Vec2f | Vec2f | / | ||||||||
OBB3D | / | / | Vec3f | Vec3f | Vec3f | / | / | / | ||||||
Frustum3f | / | / | Vec3f | Vec3f | Vec3f | / | / | / |
proj/shape | Boxi | Boxf | Recti | Rectf | Ray2f | Ray3f | Line2f | Line3f | Segment2f | Segment3f | Plane | OBB2D | OBB3D |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Vec2i | Vec2i | ||||||||||||
Vec2f | Vec2f | Vec2f | Vec2f | Vec2f | Vec2f | Vec2f | |||||||
Vec3i | Vec3i | ||||||||||||
Vec3f | Vec3f | Vec3f | Vec3f | Vec3f | Vec3f | Vec3f | Vec3f |
Adding some simple vector methods (currently only the Vec3f has methods).
Perform Frustum culling using trees or other optimisations.
fix crash when pressing keys unknown by the input system (media keys).
Hash shader/material name strings for a better find performance.
Support compile-time constant parameters on materials.
Automatically copy all resources when building to avoid having to manually change the parameters of each res file in VS.
Implement a flexible Random class that allows:
Use row major order of parameters in Matrix4x4f constructor for more readability.
Make a workaround the implementation specific bug for the vec3 variables in uniform blocks with std140 layout. In some implementations vec3 does not follow correctly the std140 rules and has alignment of 3 floats instead of 4.
Add a few useful math structures:
(also rename Ray to Ray3f)
Use precise depth buffer to determine worldpos for deferred shading. Should avoid some z-fighting-like artefacts on lights.
Fix some incorrect cases for intersections by using SDF or plane tests
A Test shader that supports several textures (albedo, spec, normals, ...), to have a better representation of the capabilities.
Support F11 for fullscreen/windowed switch.
The classes related to the definition of lights.
Implement basic PBR rendering, using metallic workflow.
Make a proper in depth input system (like Unity's experimental InputSystem)
Implement a build mode that allows including all assets into the executable file. This requires an API for the manipulation of files included. The API should implement a folder structure and allow modifications, creations and deletions.
Ability to defines separate clear behaviors for each attachment.
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.