Real-Time Volumetric Cloudscapes

                                                                                  实时体积云景
GPU Pro 7 实时体积云景的翻译 

4.1 概览
   游戏中的实时体积云通常为了提高渲染效率而降低质量。最成功的方法仅限于低空蓬松半透明的层状云。我们提出了一种体积解决方案,可以使用不断变化并且逼真的结果填充天空,来描绘高海拔卷云和所有主要的底层云类型,包括厚厚的、像波浪一样翻滚的积云。此外,我们的方法近似于实现了几种实时云渲染中尚未出现过的体积光照效果。最后,我们的这种解决方案在内存和GPU的消耗上足够低,可以运用在3A主机游戏中。



4.2 简介

在 AAA 游戏机游戏中,渲染云彩的标准解决方案涉及某种资产,包括二维广告牌、极地天空穹顶图像或在渲染时实例化的体积图库。对于需要不断变化的天空并允许玩家覆盖广阔距离的游戏(如开放世界)而言,高精细资产的优势被存储和访问多个摄像机角度、一天中的不同时间和光照条件的数据的成本所掩盖。此外,对云层系统演变的模拟仅限于技巧或伪造,如旋转天穹或使用 2D 噪音扭曲图像。

程序云系统的许多技术都不依赖于资产。ShaderToy.com 上免费提供了几个很好的例子,如 "Clouds" [Quilez 13]。Evolution 工作室使用名为 TrueSky 的中间件为游戏《Drive Club》提供了令人印象深刻的大气天气效果[Simul 13]。

然而,这些方法也有几个局限性:
 

    •  它们都只描述了低空的层云,而没有描述蓬松和波状的层积云或积云。
    •  目前的体积方法无法实现云层特有的逼真照明效果。云层特有的照明效果。
    •  实时体积云通常在性能和内存方面都相当昂贵,而且与所产生结果的质量相比并不划算。


对于游戏《地平线:零之曙光》,我们开发了一种新的解决方案来解决这些问题。我们提交了用于建模、照明和渲染的新算法,可在 20 MB 内存预算和 2 ms 性能目标范围内提供逼真且不断变化的结果。

4.3 云的建模

图 4.2 显示了各种云类型及其高度范围。我们按体积渲染的云层有两层:存在于 1.5 千米到 4 千米之间的低层云和横跨 1 千米到 8 千米整个低层大气的积雨云。
 



随着时间的推移和太阳对地球的加热,水蒸气从地表上升并穿过这些大气层。每一层都有自己的风向和温度。随着水汽在大气层中移动的高度增加,温度也随之降低。随着温度的降低,水汽会在遇到的尘埃颗粒周围凝结成水或冰。(这些水汽在流动过程中存在很大的不稳定性,从而产生湍流。随着云层的上升,它们往往会形成波浪状。当它们扩散时,会像雾一样伸展和消散 [Clausse and Facy 61].

4.3.1 Modified Fractal Brownian Motion 改进的分形布朗运动

对体积云系统进行实时建模的标准方法是使用射线行进和分形布朗运动技术,简称 FBM [Mandelbrot and vaness 68]。简称 FBM [Mandelbrot and van Ness 68]。(见图 4.3。FBM 是一系列 octaves 噪音的总和,每个 octaves 噪音的频率较高,振幅较小。
 



Perlin 噪声 [Perlin 85] 通常用于此目的。虽然这是产生层云雾状形状的可靠模型,但它无法描述积云的圆形、波状形状,也无法赋予积云如图 4.4 所示的隐含运动感。

Perlin 噪声可以在其范围的中间翻转,产生一些蓬松的形状,但由于它只是一种噪声,因此仍然缺乏云中的花椰菜图案。图 4.5 显示了 Perlin 噪声、abs(Perlin * 2 + 1)的结果以及云中分形波浪图案的照片参考。

另一种噪声是 Worley 噪声,由 Steven Worley 于 1996 年提出[Worley 96],常用于渲染腐蚀和水效果,如图 4.6 所示。

如果将其倒置并用于 FBM,Worley 噪声就会近似于漂亮的分形波浪图案。它还可以用来增加低频 Perlin 噪声低密度区域的细节。(如图4.7 左 和 中间) 我们可以使用 Worley 噪声 FBM 作为原始范围的最小值来重新映射 Perlin 噪声。
 



这种将两种噪音类型结合起来的方法,为 Perlin 噪音产生的连通性增加了一些波纹,效果更加自然。
 

我们将其称为低频 Perlin-Worley 噪声,它是我们建模方法的基础。(见图 4.7 右)。

图 4.8 显示了我们的第一个三维纹理,它由 Perlin-Worley 噪声 FBM 和三个倍频程的 Worley 噪声 FBM 组成。图 4.9 显示了我们的第二个三维纹理,它由另外三个倍频程的 Worley 噪声组成。

第一个三维纹理定义了我们的基本云形状。第二个三维纹理频率较高,用于侵蚀基本云形状的边缘并增加细节,详见第 4.3.4 节。



4.3.2 密度-高度函数

该领域之前的工作通过基于高度[Quilez 13]来偏置或缩放云密度值来创建一种特定的云类型。

该函数用于偏置或缩放噪声信号并产生云。这将在其他工作中看到的云的类型限制为一种类型,因为云的最大高度永远不会改变。

我们通过使用三个这样的函数来扩展这种方法,一个分别适用于三种主要的低级别云类型:层云、层积云和积云。图4.10显示了我们使用的梯度函数。图4.11显示了使用这些函数随高度改变云密度的结果。
 



在运行时,我们计算这三个函数的加权和。我们使用天气纹理来改变权重,以或多或少地添加每种云类型——详细信息将在下一节中介绍。

4.3.3天气纹理

就我们的目的而言,我们希望在云系统领域的任何一点上了解三件事:
 

1. 云层覆盖率: 天空中云层覆盖的百分比。

2. 降水量: 头顶云层产生降雨的几率。

3. 云类型: 0.0 表示层云,0.5 表示层积云,1.0 表示积云。
 

这些属性都可以用介于 0 和 1 之间的概率来表示,这使得它们很容易处理并在二维纹理中预览。可以对缓冲区进行采样,以获得世界空间中任意点的每个属性值。

图 4.12 将该场景的天气图分解为多个部分。该图的比例尺为 60,000 × 60,000 米,箭头表示摄像机方向。

        

在现实中,下雨的地方总是会出现雨云。为了模拟这种行为,我们将云的类型偏向于积雨云,并将云的覆盖率偏向于至少 70%,而下雨的几率是 100%。

此外,我们还允许艺术家覆盖天气纹理,以生成 我们还允许艺术家覆盖天气纹理,为场景剪辑或其他定向体验制作艺术指导的天空[Schneider 15, slide 47].


4.3.4云采样器
 

在确定了云密度函数的组成部分之后,我们现在将着手建立云模型。

与迄今为止所有其他体积云解决方案一样,我们使用的是射线行进法。射线行进法在一个区域内行走,并采样密度值,用于照明和密度计算。这些数据用于构建体积主体的最终图像。我们的云密度采样函数主要负责解释采样位置和天气数据,为我们提供给定点的云密度值。

在开始使用该函数之前,我们先计算一个归一化标量值 表示当前样本位置在云层中的高度。这个将用于建模过程的最后一部分。


我们还定义了一个重映射函数,用于将数值从一个范围映射到另一个范围、 以用于组合噪音来制作我们的云。


 



我们采样算法的第一步是利用第一个三维纹理中的低频 Perlin-Worley 噪声构建基本云形。具体过程如下

1. 第一步是获取构建基本云形所需的四个低频噪声值。我们对包含低频 octaves 的第一个三维纹理进行采样。

2.我们将使用包含 Perlin-Worley 噪声的第一个通道来建立基本云图形状。

3. 虽然基本的 Perlin-Worley 噪声提供了合理的云密度函数,但它缺乏真实云的细节。我们使用重映射函数将其他三个低频噪声添加到 Perlin-Worley 噪声的边缘。这种噪声组合方法可以防止 Perlin-Worley 云形状的内部变得不均匀,同时还能确保只在我们能看到的区域添加细节。

4. 为了确定我们要绘制的云的类型,我们根据天气纹理中的云类型属性计算密度高度函数。

5.接下来,我们将云的基本形状与密度高度函数相乘,根据天气数据创建正确的云类型。


 


 

代码如下



 

此时,我们已经有了类似云的东西,尽管是低细节的云(图 4.13)。


接下来,我们应用天气纹理中的云层覆盖属性,以确保可以控制云层覆盖天空的程度。这一步涉及两个操作:

    1.为了让云朵随着覆盖属性的变化而真实地生长,我们使用重映射功能中的云朵覆盖属性来扩展前几步生成的基本云朵形状。


    2.为了确保密度随着覆盖范围的增加而增加,从而达到美观的效果,我们将这一结果乘以云层覆盖属性。
 



代码如下
 



 

这些步骤的结果如图 4.14 所示。基础云的细节仍然较少,但它开始看起来更像一个系统,而不是一片噪点。

接下来,我们将为云层添加逼真的细节,从水汽上升不稳定产生的小波浪,到大气湍流造成的飘渺扭曲(见图 4.15 中的示例)。

我们通过三个步骤对这些效果进行建模:
 

1. 我们使用动画卷曲噪波来扭曲云层底部的样本坐标,当我们使用扭曲的样本坐标对高频三维纹理进行采样时,模拟湍流的效果。

2. 我们用高频 Worley 噪声建立一个 FBM,以增加云层边缘的细节。

   

3. 我们使用高频 FBM 来收缩云的基本形状。在云的底部,我们反转 Worley 噪声,在该区域产生飘渺的形状。在顶部收缩 Worley 噪声,产生波浪状细节。
 


代码如下
 


 


 

这些步骤的结果如图 4.16 所示。这一系列操作就是我们的采样器在光线行进过程中创建云景的框架,但我们采取了额外的步骤来增加隐含的运动感,而传统的基于噪声的云景解决方案则缺乏这种运动感。

为了模拟云从一个大气层上升到另一个大气层时的剪切效应,我们将采样位置偏移到风向与高度之间。此外,两个三维纹理样本在风向上都有偏移,并随着时间的推移略微向上,但速度不同。让每种噪音都有自己的速度,可以使云层的运动看起来更加逼真。在延时效果中,云层看起来是向上生长的。

 


 



这段代码必须位于 CloudDensitySample() 函数中任何 3D 纹理采样之前。

4.3.5 结果

图 4.17 展示了使用不同天气设置创建的一些体积云景。

通过这种建模方法,我们可以制作出许多独特的云景。 当雨信号沿风向接近摄像机时,会产生暴风前线逼近的效果[Schneider 15, slide 43–44].

4.4 云的光照
 

体积云照明是计算机图形学中研究得非常透彻的一个领域。不幸的是,对于游戏开发者来说,最好的结果来自于大量采样。这就意味着,我们必须设法近似制作电影级云彩时发生的复杂而昂贵的过程。


 

我们的方法可以近似解决以下三种特殊效果:云层中的多重散射和定向光照、当我们向太阳看去时的银边效果、当我们向天空看去时的云层散射和定向光照。向太阳时的银边效应,以及远离太阳时云层上的暗边。远离太阳时云层上的暗边。图 4.18 展示了这三种效果的照片参考。这三种效果的照片参考。

4.4.1 体积散射

当光线进入云层时,大部分光线会穿过云层中的水滴和冰层发生折射,然后散射到我们的眼睛[Van De Hulst 57]。光子进入云层后会发生三种情况(另见图 4.19):

1. 光子可能会被云中的水或非参与粒子(如灰尘)吸收;这就是消光或散射。

这就是消光或吸收。

2. 光子可能从云中向眼睛射出;这是内向散射。

3. 它可以从云中流出,远离眼睛;这是外散射。

比尔定律是近似计算这三种结果概率的标准方法。

4.4.2 比尔定律 Beer’s Law

比尔定律最初是用于化学分析的工具,它模拟了光在穿过材料时的衰减 [Beer 52]。(见图 4.20)。

      


 

在体积测量中,它可用于根据光学厚度可靠地计算透射率[Wrenninge 13]。

如果我们的参与介质是(non-homogenous)非均匀的,如云层,我们就必须使用光线行进法沿着光线累积光学厚度。 这一模型在电影视觉效果中得到了广泛应用,也是我们照明模型的基础。

下面是它在代码中的实现方式:
 



4.4.3 Henyey-Greenstein相位函数

在云层中,光向前散射的概率更高[Pharr and Humphreys 10]。这就是云中有silver lining的原因。(见图 4.21.)
 



1941 年,Henyey-Greenstein 相位函数被提出来模拟小颗粒对光散射的角度依赖性,并用来描述星际尘埃云对光的散射 [Henyey and Greenstein 41].在体积渲染中,该函数用于模拟光在参与介质中的散射概率。我们使用偏心率(方向分量)g 为 0.2 的单个 Henyey-Greenstein 相位函数,以确保云中更多光线向前散射:



下面是它在代码中实现的样子:
 



最终的结果显示在图4.22上:
 


 



4.4.4内散射概率函数(粉糖效应)
 

比尔定律是一个消光模型,这意味着它关注的是光能如何随深度衰减。这就无法近似地反映与云层向阳面的内散射有关的重要照明效果。当视线接近光线方向时,这种效应表现为云层边缘变暗。成堆的糖粉也有类似的效果,这也是我们对这种效果昵称的来源。请参见图 4.23。

这种效果在圆形的浓密云层中最为明显,以至于每个隆起之间的皱褶看起来比更靠近太阳的隆起本身更亮。这些结果似乎与比尔定律的模型完全相反。

回想一下,内向散射是指光线在云层中反弹,直到变成平行光线,然后离开云层到达我们眼睛的一种效应。这种现象甚至会出现在我们观察云的阳光面时(图 4.24)。
 


还要记住,由于前向散射,更多的光沿着原始光线方向向前散射。但是,必须存在相对较大的光学深度,光子才有合理的机会转动 180 度。云边缘周围的路径不会穿过足够大的光学深度,无法将相当一部分光子完全转向。具有足够大的光学深度以将光子旋转 180 度的路径几乎总是位于云内部,因此比尔消光定律将在它离开云进入我们的眼睛之前消除这种贡献。空隙和裂缝是个例外; 它们为云体积内部提供了一个窗口,那里有光学深度相对较大的光子路径,为光子逃逸提供了一条低密度捷径,使裂缝处比周围的凸起处更亮。

我们选择用概率来表示这种现象。想象一下,您正以相同的角度注视着云层上的其中一个隆起区域,与您身后从太阳射出的一组光线呈同一角度(图 4.25)。

如果我们在其中一个凸起的表面下方取样,并将其与其中一个裂缝中处于相同深度的点进行比较,那么裂缝中的点会有更多潜在的云物质,从而导致内散射(图 4.26)。就概率而言,裂缝中的点应该更亮。【折痕出内散射多 所以更亮 】


 



以这个思想实验为指导,我们提出了一个新函数来解释这种效应。由于这一结果实际上与比尔定律相反,因此我们将其表示为原始函数的倒数(图 4.27)。
 

就我们的目的而言,这已经是对这一现象足够准确的近似值了、

无需额外取样。我们将这两个函数合并为一个新函数: Beer's-Powder.。请注意,我们将整个结果乘以 2,使其更接近原始的归一化范围(图 4.28)。

下面是代码实现方法:

                                    powder_sugar_effect = 1.0 − exp ( − light_samples ∗ 2.0 ) ;

                                    beers_law = exp ( − light_samples ) ;

                                    light_energy = 2.0 ∗ beers_law ∗ powder_sugar_effect ;


图 4.29 显示了一个独立测试案例和我们的游戏解决方案的部分结果。


 



4.4.5 雨云
 

我们的系统还模拟了雨云较暗的基底。雨云之所以比其他低空云层更暗,是因为水滴凝结得太厉害,以至于大部分光线在到达我们的眼睛之前就被吸收了。

因此,既然我们已经有了采样点的降水属性,我们就可以利用它来人为地 "增厚 "云层物质。通过增加进入 Beer'sPowder 函数的采样密度,就可以轻松完成这项任务;见图 4.30。变量 p 代表降水。

图 4.31 显示了一些结果。



4.4.6 照明模型总结

综上所述,我们的照明模型由四个部分组成:
 

    1 Beer's law

    2 Henyey-Greenstein 相位函数
    3 散射概率函数(糖粉效应)
    4 雨云吸收增益。

E 代表光能,d 代表照明采样密度,p 代表雨云吸收乘数,g 代表我们在光照方向上的偏心率,θ 代表视线与光线之间的夹角:
                



4.5 云渲染
选择在哪里对数据进行采样以构建图像对于性能和图像质量非常重要。我们的方法试图将巨大消耗的工作限制在可能需要的情况下进行.

4.5.1 球形大气层
 

使用ray march进行渲染的第一部分是决定从哪里开始。当观众位于海洋等看似“平坦”的表面时,地球的曲率显然会导致云层下降到地平线上。 这是因为地球是圆形的,云层是球形的而不是平面的。(见图 4.32)。

为了再现这一特征,我们的射线行进是在一个 3.5 千米厚的球壳中进行的,从地球表面上方 1.5 千米处开始。我们使用球面相交测试来确定射线行进的起点和终点。当我们看向地平线时,射线长度会大幅增加,这就要求我们增加潜在样本的数量。这就要求我们增加潜在样本的数量。在播放器正上方,我们 我们需要多达 64 步,而在地平线上,我们需要多达 128 步。我们的 在我们的光线行进循环中进行了多项优化,使其可以提前退出,因此平均采样数比这一数值要低得多。

4.5.2 Ray March 优化
 

我们不会每次都评估完整的云密度函数,而是只评估云密度函数的低频部分,直到接近云为止。在云的基本形状的边缘进行侵蚀。仅评估 密度函数的低频部分意味着只需读取一个三维纹理,而不是两个,这大大节省了带宽和指令数。图 4.33 展示了使用 "廉价 "样本在空旷空气中进行的步进,以及在接近空旷空气时切换到昂贵样本的过程。在接近云层时切换到昂贵的样本。一旦有几个样本返回 零,我们就返回 "廉价 "样本。


要在代码中实现这一点,我们从零的cloud_test值开始,并使用我们的采样器的布尔值true 在循环中累积密度。 只要cloud_test为0.0,我们就会继续搜索云边界。一旦我们得到一个非零值,我们就抑制该步骤的行进积分并继续使用完整的云密度样本。在连续六个返回0.0的完整云密度样本后,我们切换回云边界搜索。这些步骤确保我们已经退出了云边界并且不会触发额外的工作。


 


 



该算法将3D纹理调用的数量减少了一半,以实现最佳情况,即我们在空旷的天空中步进采样。


为了计算光照,我们需要在每一步光线行进中对光线采集更多的样本。这些采样的总和将用于照明模型,然后在每个视图光线行进步长中按照当前视图光线的密度总和进行衰减。图 4.34 展示了光线行进中的基本光线采样整合行进。

由于我们的目标是在支持许多其他 GPU 密集型任务的游戏引擎中使用,因此我们限制每个光线行进步骤的采样不超过六个。

减少光线采样数量的一种方法是,只有当 光线行进到云层内部时才执行采样。这是一项重要的优化,因为 光采样的成本极高。这种优化不会改变视觉效果。视觉效果没有变化。



4.5.3 锥形采样照明
 

测量查询点与太阳之间云层的透射率,显然是找到太阳光照量的方法。然而,云层中任何一点的光线都会受到光源方向周围区域光线的极大影响。可以把它想象成一个光能漏斗,在我们的样本位置达到顶峰。为了确保照明模型中的比尔定律部分受到这种影响,我们在一个向光源方向扩散的圆锥体中采集六个光样本,从而通过将云的邻近区域包括在内来加权比尔定律衰减函数。见图 4.35。

由于采样次数少,条带状的伪影会立即出现。锥形采样有助于稍微打破条带状,但为了进一步平滑它,我们以较低的mip级别对密度进行采样。

为了计算圆锥偏移量,我们使用了-(1, 1, 1)和+(1, 1, 1)之间的六个噪声结果核,并在远离样本位置时逐渐增大其幅度。如果沿视图行进的累积密度超过了一个阈值(我们使用的是 0.3),那么我们就会将样本切换到低细节模式,以进一步优化光线行进。在此阈值下,视觉差异很小。
 


 



此外,为了考虑到从远处云层投射到我们正在计算光照的云层部分上的阴影 我们在计算光照时,会在三倍于锥体长度的距离处采集一个远距离样本。距离是锥体长度的三倍。(见图 4.36)。
 


 



4.5.4 高空云

我们的方法只对低空云层进行体积渲染。高空云层使用滚动纹理表示。不过,为了将它们与体积云进行整合,需要在光线行进的末端对它们进行采样。对于具有三个通道的 512 * 512 纹理来说,读取纹理的成本可以忽略不计。我们将风向与天气系统中的风向不同的云层制作成动画,以模拟不同云层中的不同风向。(见图 4.37)。

4.5.5 结果

图4.38显示了说明一天中变化时间的照明结果序列。
 



4.6 结论和未来工作

这种方法可以在一天中的任何时间制作出逼真、不断变化的云景,完全取代了我们基于资产的云彩制作方法。这也意味着我们整个天空的内存使用量仅限于几个总计 20 MB 的纹理,而不是为不同天气条件和一天中的不同时间制作多个天空穹顶和广告牌所需的数百兆字节。GPU 上的性能大约为 20 毫秒,但当我们使用temporal reprojection技术构建图像时,这个数字会降低 2 毫秒[Schneider 15, slide 91–93].

内散射概率函数是基于一个思想实验得出的,但我们正在对此进行进一步研究。我们计划使用Magnus Wrenninge)[Wrenninge 15]使用的自然产生暗边的粗暴方法,沿着光线收集数据点,并开发一个更精确地适合这些数据的函数。

4.7 致谢

我要感谢 Nathan Vos、Michal Valient、Elco Vossers 和 Hugh Malan 的帮助。我还要感谢 JanBart van Beek、Marijn Giesbertz 和 Maarten van der Gaag,感谢他们协助我们实现了本项目的外观目标。在实现本项目的外观目标方面提供的帮助。


此外,我个人还要感谢同事们,他们的工作对本报告产生了重大影响 他们的工作对本研究产生了很大影响: Trevor Thomson、Matthew Wilson 和 Magnus Wrenninge。
 

Bibliography(参考)

[Beer 52] A. Beer. “Bestimmung der Absorption des rothen Lichts in farbigen Flussigkeiten” (Determination of the Absorption of Red Light in Colored Liquids). Annalen der Physik und Chemie 86 (1852), 78–88.

[Clausse and Facy 61] R. Clausse and L. Facy. The Clouds. London: Evergreen Books, LTD., 1961. 

[Henyey and Greenstein 41] L. G. Henyey and J. L. Greenstein. “Diffuse Radiation in the Galaxy.” Astrophysical Journal 93 (1941), pp. 78–83.
 

[Mandelbrot and van Ness 68] B. Mandelbrot and J. W. van Ness. “Fractional Brownian Motions, Fractional Noises and Applications.” SIAM Review 10:4(1968), 422–437.


[Perlin 85] K. Perlin. “An Image Synthesizer.” In Proceedings of the 12th Annual Conference on Computer Graphics and Interactive Techniques, pp. 287–296.New York: ACM Press, 1985.


[Pharr and Humphreys 10] M. Pharr and G. Humphreys. Physically Based Rendering: From Theory to Implementation. Boston: Morgan Kaufmann, 2010.


[Quilez 13] I. Quilez. “Clouds.” Shadertoy.com, Shadertoy BETAview/xslgrr, 2013.


[Schneider 15] A. Schneider. “The Real-Time Volumetric Cloudscapes Of Horizon: Zero Dawn.” Paper presented at ACM SIGGRAPH, Los Angeles, CA,August 26, 2015.


[Simul 13] Simul. “TrueSKY.” 30 Day Free Trial - Award winning weather renderer | Simul trueSKY, 2013.


[Van De Hulst 57] H. Van De Hulst. Light Scattering by Small Particles. New York: Dover Publications, 1957.


[Worley 96] Steven S. Worley. “A Cellular Texture Basis Function.” In Proceedings of the 23rd Annual Conference on Computer Graphics and Interactive Techniques, pp. 291–294. New York: ACM Press, 1996.


[Wrenninge 13] M. Wrenninge. Production Volume Rendering: Design and Implementation. Boca Raton, FL: CRC Press, 2013.


[Wrenninge 15] M. Wrenninge. “Art-Directable Multiple Volumetric Scattering.”In ACM SIGGRAPH 2015 Talks, article no. 24. New York: ACM Press,2015.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语言条件语序心得_考研分享 | 王远新语言学教程要点总结(第五章)

点击上方蓝字,关注我吧作者|雨 轩编辑|武思文上次小编分享了王远新老师《语言学教程》的第四章:考研分享 | 王远新《语言学教程》要点总结(第四章),今天小编为大家带来的是第五章的要点分享,希望可以帮到考研的你。第五章 语法关…

世界顶尖精密仪器技术都掌握在哪些国家?

来源:仪商网科技乃第一生产力,而技术经过时间的沉淀,岁月的积累,现实的实践,具备了引领时代的力量后,这样技术就被称为全世界最顶尖的技术。而精密仪器又是开展前沿科学研究、推动技术发展必不可少的科研工…

@modelattribute注解用postman测试怎么传参_谁要是再敢用Map传参,我过去就是一JIO...

还记得上次我写过一篇关于实际项目代码分层和规划的文章《看完这篇,别人的开源项目结构应该能看懂了》, 在文尾处提到过一些注意事项,其中第一条就是:Contorller层参数传递建议不要使用HashMap,推荐使用数据模型定义私…

「反向传播非你原创」,Jürgen发文直指Hinton不应获2019本田奖

来源:机器之心LSTM 之父 Jrgen Schmidhuber 再次掀起争论,这回他指向了深度学习之父、图灵奖得主 Geoffrey Hinton。不过,这次他站出来质疑的是 Hinton 的最新奖项——本田奖。创立于 1980 年的本田奖旨在表彰「为引领生态技术领域的下一代新…

操作文件 -------JavaScrip

本文摘要&#xff1a;http://www.liaoxuefeng.com/ 在HTML表单中&#xff0c;可以上传文件的唯一控件就是<input type"file">。 注意&#xff1a;当一个表单包含<input type"file">时&#xff0c;表单的enctype必须指定为multipart/form-data&…

半导体未来浪潮(深度好文)

本文资料来源于自德勤报告《半导体&#xff1a;未来浪潮》01新格局&#xff1a;全球半导体行业不断演化在过去几年&#xff0c;全球半导体行业增长主要依赖智能手机等电子设备的需求&#xff0c;以及物联网、云计算等技术应用的扩增。预计全球半导体行业增长态势有望持续至下一…

python数据运算

算数运算&#xff1a; 比较运算&#xff1a; 赋值运算&#xff1a; 逻辑运算&#xff1a; 成员运算&#xff1a; 身份运算&#xff1a; 位运算&#xff1a; 运算符优先级&#xff1a; 转载于:https://www.cnblogs.com/ne-zha/p/7136920.html

mysql单台跨数据库查询_在MySQL中怎样进行跨库查询?

在MySQL中跨库查询主要分为两种情况&#xff0c;一种是同服务的跨库查询&#xff1b;另一种是不同服务的跨库查询&#xff1b;它们进行跨库查询是不同的&#xff0c;下面就具体介绍这两种跨库查询。一、同服务的跨库查询同服务的跨库查询只需要在关联查询的时候带上数据名&…

宇宙膨胀背后的故事(卅三):宇宙之有生于无

本文来自程鹗科学网博客1969年&#xff0c;卡特和霍金的导师、剑桥大学宇宙学家夏玛&#xff08;Dennis Sciama&#xff09;在哥伦比亚大学讲学。在他话语停顿的间隙&#xff0c;有人突然迸出一句&#xff1a;“也许宇宙就是一个真空涨落&#xff08;vacuum fluctuation&#x…

《自然》 脑机接口新突破 人脑信号转文本准确率达97%

来源&#xff1a;网易智能据国外媒体报道&#xff0c;一个由加州大学旧金山分校的研究团队打造的新型人工智能系统可根据人脑信号来生成文本&#xff0c;准确率最高可达97%。亚马逊和谷歌等科技公司打造的虚拟助手相当先进&#xff0c;语音识别能力比起几年前进步惊人&#xff…

mysql 取月份天数_mysql 之 获取指定月份天数和指定月份上月天数

1.语法DAY(LAST_DAY(CONCAT(nc_date,01)))AS cm_day_cnt, -- 当月天数DAY(LAST_DAY(DATE_SUB((CONCAT(nc_date,01)),INTERVAL 1 MONTH))) -- 上月天数2.解析我的nc_date 是 202004&#xff0c;因此要使用concat 连接01 &#xff0c;形成完整的日期LAST_DAY()函数&#xff0c;获…

tomcat各目录(文件)作用

1.bin bin目录主要是用来存放tomcat的命令&#xff0c;主要有两大类&#xff0c;一类是以.sh结尾的&#xff08;linux命令&#xff09;&#xff0c;另一类是以.bat结尾的&#xff08;windows命令&#xff09;。 重要&#xff1a; 很多环境变量的设置都在此处&#xff0c;例如可…

对外星智能的搜索得到了重大的升级

Photo: iStockphotoRadio antenna dishes of the Very Large Array radio telescope near Socorro, New Mexico.来源&#xff1a;IEEE电气电子工程师我们都曾一度怀疑宇宙中其他地方是否存在智慧生命。加州大学伯克利分校&#xff08;University of California Berkeley&#x…

打开脑科学研究的另一扇窗:脑神经化学活体原位电化学分析新技术

来源&#xff1a;brainnews脑科学是目前国际前沿科技的热点研究领域之一&#xff0c;对脑功能的研究有助于理解人类认知、情感等复杂生理过程的本质&#xff0c;以及神经系统疾病的形成和发展规律。脑神经信号的传递以及代谢过程都离不开化学物质的参与&#xff0c;因此&#x…

人工智能下一阶段,为啥要看互联网巨头?

来源&#xff1a;财讯网回顾过去的十余年&#xff0c;人工智能的进步可谓“耀眼”。尤其是从2015年“阿法狗”横空出世之后&#xff0c;人工智能行业的发展速度一骑绝尘。归根结底&#xff0c;是人类在人工智能领域探索50余年&#xff0c;最终才在半导体技术和软件技术的帮助下…

日本科学家:可观测宇宙中,我们可能是唯一的生命

图片来源&#xff1a;Pixabay长期以来&#xff0c;人类一直渴望在宇宙中找到地外生命的痕迹&#xff0c;但一项于今年早些时候发表的研究&#xff0c;给持有此类想法的人泼了一盆冷水。基于“自然发生”学说以及其中的“RNA世界”假说&#xff0c;研究人员认为在可观测宇宙中&a…

go 接口 构造器_Go 中接口值的复制

我一直在思考 Go 语言它是如何工作的。直到最近我才发现 Go 中一切都是基于值的。当我们向函数传递参数、迭代切片、执行类型断言时我们都可以看到这一现象。在这些例子中&#xff0c;这些数据结构所存储的值的拷贝会被返回。当我刚开始学习 Go 的时候&#xff0c;我对于这种实…

【人工智能】人工智能革命与机遇

来源 | 北大AI公开课编辑 | Vincent、Natalie课程导师&#xff1a;雷鸣&#xff0c;天使投资人&#xff0c;百度创始七剑客之一&#xff0c;酷我音乐创始人&#xff0c;北京大学信科人工智能创新中心主任&#xff0c;2000年获得北京大学计算机硕士学位&#xff0c;2005年获得斯…

laravel log 对象_swoole运行模式加速laravel应用的详细介绍(life)

本篇文章给大家带来的内容是关于swoole运行模式加速laravel应用的详细介绍&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。我的官方群点击此处。一、SwooleSwoole号称重新定义了PHP&#xff0c;它是一个PHP扩展&#xff0c;使…

OVS+DPDK Datapath 包分类技术

本文主体内容译于[DPDK社区文档]&#xff0c;但并没有逐字翻译&#xff0c;在原文的基础上进行了一些调整&#xff0c;增加了对TSS分类器的详细阐述。 1. 概览 本文描述了OVSDPDK中的包分类器(datapath classifier -- aka dpcls)的设计与实现思路。本文的内容主要牵涉到分类器对…