I will describe the layout of the code and some future ideas here later I will attempt to update the code base to follow https://google.github.io/styleguide/cppguide.html and continue to follow it
- I need to tidy up my model loading, I changed how it works and am storing some things I never use
- Futhermore my model loader only loads diffuse textures from a material file, I need to load the other textures too
- I need to keep a quaternion in the camera which keeps track of the current orientation of the camera so that I can get just the rotation of the camera - Useful for cube maps
- My camera class - Jamie King’s Youtube
- My lighting, model transformations, texture mapping, skyboxes - Anton's book
- Loading models with assimp - OGLdev
- Assimp library - Assimp
- Shader Loading - in2gpu tutorials
- Introduction to OpenGL - ACM SIGGRAPH notes
- Object oriented design of VBOs, VAOs, Shaders, Renderers - The ChernoProject
- Cel shading - Sun and Black Cat
- Other shading models (blinn phong, minneart, ward) - Lossaso
- For some interesting shader implementations in glsl - Geeks3d
- Particle pools - Bob Nystrom
- Fresnel Effect - Nvidia
- Normal mapping - OpenGL tutorial
- Changing texture filtering over time - OpenGL redbook
- Automatic mipmap generation - OpenGL wiki
- Stbi image loader for textures - Github stb
- Quaternion rotation calculations - OpenGL tutorial
- Cathmull-Rom Splines - Microsoft MVP
- Frame buffers - OpenGL tutorial
- Rendering to textures - ThinMatrix youtube
- Frame buffers - Open.GL
The framebuffer OpenGL object is used as a container, and textures and renderbuffers can be attached to framebuffers. Renderbuffers are used over texture buffers when the intention is to render, and not to use the texture again for any further lookups.
Currently we are only dealing with directional lights, and as such, an ortographic projection can be used for the light.