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

dw网站制作效果怎么做百度官方

dw网站制作效果怎么做,百度官方,汉沽网站建设制作,网站如何建立品牌形象Lighting and Shadowing 现代的游戏中#xff0c;基本没有物体能在一步就完成渲染#xff0c;这是因为有光照和阴影的关系。光照和阴影的渲染在Fragment Shader中需要额外的pass。 首先要设置场景中的Shadow Casters和Shadow Receivers#xff0c;Shadow Casters投射阴影基本没有物体能在一步就完成渲染这是因为有光照和阴影的关系。光照和阴影的渲染在Fragment Shader中需要额外的pass。 首先要设置场景中的Shadow Casters和Shadow ReceiversShadow Casters投射阴影Shadow Receivers接收阴影。之后每一个Shadow Receiver渲染时GPU就会在灯光的位置和角度渲染Shadow Caster物体将深度信息存储到一张贴图中。这张贴图就是常说的ShadowMap它用来实时的渲染阴影。光照渲染和阴影渲染在渲染管线中开销非常大需要每个顶点都要提供法线信息以及额外的顶点颜色信息等。因为Fragment Shader需要多个passes完成最终的渲染Backe End在Fill Rate许许多多的像素都需要绘制重新绘制和合并和 Memory BandWidth额外的texture需要来回获取比如LightMaps和ShadowMaps两方面都会压力很大这也是为什么实时阴影是非常昂贵的也会给Draw Call带来很大开销。 但是光照渲染和阴影渲染应该是现在游戏中最重要的两部分的的确确能给游戏带来效果上质的提升出色的光照和阴影效果能使得平庸的场景摇身一变。有两种渲染管线Forward Rendering 和 Deferred Rendering在 Rendering  Edit |Project Settings | Player | Other Settings | Rendering 下可以进行设置接下来介绍下这两部分。 Forward Rendering 同样的Shader多个Pass渲染一共有多少个pass取决于光源的数量和光源的距离和光源的亮度。在Unity中前向渲染规则如下一个场景中多光照情形按光源的重要程度排序比如ABCD四盏灯用效果最好的逐像素方式渲染光照DEFG用逐顶点方式渲染光照GH则用球谐光照方式计算光照。关于球谐光的一些知识可以参考我的这篇文章https://blog.csdn.net/yinfourever/article/details/90205890 Unity中正向渲染分为一个Base Pass和多个Additional Passes. Base Pass: 用逐像素的方式渲染一个directional light 所有球谐光和逐顶点光。在这个pass里也会计算lightmap等directional light可以计算阴影要注意如果使用了lightmap照亮的物体不会被球谐光照亮。 Additional Passes每个其他需要用逐像素渲染的光源将会用一个Addtional pass渲染默认情况下这些灯光不会有阴影除非使用了 multi_compile_fwdadd_fullshadows variant shortcut 更详细的信息可以参考Unity官方文档中关于Forward Rendering的介绍https://docs.unity3d.com/2019.2/Documentation/Manual/RenderTech-ForwardRendering.html 可以通过Edit | Project Settings| Quality | Pixel Light Count 设置像素光的数量但是会被每个Render Mode设置为Important的Lights覆盖。 ForwardRendering当场景中有大量点光源时由于Render States需要不断的设置会产生大量Draw Call跟场景光源数量正相关。 Deferred Rendering Deferred Rendering通过G-Buffer工作是将光照计算延后进行处理的一种渲染方法。 延迟渲染的优点 Deferred Rendering 的最大的优势就是将光源的数目和场景中物体的数目在复杂度层面上完全分开。也就是说场景中不管是一个三角形还是一百万个三角形最后的复杂度不会随光源数目变化而产生巨大变化。 复杂度仅O(nm)。 只渲染可见的像素节省计算量。 用更少的shader。 对后处理支持良好。 在大量光源的场景优势尤其明显。  延迟渲染的缺点 内存开销较大。 读写G-buffer的内存带宽用量是性能瓶颈。 对透明物体的渲染存在问题。在这点上需要结合正向渲染进行渲染。 对多重采样抗锯齿MultiSampling Anti-Aliasing, MSAA的支持不友好主要因为需开启MRT。 由于Deferred Shading的Deferred阶段是在完全基于G-Buffer的屏幕空间进行这也导致了物体材质信息的缺失这样在处理多变的渲染风格时就需要额外的操作。 更详细的有关渲染模式的知识请查看我的这篇文章墙裂建议看 https://blog.csdn.net/yinfourever/article/details/90263638 Vertex Lit Shading (legacy) 已被遗弃 Global Illumination 全局光是烘焙光照贴图的一部分。光照贴图是提前烘焙好的因此可以有足够的时间生成高质量的光照贴图会节省大量Draw Call。也正是因为提前烘焙好的所以它不是实时的所以它对Static物体生效动态物体需要通过LightProbe才能受到影响。LightProbe并不是像素级精准的使用球谐光并且会生成额外的LightProbe Maps对Memory BandWitdh有开销但是确实会对渲染效果带来很大的提升。 对于全局光不仅计算直接光照的影响还会将物体间反弹的光考虑进去。老版本的GI系统是Enlighten它不仅提供了静态的GI还提供了一种Pre-computed Real-time GI,可以用来制造实时渲染的假象比如昼夜更替系统。目前Unity最新的GI系统是Progressive LightMapper。 关于这部分知识我写过另一篇文章帮助理解https://blog.csdn.net/yinfourever/article/details/105151596 Multithreaded Rendering 多线程渲染在大多数平台中是被默认开启的比如PC或者其他CPU支持多核的。对于AndroidEdit | Project Settings | Player | Other Settings |Multithreaded Rendering可以进行设置对于IOS可以在Edit | Project Settings | Player| Other Settings | Graphics API设置。 对于场景中的一个物体要进行渲染的话有三件事需要处理。决定这个物体是否需要渲染生成渲染指令通过相关图形API发送指令到GPU。如果没有Multithreaded Rendering这些工作都要由CPU主线程承担开启Multithreaded Rendering把渲染指令推送给GPU的工作将由render线程承担其他例如剪裁等工作将由其他一些worker 线程承担。这给CPU主线程大大减压可以给物理运算以及脚本逻辑运算留出更多空间。 开启Multithreaded Rendering后关于CPU-Bound会有一些影响没开启的时候所有工作都是由CPU主线程做因此无论那部分性能的优化都会对CPU-Bound带来改善。开启Multithreaded Rendering后因为工作被分散到各个线程即使对主线程做出一些优化对CPU-Bound的减轻程度可能也会变得很小。 是否开启Multithreaded Rendering对GPU没影响GPU已经总是用多线程渲染。 Low-level rendering APIs 通过CommandBuffer可以使用高级别的API对渲染管线进行一些控制但是可用的内容和范围还是太少因此可以用C代码直接控制图形API将C代码打成一个Pluginhook到Unity的渲染管线中。 当然现在Unity已经推出了SRP可编程渲染管线已经可以完全自定义渲染管线十分方便因此这一小节提到的方法可能已经基本不会使用了。关于SRP可以看我这篇文章https://blog.csdn.net/yinfourever/article/details/89364090 Detecting performance issues Profiling rendering issues 通过Unity的Profiler 可以快速定位是瓶颈是在CPU和是GPU. CPU-bound 下图是一个CPU瓶颈的例子这个场景有成千的简单Cube物体但是没有使用batching并且有阴影的渲染这导致CPU需要生成大量的Draw Call但是GPU实际上渲染任务很少。 如何定位问题的呢下图中CPU平均需要25ms处理一个循环而GPU只需要4ms以内这就说明了瓶颈在CPU端应该想办法使用一些优化CPU端的技术。 GPU-bound 下图的测试条件为很少的Draw Call但是使用非常复杂的Shader进行渲染。如果想测试是否是GPU端的瓶颈需要注意的是要关掉V Sync垂直同步不然会影响Profiler。 从图中我们可以看到CPU和GPU都消耗29ms左右但是再深层次查看一下CPU的时间都花在了 Gfx.WaitForPresent函数上这是在CPU在等待GPU完成这帧操作而浪费掉的时间即使开启多线程渲染CPU也必须是等待渲染管线完成后才能开始下一帧。Gfx.WaitForPresent也同时会被Vertical Sync使用因此要关掉Vertical Sync来避免干扰。 Brute-force testing  如果从Profiler中没办法定位问题我们可能就得使用蛮力测试。比如从场景中去除一些物体看看性能有没有很大改善如果很小的改动会带来很大提升那其就定位了问题。 降低屏幕分辩率和降低贴图的分辩率来进行测试是两种定位瓶颈是FillRate还是Memory Bandwidth的好方法。 降低屏幕分辨率可以有效降低Frill Rate的消耗比如2560 x 1440 降为 800 x 600大概会降低8倍如果性能有很大的提升说明Fill Rate有可能是我们应该首要考虑优化的地方。 类似的如果降低贴图的分辨率后性能提升非常大则说明Memory BandWidth可能是瓶颈。 GPU的瓶颈通常是FillRate和Memory Bandwidth很少是Front End的原因Vertex Shader如果有问题只能是因为传入了太多几何体需要处理或者使用了很复杂的Geometry Shader。
http://www.sadfv.cn/news/207412/

相关文章:

  • 肇庆做网站设计公司wordpress在页眉加载js
  • seo网站设计工具网站权重难做
  • 怎样进入国外网站小榄网站开发
  • wordpress中文网站模板直播推广渠道
  • 购物网站首页设计网站开发的运行可行性
  • 中铁四局建筑公司网站建设网站包括哪些费用
  • dede网站地图样式修改网址ip查询域名解析
  • 网站设计工资一般多少便宜网站建设怎么样
  • 网站模块划分规划外贸建站是什么意思
  • 福建省建设厅网站人员短网址生成 在线生成
  • 网站建设专题的意义网络营销课程总结ppt
  • 做网站电脑配置自己做高仿衣服网站
  • 国内域名网站有那些页面布局在哪里
  • 网站建设初期目标地方门户网站建设要求
  • 建立公司网站视频国外自建站怎么样
  • 深圳系统网站开发网站设计制作服务好态度好
  • 监控网站模版免费seo排名网站
  • 成都 网站建设公司哪家好网站开发哪种语言好
  • 做视频网站需要什么wordpress 增加数据表
  • 湖北省住房和建设厅网站首页wordpress更换帝国
  • 域名被墙检测网站怎样制作网页超链接
  • 网站导航字体三渡网络推广培训
  • 如何快速建站网站如何设置关键词
  • 网站制作上网程序做网站好还是app好
  • 西安建设局网站地址丹东商城网站建设
  • 电子商务网站建设习题答案响水网站建设找哪家好
  • wordpress站点制作360竞价推广开户多少钱
  • 做网站如何把支付宝微信吧安徽工程建设信息网站
  • 专业做网站安全的sine安wordpress邮件发送类
  • 如何做个购物网站下载微信app