Skip to content

dylan-berndt/Island

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Island Demo

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.

Features

  • 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

To-do

  • Specular mapping
  • Schlick-Fresnel lighting/reflections
  • Point Lights
  • Frustum Culling

2/10/24

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

ezgif-3-37eacf1cf7 ezgif-3-d2f0349af4 Screenshot (70)

2/6/24

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.

Screenshot (268) Screenshot (269)

1/29/24

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.

ezgif-2-1cd16923caezgif-2-248a945794 ezgif-2-68877d0690

1/17/24

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.

ezgif-4-2a72554f60

An orthographic render for fun.

ezgif-7-2594a46554

1/13/24

Began implementing shadows through depth based approach in post-processing rather than typical fragment shader implementations.

ezgif-5-c1bffe9675

First iteration of shadows

ezgif-7-681bad78c9

1/12/24

Made some changes to effects and a few QoL improvements. Changed model loading to support more vertices and objects.

ezgif-7-96244a467b

1/11/24

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.

ezgif-1-7165957ce5

1/6/24

ezgif-4-c6e04d1e42

1/5/24

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.

ezgif-3-6a1c98eb79

1/4/24

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:

Screenshot (263) Screenshot (264)

More in-depth model loading and camera controls:

ezgif com-video-to-gif-converter

1/3/24

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.

12/29/23

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.

ezgif-1-7a5e82feab

Implemented bloom for fun.

ezgif-5-405160b07d

12/28/23

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.

Screenshot (262)

About

Simple OpenGL demo to render an ocean scene with several effects

Resources

Stars

Watchers

Forks

Packages

No packages published