当前位置: 首页 > news >正文

企业网站的推广阶段网站建设与管理专业好找工作吗

企业网站的推广阶段,网站建设与管理专业好找工作吗,网站建设三折页,手机网站php开发一.原理 球谐光照实际上是一种对光照的简化#xff0c;对于空间上的一点#xff0c;受到的光照在各个方向上是不同的#xff0c;也即各向异性#xff0c;所以空间上一点如果要完全还原光照情况#xff0c;那就需要记录周围球面上所有方向的光照。注意这里考虑的周围环境往…一.原理 球谐光照实际上是一种对光照的简化对于空间上的一点受到的光照在各个方向上是不同的也即各向异性所以空间上一点如果要完全还原光照情况那就需要记录周围球面上所有方向的光照。注意这里考虑的周围环境往往是复杂的情况而不是几个简单的光源如果是那样的话直接用光源的光照模型求和就可以了。 如果环境光照可以用简单函数表示那自然直接求点周围球面上的积分就可以了。但是通常光照不会那么简单并且用函数表示光照也不方便所以经常用的方法是使用环境光贴图比如像这样的 上面的图是立方体展开得到的这种贴图也就是cubemap需要注意的是一般的cubemap是从里往外看的。 考虑一个简单场景中有个点他周围的各个方向上的环境光照就是上面的cubemap呈现的假如我想知道这个点各个方向的光照情况那么就必须在cubemap对应的各个方向进行采样。对于一个大的场景来说每个位置点的环境光都有可能不同如果把每个点的环境光贴图储存起来并且每次获取光照都从相应的贴图里面采样可想而知这样的方法是非常昂贵的。 利用球谐函数就可以很好的解决这个问题球谐函数的主要作用就是用简单的系数表示复杂的球面函数。关于球谐函数的理论推导与解释可以参考wiki https://en.wikipedia.org/wiki/Spherical_harmonics 。如果只是要应用和实现球谐光照不会涉及到推导过程不过球谐基函数却是关键的内容球谐基函数已经有人在wiki上列好了表格参考 https://en.wikipedia.org/wiki/Table_of_spherical_harmonics 前3阶的球谐基函数如下 这里值得注意的是很多资料用这张图来描述球谐基函数 我刚开始看到这张图的时候简直觉得莫名其妙实际上这里面每个曲面都是用球坐标系表示的球谐基都是定义在球坐标系上的函数r也就是离中心的距离表示的就是这个球谐基在这个方向分量的重要程度。我是用类比傅里叶变换的方法来理解的其实球谐函数本身就是拉普拉斯变换在球坐标系下的表示这里的每个球谐基可以类比成傅里叶变换中频域的各个离散的频率各个球谐基乘以对应的系数就可以还原出原来的球面函数。一个复杂的波形可以用简单的谐波和相应系数表示同样的一个复杂的球面上的函数也可以用简单的球谐基和相应的系数表示。 由于球谐基函数阶数是无限的所以只能取前面几组基来近似一般在光照中大都取3阶Unity中就取3阶也即9个球谐系数。这里讲一下我自己认为比较核心的几个点的理解 1、蒙特卡洛积分  将计算机尤其是GPU上非常难以计算的积分简化为了加法这是球谐光照的前提  2、投影  球谐光照的实质就是将复杂的光照信号投影到基函数上存储然后在使用的时候再将基函数上的数据加起来重建光照信号  3、伴随勒让德多项式  想比如正弦信号伴随勒让德多项式作为基函数不仅是正交的而且是归一化的 这意味着其具有旋转不变性适用于动态物体 综合说来球谐光照的基本框架如下所述: 连续的光照方程 - 离散的光照方程 - 分解后的光照方程 - 球谐变换得到球谐系数 - 利用球谐系数还原光照方程 二.实验 我们先考虑简单的情况比如说定义一个光照函数 在球坐标系下将该函数的值当做光照强度值可以画出光照在球面上的分布情况 不过由于这种方式可视化方式对于亮度变换不是很敏感所以我们把强度当成球坐标系的r画出来是这个样子 现在要将这个函数转换成球谐系数表示首先要做的就是对其进行采样采样的目标是确定在某个球谐基方向上强度的大小也即求得每个球谐基Yi对应的系数ci。具体的采样方法如下 其中N为采样次数。也就是说在计算某个球谐系数ci的时候首先在球面上采许多点然后把这些点的光照强度和球谐基相乘在那个方向上球谐基函数的分量或者说重要程度就是Yi(xi)通过这些采样点从而得到了在每个球谐基函数上光照的分布情况。由于某个球谐基只能大致代表它那个方向上的光照强度所以需要组合很多个球谐基函数才能近似还原出原光照。需要注意的是采样时必须要在球面上均匀采样如果在CubeMap的每个图像上面逐像素采样将会导致每个面边角亮度提高中心亮度降低。关于如何在球面上均匀采样方法有很多比如用正态分布随机生成x,y,z然后归一化成单位向量。 还原的过程比较简单通过球谐基与对应的系数相乘得到 这里L’是还原后的光照s是球面上的一点也可以看成某个方向n是球谐函数的阶数n^2也即球谐系数的个数。 值得注意的是采样和计算ci是预先进行的比如说复杂场景中某个位置预先用光线跟踪方法计算环境光从而采样出ci这样这个位置的光照信息就压缩成几个ci表示了。但是重建光照的过程是在运行时实时进行的从重建光照的过程中可以看出该式非常简单其中Yi的计算从球谐基函数的表中就可以看出只涉及到简单的乘法和加法完全可以在shader中实现球谐基函数中的r一般默认都设置成1。所以如果给我们一个点的球谐系数利用上面的公式马上就等得到每个方向上的光照强度。 计算好了球谐系数之后我们就可以利用这些系数来还原原光照了利用第二个公式还原之后的效果如下 从左至右分别是原光照、0~2阶球谐光照、0~5阶球谐光照从中可以看出到第5阶球谐光照与原光照已经很接近了只是有小部分的高频信息不同。说明球谐系数越多还原的效果越好同时还原光照时能够较好地保留低频部分而高频信息则丢失得比较多。不过对于光照来说一般都是比较低频的信息所以3阶也就是到l2时就已经足够了。 抛开简单的函数如果是复杂的环境光贴图过程也是一样的比如对于一个这样的环境光 对它进行采样并还原之后得到了这样的结果 效果还不错只是高频丢失了很多。不过这是对光照的还原因此丢失了高频信息关系也不大。 如果把这两个光照投射到球面上进行可视化就是这个样子 三.实现 参照该文章 https://lianera.github.io/post/2017/sh-lighting-apply/ 四.Unity中实际使用 Unity中不管是预计算GI与烘培GI都不会对非静态模型计算间接反射光探头LightProbe的加入可以使非静态模型得到周围静态模型的幅射光主要技术原理就是使用的球谐光照的技术注意light probe一般不会对静态模型有影响你看到的影响只是因为非静态模型的颜色变化大造成的反差。 Unity通过烘培时的光线追踪计算出其光照原始信号然后投影到基函数并存储其系数Unity 使用了三阶的伴随勒让德多项式作为基函数我们在Shader中可通过 ShadeSH9 函数获取重建信号ShadeSH9 实现在 UnityCG.cginc 文件中具体代码如下 // normal should be normalized, w1.0 half3 SHEvalLinearL0L1 (half4 normal) {half3 x;// Linear (L1) constant (L0) polynomial termsx.r dot(unity_SHAr,normal);x.g dot(unity_SHAg,normal);x.b dot(unity_SHAb,normal);return x; }// normal should be normalized, w1.0 half3 SHEvalLinearL2 (half4 normal) {half3 x1, x2;// 4 of the quadratic (L2) polynomialshalf4 vB normal.xyzz * normal.yzzx;x1.r dot(unity_SHBr,vB);x1.g dot(unity_SHBg,vB);x1.b dot(unity_SHBb,vB);// Final (5th) quadratic (L2) polynomialhalf vC normal.x * normal.x - normal.y * normal.y;x2 unity_SHC.rgb * vC;return x1 x2; }// normal should be normalized, w1.0 // output in active color space half3 ShadeSH9 (half4 normal) {// Linear constant polynomial termshalf3 res SHEvalLinearL0L1(normal);// Quadratic polynomialsres SHEvalLinearL2(normal);if (IsGammaSpace())res LinearToGammaSpace(res);return res; }三阶的基函数系数分别用了两个子函数来读取其中 // SH lighting environmenthalf4 unity_SHAr;half4 unity_SHAg;half4 unity_SHAb;half4 unity_SHBr;half4 unity_SHBg;half4 unity_SHBb;half4 unity_SHC;是 UnityShaderVariables.cginc 中的内置变量用来存放存储的系数在实际使用中我们直接调用 ShadeSH9配合LightProbe 即可读取到 precompute bake 生成的自发光信息  五.应用与局限 球谐光照最早出现应该是在2002年的Siggraph上距今还是有些时间了而且关于其的研究也还有不少学者在做。 最近高调发布的BattleField3所使用的Frostbite2引擎中使用了Enlighten实时GI解决方案其效果令人印象深刻其中若干部分就用到了球谐光照的技术。但是观察其它的主流引擎却较少使用该技术这里是指直接对全部场景做SH来代替LM的模式不过在生成Light Probe等操作时SH的应用却是必需的应该说其还是有不少局限的 由于球谐变换需要在光照方程中的函数上进行故而一些需要进行变换的信息首先需要进行参数化然后再投影并得到SH系数这就涉及到整个引擎中材质、光源的存储、表述等诸多问题当前对于球谐参数的存储多是逐顶点进行的因而对于整个场景要想得到较为平滑、细腻的着色效果需要对场景进行较细粒度的细分。虽然球谐系数的变换是在预处理阶段生成但是对于较多的离散采样点、较细的场景细分粒度对应较多的顶点数整个预处理的时间代价还是很大的。因这其中涉及到光线跟踪等高密度计算甚至在使用GPU进行加速之后仍是重量级的时间耗费。要想在光照方程重建时获得较高的质量就需要存储较多的SH系数而这些额外的空间无论是对于传输的带宽还是设备存储的占用均是劣势所在。参考文章链接 https://lianera.github.io/lianera.github.io/post/2016/sh-lighting-exp/本文多摘录于此感谢前人写这么好的文章 https://lianera.github.io/post/2017/sh-lighting-apply/ https://gameinstitute.qq.com/community/detail/101099 https://blog.csdn.net/NotMz/article/details/78339913
http://www.sadfv.cn/news/112595/

相关文章:

  • 沈阳哪家网站做的好省建设厅网站二建考试
  • 阿里云虚拟主机多个网站天津做网站的公司排名
  • 校园网站建设需要什么网站 设计 语言
  • 县城网站怎样做经验菏泽市住房和城乡建设路网站
  • seo网站描述之间用什么标点符号企业注册网站域名
  • 建设网站 无法显示图片南乐网站建设
  • 知名网站域名被抢注广州手表网站
  • 网站搜什么关键词wordpress如何制作二维码
  • 长沙正规制作网站公司重庆资质代理公司
  • 网站企业制作台州seo推广公司
  • 免费解析素材网站wordpress导入主题数据
  • 重庆网站推广方法大全h5海报模板
  • 有些网站开发人员工具无反应中国最大的外贸平台
  • 绍兴企业免费建站网站维修合同
  • 海口网站制作南美洲网站后缀
  • 网站备案的服务器租用启东市住房建设局网站
  • 如何打死网站上海网站建设哪家便宜
  • 敦化网站建设市住建局官方网
  • 中文域名有哪些网站安徽seo网站
  • 做平台网站怎么做什么地图能看到实时全景免费
  • 省 两学一做 专题网站网站建设相关技术
  • 学校门户网站作用上海政策最新规定
  • 内蒙古网站建设电话企业网站建设杭州公司
  • 服装网站建设风格一个在线做笔记的网站
  • 公司网站域名如何续费网站设计与制作的过程
  • 做民宿最大的网站音速企业名录搜索软件
  • 网站如何静态化浙江省城乡与住房建设厅网站
  • 移动端电商网站上线一个app需要多少钱
  • 余姚 网站建设网站通栏如何做特效
  • 凡科网怎么建网站福州网站开发风格