OpenGL Renderer

OpenGL Renderer

10 devlogs
22h 36m
•  Ship certified
Created by snej55

A custom OpenGL renderer to replace my old OpenGL wrapper. Currently supports model and texture loading, a pbr lighting shader, automatic shader loading and post processing (plus some other stuff). Still a WIP.

Timeline

Organised the project a bit and created a shell script to combine seperate markdown files in media/docs into a single readme.

Update attachment

Ship 1

1 payout of shell 225.0 shells

snej55

about 1 month ago

snej55 Covers 9 devlogs and 21h 40m

Made a demo video for the project.

Update attachment

Today I continued working on the asset managers (shaders, textures, models), and improved the error messages with some highlights. I'm considering making a generic base class for each 'object' manager, since all the code is fairly similar and repetitive. The next thing to do is to add support for proper PBR materials (with textures instead of hard coded uniforms), but I started off with this for now to get back into it (I took a break for the SoM game jam).

Update attachment

Today I finally got a working PBR shader setup! I can now make some shiny stuff! (though I still need to get IBL and PBR materials and textures setup).

Update attachment

Today I finished the post processor class, so everything is now rendered to a framebuffer instead of directly to the screen, which is then rendered to the screen through a screen shader (where I can put some shiny vfx). I finished it off by adding gamma correction and HDR, ready for PBR.

Update attachment

Today I started working more on the rendering, with some basic diffuse lighting for the models. I also made a convenience python script to make adding shaders easier (it creates the template vertex and fragment shaders and adds them to shaders.json), learnt a bit about blender, and made some general improvements to the engine.

Update attachment

Today I finally finished the model loader (fixed all of the bugs). I largely spent most of the time debugging the Mesh class, where glDrawElements wasn't working - the app ran fine, but nothing was displayed and even RenderDoc failed to capture it. It turned out that the Mesh destructor was being called when it was copied into Model::m_meshes after it was generated, where glDeleteVertexArrays was being called, meaning the vertex array was invalid (long story short, c++ is complicated). But model rendering works now at least!

Update attachment

Today I created the model loading interface for the engine, with a model manager similar to the texture and shader managers. I also tested the actual vertex and indices loading for the model class. Next, I will start work on actually rendering the models, and hopefully be able to start on some PBR lighting equations.

Update attachment

Today I started porting the basic model loader from my opengl wrapper to the new engine. It still uses assimp for reading the 3D model data, and will hopefully be able to support skeletal animations and PBR materials later on. I have already set up the mesh class, for storing the indices/vertices of each 3D model. Next, I am going to implement the assimp model loading, as well as a textures/material system. (and hopefully finally learn blender as well).

Update attachment

This weekend I continued working on getting the basic framework of the engine working. I setup shader and texture loading, with shaders and textures being accessed by their names through a shader and texture manager, instead of as individual objects (though that works as well). I also made the shader loading fully automatic, with checks to ensure all of the required builtin shaders are loaded at runtime. All that you now need to do to add a new shader, is add a new entry to the shaders.json file, pointing to the fragment and vertex shader paths. I also made a basic shape manager, that allows me to draw coloured rects. Next, is some basic default 3D shapes, and model loading.

Update attachment