本文核心知识主要参照知乎毛星云浅墨的游戏编程文章总结归并,并根据个人学习方向进行了筛选摘抄,如有错误或不完整之处,可参照原文阅读。

本部分将主要关注基于物理的渲染的核心理论与渲染的光学原理,以在整个系列中起到理论支柱的作用。首先放出本文主要内容提炼出的思维导图,即基于物理的渲染的核心理论与渲染光学原理的知识脉络:

本部分将从以下几个方面,分别对PBR核心理论与渲染光学原理进行阐述:

  • 基于物理的渲染的核心理论
  • 渲染与人眼视觉
  • 渲染与物理光学(波动光学)
  • 渲染与几何光学
  • 真实世界材质的渲染属性总结

一、基于物理的渲染核心理论总结

在【PBR系列一】PBR知识体系内容前瞻与总结式的文章的开头中已经放出了PBR核心理念的简介版本,以下是PBR核心理念的详细版:

  • 微平面理论(Microfacet Theory)。微平面理论是将物体表面建模成无数微观尺度上有随机朝向的理想镜面反射的小平面(microfacet)的理论。微观几何(microgeometry)的效果是在表面上的不同点处改变微平面的法线,从而改变反射和折射的光方向。出于着色的目的,通常会用统计方法处理这种微观几何现象,将表面视为具有微观结构法线的随机分布,并将宏观表面视为在每个点处多个方向上反射(和折射)光的集合。在微观尺度上,表面越粗糙,反射越模糊,表面越光滑,反射越集中。
  • 能量守恒 (Energy Conservation)。出射光线的能量永远不能大于入射光线的能量。随着粗糙度的上升镜面反射区域的面积会增加,作为平衡,镜面反射区域的平均亮度则会下降。
  • 基于F0建模的菲涅尔反射(Fresnel Reflection)。菲涅尔效应表示观察看到的反射光线的量与视角相关的现象,且掠射角度(90度)下反射率最大。万物皆有菲涅尔效应。在宏观层面看到的实际上是微观层面微平面菲涅尔效应的平均值,即影响菲涅尔效应的关键参数在于每个微平面的法向量和入射光线的角度,而不是宏观平面的法向量和入射光线的角度。F0即0度角入射的菲涅尔反射率。任意角度的菲涅尔反射率可由F0和入射角度计算得出。
  • 线性空间光照(Linear Space Lighting)。线性空间渲染为光照计算提供了正确的数学运算。在线性空间中,能够还原现实世界方式的光与物质的交互的方式。所以颜色值的计算和颜色操作必须在线性空间中执行。而为了将渲染图像正确地呈现给观看者,需要将图像编码为伽马空间,所以基于物理的渲染会往往会涉及到线性空间和伽马空间之间的相互转换。
  • 色调映射(Tone Mapping)。也称色调复制(Tone Reproduction),在图形学中,表示以感知上令人信服的方式将HDR场景的强度值转换为显示强度的过程,也可以理解为将宽范围的光照级别拟合到屏幕有限色域内的过程。通常,由于通过HDR渲染出来的亮度值会超过显示器能够显示最大亮度,所以需要结合色调映射(Tone Mapping),将光照结果从HDR转换为显示器能够正常显示的LDR。
  • 基于真实世界测量的材质参数(Real-World Measurement Based Substance Properties) 。PBR的正统材质参数往往都基于真实世界测量。真实世界中的物质可分为三大类:绝缘体(Insulators),半导体(semiconductors)和导体 (conductors)。在渲染和游戏领域,我们一般只对其中的两个感兴趣:导体(金属)和绝缘体(电解质,非金属)。菲涅尔反射率代表材质的镜面反射颜色与强度,是真实世界材质的核心测量数值。其中非金属具有非彩色的镜面反射颜色,而金属具有彩色的镜面反射颜色,即非金属的F0是一个float,金属的F0是一个float3。
  • 光照与材质解耦(Decoupling of Lighting and Material)。基于物理的渲染的核心原则之一便是材质和光照信息的解耦,以模拟真实世界的光照现象,保证场景中所有对象之间具有视觉一致性。通过这种理念,相同的光照可以应用于所有物体和材质,无需传统光照模型所需的额外调整和hack,就能直接得到预期而自然的渲染表现,以提升美术同学的工作效率。

而要真正理解基于物理的渲染,首先需要了解真实世界中光,材质,人眼三者之间的交互原理。下面我们从人眼视觉开始,重新认识渲染。

二、渲染与人眼视觉

首先需要注意的是,我们在现实生活中看到某一物体的颜色其实并不是这个物体本身的真实颜色,而是其反射和散射得到的颜色。换句话说,那些不能被物体吸收(Absorb)的颜色,即被反射或散射到我们人眼中的可见光波长代表的颜色,就是我们能够感知到的物体的颜色。

例如,苹果的表面主要反射和散射红色光线。只有红色的波长能从苹果表面散射或反射回来,而其他部分则被吸收,转化为其他其他形式的能量,如下图:

三、渲染与物理光学(波动光学)

3.1 相速度与折射率

波动光学(Wave Optics)又称物理光学(Physical Optics)。在波动光学中,光被建模为一种电磁横波(Transverse Wave),即使电场和磁场垂直于其传播方向振荡的波。

图中光是一种电磁横波。 电场和磁场矢量以90°相互振荡并同时向传播方向振荡。 图中所示的波是最简单的光波。 它既是单色的(具有单一波长λ)又是线性极化的(电场和磁场各自沿单向振荡)。(图片来自Real-Time Rendering 4th)

光波的磁场和电场的振荡相互耦合,且磁场矢量和电场矢量相互垂直,两者长度之比固定,该比率等于相速度(Phase Velocity)。

而光在传播到两种不同介质交界处时,原始光波和新的光波的相速度(Phase Velocity)的比率定义了介质的光学性质,就是折射率(Index of Refraction,IOR),由字母n表示。

3.2 复折射率

除了代表光的相速度的实部n之外,还用希腊字母κ(kappa)表示介质将光能转为为其他形式能量的吸收性。n和κ通常都随波长而变化,两者组合成复数n +iκ,称为复折射率(complex index of refraction)。

也就是说,折射率IOR是一个复数(complex number),其分为实部和虚部两部分:

  • 折射率的实部(real part) 度量了物质如何影响光速,即相对于光在真空中传播速度减慢的度量。
  • 折射率的虚部(imaginary part) 确定了光在传播时是否被吸收,转换成其他形式的能量,通常是热能。非吸收性介质虚部为零。

其中,特定材质对光的选择性吸收是因为所选择的光波频率与该材质原子中的电子振动的频率相匹配。由于不同的原子和分子具有不同的固有振动频率,其将选择性地吸收不同频率的可见光。

光的吸收对视觉效果有直接影响,因为会降低光的强度,并且如果吸收对某些可见波长具有选择性,也会改变光的颜色。如下图。

图中展示了光的吸收导致透明介质的不同颜色外观。

3.3 折射的发生条件

光在表面的折射条件是需要在小于单一波长的距离内发生折射率的突然变化。如下图:

另外,折射率缓慢的逐渐变化不会导致光线的分离,而是导致其传播路径的弯曲。 当空气密度因温度而变化时,通常可以看到这种效果,例如海市蜃楼(mirages)和热形变(heat distortion)。见下图热形变。

3.4 物质对吸收和散射的特性组合决定其外观

如上文所说到的,光与物质之间的两种相互作用模式为散射(scattering)和吸收(absorption),如下图:


图中光与物质之间的两种相互作用模式:吸收absorption(左),散射 scattering(右) (图片来自Hoffman N. Background: Physics and Math of Shading)
其中:

  • 散射(scattering) 决定介质的浑浊程度。
    大多数情况下,固体和液体介质中的颗粒都比光的波长更大,并且倾向于均匀地散射所有可见波长的光。高散射会产生不透明的外观。
  • 吸收(absorption) 决定材质的外观颜色。 几乎任何材质的外观颜色通常都是由其吸收的波长相关性引起的。

而每种介质的外观是散射和吸收两种现象的综合结果:

图:具有不同光的吸收量和散射量的介质。 外观取决于散射和吸收两个属性; 例如,白色外观(右下)是高散射和低吸收的结果。(图片来自Hoffman N. Background: Physics and Math of Shading)

图 具有不同吸收和散射组合的液体容器 (图片来自Real-Time Rendering 4th)

当然,除了折射的光线,材质的外观还与反射有关,所以,可以理解为材质的最终外观由镜面反射以及物质对折射光线的吸收和散射的特性组合综合决定。

3.5 散射和吸收与观察尺度有关

另外, 散射(Scattering)和吸收(absorption)都与观察尺度有关。 在小场景中不产生任何明显散射的介质在较大尺度上可能具有非常明显的散射。 例如,当观察房间中的一杯水时,在空气中的光的散射和在光在水中的吸收都是不可见的。 但是,在宽阔的环境中,两种效果都很重要。

四、渲染与几何光学

关于光与非光学平坦表面的交互原理,在这个系列的第一篇文章中已经有相关总结,本文不应再赘述。这一节中,将首先对“光与介质边界的交互类型”和“不同物质与光的交互”分别做出提炼总结。然后仅重提一下PBR理论中最核心的微平面理论,随后便主要于关注菲涅尔反射相关的讨论。

4.1 光与介质边界的交互类型总结

为了便于下面总结的理解,先提供一张经典的光与表面的交互图示。

当一束光线入射到物体表面时,由于物体表面与空气两种介质之间折射率的快速变化,光线会发生反射和折射:

  • 反射(Reflection)。光线在两种介质交界处的直接反射即镜面反射(Specular)。金属的镜面反射颜色为三通道的彩色,而非金属的镜面反射颜色为单通道的单色。
  • 折射(Refraction)。从表面折射入介质的光,会发生吸收(absorption)和散射(scattering),而介质的整体外观由其散射和吸收特性的组合决定,其中:
  • 散射(Scattering)。折射率的快速变化引起散射,光的方向会改变(分裂成多个方向),但是光的总量或光谱分布不会改变。散射最终被视作的类型与观察尺度有关:
  • 次表面散射(Subsurface Scattering)。观察像素小于散射距离,散射被视作次表面散射。
  • 漫反射(Diffuse)。观察像素大于散射距离,散射被视作漫反射。
  • 透射(Transmission)。入射光经过折射穿过物体后的出射现象。透射为次表面散射的特例。
  • 吸收(Absorption)。具有复折射率的物质区域会引起吸收,具体原理是光波频率与该材质原子中的电子振动的频率相匹配。复折射率(complex number)的虚部(imaginary part)确定了光在传播时是否被吸收(转换成其他形式的能量)。发生吸收的介质的光量会随传播的距离而减小(如果吸收优先发生于某些波长,则可能也会改变光的颜色),而光的方向不会因为吸收而改变。任何颜色色调通常都是由吸收的波长相关性引起的。

反射、折射和散射可见之前文章:Vulkan_片元着色器特效2(反射、折射、色散)

4.2 不同物质与光的交互总结

上文已经提到,光线入射到两种介质之间平面边界时,会发生反射和折射,而根据材质光学性质的不同,具有不同的行为表现,从而得到不同的材质外观。可以将材质根据光学特性,分为金属和非金属两大类,具体行为可以总结如下:

  • 金属(Metal)。金属的外观主要取决于光线在两种介质的交界面上的直接反射(即镜面反射)。金属的镜面反射颜色为三通道的彩色,R、G、B各不相同。而折射入金属内部的光线几乎立即全部被自由电子吸收,且折射入金属的光不存在散射。
  • 非金属(No-Metal)。非金属即电介质,其的整体外观主要由其吸收和散射的特性组合决定。同样,非金属与光的交互分为反射和折射两部分。而折射按介质类型的散射和吸收特性,分为多类:
  • 反射(Reflection)。非金属的镜面反射颜色为单通道单色,即R=G=B。
  • 折射(Refraction)。光从表面折射入非金属介质,则介质的整体外观由其散射和吸收的特性组合决定。不同的介质类型的散射和吸收特性不一:
  • 均匀介质(Homogeneous Media)。主要为透明介质,无折射率变化。不存在散射,光总以直线传播并且不会改变方向。存在吸收,光的强度会通过吸收减少,传播距离越远,吸收量越高。
  • 非均匀介质(Nonhomogeneous Media)。通常可以建模为具有嵌入散射粒子的均匀介质。具有折射率变化,分为几类。
  • 混浊介质(Cloudy Media)。混浊介质具有弱散射,散射方向略微随机化。根据组成的不同,具有复数折射率的物质区域引起吸收。
  • 半透明介质(Translucent Media)。半透明介质具有强散射,散射方向完全随机化。根据组成的不同,具有复数折射率的物质区域引起吸收。
  • 不透明介质(Opaque Media)。不透明介质和半透明介质一致。具有强散射,散射方向完全随机化。根据组成的不同,具有复数折射率的物质区域引起吸收。

4.3 微平面理论 Microfacet Theory

大多数真实世界的表面不是光学上光滑的,但是具有比光波长大得多但比像素小的尺度的不规则性。 这种微观几何(microgeometry)变化导致每个表面点反射(和折射)不同方向的光:材质的部分外观组成是这些反射和折射方向的聚合结果。

光在与非光学平坦表面(Non-Optically-Flat Surfaces)的交互时,非光学平坦表面表现得像一个微小的光学平面表面的大集合。表面上的每个点都会以略微不同的方向对入射光反射,而最终的表面外观是许多具有不同表面取向的点的聚合结果。

在微观尺度上,表面越粗糙,反射越模糊,因为表面取向与整个宏观表面取向的偏离更强。

如下图微平面粗糙度对材质外观的影响:

4.4 菲涅尔反射 Fresnel Reflectance

4.4.1 菲涅尔效应 Fresnel Effect

菲涅尔效应(Fresnel effect)作为基于物理的渲染理念中的核心理念之一,表示的是看到的光线的反射率与视角相关的现象,由法国物理学家奥古斯丁.菲涅尔率先发现。其具体表现是在掠射角(与法线呈接近90度)下光的反射率会增加。而上述的反射率,便被称为菲涅尔反射率。如下图:


简单来说,菲涅尔效应即描述视线垂直于表面时反射较弱,而当视线非垂直表面时,夹角越小,反射越明显的一种现象。比如说,当我们站在湖边低头看脚下的湖水,会发现水是透明的,反射不会特别强烈;而如果我们看远处的湖面时,会发现水并不透明,而且反射非常强烈。

需要注意的是,我们在宏观层面看到的菲涅尔效应实际上是微观层面微平面菲涅尔效应的平均值。

也就是说,影响菲涅尔效应的关键参数在于每个微平面的法向量和入射光线的角度,而不是宏观平面的法向量和入射光线的角度。即:

  • 当从接近平行于表面的视线方向进行观察,所有光滑表面都会变得100%的反射性。
  • 对于粗糙表面来说,在接近平行方向的高光反射也会增强,但不够达到100%的强度。

不同材质的菲涅尔效应的强弱是不同的,导体(如金属)的菲涅尔效应一般很弱,主要是因为导体本身的反射率就已经很强。就拿铝来说,其反射率在所有角度下几乎都保持86%以上,随角度变化很小,而绝缘体材质的菲涅尔效应就很明显,比如折射率为1.5的玻璃,在表面法向量方向的反射率仅为4%,但当视线与表面法向量夹角很大的时候,反射率可以接近100%,这一现象也导致了金属与非金属外观上的不同。

4.4.1 菲涅尔方程 Fresnel Equations

菲涅尔方程(Fresnel Equations),同样是法国物理学家奥古斯丁·菲涅耳最先推导出,用来描述光在不同折射率的介质之间的行为的方程。菲涅尔方程描述的光的反射现象便被称之为菲涅尔反射。菲涅尔方程能解释反射光的强度、折射光的强度、相位与入射光的强度的关系。

另外,菲涅尔方程其实和麦克斯韦方程组(Maxwell’s equations)有很深的渊源。

根据物理学,麦克斯韦方程组可以在折射率变化时计算光的行为。对于空气中通常的物体表面而言,物体的表面便是空气折射率和物体折射率的交界面,对此特殊的折射率交界面而言,麦克斯韦方程组的解被我们称为菲涅尔方程(Fresnel equations)。

即菲涅尔反射的方程可以通过麦克斯韦电磁学方程组推导出来,因为本质上讲菲涅尔反射其实是使用的波动理论来解释光的反射现象。

完整的菲涅尔方程有点复杂,至少可以说艺术家所需的材质参数(在可见光谱上密集采样的复折射率)并不方便,随后的文章会专门讨论。

而通过完整的菲涅尔方程,我们可以拟合出更简化的近似表达式(如Schlick[1994]的Fresnel近似),以及抽象出描述物体表面属性的菲涅尔反射率F0。先观察下图。

图 各种物质的菲涅尔反射率(y轴)作为入射角(x轴)的函数。 由于铜和铝在可见光谱上的反射率有明显变化,因此它们的反射率显示为R,G和B的三条独立曲线。铜的R曲线最高,其次是G,最后是B(因此它的红色)。铝的B曲线最高,其次是G,最后是R。上图选择的材质代表了各种各样的材质。 尽管如此,可以看到一些共同的地方。对于0°和45°之间的入射角,反射率几乎是恒定的。在45°和75°之间,反射率变化更为显着(通常但不总是有所增加)。最后,在75°和90°之间,反射率总是迅速变为1(白色,如果被视为一种颜色)。(图片来自Hoffman N. Background: Physics and Math of Shading)

由此,我们可以将F0,即0度角入射时的菲涅尔反射率,作为材质的特征反射率,帮助我们对该材质的反射属性进行建模。

4.4.3 F0 : 0度角入射时的菲涅尔反射率

上文已经提到,当光线垂直(以0度角)撞击表面时,该光线被反射(Reflected)为镜面反射光的比率被称为F0。即F0为0度角入射时的菲涅尔反射率。而折射(refracted)到表面中的光量则为为1-F0。如下图。

图 对于光滑的电介质表面,在0度角入射(F0)将反射2-5%的光,在掠射角入射下将反射100%的光(图片来自The PBR Guide by allegorithmic- Vol. 1)

大多数常见电介质的F0范围为0.02-0.05(线性值)。 对于导体,F0范围为0.5-1.0。

关于常见物质F0的相关内容下文会做一个更系统的讨论,这里我们先了解F0与折射率的关系。

4.4.4 从折射率求解F0

通用的折射率与F0的关系式如下:

其中,n1和n2分别为两种介质的折射率。通常假设n1=1近似于空气的折射率,并用n替换n2,于是,上式可以简化为:

这就是我们通常看到的F0和折射率之间的转换公式。

另外,这里有一个各种物质实数折射率数值的查询汇总表:https://pixelandpoly.com/ior.html。对于一般仅有实数折射率的非金属而言,可以通过查询到的物质的折射率和上面的公式,计算出F0。

在有些渲染器中,会直接采用折射率IOR来表示材质的属性,以下是一张渲染器中实数折射率、粗糙度二维材质的渲染对照图:

五、真实世界材质的渲染属性总结

基于物理的渲染的核心理念之一是采用基于真实世界测量的材质光学参数。

由于光由电磁波组成,因此,物质的光学特性与其导电特性密切相关。我们通常把导电性较差的材质,如煤、人工晶体、琥珀、陶瓷等称为绝缘体。而把导电性比较好的金属如金、银、铜、铁、锡、铝等称为导体。以及将导电性质介于导体和绝缘体之间的材质称为半导体。

即根据导电特性,可将现实生活中的物质分为三个主要光学类别:

  • 电介质(dielectrics),又称绝缘体(Insulators),非金属(no-metal)
  • 半导体(semiconductors)
  • 金属(metals),又称导体(conductors)

5.1 常见材质F0参考速查图表


需要注意,我们一般使用的F0,都是空气对于材质的F0。假如材质位于水中或其他折射率不等于1的介质中,F0会发生变化,则需要使用本文第四部分的公式通过折射率重新计算F0。

接着是对于金属,电介质和半导体的相关特性的分类总结。

5.2 金属 Metal

  • 金属具有高的F0值 - 几乎总是0.5或更高。一些金属具有在可见光谱范围内变化的光学性质,导致了这些金属有色的菲涅尔反射率。
  • 黄金有一个不寻常的F0值,是最亮的金属之一。其红色通道值略高于1,而且具有特别低的蓝色通道值(低于0.5)。黄金的明亮和强烈的颜色反射可能有助于其历史上独特的文化和经济意义。
  • 金属会立即吸收任何透射光,因此它们不会出现任何次表面散射或透明感。
  • 金属的所有可见颜色都来自F0。

常见金属F0速查表

5.3 电介质 Dielectrics

  • 日常生活中遇到的大多数材质都是电介质 -玻璃,皮肤,木头,头发,皮革,塑料,石头和混凝土(concrete)等等。
  • 水其实也是电介质(绝缘体)。水是绝缘体这个事实可能会令人惊讶,因为在日常生活中众所周知,水是导电的。但其实,水的导电性是由于水中的各种杂质造成的,水本身并不导电。
  • 电介质具有相当低的F0值 -
    通常为0.06或更低。在垂直入射时的这种低反射率使得菲涅尔效应对于电介质尤其明显。电介质的光学性质在可见光谱上很少变化很大,导致无色反射率值。
  • 另外需要注意的是,生活中看到的各种水晶和宝石,其实大多数情况下组成成分是石英(Quartz),而石英的主要化学成分为SiO2,也是电介质(绝缘体)。石英根据颜色,可以分为:紫水晶、黄水晶、粉晶、烟水晶、乳石英、白水晶等。这边一个是紫水晶的材质特性拆解:

附上常见电介质的F0速查表

5.4 半导体 Semiconductor

  • 半导体(Semiconductor)的电导率在绝缘体和导体之间。常见的半导体材质有硅、锗、砷化镓等,而硅是各种半导体材质中,在商业应用上最具有影响力的一种。
  • 正如半导体电导率位于绝缘体至导体之间一样,其F0值也位于最亮的电介质和最暗的金属之间。
  • 即是是最常见的半导体硅,在大多数场景渲染中也十分少见。出于实用性,PBR工作流一般不考虑半导体,即因避免在0.2和0.45之间的F0值。当然,故意尝试非真实感材质或外星场景中的材质时是例外。

常见半导体F0速查表

小结

以下是本文具有代表性知识点的提炼总结:

  • 麦克斯韦方程组在材质表面处的特殊解就是菲涅尔方程。
  • 影响菲涅尔效应的关键参数在于每个微平面的法向量和入射光线的角度。
  • 折射率是一个复数(complex number),实部(real part)度量了物质如何影响光速,虚部(imaginary
    part)确定了光在传播时是否被吸收。
  • 具有复数折射率的物质区域引起吸收 - 光量随距离减小(并且如果吸收对某些可见波长具有选择性,则也会改变光的颜色),但光的方向不会改变。
  • 折射率的快速变化引起散射。散射最终被视作的类型与观察尺度有关:次表面散射。观察像素小于散射距离,散射被视作次表面散射(Subsurface
    Scattering)。观察像素大于散射距离,散射被视作漫反射(Diffuse)。
  • 物质对折射光线的吸收和散射的特性组合,以及对光线的反射特性共同决定了该材质的整体外观。

下一部分我们主要来实现以下:游戏业界目前最主流的基于物理的镜面反射BRDF模型是基于微平面理论(microfacet theory)的Microfacet Cook-Torrance BRDF。

【PBR系列四】PBR核心原理及材质属性查询相关推荐

  1. Git使用 从入门到入土 收藏吃灰系列(四) Git工作原理

    文章目录 一.前言 一.Git基本理论(核心) 1.1工作区 1.2工作流程 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Gi ...

  2. openlayers入门开发系列之地图属性查询篇

    本篇的重点内容是利用openlayers实现地图属性查询功能,效果图如下: 实现思路: 模糊查询点击事件 //模糊查询 $("#swatchQuery").bind("c ...

  3. 【PBR系列七】基于物理的环境光照(下):镜面反射 IBL(Specular IBL)

    本文核心知识主要参照learnopengl-cn文章总结归并,并根据个人学习方向进行了筛选摘抄,如有错误或不完整之处,可参照原文阅读. 本文紧接[PBR系列六]基于物理的环境光照(上):漫反射辐照度( ...

  4. 批量 材质 调整_寒霜引擎的PBR实践3.0(一)材质篇

    随着对游戏美术品质要求的提高,对整个开发从流程pipeline到从业人员的素质要求都开始增加.传统的美术工作流因为依赖个人的经验和感觉,所以在制作大体量项目的过程中很难达到理想效果.而这时,由项目组内 ...

  5. 【PBR系列三】BRDF方程及渲染方程

    本文核心知识主要参照<现代计算机图形学入门-闫令琪课程课件PPT>,后续光线追踪系列知识也源于此处. 一.BRDF方程 通过上一部分所有辐射度量学各种概念的定义之后,我们可以从这样一个角度 ...

  6. Zookeeper系列(二)、核心原理

    上一篇我们介绍了Zookeeper的一些基础知识,本篇来讲解zk内部的一些核心原理,帮助我们更好的理解zk的工作机制. 目录 选举机制 Leader选举流程 Leader选举原理 Watch机制 会话 ...

  7. ELK系列(十五)、Elasticsearch核心原理一篇全搞定

    目录 Lucene 介绍 核心术语 如何理解倒排索引? 检索方式 分段存储 段合并策略 Elasticsearch 核心概念 节点类型 集群状态 3C和脑裂 1.共识性(Consensus) 2.并发 ...

  8. spring源码分析第四天------springmvc核心原理及源码分析

    spring源码分析第四天------springmvc核心原理及源码分析 1.基础知识普及 2. SpringMVC请求流程 3.SpringMVC代码流程 4.springMVC源码分析 4.1 ...

  9. UE4 PBR虚幻引擎4贴图和材质创建_GDCC2015

    转载自:https://blog.csdn.net/pizi0475/article/details/49681053 PBR:应用于虚幻引擎4贴图和材质创建 PBR材质似乎在一夜之间改变了人们对于引 ...

最新文章

  1. 特征选择常用算法综述
  2. 《训练指南》——6.9
  3. mysql皮秒转成年月日时分秒_MySQL performance_schema 中 TIMER_*类字段 的易读转换
  4. 没有女朋友,可能是因为你数学不好
  5. Android学习之Activity源码的理解(一)
  6. Flask消息闪现及日志记录
  7. L1-040 最萌情侣身高差
  8. 如何在原有的cookie里面添加值_【平面设计教程】如何创建一个漂亮又好吃的饼干呢?...
  9. 动态规划之01背包问题(含代码C)
  10. 万能pdf阅读器卸载
  11. Lingo教育版免费申请流程
  12. 故障分析 | OceanBase Proxy 无法连接 OBserver 集群
  13. 【机器学习】损失函数MAE
  14. iOS调用系统相机将英文改成中文
  15. 来了,来了,他来了,使用Github制作自己的在线简历(网页和PDF版)你都值得拥有
  16. 2018年5月28日 情绪、信念与身体 总得写点什么
  17. oracle外部表kup-04023,kup-04040访问外部表时
  18. [bzoj2563] 阿狸和桃子的游戏 贪心
  19. html报告致谢,论文致谢优秀范文(精选10篇)
  20. 地理坐标(经纬度)转换成投影坐标(XY坐标)

热门文章

  1. JAVAEE——SSH项目实战05:用户注册、登陆校验拦截器、员工拜访客户功能和MD5加密...
  2. Hook去除谷歌广告
  3. PHP开发搭建游戏联运sdk
  4. 桥式整流电路工作原理(转账)
  5. [学习笔记]操作系统(三)先到先得调度
  6. Qt:鼠标事件(鼠标移动事件、鼠标按下事件、鼠标释放事件、进入窗口区域、离开窗口区域)
  7. 解释任何ML模型?--关于XAI的目标和能;基于梯度的动态RRAM阵列神经形态学习;SARNet:大规模城市点云的语义增强注册;基于加权一致性指数损失的多模式生存模型在鼻咽癌放疗放射性脑病评估中的应用
  8. c语言客观题题库,大学生课程C语言期末客观题——期末客观题练习题4
  9. 能力风暴状态贴墙算法
  10. Linux SVN 切换用户