简述电子商务网站的建设流程图,wordpress模版post.php,南京 推广 网站建设,如何制作网页图提示#xff1a;仅供参考#xff0c;有误之处#xff0c;麻烦大佬指出#xff0c;不胜感激#xff01; 文章目录 前言一、GPU Instancing使用方法二、使用GPU Instancing的条件三、GPU Instancing弊端四、注意五、检查是否成功总结 前言
GPU Instancing也是一种Draw call… 提示仅供参考有误之处麻烦大佬指出不胜感激 文章目录 前言一、GPU Instancing使用方法二、使用GPU Instancing的条件三、GPU Instancing弊端四、注意五、检查是否成功总结 前言
GPU Instancing也是一种Draw call的优化方案使用一个Draw call就能渲染具有多个相同材质的网格对象。而这些网格的每个copy称为一个实例(Instancing)。 使用GPU Instancing可以在一个Draw Call中同时渲染多个相同或类似的物体从而减少CPU和GPU的开销。 什么是Draw call这章有详细介绍 Unity 性能优化之数据面板Statistics一 Draw Call是指CPU向GPU发送绘制指令的过程,一个Draw Call就是CPU向GPU发送的一组绘制指令,可以绘制出一个或多个物体。
GPU Instancing比较适合场景中有大量重复的网格实例例如草、树木、灌木丛 或者大量 重复性物体。
一、GPU Instancing使用方法
要启用GPU Instancing,我们可以选中一个材质,然后在Inspector窗口勾选Enable GPU Instancing,这样就可以了如下图
二、使用GPU Instancing的条件
1、使用相同的材质和网格。 2、材质的着色器必须支持GPU Instancing。例如标准着色器和表面着色器就支持GPU Instancing。 3、网格的顶点布局和着色器必须相同。如果网格的顶点布局或着色器不同那么它们就无法被合并成一个实例。 4、每个实例需要有不同的变换信息例如位置、旋转、缩放。虽然多个实例可以使用相同的材质和网格但是它们必须拥有不同的变换信息才能被正确地实例化并渲染出来。 5、GPU Instancing与SRP Batcher不兼容如果项目使用了SRP Batcher并且配置为优先使用SRP Batcher而不是GPU实例化启用GPU实例化可能不会生效。SRP Batcher是Unity提供的一种渲染优化技术它可以将多个网格合并成单个批次进行渲染从而提高性能。在这种情况下GPU实例化将被忽略。
三、GPU Instancing弊端
所有得优化技术都是有利有弊得GPU Instancing虽然可以减少CPU的开销优化Draw Call次数提高性能。但是也会占用内存所以需要合理使用。
四、注意
1、URP渲染管线中会发现GPU Instancing没有生效原因是UPR默认开启SRP Batch你可以选择关闭它。 2、如果已经GPU Instancing的物体 需要修改实例的一些属性需要使用MaterialPropertyBlock也就是通过C#代码来控制这样可以不破坏GPU Instancing
MaterialPropertyBlock是Unity3D引擎中用于动态修改材质属性的类。它允许在运行时修改材质的属性而不用重新创建一个新的材质实例。MaterialPropertyBlock可应用于渲染管线的各个阶段如顶点着色器、片段着色器等这意味着它可以被用于实现一些高级的渲染效果如GPU实例化和动态批处理等。 通过MaterialPropertyBlock开发者可以在运行时修改材质的属性例如颜色、纹理等这些修改可以作用于单个对象或者整个场景中的所有对象。此外使用MaterialPropertyBlock还可以提高性能因为它避免了重新创建材质实例的开销。 所以MaterialPropertyBlock也是一种优化方案。
五、检查是否成功
以在Profiler窗口看到Instancing信息是否发生变化如下图
总结
好记性不如烂笔头 上一章链接: Unity 性能优化之动态批处理四 下一章链接: Unity 性能优化之遮挡剔除Occlusion Culling六