The models/ directory containing 3D assets is not included in this repository due to copyright restrictions .
As a result, this project is provided for demonstration and academic purposes only and is not intended to be rebuilt or redistributed as-is .
Dynamic Lighting & Skybox
Day / Night / Dusk cycles with smooth transitions
Phong lighting model (ambient, diffuse, specular)
Point lights (lantern + fire flicker)
Cubemap skybox for environmental realism
Distance-based volumetric fog
Rain particle system with instancing
Shadow mapping from directional light
Atmospheric depth cues for large scenes
Animated floating lantern (scripted path)
Dynamic fire light flicker
Free-fly camera (WASD + mouse look)
Global scene rotation
Mountain terrain with grass and water
Vegetation (trees, bushes, firs)
House architecture (roof, porch, chimney)
Static vehicle placement
C++17
OpenGL 3.3+ (Core Profile)
GLSL shaders
GLFW – window & input
GLEW – OpenGL extensions
GLM – math utilities
stb_image – texture loading
tiny_obj_loader – .obj parsing
Key
Action
W, A, S, D
Move camera
Mouse
Look around
Q / E
Rotate scene
1 / 2 / 3
Day / Night / Dusk presets
4 / 5
Fog presets
G
Toggle fog
[ / ]
Adjust fog density
R
Toggle rain
L
Toggle lantern animation
F
Wireframe mode
ESC
Exit application
mountain-scene-opengl/
├── Project/
│ ├── main.cpp # Core application logic & main loop
│ ├── Window.h/cpp # GLFW window wrapper
│ ├── Shader.hpp/cpp # Shader loading & compilation
│ ├── Camera.hpp/cpp # Camera class (Euler angles)
│ ├── Mesh.hpp/cpp # Mesh data structure
│ ├── Model3D.hpp/cpp # Model loading & rendering
│ ├── SkyBox.hpp/cpp # Skybox implementation
│ ├── RainGenerator.hpp/cpp # Rain particle system
│ └── tiny_obj_loader.h # Model loader library
├── shaders/ # GLSL Shader files (.vert, .frag)
├── screenshots/ # Project screenshots
├── models/ # 3D Assets (Excluded from Git)
├── Project.sln # Visual Studio Solution
└── README.md # Documentation
OpenGL community & documentation
LearnOpenGL.com