长沙网站建设案例tomcat安装wordpress
- 作者: 五速梦信息网
- 时间: 2026年04月20日 05:08
当前位置: 首页 > news >正文
长沙网站建设案例,tomcat安装wordpress,一般网站系统并发量,东明住房和城乡建设局网站原理篇#xff1a; 常见的渲染方程如下#xff1a; 在不考虑自发光项与考虑阴影对于着色结果的影响之后可以将方程变化为如下形式#xff1a; 如果射线在到达光源前击中了其他物体时#xff0c;就认为这条来自光源的光线对着色点没有贡献。 利用上述渲染方程进行正确的着…原理篇 常见的渲染方程如下 在不考虑自发光项与考虑阴影对于着色结果的影响之后可以将方程变化为如下形式 如果射线在到达光源前击中了其他物体时就认为这条来自光源的光线对着色点没有贡献。 利用上述渲染方程进行正确的着色和阴影计算是非常耗时的因为它需要进行积分因此在光栅化的实时渲染中需要对该方程进行简化 微积分的近似公式 Image 而通过该方程可以将着色和阴影分开也就是说可以在先计算着色在此基础上再乘上阴影计算的结果即可近似正确的表示阴影。 基础篇:
- Shadow Mapping 渲染阴影场景涉及两个主要的绘图步骤。第一个生成阴影贴图本身第二个将其应用于场景。根据实施和灯的数量这可能需要两次或更多次绘图过程多次绘图指的是场景中存在多个光源。 shadow mapping 的基础原理 总结Shadow Mapping的原理是首先将场景从光源的视角进行深度图的渲染然后再从观察者的视角进行渲染并使用深度比较来检测可见性并生成阴影。 Shadow Mapping的基本步骤如下 从光源视角渲染深度图先将相机移动到光源位置以光源为视点向场景中渲染深度图即从灯光的角度生成一个视锥体然后对视锥体内的场景使用透视投影矩阵进行投影。生成阴影贴图将深度信息保存并将结果存入一个纹理作为阴影贴图 Image 从相机视角渲染场景现将相机移回到视点位置在进行场景渲染前需要将阴影贴图传递给着色器 Image 计算阴影在片元着色器中使用深度测试函数来检查当前像素是否被光源照射到。首先通过使用当前片元的深度值与阴影贴图中对应位置处的深度值进行比较如果当前像素被遮挡则该像素被认为是在阴影中否则它处在光照下。 示例 下图是第一个渲染 pass 中渲染出的光源 Image 下图示从相机视角第二个 pass 中渲染场景深度图 Image 由此可以进行下一步深度比较计算阴影操作。 传统shadow mapping 的问题 1.精度问题 在shadow mapping 由光源点生成的一张深度图中由于深度图的本质是一张纹理而纹理是一种离散化的数字信号从深度图还原源场景深度信息时难免对发生精度不同的问题。 Image 而由于精度原因容易产生自遮挡的问题。 自遮挡问题产生的原因是 Image 解决方案 Image 上面左图显示了这种自遮挡的现象大多出现在原本没有阴影的地方。这些地方本该直接被光源照的但却出现了条纹状的阴影。其原因是光源是倾斜照射的并且Shadow Map产生的深度图的分辨率有限。 解决方案是容忍一段区间的遮挡物即将阴影图中的深度值偏移一段。这一段距离就称为bias如下。 但这种情况的 bias过大变会造成上面右图的人物的模型和阴影没有连上的情况。 此外还有一种解决方案是Games202中讲解的学术界工业界中不用中用的一个解决方法 记录最小深度和次小深度的平均作为后续的深度进行比较。 Image 工业界不用的原因 要求物体双面渲染这在游戏中完全不可能有正面就得有反面面片也得做成box开销太大可能并不值得虽然O(n)但是GPU里面并行处理下会爆炸不过实时渲染不注重复杂度只注重速度 问题 必须要是两面的 2.走样问题 Image 由于单一的shadowmap会存在精度不足我们在性能与效果中平衡提出Cascade Shadowmap技术。 Cascade Shadow Mapping是一种用于实时渲染的实时阴影技术。通常在实时渲染中光源如太阳的影响区域比较大如果只使用单个深度图Shadow Mapping来计算阴影很容易出现阴影质量不佳或者阴影断层的问题。而阴影CSM技术可以将一个视锥体分割成多个级别每个级别使用不同的投影矩阵和深度贴图来计算阴影从而提高阴影的质量和稳定性。 阴影CSM的基本原理如下 将摄像机的视锥体划分为多个子视锥体将摄像机的视锥体沿着近裁剪面到远裁剪面进行划分将每个子视锥体映射到一个具有固定大小的2D矩形区域内。 对于每个子视锥体渲染深度贴图对于每个子视锥体使用投射矩阵将场景渲染到一个深度贴图中并保存深度值信息。 计算阴影对于每个像素使用与Shadow Mapping类似的算法来比较深度贴图中对应点的深度值和当前像素与光源的距离来判断该像素是否被阴影所遮盖。 合并结果将所有子视锥体的阴影贴图进行合并并将阴影应用于场景中的对象。 中等篇 软阴影的形成 Image umbra 本影指的是阴影最里面的区域它看起来是最暗的。换句话说本影代表光完全被阻挡体阻挡的阴影部分。 Penumbra 半影是一个 物体阴影的一部分其中只有一部分光束被遮挡体阻挡。半影区就是我们在图形学中的软阴影部分 antumbra 是指遮挡物体似乎完全位于光源的中心区域内。 这在咱们的文章中不做讲解 理想中的点光源会造成硬阴影但是现实中的光源由于本身存在体积会形成拥有半影区的软阴影。 硬阴影与软阴影之间的关系不是简单地将阴影的边缘模糊化处理而是由于现实生活中的光源都存在一定的面积和体积而这种面积和体积会产生软阴影。 更多自然世界中的阴影的知识可以从下面链接中了解。 什么是影子13 个有趣的事实 -zh-cn.lambdageeks.com/how-is-shadow-formed/#um编辑 PCF的原理 Image 如图上图为硬阴影下图为软阴影。 PCF相对于传统的shadow mapping 做了那些改变 之前的ShadowMapping过程中假设现在得到了一张阴影图接下来需要对一个着色点的深度 () 和阴影图的采样结果 () 作比较得到一个二元的结果即为在阴影中为1不在阴影中为0。正因为这种二元性才产生了硬阴影的没有过渡或者说走样现象。 PCF的做法是得到阴影图后如下图所示选择一个以该着色点映射在阴影图中的位置为中心的 n x n 的filtering核用这个着色点的深度值 () 分别和filtering中每个深度值的采样结果 () 进行比较最后得到一个 n x n 的二元比较结果再对这个 n x n 的二元的比较结果进行filter平均最终得到这个着色点的阴影可见性的值而这个结果不再是非0即1的值而是一个在0,1之间的浮点数。 总结 PCF技术通过对阴影贴图进行采样的方式对像素周围的多个采样点进行插值和混合从而更加准确地确定每个像素点的阴影强度。具体而言PCF方法将每个像素的阴影采样点划分为一个网格区域并在每个区域内进行多个采样。通过对这些采样点的深度值进行比较和插值可以得到一个更加平滑和准确的阴影效果。 这项技术的重点在如你去如何理解Filtering本质上是平均的意义。在这个过程中Filtering的尺寸决定了阴影的软硬程度。Filtering的尺寸越大得到的阴影越软尺寸越小得到的阴影越硬如下图可见。 Image 经过PCF之后就可以得到一个相对真实的阴影结果。基本上不会存在错误! Image PCF的缺点与改进措施概述 在实时的渲染中PCF的致命缺点是慢原本的在shadow map贴图中的一次查找变成了 7乘7 甚至是 9乘9 的像素。 所以如果想在实时渲染中使用这种方式的软阴影技术需要对渲染过程进行优化 在抗锯齿的是时候的第一个算法一定是SSAA但是这样抗锯齿处理算法需要4倍的显存…,但是MSAA其举出思想依旧是一个像素点采样多次但从原来的全部整个屏幕全部的像素变成了屏幕画面的边缘部分。 PCF的优化也是同理-如下图软阴影与硬阴影的之间的变化随着阴影的投射物笔杆与阴影的接受物书本的距离有关 Image 由此我们就可以引出PCSS即在阴影生成过程中 blocker distance - Filter size呈现一定的关系 PCSS的原理 PCSS 是非常经典的一个制作软阴影的算法 PCSS的核心原理是根据光源大小和着色点与遮挡物的距离自适应调节PCF的滤波核大小。阴影边缘的滤波核大小由半影距离决定如下图所示。 通过相似三角形原理可知 半影距离由光源的尺寸 、光源与遮挡物的距离 、以及着色平面与遮挡物的距离决定。 下图用来详细说明对应的数学公式来源通过相似可以得到 而我们通过 的大小就可以对应出filtering 的大小。 越大 filtering 就越大。 Image PCSS首先假定光源是一个区域光传统的点光源聚光灯和平行光都对应着某种模拟但从广义上来讲他们依旧是属于面光源。 (−)∗ℎ/ 那么根据上面的操作我们可以总结PCSS生成软阴影的步骤 ● 步骤1Blocker Search 某个着色点连向光源找到shadow map上该像素周围一块区域的纹素所记录的深度值把区域所有texel都找一遍判断是不是遮挡物如果是遮挡物则累加最后除以遮挡物的个数以这个平均值作为遮挡物的深度即上面的 。 ● 步骤2Penumbra estimation 用\(d_{Blocker}\)计算得到 从而计算得到filtering尺寸 ● 步骤3PCF 利用filtering尺寸进行可见性值的计算。 注意在可见性计算部分可以最简单的可以从周围的取若干像素信息然后平均混合也可以根据一定比例插值比如按照泊松分布来进行采样。 PCSS算法的优化 在PCSS算法中步骤1与步骤3比较慢。 step1 寻找 blocker的效率低下 step3 在 filtering 进行采样依旧是很耗费性能。 优化方法1稀疏采样 缺点由于稀疏草药会出现噪点需要在最后在图像空间上做一次滤波。稀疏采样计时滤波之后会产生抖动。 优化方法2对于PCSS计算的过程中做一系列的近似操作这就引出了VSSM (Variance Soft Shadow Mapping) VSSM的原理 VSSM的核心思想是快速寻找 blocker and filtering 他的快速寻找是通过一系类近似操作降低时间复杂度。 可见性值的优化处理 在刚刚步骤3的核心是找到着色点的可见性值而可见性值是通过p的深度值 () 在阴影图中的filtring 中排第几。换句话说需要得到 () 占 的百分比。 近似处1 我们将深度值近似的设想为正态分布正态分布图像由期望和方差决定也就是说我们只要知道Filtering中深度值的期望与方差就可以大致知道深度分布的一个情况。 剩下的全部问题在于期望均值和方差的获取。 期望通过 SAT和mipmap。方差数学公式计算 ()(2)−2() 一块区域的平均值方差的计算 使用MipMap 优点 快速、近似、正方形 缺点 插值结果只是近似。当查询区域在某层上不太对齐像素格的时候需要双线性插值。当查询的范围不为2的n次方时还要再进行一次层间插值即三线性插值如果查询区域是长方形区域查询还得加入各向异性过滤 使用SAT (类似算法中的前缀和) Summed Area Table可以用来高效地计算图像上任意矩形区域内所有像素值的和而不需要遍历该区域内的每个像素。这对于一些需要频繁计算图像区域总和的算法非常有用如图像滤波、特征检测等。 具体来说Summed Area Table是通过对原始图像进行一次积分得到的。对于给定的像素坐标(x, y)Summed Area Table中该位置的值表示了原始图像中从(0, 0)到(x, y)的矩形区域内所有像素值的累积和。换句话说Summed Area Table中的每个元素表示了其左上角矩形区域内所有像素值的累积和。 特点 百分百准确范围查询结果但是计算花销较大 得到 E(X) 和 D(X) 之后我们就有了正态分布图像接下来就需要计算可见性。 可见性值的计算 我们需要通过正态分布确认百分比数值可见性值。 在概率论中PDF概率密度函数为连续型随机变量的概率密度函数CDF累积分布函数为概率密度函数的积分。 也就是说对于一个值x只需要求出CDF(x)就可以得到百分之多少的值是小于x的即1 - 可见性的值。 Image CDF一般比较难计算VSSSM又找到一个不等式对它进行近似即切比雪夫不等式 ()≤σ2/(σ2(−μ)2) 所以有 1−()≈1−22(−)2 同时切比雪夫不等式有一个苛刻的假设t必须在均值的右边。 (当笔者做到这里的时候有一个疑问把阴影区间的分布的CDF(x)为什么不将正态分布图像转变为标准正态分布后查表得出呢QAQ) VSSM加速PCF步骤的总结 生成shadow map的同时生成一张存放深度的平方的平方深度图(Square depth map)。两个通道分别存放即可不需要额外一张texture求深度图上某区域的均值MipMap或者SATO(1)求平方深度图上某区域的均值依旧MipMap或者SATO(1)知道均值根据公式得到方差 根据切比雪夫不等式直接求出该点可见性Visibility VSSM 的问题 VSSM 做了很多的假设所以会存在种种的问题。 比如漏光(Light leaking) 当物体的深度不是呈现正态分布的时候会出现的问题。这是一个很明显的错误为了解决该问题可以使用Moment shadow mapping Image 虽然VSSM很快但是准确度有些堪忧。 高级篇 距离场软阴影 距离场它反映了任意一个点到某个物体的最小距离。将它可视化后如下 Image 优点 快速查询快质量高 缺点 需要预处理慢需要大量存储空间 ray-SDF intersection 在ray marching的过程中是解求光线打到物体上的点。 SDF(p) 是点 p 到达最近表面的距离在ray marching过程很重要的概念是步长每一次射线前进的距离就是步长也就是SDF(p)。正因如此就可以认为SDF(p)为点p的“安全距离从点p出发按任意方向走SDF(p)距离都不会碰到物体。 有了“安全距离”的概念后选定一个起点 1 后和方向后按方向走 (1) 距离到 2 再按方向走 (2) 距离递归直到打到物体。(我们认为当直线与最近平面的距离小于某一个值的时候就是大中了物体) Image Distance Field Soft Shadow SDF还可以应用在软阴影中。在软阴影中我们用SDF来近似得到一个着色点被遮挡物遮挡的程度。 我们引入安全角度“的概念将光源抽象成面光源从着色点 P沿某方向 看向光源将光线从 朝物体方向旋转最大角度 光线不会打到物体则 为”安全角度“。 那么 的计算如下 对于光线上任意一点Q它的”安全距离“为SDF(Q)则”安全角度“为光线方向和着色点到圆切线的角度。 于是安全角度的大小可以反映阴影的软硬程度(Visibility)。安全角度越小遮挡越多越趋近于硬阴影。安全角度越大遮挡越少越趋近于软阴影。 Image 如上图所示安全角度的求解方法 问题又变成了如何求 一种思路是求反三角函数 ()|→−→| 用简单的乘法运算去近似该公式 min⋅()|→−→|,1.0 。 这个近似式的k项它决定阴影的软硬程度。当k小时 ()|→−→| 需要更大的值更少区间才能1最终映射到1。当k大时 ()|→−→| 只需要较小的值更多区间就能1最终映射到1。也就是说k越大反映阴影更硬。 Image 参考 Real-Time Rendering 4th Edition-2018-英文版http://www.ownself.org/blog/2010/percentage-closer-filtering.htmlgames202https://www.yuque.com/gaoshanliushui-mbfny/sst4c5/sl2q1b#49a7623c
- 上一篇: 长沙网站建设1681989免费设计网
- 下一篇: 长沙网站建设服务玉溪网站制作公司
相关文章
-
长沙网站建设1681989免费设计网
长沙网站建设1681989免费设计网
- 技术栈
- 2026年04月20日
-
长沙网站建设 个人承德专业做网站的公司
长沙网站建设 个人承德专业做网站的公司
- 技术栈
- 2026年04月20日
-
长沙网站公司网站建设站长工具怎么用
长沙网站公司网站建设站长工具怎么用
- 技术栈
- 2026年04月20日
-
长沙网站建设服务玉溪网站制作公司
长沙网站建设服务玉溪网站制作公司
- 技术栈
- 2026年04月20日
-
长沙网站建设公司江西省住房与城乡建设厅网站
长沙网站建设公司江西省住房与城乡建设厅网站
- 技术栈
- 2026年04月20日
-
长沙网站建设公司免费seo优化
长沙网站建设公司免费seo优化
- 技术栈
- 2026年04月20日
