1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-23 04:35:28 +08:00

Update 02-07

This commit is contained in:
Meow J
2017-06-24 16:54:29 +08:00
parent 6294bd58e8
commit 82a1575c00
2 changed files with 18 additions and 26 deletions

View File

@@ -147,8 +147,6 @@ vec3 CalcPointLight(PointLight light, vec3 normal, vec3 fragPos, vec3 viewDir)
现在我们已经定义了一个计算定向光的函数和一个计算点光源的函数了,我们可以将它们合并放到<fun>main</fun>函数中。 现在我们已经定义了一个计算定向光的函数和一个计算点光源的函数了,我们可以将它们合并放到<fun>main</fun>函数中。
我们现在定义了用于计算平行光和点光源的函数,现在我们把这些代码放到一起,写入文开始的一般结构中:
```c++ ```c++
void main() void main()
{ {

View File

@@ -4,39 +4,33 @@
---|--- ---|---
作者 | JoeyDeVries 作者 | JoeyDeVries
翻译 | Meow J 翻译 | Meow J
校对 | [Geequlim](http://geequlim.com) 校对 | [Geequlim](http://geequlim.com), Meow J
恭喜您已经学习到了这个地方!辛苦啦!不知道你有没有注意到,总的来说我们在学习光照教程的时候学习的并不是OpenGL本身,当然我们仍然学习了一些细枝末节的知识(像访问uniform数组) 恭喜您已经学习到了这个地方!辛苦啦!不知道你有没有注意到,总的来说我们在学习光照教程的时候关于OpenGL本身并没有什么新东西除了想访问uniform数组这样细枝末节的知识。目前为止的所有教程都是关于使用一些技巧或者公式来操作着色器达到真实的光照效果。这再一次想你展示了着色器的威力。着色器是非常灵活的你也亲眼见证了我们仅仅使用一些3D向量和可配置的变量就能够创造出惊人的图像这一点
到现在的所有教程都是关于用一些技巧和公式来操作着色器从而达到真实的光照效果。这同样向你展示了着色器的威力 在前面的几个教程中,你学习了颜色、冯氏光照模型(包括环境光照、漫反射光照和镜面光照)、物体的材质、可配置的光照属性、漫反射和镜面光贴图、不同种类的光,并且学习了怎样将所有所学知识融会贯通,合并到一个程序当中。记得去实验一下不同的光照、材质颜色、光照属性,并且试着利用你无穷的创造力创建自己的环境
着色器是非常灵活的你也亲眼见证了我们仅仅使用一些3D向量和可配置的变量就能够创造出惊人的图形这一点 在[下一节](../03 Model Loading/01 Assimp.md)当中,我们在我们的场景当中加入更高级的形状,这些形状将会在我们之前讨论过的光照模型中非常好看
在你学过的最后几个教程中,你学习了有关颜色,冯氏光照模型(包括环境,漫反射,镜面反射光照),对象材质,可配置的光照属性,漫反射和镜面反射贴图,不同种类的光,并且学习了怎样将所有所学知识融会贯通。
记得去实验一下不同的光照,材质颜色,光照属性,并且试着利用你无穷的创造力创建自己的环境。
在[下一个教程](../03 Model Loading/01 Assimp.md)当中,我们将加入更高级的形状到我们的场景中,这些形状将会在我们之前讨论过的光照模型中非常好看。
## 词汇表 ## 词汇表
- **颜色向量(Color Vector)**:一个通过红绿蓝(RGB)分量的组合描绘大部分真实颜色的向量。一个对象的颜色实际上是该对象不能吸收的反射颜色分量。 - **颜色向量(Color Vector)**:一个通过红绿蓝(RGB)分量的组合描绘大部分真实颜色的向量。一个物体的颜色实际上是该物体所不能吸收的反射颜色分量。
- **冯氏光照模型(Phong Lighting Model)**:一个通过计算环境,漫反射,和镜面反射分量的值来估计真实光照的模型。 - **冯氏光照模型(Phong Lighting Model)**:一个通过计算环境,漫反射,和镜面分量的值来估计真实光照的模型。
- **环境光照(Ambient Lighting)**:通过给每个没有被光照的物体很小的亮度,使其不是完全黑暗的,从而对全局光照估计。 - **环境光照(Ambient Lighting)**:通过给每个没有被光照的物体很小的亮度,使其不是完全黑暗的,从而对全局光照进行估计。
- **漫反射着色(Diffuse Shading)**光照随着更多的顶点/片段排列在光源上变强。该方法使用了法向量来计算角度。 - **漫反射着色(Diffuse Shading)**一个顶点/片段与光线方向越接近,光照会越强。使用了法向量来计算角度。
- **法向量(Normal Vector)**:一个垂直于平面的单位向量。 - **法向量(Normal Vector)**:一个垂直于平面的单位向量。
- **正规矩阵(Normal Matrix)**一个3x3矩阵, 或者说是没有平移的模型(或者模型观察)矩阵。它也被以某种方式修改(逆转置)从而应用非统一缩放时保持法向量朝向正确的方向。否则法向量会在使用非统一缩放时失真 - **法线矩阵(Normal Matrix)**一个3x3矩阵或者说是没有平移的模型或者模型-观察矩阵。它也被以某种方式修改逆转置从而应用非统一缩放时保持法向量朝向正确的方向。否则法向量会在使用非统一缩放时被扭曲
- **镜面光照(Specular Lighting)**:当观察者视线靠近光源在表面的反射线时会显示的镜面高光。镜面光照是由观察者的方向,光源的方向和设定高光分散量的反光度值三个量共同决定的。 - **镜面光照(Specular Lighting)**:当观察者视线靠近光源在表面的反射线时会显示的镜面高光。镜面光照是由观察者的方向,光源的方向和设定高光分散量的反光度值三个量共同决定的。
- **冯氏着色(Phong Shading)**:冯氏光照模型应用在片段着色器。 - **冯氏着色(Phong Shading)**:冯氏光照模型应用在片段着色器。
- **高氏着色(Gouraud shading)**:冯氏光照模型应用在顶点着色器上。在使用很少数量的顶点时会产生明显的瑕疵。会得到效率提升但是损失了视觉质量。 - **Gouraud着色(Gouraud shading)**:冯氏光照模型应用在顶点着色器上。在使用很少数量的顶点时会产生明显的瑕疵。会得到效率提升但是损失了视觉质量。
- **GLSL结构体(GLSL struct)**一个类似于C的结构体用作着色器变量的容器。大部分时间用来管理输入/输出/uniform。 - **GLSL结构体(GLSL struct)**一个类似于C的结构体用作着色器变量的容器。大部分时间用来管理输入/输出/uniform。
- **材质(Material)**:一个物体反射的环境,漫反射,镜面反射光照。这些东西设定了物体的颜色。 - **材质(Material)**:一个物体反射的环境,漫反射,镜面光颜色。这些东西设定了物体所拥有的颜色。
- **光照(性质)(Light(properties))**:一个光的环境,漫反射,镜面反射的强度。可以用任何颜色值对每一个冯氏分量(Phong Component)定义一个光源闪烁的颜色/强度。 - **光照属性(Light(properties))**:一个光的环境,漫反射,镜面的强度。可以使用任何颜色值对每一个冯氏分量(Phong Component)定义光源发出的颜色/强度。
- **漫反射贴图(Diffuse Map)**:一个设定了每个片段中漫反射颜色的纹理图片。 - **漫反射贴图(Diffuse Map)**:一个设定了每个片段中漫反射颜色的纹理图片。
- **镜面贴图(Specular Map)**:一个设定了每一个片段的镜面强度/颜色的纹理贴图。仅在物体的特定区域允许镜面高光。 - **镜面贴图(Specular Map)**:一个设定了每一个片段的镜面强度/颜色的纹理贴图。仅在物体的特定区域显示镜面高光。
- **平行光(Directional Light)**:只有一个方向的光源。它被建模为不管距离有多长所有光束都是平行而且其方向向量在整个场景中保持不变。 - **定向光(Directional Light)**:只有一个方向的光源。它被建模为不管距离有多长所有光束都是平行而且其方向向量在整个场景中保持不变。
- **点光源(Point Light)**:一个场景中光线逐渐淡出的光源。 - **点光源(Point Light)**:一个场景中有位置的,光线逐渐衰减的光源。
- **衰减(Attenuation)**:光减少强度的过程,通常使用在点光源和聚光下。 - **衰减(Attenuation)**:光随着距离减少强度的过程,通常使用在点光源和聚光下。
- **聚光(Spotlight)**:一个被定义为在某一个方向上锥形的光源。 - **聚光(Spotlight)**:一个被定义为在某一个方向上锥形的光源。
- **手电筒(Flashlight)**:一个摆放在观察者视角的聚光。 - **手电筒(Flashlight)**:一个摆放在观察者视角的聚光。
- **GLSL uniform数组(GLSL Uniform Array)**一个uniform值数组。它的工作原理和C语言数组大致一样只是不能动态分配内存。 - **GLSL uniform数组(GLSL Uniform Array)**一个uniform值数组。它的工作原理和C语言数组大致一样只是不能动态分配内存。