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
Perform Frustum culling using trees or other optimisations.
The classes related to the definition of lights.
Ability to defines separate clear behaviors for each attachment.
Make a proper in depth input system (like Unity's experimental InputSystem)
Adding some simple vector methods (currently only the Vec3f has methods).
Hash shader/material name strings for a better find performance.
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 |
Use precise depth buffer to determine worldpos for deferred shading. Should avoid some z-fighting-like artefacts on lights.
A Test shader that supports several textures (albedo, spec, normals, ...), to have a better representation of the capabilities.
Implement basic PBR rendering, using metallic workflow.
Implement a flexible Random class that allows:
Cap the deltaTime to avoid extreme movements on lag spikes.
Use row major order of parameters in Matrix4x4f constructor for more readability.
Support F11 for fullscreen/windowed switch.
Add proper copy constructors for entities, meshes, textures and others.
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;
};
Support compile-time constant parameters on materials.
Improve Texture creation, to allow for more customisation and avoid unnecessary allocations
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.
Automatically copy all resources when building to avoid having to manually change the parameters of each res file in VS.
Fix some incorrect cases for intersections by using SDF or plane tests
fix crash when pressing keys unknown by the input system (media keys).
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.
Add a few useful math structures:
(also rename Ray to Ray3f)
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.