Skip to content

Commit b56c4f6

Browse files
committed
add assets
1 parent a88d831 commit b56c4f6

File tree

8 files changed

+10411
-68
lines changed

8 files changed

+10411
-68
lines changed

README.md

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
## 课程简介
1010

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

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

@@ -23,18 +23,20 @@
2323
## 课程大纲
2424

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

3941
## 课程参考资源
4042

assets/container2.png

457 KB
Loading

assets/perlin.glsl

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
vec3 perlin_hash22(vec3 p)
2+
{
3+
p = vec3( dot(p,vec3(127.1,311.7,284.4)),
4+
dot(p,vec3(269.5,183.3,162.2)),
5+
dot(p,vec3(228.3,164.9,126.0)));
6+
7+
return -1.0 + 2.0 * fract(sin(p)*43758.5453123);
8+
}
9+
10+
float perlin_lev1(vec3 p)
11+
{
12+
vec3 pi = floor(p);
13+
vec3 pf = p - pi;
14+
vec3 w = pf * pf * (3.0 - 2.0 * pf);
15+
return .08 + .8 * (mix(
16+
mix(
17+
mix(
18+
dot(perlin_hash22(pi + vec3(0, 0, 0)), pf - vec3(0, 0, 0)),
19+
dot(perlin_hash22(pi + vec3(1, 0, 0)), pf - vec3(1, 0, 0)),
20+
w.x),
21+
mix(
22+
dot(perlin_hash22(pi + vec3(0, 1, 0)), pf - vec3(0, 1, 0)),
23+
dot(perlin_hash22(pi + vec3(1, 1, 0)), pf - vec3(1, 1, 0)),
24+
w.x),
25+
w.y),
26+
mix(
27+
mix(
28+
dot(perlin_hash22(pi + vec3(0, 0, 1)), pf - vec3(0, 0, 1)),
29+
dot(perlin_hash22(pi + vec3(1, 0, 1)), pf - vec3(1, 0, 1)),
30+
w.x),
31+
mix(
32+
dot(perlin_hash22(pi + vec3(0, 1, 1)), pf - vec3(0, 1, 1)),
33+
dot(perlin_hash22(pi + vec3(1, 1, 1)), pf - vec3(1, 1, 1)),
34+
w.x),
35+
w.y),
36+
w.z));
37+
}
38+
39+
float perlin(float p,int n,vec3 a)
40+
{
41+
float total = 0;
42+
for(int i=0; i<n; i++)
43+
{
44+
float frequency = pow(2,i);
45+
float amplitude = pow(p,i);
46+
total = total + perlin_lev1(a * frequency) * amplitude;
47+
}
48+
49+
return total;
50+
}

assets/rock.png

629 KB
Loading

0 commit comments

Comments
 (0)