This is an ocean scene rendering project I have been working on to learn OpenGL and create a framework I can use for other graphics programming projects.
- OpenGL interface
- Abstracted Model and Mesh system
- Custom .scene file for loading and managing Models
- Custom loading of .obj and .mtl
- Custom command line
- Text Rendering
- Textures
- CubeMaps
- Shaders
- FrameBuffers
- etc.
- PBR
- Blinn-Phong shading
- Environment reflections
- Cascading shadow maps
- Normal Mapping
- Fluid simulation
- Sum of sines method
- Central Difference normals
- Effects
- HDR Bloom
- Depth-based fog
- Specular mapping
- Schlick-Fresnel lighting/reflections
- Point Lights
- Frustum Culling
Command line is implemented. All commands can be found in the README along with the release, but the highlights are entity data editing, model loading, and scene loading and saving. Also made a few compatibility adjustments, and added a night scene which can be loaded with the command LOAD Scenes/night.scene
Text rendering finally. Lots of changes to things like shaders and file loading. Very close to my end goal for this project, a console where I can load in new models, create new entities, and modify entity data on the fly. I'm thinking about switching the current scene as well.
Some huge changes, although barely visible. Created a scene management system that contains Entities and Components which can be loaded in dynamically. Used this to standardize the rendering pipeline and subsequently add cascading shadow maps. Updated a few models as well to fit the upgraded shadows.
Normal mapping finally implemented, and some big behind the scenes changes to Materials, Textures, Models, and texture loading. Next to work on is scene management, text rendering, and debugging to standardize the rendering pipeline for future projects.
An orthographic render for fun.
Began implementing shadows through depth based approach in post-processing rather than typical fragment shader implementations.
First iteration of shadows
Made some changes to effects and a few QoL improvements. Changed model loading to support more vertices and objects.
Added CubeMaps and subsequently added a skybox. Improved fog and added reflections to the water. Improved model loading to deal with multiple materials per object. Changed project structure and added palm plant.
Model loading is more fleshed out now, can load base, specular, and emissive colors along with a base texture. Next to implement is the rest of Materials, including normal maps and others.
Began implementing Model loading. I couldn't get Assimp to build correctly at any point over the past entire day, so I'm making my own system. It currently only works with simple triangular meshes in .obj files, but I expect to expand it very soon.
A sample island exported from Blender rendered with the first iteration of the default shader:
More in-depth model loading and camera controls:
No major visual changes, but transition from direct use of Vertex Array Objects to a Mesh approach. Also standardized shader uniforms such as projection and view. About to begin development implementing Models and model loading.
Framebuffers implemented, Vertex Array Objects made more flexible, some adjustments to the effects. Textures also implemented but not heavily utilized yet. Indexed Arrays will need similar flexibility upgrades.
Implemented bloom for fun.
So far, I have implemented Vertex Array Objects, Shaders, and basic lighting. I'm currently working on Textures, Framebuffers, and reflections in hopes of creating a skybox and a better simulation.





















