Skip to content

Commit

Permalink
add assets
Browse files Browse the repository at this point in the history
  • Loading branch information
archibate committed Jul 8, 2023
1 parent a88d831 commit b56c4f6
Show file tree
Hide file tree
Showing 8 changed files with 10,411 additions and 68 deletions.
28 changes: 15 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

## 课程简介

你是否想要掌握计算机图形学的核心原理和技术?你是否想要利用现代OpenGL创建自己的3D游戏引擎?但又苦于没有简单易懂适合入门的中文教程?如果是,那么这门课程就是为你量身定制的! 在这门课程中,你将从基础知识开始,逐步深入探索图形渲染管线的各个阶段,学习如何使用OpenGL和GLSL进行高效的图形编程,实现各种真实感效果,如光照、纹理、阴影等。你还将动手搭建一个完整的3D游戏引擎框架,体验从模型导入、场景管理、相机控制到碰撞检测、动画系统等各个方面的设计和实现。通过这门课程,你将获得丰富的图形学理论和实践知识,为你未来的图形学创作和研究打下坚实的基础。 这门网络公开课每周六2点开始直播,每次约1小时,共12课,错过了也不要紧,每一期的录播都会上传到B站免费观看。
你是否想要掌握计算机图形学的核心原理和技术?你是否想要利用现代OpenGL创建自己的3D游戏引擎?但又苦于没有简单易懂适合入门的中文教程?如果是,那么这门课程就是为你量身定制的! 在这门课程中,你将从基础知识开始,逐步深入探索图形渲染管线的各个阶段,学习如何使用OpenGL和GLSL进行高效的图形编程,实现各种真实感效果,如光照、纹理、阴影等。你还将动手搭建一个完整的3D游戏引擎框架,体验从模型导入、场景管理、相机控制到碰撞检测、动画系统等各个方面的设计和实现。通过这门课程,你将获得丰富的图形学理论和实践知识,为你未来的图形学创作和研究打下坚实的基础。 这门网络公开课每周六2点开始直播,每次约1小时,共15课,错过了也不要紧,每一期的录播都会上传到B站免费观看。

目标:打造一款基于 OpenGL 的 3D 游戏引擎,开发出爆款开源游戏。

Expand All @@ -23,18 +23,20 @@
## 课程大纲

1. 从配置安装到画第一个三角形(BV1Na4y1c7tP)
1. 三维模型的加载与摄像机视角的控制(预计:7月1日)
1. GLSL 着色器语言与 PBR 光照模型
1. UV、法线与材质贴图的加载和使用
1. 离屏渲染与点选物体的实现
1. 高质量实时软阴影的实现
1. 环境光贴图与 IBL 烘培
1. 色调映射、延迟渲染、Blooming 与 TAA
1. 屏幕空间反射与 SDF 全局光照
1. 几何着色器:实例化与曲面细分
1. 骨骼动画与蒙皮:角色走路动画的实现
1. 地型的程序化生成与天空体积云的渲染
1. 用计算着色器做实时物理仿真
2. 重学线性代数矢量与矩阵(BV1ej411U7SW)
3. 三维模型的加载与相机控制
4. GLSL 着色器语言与 PBR 光照模型
5. UV、法线与材质贴图的加载和使用
6. 离屏渲染与点选物体的实现
7. 高质量实时软阴影的实现
8. 环境光贴图与 IBL 烘培
9. 色调映射、延迟渲染、Blooming 与 TAA
10. 屏幕空间反射与 SDF 全局光照
11. 几何着色器:实例化与曲面细分
12. 骨骼动画与蒙皮:角色走路动画的实现
13. 地型的程序化生成与天空体积云的渲染
14. 用计算着色器做实时物理仿真
15. 游戏引擎 ECS 架构的设计与实现

## 课程参考资源

Expand Down
Binary file added assets/container2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 50 additions & 0 deletions assets/perlin.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
vec3 perlin_hash22(vec3 p)
{
p = vec3( dot(p,vec3(127.1,311.7,284.4)),
dot(p,vec3(269.5,183.3,162.2)),
dot(p,vec3(228.3,164.9,126.0)));

return -1.0 + 2.0 * fract(sin(p)*43758.5453123);
}

float perlin_lev1(vec3 p)
{
vec3 pi = floor(p);
vec3 pf = p - pi;
vec3 w = pf * pf * (3.0 - 2.0 * pf);
return .08 + .8 * (mix(
mix(
mix(
dot(perlin_hash22(pi + vec3(0, 0, 0)), pf - vec3(0, 0, 0)),
dot(perlin_hash22(pi + vec3(1, 0, 0)), pf - vec3(1, 0, 0)),
w.x),
mix(
dot(perlin_hash22(pi + vec3(0, 1, 0)), pf - vec3(0, 1, 0)),
dot(perlin_hash22(pi + vec3(1, 1, 0)), pf - vec3(1, 1, 0)),
w.x),
w.y),
mix(
mix(
dot(perlin_hash22(pi + vec3(0, 0, 1)), pf - vec3(0, 0, 1)),
dot(perlin_hash22(pi + vec3(1, 0, 1)), pf - vec3(1, 0, 1)),
w.x),
mix(
dot(perlin_hash22(pi + vec3(0, 1, 1)), pf - vec3(0, 1, 1)),
dot(perlin_hash22(pi + vec3(1, 1, 1)), pf - vec3(1, 1, 1)),
w.x),
w.y),
w.z));
}

float perlin(float p,int n,vec3 a)
{
float total = 0;
for(int i=0; i<n; i++)
{
float frequency = pow(2,i);
float amplitude = pow(p,i);
total = total + perlin_lev1(a * frequency) * amplitude;
}

return total;
}
Binary file added assets/rock.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit b56c4f6

Please sign in to comment.