Unity Shader 小结
1 渲染流水线
指的是CPU和GPU根据一系列的顶点数据和纹理等信息,最终转换成人眼可以识别的图像的过程。
1.1 渲染流程
《实时渲染》一书将渲染流程分成3个阶段:应用阶段、几何阶段、光栅化阶段。
1.1.1 应用阶段
这个阶段由CPU负责实现,应用准备好模型、光源等渲染数据,设置好材质、纹理、Shader等渲染状态,然后输出为渲染所需的点、线、三角面等几何信息,即渲染图元,这些渲染图元将被传递给下一阶段–几何阶段。
1.1.2 几何阶段
这个阶段由GPU负责实现,处理绘制的几何相关事情,其中一个重要任务就是把顶点坐标变换到屏幕空间,然后交给光栅器处理。同时输出顶点深度值、着色等信息,传递给下一阶段。
顶点着色器就是运行在几何阶段。
1.1.3 光栅化阶段
这个阶段也是在GPU上运行,使用上个阶段传递的数据来产生屏幕上的像素,并渲染出最终图像。
片元着色器运行在光栅化阶段。
1.2 GPU流水线
GPU流水线就是GPU渲染的过程,包含几何阶段和光栅化阶段。下图展示了GPU流水线的不同阶段实现。
如上图所示,颜色表示了不同阶段的可配置性或可编程性。绿色表示该流水线阶段是完全可编程控制的,黄色表示可配置但不可编程,蓝色表示由GPU固定实现,开发者不可控制。
实线表示该Shader必须由开发者编程实现,虚线表示该Shader是可选的。
1.2.1 顶点着色器
顶点着色器是GPU流水线中几何阶段的第一步,它的输入来自CPU。处理单位是顶点,每个顶点都会调用一次顶点着色器,它们之间没有联系,互相独立,GPU可以并行化处理每个顶点,因此速度很快。
顶点着色器的工作主要是:坐标变换和逐顶点光照(计算顶点颜色)。坐标变换就是对顶点的坐标(位置)进行某种变换,这在顶点动画中非常有用。例如,通过改变顶点位置来模拟水面、布料等。但无论怎样改变,一个最基本的顶点着色器必须完成的工作是,把顶点坐标从模型空间转换到齐次裁剪空间(即透视空间)。
1.2.2 片元
一个片元并不是真正意义上的像素,而是用于计算每个像素最终颜色的状态集合,这些状态包括它的屏幕坐标、深度,以及其它从几何阶段输出的顶点信息,例如法线、纹理坐标等。
1.2.3 片元着色器
用于实现逐片元的着色操作,输出一个或多个颜色值。
2 Unity Shader 基础
在Unity中Shader总是和材质配合使用。
2.1 使用流程
- 创建一个材质;
- 创建一个Unity Shader,并赋给上一步创建的材质;
- 把材质赋给要渲染的对象;
- 在材质面板中调整Unity Shader的属性,得到满意效果;
2.2 基本结构
Properties语义块包含了一系列属性,这些属性将会出现在材质面板中。
Unity Shader的基本结构如下所示。
Shader "MyShader" {Properties {// 所需的各种属性}SubShader {// 真正意义上的Shader代码}SubShader {// 和上一个SubShader类似}
}
2.3 Cg/HLSL语义
Unity支持的语义在不同阶段的含义如下
2.3.1 顶点着色器输入时
语义 | 描述 |
---|---|
POSITION | 模型空间中的顶点位置,通常是float4类型 |
NORMAL | 顶点法线,通常是float3类型 |
TANGENT | 顶点切线,通常是float4类型 |
TEXCOORD0 | 该顶点的纹理坐标,TEXCOORD0表示第一组,通常是float2或float4类型 |
COLOR | 顶点颜色,通常是fixed4或float4类型 |
2.3.2 从顶点着色器传递数据给片元着色器时
语义 | 描述 |
---|---|
SV_POSITION | 裁剪空间中的顶点坐标 |
COLOR0 | 用于输出第一组顶点颜色,不是必需 |
COLOR1 | 用于输出第一组顶点颜色,不是必需 |
TEXCOORD0~TEXCOORD7 | 用于输出纹理坐标,不是必需 |
2.3.3 片元着色器输出时
语义 | 描述 |
---|---|
SV_Target | 输出值将会存储到渲染目标(render target)中 |
3 基础光照
渲染包括两大部分:一个像素是否可见?这个像素是什么颜色?而颜色很大程度上依赖于光照。光照模型就是用来决定在一个像素上怎样计算光照。
3.1 标准光照模型
标准光照模型只关心直接光照,也就是直接从光源发射出来照射到物体表面后,经过一次反射直接进入摄像机的光线。
基本方法是,把进入到摄像机内的光线分为4个部分,每个部分使用一种方法来计算它的贡献度。这4个部分是。
- 自发光。描述当给定一个方向时,表面本身会向该方向发射多少辐射量。
- 高光反射。描述当光线从光源照射到模型表面,会在完全镜面反射方向散射多少辐射量。
- 漫反射。描述当光线从光源照射到模型表面时,会向每个方向散射多少辐射量。
- 环境光。描述其它所有的间接光照。
3.1.1 自发光
自发光的计算很简单,只需要在片元着色器输出最后的颜色之前,添加上材质的自发光颜色即可。
3.1.2 环境光
在Shader中,只需要通过Unity
的内置变量UNITY_LIGHTMODEL_AMBIENT
就可以得到环境光的颜色和强度信息。
3.1.3 漫反射
在漫反射中,视角位置不重要,因为反射完全随机,可以认为在任何反射方向上的分布都一样。但是,入射光线的角度很重要。
漫反射部分的计算公式如下
Cdiffuse=(Clight⋅Mdiffuse)max(0,n^⋅l^)C_{diffuse} = (C_{light} \cdot M_{diffuse}) max(0, \hat{n} \cdot \hat{l})Cdiffuse=(Clight⋅Mdiffuse)max(0,n^⋅l^)
其中n^\hat{n}n^是表面法线,l^\hat{l}l^是指向光源的单位矢量,MdiffuseM_{diffuse}Mdiffuse是材质的漫反射颜色,ClightC_{light}Clight是光源颜色。
最终颜色 = 环境光 + 漫反射光。
3.1.4 高光反射
使用Phong模型的高光反射部分的计算公式如下
Cspecular=(Clight⋅Mspecular)max(0,v^⋅r^)MglassC_{specular} = (C_{light} \cdot M_{specular}) max(0, \hat{v} \cdot \hat{r}) ^ {M_{glass}}Cspecular=(Clight⋅Mspecular)max(0,v^⋅r^)Mglass
最终颜色 = 环境光 + 漫反射光 + 高光反射部分。
3.2 逐顶点和逐像素
前面给出了基本光照模型使用的数学公式,那在什么地方计算这些光照模型呢?有两种选择:在顶点着色器中计算光照,被称为逐顶点光照;
在片元着色器中计算光照,被称为逐像素光照。
在逐像素光照中,以每个像素为基础得到它的法线,然后进行光照模型的计算。与之相对的是逐顶点光照,在每个顶点上计算光照,然后在渲染图元内部进行线性插值,最后输出为像素颜色。
由于顶点数量远小于像素数量,因此逐顶点光照的计算量小于逐像素光照。但是逐顶点光照依赖于线性插值,因此有非线性计算时会出现问题,例如出现明显的棱角。
4 基础纹理
纹理映射坐标定义了该顶点在纹理对应的2D坐标,通常用一个二维变量(u, v)
来表示,其中u是横向坐标,v是纵向坐标,因此,也被称为UV
坐标。它的值通常被归一化到[0, 1]
范围内。
4.1 纹理属性
Unity使用tex2D
函数对纹理采样。
4.1.1 Wrap Mode
决定了当纹理坐标超过[0, 1]后将如何处理,有两种模式。
- Repeat。这种模式下,如果纹理坐标超过1,坐标的整数部分将会被舍弃,而直接使用小数部分进行采样。这样的结果是纹理会不断重复。
- Clamp。这种模式下,如果纹理坐标超过1,那么截取为1;如果小于0,那么截取为0。这样的结果是只会截取到纹理的边界。
4.1.2 Filter Mode
决定了当纹理由于变换而产生拉伸时将会采取哪种滤波模式,影响到纹理放大或缩小时得到的图片质量。有如下3种模式,它们的效果依次提升,但耗费性能也依次增大。
- Point。采样像素数目只有一个最近邻,因此图像看起来有种像素风格的效果。
- Bilinear。会找到4个邻近像素,进行线性插值混合后得到最终像素,因此图像看起来像被模糊了。
- Trilinear。和
Bilinear
几乎一样,只是还会在多级渐远纹理之间进行混合。如果没有使用多级渐远纹理技术,则结果和Bilinear
一样。
一般情况,我们会选择Bilinear
滤波模式。
4.2 单张纹理
纹理的一种常见应用是用来代替物体的漫反射颜色。
环境光 = 纹理采样值 * 原环境光
最终颜色 = 环境光 + 漫反射光 + 高光反射部分。
4.3 凹凸映射
纹理的另一种应用就是凹凸映射,通过使用一张纹理来修改模型表面的法线,让模型看起来是“凹凸不平”的。有两种主要的方法。
- 使用一张高度纹理来模拟表面位移,得到一个修改后的法线值,这种方法被称为
高度映射
。 - 使用一张法线纹理来直接存储表面法线,这种方法被称为
法线映射
。
4.4 渐变纹理
纹理其实能存储任何表面属性,所以可通过渐变纹理来控制漫反射光照的结果,使模型呈现渐变效果。
漫反射部分 = 渐变纹理采样值 * 原材质颜色
最终颜色 = 环境光 + 漫反射部分 + 高光反射部分。
4.5 遮罩纹理
遮罩允许我们保护某些区域,使它免于修改。简单说,遮罩可以控制某些区域显示,某些区域不显示。甚至还可以控制如何混合纹理,达到更细腻的效果。
一般使用3张纹理,包括主纹理_MainTex、法线纹理_BumpMap和遮罩纹理_SpecularMask,通过采样得到遮罩纹理的纹素值,然后与某种表面属性相乘。这样,当该通道的值为0时,保护表面不受该属性的影响。
环境光 = 主纹理采样值 * 原环境光
高光反射部分 = 原高光反射部分 * 遮罩纹理采样值
最终颜色 = 环境光 + 漫反射部分 + 高光反射部分。
5 透明效果
Unity使用两种方法实现透明效果。一种是透明度测试
,不适用于半透明效果。另一种是透明度混合
。
- 透明度测试。只要一个片元的透明度不满足条件,那么该片元会被舍弃,否则按照普通的不透明物体来处理,即进行深度测试、深度写入等。所以,这种效果很极端,要么完全透明,要不完全不透明。
- 透明度混合。它使用片元的透明度作为混合因子,与已经存储在颜色缓冲区的颜色值进行混合,得到新的颜色。这种方法可以得到真正的半透明效果,但是要关闭深度写入,且必须是正确的渲染顺序。
6 更复杂的光照
6.1 渲染路径
渲染路径决定了光照是如何应用在Shader中的。主要有3种:前向渲染路径(Forward Rendering Path)、延迟渲染路径(Deferred Rendering Path)、顶点照明渲染路径(Vertex Lit Rendering Path)。从Unity 5.0开始,顶点照明渲染路径已经被抛弃(但仍然支持使用了它的旧Shader)。
6.1.1 前向渲染路径
前向渲染路径是最常用的一种渲染路径,大致过程如下:
- 对片元进行深度测试,如果未通过,说明该片元不可见,直接舍弃;
- 如果片元可见,则进行光照计算,并更新帧缓冲。
对于每个逐像素光源,都需要进行上面一次完整的渲染流程。如果一个物体被多个逐像素光源影响,就需要执行多个Pass,每个Pass计算一个光照结果,然后在帧缓冲中把这些结果混合起来得到最终的颜色值。如果场景中有N个物体,每个物体受M个光源影响,那么渲染整个场景一共需要N*M
个Pass。
6.1.2 延迟渲染路径
如前所述,每执行一个Pass都需要重新渲染一遍物体,当场景中有大量实时光源时,前向渲染的性能会急速下降,因此提出了延迟渲染。
延迟渲染主要包含两个Pass。在第一个Pass,不进行任何光照计算,仅仅计算哪些片元可见,存储到G缓冲区。然后在第二个Pass中,利用G缓冲区的各个片元信息,进行真正的光照计算。
可以看到,延迟渲染只是使用两个Pass,跟场景中有多少光源没关系,效率不依赖于场景复杂度,因此可提升性能。但也有一些缺点。
- 不能处理半透明物体
- 不支持真正的抗锯齿(anti-aliasing)功能
- 显卡必须支持MRT(Multiple Render Targets)
6.2 阴影
Unity使用Shadow Map
技术来实现阴影。它的原理是把摄像机放在与光源重合的位置上,那么该光源的阴影就是摄像机看不到的地方。
Unity会为光源计算它的阴影映射纹理(shadow map),本质上是一张深度图,记录了从光源位置出发、能看到的场景中距离它最近的表面位置(深度信息)。
一个物体接收来自其它物体的阴影,以及它向其他物体投射阴影是两个过程。
- 接收来自其它物体的阴影,必须在Shader中对阴影映射纹理进行采样,把采样结果和最后光照结果相乘来产生阴影效果。
- 向其他物体投射阴影,必须把该物体加入到光源的阴影映射纹理的计算中,从而让其他物体在对阴影映射纹理采样时可以得到该物体的相关信息。
7 高级纹理
7.1 立方体纹理
立方体纹理包含6张图像,对应一个立方体的6个面。它最常见的用处是用于环境映射,创建方法有三种:
- 直接由一些特殊布局的的纹理创建;
- 手动创建一个Cubemap资源,再把6张图赋给它;
- 由脚本生成,利用
Camera.RenderToCubemap
函数实现。
7.1.1 反射
通过入射光线的方向和表面法线方向来计算反射方向,再利用反射方向对立方体纹理采样,即可模拟反射效果。
7.2 渲染纹理
现代GPU允许把整个三维场景渲染到一个中间缓冲中,即渲染目标纹理(Render Target Texture, RTT),而不是传统的帧缓冲或后背缓冲(Back Buffer),与之相关的是多重渲染目标(Multiple Render Target, MRT),即把场景同时渲染到多个渲染目标纹理中,而不再需要为每个渲染目标纹理单独渲染完整的场景。延迟渲染
就是多重渲染目标的一个应用。
我们可以对这些渲染纹理编写自定义的Pass,从而实现各种屏幕特效。
7.2.1 镜子效果
使用一个渲染纹理作为输入,并把该纹理在水平方向上翻转后显示到物体上,即可模拟镜子效果。
7.2.2 玻璃效果
首先使用一张法线纹理来修改模型的法线信息,然后使用反射方法,通过一个Cubemap来模拟玻璃的反射。而在模拟折射时,则使用GrabPass获取玻璃后面的屏幕图像,并使用切线空间下的法线对屏幕纹理坐标偏移,最后对屏幕图像采样来模拟近似的折射效果。
8 屏幕后处理特效
是指在渲染完整个场景得到屏幕图像后,再对这个图像进行一系列操作,从而实现各种屏幕特效。
8.1 后处理过程
- 首先在摄像机中添加一个用于屏幕后处理的脚本;
- 在脚本中实现
OnRenderImage
函数来获取当前屏幕的渲染纹理; - 调用
Graphics.Blit
函数使用特定的Shader进行处理,再把返回的渲染纹理显示到屏幕上;
8.2 调整亮度、饱和度和对比度
首先得到原图像的采样结果,然后进行如下调整:
- 调整亮度。只需把原颜色乘以指定亮度系数即可;
- 调整饱和度。对原颜色的RGB每个分量乘以一个特定系数再相加,得到该像素对应的亮度值,然后用该亮度值创建一个饱和度为0的颜色,再用指定饱和度系数对其和上一步得到的颜色之间进行插值,即可得到期望的饱和度颜色;
- 调整对比度。首先创建一个对比度为0的颜色值(各分量均为0.5),再使用指定对比度系数对其和上一步得到的颜色之间进行插值,即可得到最终的颜色值。
8.3 边缘检测
原理是利用一些边缘检测算子对图像进行卷积(convolution)
操作。
8.3.1 什么是卷积
卷积操作指的是使用一个卷积核对图像中的每个像素进行一系列操作。卷积核是一个四方形网格结构(例如3*3的方形区域),该区域内每个方格都有一个权重值。
如下图所示,当对某个像素进行卷积时,会把卷积核的中心放置于该像素上,依次计算核中每个元素和其覆盖的图像像素值的乘积并求和,得到的结果就是该位置的新像素值。
8.3.2 边缘如何检测
首先考虑一下,边是如何形成的?如果相邻像素之间存在差别明显的颜色、亮度、纹理等属性,就可以认为它们之间应该有一条边界。这种相邻像素之间的差值用梯度(gradient)
来表示,可以知道,边缘处的梯度绝对值会比较大。
8.4 运动模糊
在真实世界中运动模糊非常常见,它可以让物体运动看起来更加真实平滑。
实现运动模糊有多种方法。一种方法是利用一块累计缓存(accumulation buffer)
来混合多张连续的图像。当物体快速移动产生多张图像后,取它们之间的平均值作为最后的运动模糊图像。但这种方法对性能消耗很大,因为想要获取多张帧图像意味着要在同一帧里渲染多次场景。另一种应用广泛的方法是创建和使用速度缓存(velocity buffer)
,这个缓存存储了各个像素当前的运动速度,然后利用该值来决定模糊的方向和大小。
9 非真实感渲染
非真实感渲染(Non-Photorealistic Rendering, NPR)指的是用一些渲染方法,使画面达到和某些特殊绘画风格相似的效果,例如卡通、水彩风格等。
9.1 卡通风格的渲染
卡通风格的画面有一些共同特点,例如物体被黑色线条描边,以及分明的明暗变化等。高光效果也有所不同,往往是一块块分界明显的纯色区域。
实现方法除了光照模型不同外,还需要在物体边缘部分绘制轮廓。
9.2 素描风格的渲染
实现方法是直接使用6张素描纹理。
首先在顶点着色器计算逐顶点的光照,根据光照结果决定6张纹理的混合权重,并传递给片元着色器。然后在片元着色器中根据这些权重来混合6张纹理的采样结果。
10 Unity的渲染优化技术
影响性能的主要是两种计算资源:CPU和GPU。
10.1 CPU优化
- 使用批处理减少DrawCall数量;
- 减少复杂的脚本或者物理模拟;
10.2 GPU优化
- 减少需要处理的顶点数量。
- 优化几何体
- 使用模型的
LOD(Level of Detail)
技术 - 使用
遮挡剔除(Occlusion Culling)
技术
- 减少需要处理的片元数量
- 控制绘制顺序
- 警惕透明物体
- 减少实时光照
- 减少计算复杂度
- 使用Shader的
LOD(Level of Detail)
技术 - 代码方面的优化
- 使用Shader的
10.3 节省内存带宽
- 减少纹理大小
- 合理利用分辨率缩放
11 基于物理的渲染(Physically Based Rendering, PBR)
PBR指的是基于物理光照的着色和渲染技术,可以更真实的表现光与物体的互动。简单来说,就是使用了更复杂的光照计算公式(漫反射和高光),包含间接照明、间接高光、粗糙度、金属度等属性。
11.1 什么是全局光照
指的是模拟光线如何传播,不仅考虑直接光照,还会计算光线被不同物体表面反射所产生的间接光照。
计算间接光照的一个传统方法是使用光线追踪,来追踪场景中每一条重要光线的传播路径,可以得到非常出色的画面效果。但计算非常耗时,不适合用在实时渲染中。
Unity采用实时+预计算相结合的方法来模拟全局光照,在不同情况下搭配使用。
11.2 什么是HDR
HDR
是High Dynamic Range的缩写,即高动态范围,与之相对的是低动态范围(Low Dynamic Range, LDR)
。动态范围指的是最高和最低亮度之间的比值。
真实世界中,最亮和最暗区域的范围非常大,比值可以超过几万倍。而传统的亮度用一个8位值表示,意味着最多只能有256种亮度,必然会存在精度损失。
HDR使用远高于8位的精度(如32位)来记录亮度信息,因此可以更加精确地反映真实的光照环境。即亮的物体真的非常亮,暗的物体真的非常暗,同时又可以看到两者之间的细节。
HDR的缺点是需要更大的显存空间,渲染速度会变慢,同时一些硬件并不支持HDR。另外一旦使用了HDR,就无法再利用硬件的抗锯齿功能。
欢迎关注微信公众号“楚游香”,做进一步的技术交流。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- MySQL—视图(二)
一、创建myview1视图 create or replace view myview1 as select * from student where ssex女1、视图中插入数据 插入第一条数据 insert into myview1 values(09,王五,1994-07-10,女)2、查看视图 select * from myview1运行结果:视图中新增一条数据 3、插入第二…...
2024/4/27 0:49:26 - vue进阶知识点(4)——vue脚手架介绍与安装
什么是脚手架? 通过前三节我们了解到了webpack的基本使用一般情况下,我们不会手写webpack配置,因为自己纯手工配置webpack效率很低甚至写的配置内容也不是很好的在开发大型项目的时候会考虑很多因素,首先就需要配置webpack和文件…...
2024/4/18 8:52:08 - java知识梳理(基础)1 -10
如有不足,还望指正 Java继承了C语言的优点,去掉了C中学习起来比较难的多继承、指针等概念,有简单性、面向对象、分布性、编译和解释性、稳健性、安全性、可移植性、高性能等特点。 1.java的三大特性是什么? 封装,即是…...
2024/4/20 14:53:15 - 【算法千题案例】每日LeetCode打卡——68.反转字符串中的元音字母
📢前言🌲原题样例:反转字符串中的元音字母🌻C#方法:双指针🌻Java 方法:双指针💬总结📢前言 🚀 算法题 🚀 🌲 每天打卡一道算法题&…...
2024/4/15 8:19:38 - 21天好习惯”第一期-12
定义视图 1.建立视图 CREATE VIEW < 视图名>【<列名>】 【WITH CHECK OPTION】; 2.删除视图 DROP VIEW <视图名>【CASCADE】...
2024/4/25 5:38:02 - 基于JAVA实现的WEB端UI自动化 - WebDriver框架篇 - XSLT (报告、模板框架)
文章目录XSLT (报告、模板框架)1、在官方网站上下载testNG-xslt 并解压2、使用xslt替换testng自带的测试报告并优化基于JAVA实现的WEB端UI自动化 -自动化测试简单介绍 基于JAVA实现的WEB端UI自动化 - WebDriver基础篇 - 实现简单的浏览器操作 基于JAVA实现的WEB端UI自动化 - …...
2024/5/1 7:21:10 - 16 - vulhub - Django JSONField/HStoreField SQL注入漏洞(CVE-2019-14234)
文章目录漏洞名称:Django JSONField/HStoreField SQL注入漏洞(CVE-2019-14234)影响版本漏洞原理漏洞复现环境准备漏洞利用结合 CVE-2019-9193 进行 getshell修复建议漏洞名称:Django JSONField/HStoreField SQL注入漏洞࿰…...
2024/4/15 8:19:33 - 高级数据结构总结
高级数据结构总结 前期回顾:常用数据结构总结 仅仅掌握好它们是不足以应对大厂的算法面试的,很多大厂的算法面试题都涉及到了大数据、图论以及动态规划的数据等,这些问题如果只凭借常用数据结构来解决的话,是很难达到理想的时间和…...
2024/4/6 23:47:18 - DOM(三)
事件高级 注册事件(绑定事件) 给元素添加事件,称为注册事件或者绑定事件。 注册事件有两种方式:传统方式和方法监听注册方式 传统注册方法: 利用 on 开头的事件 onclick<button onclick“alert(hi~)”></…...
2024/4/26 3:20:46 - C 语言经典100例(61-70)
所有题目来源:菜鸟教程C 语言经典100例 附上前面的题目:C 语言经典100例(51-60) 目录 C 练习实例61 - 杨辉三角形 C 练习实例62 C 练习实例63 C 练习实例64 C 练习实例65 C 练习实例66 C 练习实例67 C 练习实例68 C 练习实例69 C 练习实例70 C 练习实…...
2024/4/18 11:50:38 - 深度解析,教你如何打造自动驾驶的数据闭环
最近自动驾驶和数据闭环结合在一起,原因是自动驾驶工程已经被认可是一个解决数据分布“长尾问题”的任务,时而出现的corner case(极端情况)是对数据驱动的算法模型进行升级的来源之一,如图所示。 构成这个自动驾驶数据闭环的核心技术和模块都有哪些呢?首先是这个自动驾驶…...
2024/5/2 13:25:55 - 数学建模太难,如何以Tableau可视化的方式打开?
项目案例 这是一家咖啡店的数据,Excel里有两个表,分别是销售数据表、产品表。 销售数据表记录了咖啡订单,包括字段:订单编号、订日期、门店、产品ID、顾客、数量。 产品表中记录了咖啡的种类与价格,包括字段:咖啡ID、咖啡种类、杯型、产品名称、价格。 1.什么是数据关系…...
2024/4/18 11:56:21 - excel实战应用案例100讲(四)-Excel玩转数据:从分析到可视化
总有人觉得Excel,low,可我从没这样想。“装机必备”的封号不只是调侃,要做更综合的功能,自然在更专业的领域无法绕开众口难调的窘境。况且就实用性而言,Excel用好了也是绝对的数据神器。 这一期就介绍Excel统计函数、分析加载项、迷你图如何大显身手,用到的数据来自世界…...
2024/4/15 8:19:38 - Web前端-----day-03 网页制作
1 内边距(padding) 内边距指的是边框与内容之间的距离 padding-top:上内边距padding-bootom:下内边距padding-left:左内边距paddging-rigth:右内边距 <!DOCTYPE html> <html lang"en"…...
2024/5/2 12:45:58 - 斐波那契数列详解
目录 1.认识斐波那契数列 1.1 什么是斐波那契数列 1.2 斐波那契数列的规律 2.用代码的思维实现斐波那契数列 2.1 确定要查找第几个斐波那契数列 2.2 如何利用斐波那契数列规律 2.3 如何利用循环实现斐波那契数列 2.4 如何进入循环 2.5 如何跳出循环 1.认识斐波那契数列 …...
2024/5/2 11:59:00 - 动态生成表格
动态生成表格 因为里面的学生数据都是动态的,我们需要js 动态生成。 这里我们模拟数据,自己定义好数据。 数据我们采取对象形式存储。所有的数据都是放到tbody里面的行里面。因为行很多,我们需要循环创建多个行(对应多少人&#…...
2024/5/2 10:50:11 - “21天好习惯”第一期-12
1. (程序题) 题目描述: 输入一个正整数a,输出从1到a的所有数的阶乘和。(1! 2!3!...a!) 输入描述: 一行输入一个正整数a(1 < a < 20) 输出描述: 输出一…...
2024/4/20 13:15:10 - Mybatis-Plus添加报错 org.mybatis.spring.MyBatisSystemException
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property ‘id’ of ‘class com.example.demo.entity.User’ with value ‘1454753531283935233’ Cause: java.lang.IllegalArgumentExce…...
2024/4/15 8:20:23 - UA OPTI512R 傅立叶光学导论15 2-D Fourier变换与Hankel变换
UA OPTI512R 傅立叶光学导论15 2-D Fourier变换与Hankel变换2-D Fourier变换的定义2-D Fourier变换的性质极坐标系中的2-D Fourier变换Hankel变换2-D Fourier变换的定义 定义 2-D Fourier变换 F(ξ,η)F[f(x,y)]∫−∞∞f(x,y)e−j2π(ξxηy)dxdyF(\xi,\eta)\mathcal{F}[f(x,…...
2024/4/18 12:25:47 - SpringBoot 的观察者模式
观察者模式属于行为型模式,也叫发布订阅模式,定义对象间的一种一对多的依赖的关系,当一个对象的状况发生改变时,所有的依赖就会对它的对象都得到一个通知并自动跟新。主要解决一个对象状态改变给其他对象的通知,缺点就…...
2024/4/27 9:53:58
最新文章
- TypeScript学习笔记:迈向更安全的JavaScript编程
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
2024/5/2 18:21:35 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 《前端防坑》- JS基础 - 你觉得typeof nullValue === null 么?
问题 JS原始类型有6种Undefined, Null, Number, String, Boolean, Symbol共6种。 在对原始类型使用typeof进行判断时, typeof stringValue string typeof numberValue number 如果一个变量(nullValue)的值为null,那么typeof nullValue "?" const u …...
2024/5/2 10:47:24 - vue3项目运行正常但vscode红色波浪线报错
以下解决办法如不生效,可尝试 重启 vscode 一、Vetur插件检测问题 vetur 是一个 vscode 插件,用于为 .vue 单文件组件提供代码高亮以及语法支持。但 vue 以及 vetur 对于 ts 的支持,并不友好。 1、原因 如下图:鼠标放到红色波浪…...
2024/5/1 13:10:52 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/2 9:28:15 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57