From 4613f3e63c7f3bf9b93c97536f2fd143073bd29c Mon Sep 17 00:00:00 2001 From: Meow J Date: Mon, 10 Aug 2015 20:39:25 +0800 Subject: [PATCH] 02-04 + Some tweaks to titles --- 01 Getting started/04 Hello Triangle.md | 2 +- 01 Getting started/05 Shaders.md | 2 +- 01 Getting started/08 Coordinate Systems.md | 2 +- 02 Lighting/03 Materials.md | 50 ++++++++++---------- 02 Lighting/07 Review.md | 52 ++++++++++----------- 03 Model Loading/01 Assimp.md | 2 +- 03 Model Loading/02 Mesh.md | 2 +- 04 Advanced OpenGL/06 Cubemaps.md | 2 +- 04 Advanced OpenGL/11 Anti Aliasing.md | 6 ++- mkdocs.yml | 10 ++-- 10 files changed, 66 insertions(+), 64 deletions(-) diff --git a/01 Getting started/04 Hello Triangle.md b/01 Getting started/04 Hello Triangle.md index dc8e6d4..94f6501 100644 --- a/01 Getting started/04 Hello Triangle.md +++ b/01 Getting started/04 Hello Triangle.md @@ -1,4 +1,4 @@ -# 你好三角形 +# 你好,三角形 原文 | [Creating a window](http://www.learnopengl.com/#!Getting-started/Hello-Triangle) ---|--- diff --git a/01 Getting started/05 Shaders.md b/01 Getting started/05 Shaders.md index d92956d..e44c991 100644 --- a/01 Getting started/05 Shaders.md +++ b/01 Getting started/05 Shaders.md @@ -1,4 +1,4 @@ -# 着色器(Shaders) +# 着色器(Shader) 原文 | [Shaders](http://learnopengl.com/#!Getting-started/Shaders) ---|--- diff --git a/01 Getting started/08 Coordinate Systems.md b/01 Getting started/08 Coordinate Systems.md index c7d1c7c..e6cfbf9 100644 --- a/01 Getting started/08 Coordinate Systems.md +++ b/01 Getting started/08 Coordinate Systems.md @@ -1,4 +1,4 @@ -# 坐标系统(Coordinate Systems) +# 坐标系统(Coordinate System) // TODO 翻译太生硬,可能还要重写。并且可能还有漏掉的地方。 // 简单说下问题,供再次校对的时候参考: diff --git a/02 Lighting/03 Materials.md b/02 Lighting/03 Materials.md index 4cf590d..d7afe1e 100644 --- a/02 Lighting/03 Materials.md +++ b/02 Lighting/03 Materials.md @@ -1,4 +1,4 @@ -# 材质 +# 材质(Material) 原文 | [Materials](http://learnopengl.com/#!Lighting/Materials) ---|--- @@ -6,9 +6,9 @@ 翻译 | [Django](http://bullteacher.com/) 校对 | [Geequlim](http://geequlim.com) -在真实世界里,每个物体会对光产生不同的作用,钢看起来比陶瓷花瓶更闪闪发光。比如一块木头不会和钢一样对光做出相同反光,每个物体对镜面高光也有不同的反应。有些物体不会散射很多光却会反射很多光,结果看起来就有一个较小的高光点,其他物体散射的更多,就会产生一个半径更大的高光。如果我们想要在OpenGL中模拟几种类型的物体,我们必须为每个物体定义材质属性。 +在真实世界里,每个物体会对光产生不同的反应。钢看起来比陶瓷花瓶更闪闪发光,一个木头箱子不会像钢箱子一样对光产生很强的反射。每个物体对镜面高光也有不同的反应。有些物体不会散射(Scatter)很多光却会反射(Reflect)很多光,结果看起来就有一个较小的高光点(Highlight),有些物体散射了很多,它们就会产生一个半径更大的高光。如果我们想要在OpenGL中模拟多种类型的物体,我们必须为每个物体分别定义材质(Material)属性。 -在前面的教程中,我们指定一个物体和一个光的颜色来定义物体的图像输出,并使之结合ambient和specular亮度元素。当描述物体的时候,我们可以使用3种光照元素:环境光(ambient)、散射光(diffuse)、镜面光(specular)定义一个材质颜色。通过为每个元素指定一个颜色,我们已经对物体的颜色输出有了精密的控制。现在把一个镜面高亮元素添加到这三个颜色里,这是我们需要的所有材质属性: +在前面的教程中,我们指定一个物体和一个光的颜色来定义物体的图像输出,并使之结合环境(Ambient)和镜面强度(Specular Intensity)元素。当描述物体的时候,我们可以使用3种光照元素:环境光照(Ambient Lighting)、漫反射光照(Diffuse Lighting)、镜面光照(Specular Lighting)定义一个材质颜色。通过为每个元素指定一个颜色,我们已经对物体的颜色输出有了精密的控制。现在把一个镜面高光元素添加到这三个颜色里,这是我们需要的所有材质属性: ```c++ #version 330 core @@ -22,17 +22,17 @@ struct Material uniform Material material; ``` -在片段着色器中,我们创建一个结构体,来储存物体的材质属性。我们也可以把它们储存为独立的uniform值,但是作为一个结构体来储存可以更有条理。我们首先定义结构体的布局,然后简单声明一个uniform变量,以新创建的结构体作为它的类型。 +在片段着色器中,我们创建一个结构体(Struct),来储存物体的材质属性。我们也可以把它们储存为独立的uniform值,但是作为一个结构体来储存可以更有条理。我们首先定义结构体的布局,然后简单声明一个uniform变量,以新创建的结构体作为它的类型。 -就像你所看到的,我们为每个冯氏光照模型的元素都定义一个颜色向量。`ambient`材质向量定义了在环境光照下这个物体反射的是什么颜色;通常这是和物体颜色相同的颜色。`diffuse`材质向量定义了在散射光照下物体的颜色。`diffuse`颜色被设置为(和环境光照一样)物体要求的颜色。`specular`材质向量设置的是物体受到的镜面光的影响的颜色(或者可能是反射一个物体特定的镜面高光颜色)。最后,`shininess`影响镜面高光的半径。 +就像你所看到的,我们为每个冯氏光照模型的元素都定义一个颜色向量。`ambient`材质向量定义了在环境光照下这个物体反射的是什么颜色;通常这是和物体颜色相同的颜色。`diffuse`材质向量定义了在漫反射光照照下物体的颜色。漫反射颜色被设置为(和环境光照一样)我们需要的物体颜色。`specular`材质向量设置的是物体受到的镜面光照的影响的颜色(或者可能是反射一个物体特定的镜面高光颜色)。最后,`shininess`影响镜面高光的散射/半径。 这四个元素定义了一个物体的材质,通过它们我们能够模拟很多真实世界的材质。这里有一个列表[devernay.free.fr](http://devernay.free.fr/cours/opengl/materials.html)展示了几种材质属性,这些材质属性模拟外部世界的真实材质。下面的图片展示了几种真实世界材质对我们的立方体的影响: ![](http://www.learnopengl.com/img/lighting/materials_real_world.png) -就像你所看到的,正确的指定一个物体的材质属性,似乎就是改变我们物体的相关属性的比例。效果显然很引人注目,但是对于大多数真实效果,我们最终需要更加复杂的形状,而不单单是一个立方体。在下面教程部分里,我们会讨论更复杂的形状。 +如你所见,正确地指定一个物体的材质属性,似乎就是改变我们物体的相关属性的比例。效果显然很引人注目,但是对于大多数真实效果,我们最终需要更加复杂的形状,而不单单是一个立方体。在[下面的教程](http://learnopengl-cn.readthedocs.org/zh/latest/03%20Model%20Loading/01%20Assimp/)中,我们会讨论更复杂的形状。 -为一个物体赋予正确的材质是一件高难的手艺,这需要大量实验和丰富的经验,所以由于错误的设置材质而毁了物体的画面质量是件经常发生的事。 +为一个物体赋予一款正确的材质是非常困难的,这需要大量实验和丰富的经验,所以由于错误的设置材质而毁了物体的画面质量是件经常发生的事。 让我们试试在着色器中实现这样的一个材质系统。 @@ -64,9 +64,9 @@ void main() } ``` -就像你所看到的,我么现在获得所有材质结构体的属性,无论在哪儿我们都需要它们,这次通过材质颜色的帮助,计算结果输出的颜色。物体的每个材质属性都乘以它们对应的光照元素。 +你可以看到,我们现在获得所有材质结构体的属性,无论在哪儿我们都需要它们,这次通过材质颜色的帮助,计算结果输出的颜色。物体的每个材质属性都乘以它们对应的光照元素。 -通过设置适当的uniform,我们可以在应用中设置物体的材质。当设置uniform时,在GLSL中的一个结构体不会被认为有什么特别之处。一个结构体值扮演uniform变量的封装体,所以如果我们希望填充这个结构体,我们就仍然必须设置结构体中的各个元素的uniform值,但是这次带有结构体名字作为前缀: +通过设置适当的uniform,我们可以在应用中设置物体的材质。当设置uniform时,GLSL中的一个结构体并不会被认为有什么特别之处。一个结构体值扮演uniform变量的封装体,所以如果我们希望填充这个结构体,我们就仍然必须设置结构体中的各个元素的uniform值,但是这次带有结构体名字作为前缀: ```c++ GLint matAmbientLoc = glGetUniformLocation(lightingShader.Program, "material.ambient"); @@ -80,18 +80,18 @@ glUniform3f(matSpecularLoc, 0.5f, 0.5f, 0.5f); glUniform1f(matShineLoc, 32.0f); ``` -我们为`ambient`和`diffuse`元素设置成我们喜欢物体所呈现的颜色,设置物体的`specular`元素为中等亮度颜色;我们不希望`specular`元素对这个指定物体产生过于强烈的影响。我们同样保持光亮为32。我们现在可以简单的在应用中影响物体的材质。 +我们将`ambient`和`diffuse`元素设置成我们想要让物体所呈现的颜色,设置物体的`specular`元素为中等亮度颜色;我们不希望`specular`元素对这个指定物体产生过于强烈的影响。我们同样设置`shininess`为32。我们现在可以简单的在应用中影响物体的材质。 运行程序,会得到下面这样的结果: ![](http://www.learnopengl.com/img/lighting/materials_with_material.png) -看起来真不怎么样对吗? +看起来很奇怪不是吗? -## 光的属性 +### 光的属性 -这个物体太亮了。物体过亮的原因是ambient、diffuse和specular颜色被从任何一个光源全力地反射。光源对ambient、diffuse和specular元素同时有着不同的亮度。前面的教程,我们通过使用一个强度值改变ambient和specular亮度的方式,解决了这个问题,但是这次为每个光照元素指定了亮度向量。如果我们想象lightColor是vec3(1.0),代码看起来像是这样: +这个物体太亮了。物体过亮的原因是环境、漫反射和镜面三个颜色任何一个光源都会去全力反射。光源对环境、漫反射和镜面元素同时具有不同的强度。前面的教程,我们通过使用一个强度值改变环境和镜面强度的方式解决了这个问题。我们想做一个相同的系统,但是这次为每个光照元素指定了强度向量。如果我们想象`lightColor`是`vec3(1.0)`,代码看起来像是这样: ```c++ vec3 ambient = vec3(1.0f) * material.ambient; @@ -99,13 +99,13 @@ vec3 diffuse = vec3(1.0f) * (diff * material.diffuse); vec3 specular = vec3(1.0f) * (spec * material.specular); ``` -所以物体的每个材质属性返回了每个光照元素的全亮度。这些vec3(1.0)值可以各自独立的影响每个光源,这通常就是我们想要的。现在物体的`ambient`元素完全地展示了立方体的颜色,可是`ambient`元素不应该对最终颜色有这么大的影响,所以我们要通过设置光的`ambient`亮度为一个小一点的值的方式,限制ambient颜色: +所以物体的每个材质属性返回了每个光照元素的全强度。这些vec3(1.0)值可以各自独立的影响各个光源,这通常就是我们想要的。现在物体的`ambient`元素完全地展示了立方体的颜色,可是环境元素不应该对最终颜色有这么大的影响,所以我们要设置光的`ambient`亮度为一个小一点的值,从而限制环境色: ```c++ vec3 result = vec3(0.1f) * material.ambient; ``` -我们可以用同样的方式影响光源的`diffuse`和`specular`亮度。这和我们前面教程所做的极为相似;你可以说我们已经创建了一些光的属性各自独立地来影响每个光照元素。我们希望为光的属性创建一些与材质结构体相似的东西: +我们可以用同样的方式影响光源`diffuse`和`specular`的强度。这和我们[前面教程](http://learnopengl-cn.readthedocs.org/zh/latest/02%20Lighting/02%20Basic%20Lighting/)所做的极为相似;你可以说我们已经创建了一些光的属性来各自独立地影响每个光照元素。我们希望为光的属性创建一些与材质结构体相似的东西: ```c++ struct Light @@ -118,7 +118,7 @@ struct Light uniform Light light; ``` -一个光源的`ambient`、`diffuse`和`specular`光都有不同的亮度。`ambient`光通常设置为一个比较低的亮度,因为我们不希望`ambient`颜色成为主导。光源的`diffuse`元素通常设置为我们希望光所具有的颜色;经常是一个明亮的白色。`specular`元素通常设置为`vec3(1.0f)`的全亮度的发光度。要记住的是我们同样把光的位置添加到结构体中。 +一个光源的`ambient`、`diffuse`和`specular`光都有不同的亮度。环境光通常设置为一个比较低的亮度,因为我们不希望环境色太过显眼。光源的`diffuse`元素通常设置为我们希望光所具有的颜色;经常是一个明亮的白色。`specular`元素通常被设置为`vec3(1.0f)`类型的全强度发光。要记住的是我们同样把光的位置添加到结构体中。 就像材质uniform一样,需要更新片段着色器: @@ -136,27 +136,27 @@ GLint lightDiffuseLoc = glGetUniformLocation(lightingShader.Program, "light.diff GLint lightSpecularLoc = glGetUniformLocation(lightingShader.Program, "light.specular"); glUniform3f(lightAmbientLoc, 0.2f, 0.2f, 0.2f); -glUniform3f(lightDiffuseLoc, 0.5f, 0.5f, 0.5f); +glUniform3f(lightDiffuseLoc, 0.5f, 0.5f, 0.5f);// 让我们把这个光调暗一点,这样会看起来更自然 glUniform3f(lightSpecularLoc, 1.0f, 1.0f, 1.0f); ``` -现在,我们调整了光如何影响物体所有的材质的,我们得到一个更像前面教程的视觉输出。这次我们完全控制了物体光照和材质: +现在,我们调整了光是如何影响物体所有的材质的,我们得到一个更像前面教程的视觉输出。这次我们完全控制了物体光照和材质: ![](http://www.learnopengl.com/img/lighting/materials_light.png) 现在改变物体的外观相对简单了些。我们做点更有趣的事! -## 不同的光源颜色 +### 不同的光源颜色 -目前为止,我们只是使用光的颜色去改变它们的独立元素,选择的是从白到灰到黑范围的颜色,不是动感的物体的真实颜色(只是亮度)。由于我们现在简单的取得了光的属性,我们可以随着时间改变它们的颜色,获得的效果有很意思。由于每件事都已经在片段着色器做好了,改变光的颜色很简单,可以立即创建出一些有趣的效果: +目前为止,我们使用光源的颜色仅仅去改变物体各个元素的强度(通过选用从白到灰到黑范围内的颜色),并没有影响物体的真实颜色(只是强度)。由于现在能够非常容易地访问光的属性了,我们可以随着时间改变它们的颜色来获得一些有很意思的效果。由于所有东西都已经在片段着色器做好了,改变光的颜色很简单,我们可以立即创建出一些有趣的效果: -就像你所看见的,不同的光的颜色极大地影响了物体的颜色输出。由于光的颜色直接影响物体反射的颜色(你可能想起在颜色教程中有讨论过),它对视觉输出有显著的影响。 +如你所见,不同光的颜色极大地影响了物体的颜色输出。由于光的颜色直接影响物体反射的颜色(你可能想起在颜色教程中有讨论过),它对视觉输出有显著的影响。 -利用`sin`和`glfwGetTime`,改变光的`ambient`和`diffus`e颜色,我们可以随着时间流逝简单的改变光源颜色: +利用`sin`和`glfwGetTime`改变光的环境和漫反射颜色,我们可以随着时间流逝简单的改变光源颜色: ```c++ glm::vec3 lightColor; lightColor.x = sin(glfwGetTime() * 2.0f); @@ -170,9 +170,9 @@ glUniform3f(lightAmbientLoc, ambientColor.x, ambientColor.y, ambientColor.z); glUniform3f(lightDiffuseLoc, diffuseColor.x, diffuseColor.y, diffuseColor.z); ``` -尝试和实验使用这些光照和材质值,看看它们怎样影响图像输出的。你可以从这里找到[应用的源代码](http://learnopengl.com/code_viewer.php?code=lighting/materials),[片段着色器](http://learnopengl.com/code_viewer.php?code=lighting/materials&type=fragment)的源码。 +尝试和实验使用这些光照和材质值,看看它们怎样影响图像输出的。你可以从这里找到[程序的源码](http://learnopengl.com/code_viewer.php?code=lighting/materials),[片段着色器](http://learnopengl.com/code_viewer.php?code=lighting/materials&type=fragment)的源码。 ## 练习 -你能像我们教程一开始那样根据一些材质的属性来模拟一个真实世界的物体吗? -注意[材质表](http://devernay.free.fr/cours/opengl/materials.html)中的环境光颜色与漫反射光的颜色可能不一样,因为他们并没有把光照强度考虑进去来模拟,你需要将光照颜色的强度改为vec(1.0f)来输出正确的结果:[解决方案,一个蓝绿色的塑料盒子](http://learnopengl.com/code_viewer.php?code=lighting/materials-exercise1) +- 你能像我们教程一开始那样根据一些材质的属性来模拟一个真实世界的物体吗? +注意[材质表](http://devernay.free.fr/cours/opengl/materials.html)中的环境光颜色与漫反射光的颜色可能不一样,因为他们并没有把光照强度考虑进去来模拟,你需要将光照颜色的强度改为`vec(1.0f)`来输出正确的结果:[参考解答](http://learnopengl.com/code_viewer.php?code=lighting/materials-exercise1),我做了一个青色(Cyan)的塑料箱子 diff --git a/02 Lighting/07 Review.md b/02 Lighting/07 Review.md index e1172e6..600dbbe 100644 --- a/02 Lighting/07 Review.md +++ b/02 Lighting/07 Review.md @@ -6,38 +6,38 @@ 翻译 | Meow J 校对 | [Geequlim](http://geequlim.com) -恭喜您已经学到了这个地方!不知道你有没有注意到,总体来说我们在学习光照教程的时候学习的除了一些细节(像访问uniform数组)并不是OpenGL本身。 +恭喜您已经学习到了这个地方!辛苦啦!不知道你有没有注意到,总的来说我们在学习光照教程的时候学习的并不是OpenGL本身,当然我们仍然学习了一些细枝末节的知识(像访问uniform数组)。 -到现在的所有教程都是关于用一些技巧和公式来操作着色器从而达到真实的光照效果。 这同样向你展示了着色器的威力。 +到现在的所有教程都是关于用一些技巧和公式来操作着色器从而达到真实的光照效果。这同样向你展示了着色器的威力。 -着色器是非常灵活的,你也亲眼见证了仅仅使用一些3D向量和可配置的变量就能够创造出惊人的图形这一点。 +着色器是非常灵活的,你也亲眼见证了我们仅仅使用一些3D向量和可配置的变量就能够创造出惊人的图形这一点。 -在你学过的最后几个教程中,你学习了有关颜色,冯氏光照模型(包括环境,漫反射,镜面反射光照),对象材质,可配置的光照属性,漫反射和镜面反射贴图,不同种类的光,并且学习了怎样将所有所学知识融合到单独的一个程序里面。 +在你学过的最后几个教程中,你学习了有关颜色,冯氏光照模型(包括环境,漫反射,镜面反射光照),对象材质,可配置的光照属性,漫反射和镜面反射贴图,不同种类的光,并且学习了怎样将所有所学知识融会贯通。 -记得去实验不同的光照,材质颜色,光照属性,并且试着使用创造力创建自己的环境。 +记得去实验一下不同的光照,材质颜色,光照属性,并且试着利用你无穷的创造力创建自己的环境。 -在[下一个教程](http://learnopengl-cn.readthedocs.org/zh/latest/03%20Model%20Loading/01%20Assimp/)当中,我们将加入更高级的形状到我们的场景中,这些形状将会在我们讨论过的光照模型中非常好看。 +在[下一个教程](http://learnopengl-cn.readthedocs.org/zh/latest/03%20Model%20Loading/01%20Assimp/)当中,我们将加入更高级的形状到我们的场景中,这些形状将会在我们之前讨论过的光照模型中非常好看。 词汇表 -------- -- **颜色向量(Color Vector)**: 一个通过红绿蓝(RGB)分量的组合描绘大部分真实颜色的向量. 一个对象的颜色实际上是该对象不能吸收的反射颜色分量. -- **冯氏光照模型(Phong Lighting Model)**: 一个通过计算环境,漫反射,和镜面反射分量的值来估计真实光照的模型. -- **环境光照(Ambient Lighting)**: 通过给每个没有被光照的物体很小的亮度,使其不是完全黑暗的,从而对全局光照的估计. -- **漫反射着色法(Diffuse Shading)**: 光照随着更多的顶点/片段排列在光源上变强. 该方法使用了法向量来计算角度. -- **法向量(Normal Vector)**: 一个垂直于平面的单位向量. -- **正规矩阵(Normal Matrix)**: 一个3x3矩阵, 或者说是没有平移的模型(或者模型观察)矩阵.它也被以某种方式修改(逆转置)从而当应用非统一缩放时保持法向量朝向正确的方向. 否则法向量会在使用非统一缩放时失真. -- **镜面光照(Specular Lighting)**: (sets a specular highlight the closer the viewer is looking at the reflection of a light source on a surface.待翻译). 根据观察者的方向,光源的方向和设置了高光分散量的反光度值. -- **冯氏着色法(Phong Shading)**: 冯氏光照模型应用在片段着色器. -- **高氏着色法(Gouraud shading)**: 冯氏光照模型应用在顶点着色器上. 在使用很少树木的顶点时会产生明显的瑕疵. 会得到效率提升但是损失了视觉质量. -- **GLSL结构体(GLSL struct)**: 一个类似于C的结构体,用作着色器变量的容器. 大部分时间用来管理输入/输出/uniform. -- **材质(Material)**: 一个物体反射的环境,漫反射,镜面反射光照. 这些东西设定了物体的颜色. -- **光照(性质)(Light(properties)**: 一个光的环境,漫反射,镜面反射的强度. 可以应用任何颜色值并对每一个冯氏分量(Phong Component)都定义一个光源闪烁的颜色/强度. -- **漫反射贴图(Diffuse Map)**: 一个设定了每个片段中漫反射颜色的纹理图片. -- **镜面贴图(Specular Map)**: 一个设定了每一个片段的镜面强度/颜色的纹理贴图. 仅在物体的特定区域允许镜面高光. -- **平行光(Directional Light)**: 只有一个方向的光源. 它被建模为不管距离有多长所有光束都是平行而且其方向向量在整个场景中保持不变. -- **点光源(Point Light)**: 一个场景中光线逐渐淡出的光源. -- **衰减(Attenuation)**: 光减少强度的过程,通常使用在点光源和聚光下. -- **聚光(Spotlight)**: 一个被定义为在某一个方向上锥形的光源. -- **手电筒(Flashlight)**: 一个摆放在观察者视角的聚光. -- **GLSL uniform数组(GLSL uniform array)**: 一个数组的uniform值. 就像C语言数组一样工作,只是不能被动态调用. \ No newline at end of file +- **颜色向量(Color Vector)**:一个通过红绿蓝(RGB)分量的组合描绘大部分真实颜色的向量. 一个对象的颜色实际上是该对象不能吸收的反射颜色分量。 +- **冯氏光照模型(Phong Lighting Model)**:一个通过计算环境,漫反射,和镜面反射分量的值来估计真实光照的模型。 +- **环境光照(Ambient Lighting)**:通过给每个没有被光照的物体很小的亮度,使其不是完全黑暗的,从而对全局光照的估计。 +- **漫反射着色法(Diffuse Shading)**:光照随着更多的顶点/片段排列在光源上变强. 该方法使用了法向量来计算角度。 +- **法向量(Normal Vector)**:一个垂直于平面的单位向量。 +- **正规矩阵(Normal Matrix)**:一个3x3矩阵, 或者说是没有平移的模型(或者模型观察)矩阵.它也被以某种方式修改(逆转置)从而当应用非统一缩放时保持法向量朝向正确的方向. 否则法向量会在使用非统一缩放时失真。 +- **镜面光照(Specular Lighting)**:(sets a specular highlight the closer the viewer is looking at the reflection of a light source on a surface.待翻译). 镜面光照是由观察者的方向,光源的方向和设定高光分散量的反光度值三个量共同决定的。 +- **冯氏着色法(Phong Shading)**:冯氏光照模型应用在片段着色器。 +- **高氏着色法(Gouraud shading)**:冯氏光照模型应用在顶点着色器上. 在使用很少树木的顶点时会产生明显的瑕疵. 会得到效率提升但是损失了视觉质量。 +- **GLSL结构体(GLSL struct)**:一个类似于C的结构体,用作着色器变量的容器. 大部分时间用来管理输入/输出/uniform。 +- **材质(Material)**:一个物体反射的环境,漫反射,镜面反射光照. 这些东西设定了物体的颜色。 +- **光照(性质)(Light(properties)**:一个光的环境,漫反射,镜面反射的强度. 可以应用任何颜色值并对每一个冯氏分量(Phong Component)都定义一个光源闪烁的颜色/强度。 +- **漫反射贴图(Diffuse Map)**:一个设定了每个片段中漫反射颜色的纹理图片。 +- **镜面贴图(Specular Map)**:一个设定了每一个片段的镜面强度/颜色的纹理贴图. 仅在物体的特定区域允许镜面高光。 +- **平行光(Directional Light)**:只有一个方向的光源. 它被建模为不管距离有多长所有光束都是平行而且其方向向量在整个场景中保持不变。 +- **点光源(Point Light)**:一个场景中光线逐渐淡出的光源。 +- **衰减(Attenuation)**:光减少强度的过程,通常使用在点光源和聚光下。 +- **聚光(Spotlight)**:一个被定义为在某一个方向上锥形的光源。 +- **手电筒(Flashlight)**:一个摆放在观察者视角的聚光。 +- **GLSL uniform数组(GLSL Uniform Array)**:一个数组的uniform值. 就像C语言数组一样工作,只是不能被动态调用。 \ No newline at end of file diff --git a/03 Model Loading/01 Assimp.md b/03 Model Loading/01 Assimp.md index cba5dd9..cb23cea 100644 --- a/03 Model Loading/01 Assimp.md +++ b/03 Model Loading/01 Assimp.md @@ -1,4 +1,4 @@ -# Assimp (Assimp开源模型导入库) +# Assimp开源模型导入库 原文 | [Assimp](http://learnopengl.com/#!Model-Loading/Assimp) ---|--- diff --git a/03 Model Loading/02 Mesh.md b/03 Model Loading/02 Mesh.md index 0e4fccc..6ed68f6 100644 --- a/03 Model Loading/02 Mesh.md +++ b/03 Model Loading/02 Mesh.md @@ -1,4 +1,4 @@ -# Mesh +# 网格(Mesh) 原文 | [Mesh](http://learnopengl.com/#!Model-Loading/Mesh) ---|--- diff --git a/04 Advanced OpenGL/06 Cubemaps.md b/04 Advanced OpenGL/06 Cubemaps.md index 270f9d6..7e4691e 100644 --- a/04 Advanced OpenGL/06 Cubemaps.md +++ b/04 Advanced OpenGL/06 Cubemaps.md @@ -1,4 +1,4 @@ -# Cubemaps +# 立方体贴图(Cubemap) 原文 | [Cubemaps](http://learnopengl.com/#!Advanced-OpenGL/Cubemaps) ---|--- diff --git a/04 Advanced OpenGL/11 Anti Aliasing.md b/04 Advanced OpenGL/11 Anti Aliasing.md index f019883..ea767d4 100644 --- a/04 Advanced OpenGL/11 Anti Aliasing.md +++ b/04 Advanced OpenGL/11 Anti Aliasing.md @@ -1,4 +1,6 @@ -## 反走样(Anti Aliasing) +## 抗锯齿(Anti Aliasing) + +// 记得把反走样改成抗锯齿,这名字好难听 本文作者JoeyDeVries,由Django翻译自http://learnopengl.com @@ -54,7 +56,7 @@ MSAA的真正工作方式是,每个像素只运行一次片段着色器,无 大致上来说,如果更多的采样点被覆盖,那么像素的颜色就会更接近于三角形。如果我们用早期使用的三角形的颜色填充像素,我们会获得这样的结果: -![](http://bullteacher.com/wp-content/uploads/2015/06/anti_aliasing_rasterization_samples_filled.png) +![](http://learnopengl.com/img/advanced/anti_aliasing_rasterization_samples_filled.png) 对于每个像素来说,被三角形覆盖的子样本越少,像素受到三角形的颜色的影响也越少。现在三角形的硬边被比实际颜色浅一些的颜色所包围,因此观察者从远处看上去就比较平滑了。 diff --git a/mkdocs.yml b/mkdocs.yml index 3850243..72fc9ef 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,7 +2,7 @@ pages: - 主页: 'index.md' - 入门(Getting started): - OpenGL: '01 Getting started/01 OpenGL.md' - - 创建一个窗口: '01 Getting started/02 Creating a window.md' + - 创建窗口: '01 Getting started/02 Creating a window.md' - 你好,窗口: '01 Getting started/03 Hello Window.md' - 你好,三角形: '01 Getting started/04 Hello Triangle.md' - 着色器: '01 Getting started/05 Shaders.md' @@ -13,14 +13,14 @@ pages: - 复习: '01 Getting started/10 Review.md' - 光照(Lighting): - 颜色: '02 Lighting/01 Colors.md' - - 基本光源: '02 Lighting/02 Basic Lighting.md' + - 光照基础: '02 Lighting/02 Basic Lighting.md' - 材质: '02 Lighting/03 Materials.md' - 光照贴图: '02 Lighting/04 Lighting maps.md' - 投光物: '02 Lighting/05 Light casters.md' - 多光源: '02 Lighting/06 Multiple lights.md' - 复习: '02 Lighting/07 Review.md' - 加载模型(Model Loading): - - Assimp: '03 Model Loading/01 Assimp.md' + - Assimp开源模型导入库: '03 Model Loading/01 Assimp.md' - 网格: '03 Model Loading/02 Mesh.md' - 模型: '03 Model Loading/03 Model.md' - 高级OpenGL(Advanced OpenGL): @@ -29,12 +29,12 @@ pages: - 混合: '04 Advanced OpenGL/03 Blending.md' - 面剔除: '04 Advanced OpenGL/04 Face culling.md' - 帧缓冲: '04 Advanced OpenGL/05 Framebuffers.md' - - Cubmaps: '04 Advanced OpenGL/06 Cubemaps.md' + - 立方体贴图: '04 Advanced OpenGL/06 Cubemaps.md' - 高级数据: '04 Advanced OpenGL/07 Advanced Data.md' - 高级GLSL: '04 Advanced OpenGL/08 Advanced GLSL.md' - 几何着色器: '04 Advanced OpenGL/09 Geometry Shader.md' - 实例化: '04 Advanced OpenGL/10 Instancing.md' - - 反走样: '04 Advanced OpenGL/11 Anti Aliasing.md' + - 抗锯齿: '04 Advanced OpenGL/11 Anti Aliasing.md' - 高级光照(Advanced Lighting): - 高级光照: '05 Advanced Lighting/01 Advanced Lighting.md' - Gamma校正: '05 Advanced Lighting/02 Gamma Correction.md'