Repository navigation
Releases: sheeepsoup/OpenGL-ocean
Releases · sheeepsoup/OpenGL-ocean
Release list
V0.0.1-release
🚀 OpenGL Ocean · V0.0.1 Release
📦 首个正式版本发布 | 发布日期:2026-07-03
📢 发布概述
V0.0.1 是 OpenGL Ocean 项目的首个公开版本,实现了基于 OpenGL 3.3 的实时海洋渲染引擎。
本版本聚焦于基础渲染管线搭建与波浪物理模拟,提供可交互的自由视角漫游体验。
✨ 版本亮点
| 特性 | 说明 |
|---|---|
| 🌊 Ray Marching 波浪 | 多层正弦波叠加 + 高斯权重衰减,动态水面高度场 |
| 🌅 立方体贴图天空盒 | 六面全景贴图,无缝环境反射 |
| 💡 三光源系统 | 方向光 + 点光源 + 聚光灯,可切换/混合 |
| 🎨 PBR 风格材质 | 漫反射贴图 + 镜面反射贴图 + 高光系数 |
| 🎥 自由飞行相机 | WASD 位移 + 鼠标欧拉角视角 + 滚轮缩放 |
| 🔊 环境音效 | 海浪/雨声循环播放(SDL2_mixer) |
| 🖼️ 多着色器切换 | 水面 / 平面 / 雨效 三套 GLSL 程序 |
🎯 已实现功能
渲染管线
- 顶点缓冲对象(VBO)+ 顶点数组对象(VAO)+ 元素缓冲(EBO)
- 着色器封装类(
Shader.cpp):自动编译 + 错误检查 - 矩阵变换:模型 / 视图 / 投影(MVP)
- 面剔除 + 深度测试 + 混合
水面着色器核心(water.frag)
- 波浪生成算法:
getwaves()迭代叠加正弦波 - Ray Marching 步进:
MAX_STEP = 128,ITERATIONS_RAYMARCH = 12 - 法线计算:
ITERATIONS_NORMAL = 36次迭代求数值微分 - 拖拽系数:
DRAG_MULT = 0.38控制波峰波谷过渡
相机系统
- 位置 / 俯仰角 / 偏航角 分离存储
- 鼠标输入灵敏度调节
- 光标锁定 / 自由模式切换(ESC)
🎮 运行方式
直接运行(推荐)
双击 Main.exe
系统要求
| 项目 | 最低配置 |
|---|---|
| 操作系统 | Windows 7 / 10 / 11 |
| OpenGL 版本 | ≥ 3.3 Core Profile |
| 内存 | ≥ 256 MB |
| 硬盘空间 | ≥ 20 MB |
| 音频设备 | 可选(用于环境音效) |
按键操作速查
| 按键 | 动作 |
|---|---|
W / ↑ |
向前移动 |
S / ↓ |
向后移动 |
A / ← |
向左平移 |
D / → |
向右平移 |
鼠标 |
旋转视角 |
ESC |
释放鼠标 / 退出程序 |
B |
切换物体 |
N |
切换场景 |
📁 发布文件清单
V0.0.1-release/
├── Main.exe # 主程序(Windows x86)
├── README.md # 项目说明
├── LICENSE # MIT 授权文件
├── 源.cpp # 主程序源码
├── *.cpp / *.h # 引擎模块源码
├── *.vert / *.frag # GLSL 着色器
├── bin/ # 运行时资源
│ ├── Sea/ # 海浪纹理 (noise.png, w.jpg)
│ │ └── sea.mp3, rain.mp3 # 环境音效
│ ├── universSky/ # 天空盒六面图
│ │ ├── front/back/left/right/top/bottom.jpg
│ ├── noise/ # 噪声纹理
│ └── *.dll # 运行时库 (GLFW / SDL2 / GLEW)
└── view/ # 宣传图片
├── 1.png # 海浪与天空盒
├── 2.png # 光照渲染
└── 3.png # 自由视角
🐛 已知限制
| 问题 | 说明 | 计划修复版本 |
|---|---|---|
当前为 800×600,需手动修改 water.frag 中 iResolution |
V0.0.2 | |
| 使用 Visual C++ 编译,附带 MSVC 运行库 | V0.1.0 | |
| 全部操作通过键盘 / 鼠标完成 | V0.1.0 | |
| 帧率受硬件影响波动较大 | V0.0.2 |
🔗 相关链接
📄 License
本版本遵循 MIT License,详见根目录下的 LICENSE 文件。
💡 后续版本预告:V0.0.2 将加入可调分辨率、帧率限制、FPS 显示面板;V0.1.0 计划跨平台支持(CMake + Linux/macOS)。