- Project created
- Added Depth of field support
- Added large models support
- Added scene management: key Q changes
focalDepthon +1, A changesfocalDepthon -1, W changesfocalRangeon +5, S changesfocalRangeon -5 - Removing unnecessary code (in
advanced_rendering.cpp) - Some optimization (in
fragment_blur_shader.glsl,fragment_blend_shader.glslandadvanced_rendering.cpp) - Added support for arguments to the compilation-run script (
make.sh) - Fixed
recycle()inadvanced_rendering.cpp: added removal ofquadBuffers
- Optimization
- Added ability to manage effects (bloom, dof etc) (enable and disable, you must perform before compiling shaders; all effects are activated by default)
- Removed
advanced_rendering.cpp, all functionality transferred to filealgine.cpp,struct AlgineRenderer - More flexible shader configuration
- Preloading locations from shaders
class ShaderProgram => struct ShaderProgram- Compressed textures for models
- Added FPS meter in the sample scene
- Other improvements and fixes
- Optimization;
- Completely changed the architecture of the engine. Now everything is divided into separate modules;
- Removed
utils/shader_utils.cppandutils/texture_utils.cpp; - All engine modules are placed in the namespace
algine; static GLuint loadTexture(const char *path)andclass TextureArrayfromutils/texture_utils.cppmoved intotexture.cpp;class TextureArray => struct TextureArray;- Removed many obsolete functions and structures (mainly from
algine.cpp,utils/texture_utils.cpp,utils/shader_utils.cpp); - Renamed most of the structures and their members. No more ugly names like
ALGINE_PATHS_TO_SHADERS,ALGINE_PROCESSED_SHADERS; - No more spam in the console when compiling shaders. Logs are displayed only when errors occur. The size of the log buffer is now strictly controlled, and exactly as needed to obtain this data;
- Some functions like
setVec3,setVec4,setMat4,pointerfromutils/shader_utils.cpp(namespace su) moved intoalgine_renderer.cpp;void setVec3 && setVec4 && setMat4 > #define setVec3 && setVec4 && setMat4; - For compatibility with
GLM 0.9.9.0, you must defineGLM_FORCE_CTOR_INIT. Note: defined inalgine.cpp; - Fixed comments in the example (
main.cpp); algine_renderer.cpp: used for rendering, has basic functions such assetVec3,setVec4,setMat4,pointer. Previously,struct AlgineRendererwas literally responsible for everything that multiplied by zero all the flexibility, customizability and embeddedness of the engine. Now it has only a few functions that are used for rendering. Such as:renderQuad,mainPass,screenspacePass,bloomDofPass,bloomPass,dofPass,doubleBlendPass,blendPass,prepare. No pointer-to-function!algine_shader_compiler.cpp: used for generating Algine shaders, for compiling shaders and combining them into programs, for loading ids of objects from Algine shaders, for saving shaders. It has functions of reading and writing;algine_structs.cpp: necessary for the operation of the engine structuresalgine.cpp: just includes all engine andglmfilesconstants.h: engine constants (likeALGINE_SSR_MODE_ENABLED)framebuffer.cpp: create, manage, delete framebuffershaderprogram.cpp: create, manage, delete shader and shader program; has functions for getting info logtexture.cpp: create, manage, delete texture;- Fix in
model.cpp: now it’s not necessary to specify paths to all textures. If the texture is not needed, its path can benullptr; - Arguments
internalformat = GL_RGB, format = GL_RGB, type = GL_UNSIGNED_BYTEhave been added toloadTexture; - Added new effect: SSR (Screen Space Reflections). In this regard, introduced 2 new types of textures: reflection strength map, jitter map;
- Due to decentralization of engine functions, memory consumption is reduced;
- Other changes and improvements.
If this new architecture is approved, then the process of creating documentation will begin, and the engine will move to the beta stage.
- Algine now uses the Assimp - Open Asset Import Library. It can load 40+ model formats;
- Added support for materials. In addition to those that come with the model itself, which Assimp loads, additional materials have been added - AMTL - Algine Material Library. Which can be used simultaneously with the standard ones, but AMTL has a higher priority. AMTL is used to transfer parameters that are not usually provided by standard materials, such as
{ambient, diffuse, specular}Strength,reflectionStrengthMap,jitterMap; AMTL is a simple JSON array, which consists of JSON objects. Note that the AMTL name of the material must match the model name:model.obj => model.amtl; - The
AlgineProgramsstructure was divided into separate ones, such asCShader,SShader,BLUShader,BLEShader,SSShader; - The extermination of ugly names continues: all the names in
*ShaderfromAlgineProgramsare now read easily, they look quite informative. NO_CAPITAL_LETTERS; - Removed unused variables;
- Removed the enforced
applyDefaultTextureParamsfromFramebuffer::attachTexture fragment_shader.glsl:struct Mapping > Material, removed unnecessary code; fromLampremoved variables which belongs toMaterial;lamp.cpp: removed variables which belongs tomaterial.cpp;algine.cpp => algine.h;- Removed support of CMF models. CMF was a temporary solution;
- Created
io.cpp- reading/creating, absolute path, exists methods; - Created
material.cpp- material variables, loads AMTL; - Created
mesh.cpp- loads mesh, materials - Some methods were renamed: now their name clearly reflects their essence;
- Added Cinematic Depth Of Field;
- Added methods for saving textures (2D, Cubemap), for getting texture data;
- Added JSON library, stb_image_write.h;
- Updated stb_image.h;
- New example scene;
- Minor fixes, other changes and improvements.
- Fixed: shadow mapping not working on some GPUs (tested on Intel HD Graphics 520)
- Fixed: flickering on some GPUs (tested on Intel HD Graphics 520)
- Created
make.batandrun.batfiles for Windows, written instructions for compiling on Windows
- Fixed: black screen when shadow mapping enabled on AMD GPUs
- Fixed: make.sh not working on old debian systems
- Now shadow mapping by default without PCF
Mesh::genBufferssegmentation fault fix (if gen without normals/texCoords/etc)- Removed src/utils dir.
math.cppreplaced to src - Removed unnecessary
#includein some files - Added
types.hwhere defined basic data types, such asint8,uint8,int16,uint16,uint(32 bit),int64,uint64,float64. Also on the basis of the bit of your system are defined:size(intorlong),usize(unsigned intorunsigned long) - Renamed and changed:
struct ModelBuffers => struct Shape,class Model => struct Model;class Lamp => struct Light,class LampModel => struct Lamp(it will be changed later) make.shdevided onmake.shandrun.sh(for Linux systems)- Removed unnecessary data from
fragment_shader.glsl,main.cpp - Added advanced FPS meter in example scene, new animated models (man and astroboy), exposure increased from 3.0 to 6.0, gamma from 1.0 to 1.125, cleanup in
main.cpp - Fixed chessboard texture (there were rainbow stripes)
- Added support for skeletal animations. Limitations on the number of bones / number of bones per vertex are hardware only.
- Added:
animation.cpp: animation structuresbone.cpp: bone structures likeBoneInfo(for engine only),Bonenode.cpp: node structures (onlyNode) - Minor fixes, other changes and improvements.
- Created headers for all source files
- Now using CMake. Supports Linux and MinGW-w64
- Removed
make.sh,run.sh,make.batandrun.batscripts, createdalgine.shandalgine.batinstead. They marked as deprecated - Removed
.vscodedirectory - Fixed
activeTexture, removedTextureArray - Added directional lighting (shadow mapping)
lamp.cpp => light.cpp- Created
contribdirectory - Added
renderbuffer.cpp - Some shaders separated and renamed, removed duplicates
- Added
TextureCube, created cubemap shader - DOF: added CoC calculation from position map, added CoC shader, added ability to eliminate bleeding and sharp unsharpness artifact
- Main (color) fragment shader output reorder
- Added
CubeRenderer,QuadRenderer - Added
core_utils.cpp mesh.cppmerged withmodel.cpp- Now engine using VAO instead of
glEnableVertexAttribArray()andglDisableVertexAttribArray() - Improved readability of shaders
- Removed dead code
- Added
update-contribbash script, updated contrib - Performance improvements and other minor fixes.