• LOD优化策略通篇


    LOD优化策略-场景

    ◆Shader LOD
    • shader.globalMaximumLOD来指定不同画质的LOD值
    • Shader内部定义多个SubShader,逐个降低计算和纹理采样
    使用Shader LOD存在一个问题,在Properties中定义的贴图,在低级别的SubShader中虽然不被采样和计算,但是仍会有内存占用。建议和角色一样,设计LOD框架时考虑两份prefab,支持场景转一份低配场景文件给低配使用。

    ◆制作时合理使用高低模

    ◆场景物件分级Level_1、Level_2、Level_3
    • 含场景特效、场景动画物件等,在不同的级别显示/隐藏
    最早期我们采用距离来控制场景特效的显示。缺点:
    1、实时监控距离的开销
    2、每个场景需要单独配置合理的距离值
    使用层级来控制更为直接,在制作LOD时最优先考虑最简单暴力的方式,这样美术规范也不会太复杂,后期也不需要过多的维护。

    ◆场景光照切换
    • Light/Light_High 涉及实时灯光对角色、场景阴影绘制的控制
    • 场景光照图切换

    ◆物件的Layer层决定阴影
    • 场景文件中配置的Cast Shadows和Receive Shadows设置给烘焙使用,不方便存储下来
    • 设计不同的Layer来决定物件是否产生阴影和接受阴影

    ◆角色产生阴影
    • 高配时玩家和Npc角色的Layer修改为Shadow,低配时修改为Player/Npc
    • 中配时玩家自身和Boss角色的Layer修改为Shadow,其他玩家为Player
    • Shadow层绘制实时阴影,Player/Npc会使用圆片来绘制脚底阴影

    ◆角色接收阴影
    • 仅在高配画质开启接收阴影

    ◆裁剪距离、雾效距离
    • 设计裁剪距离与雾效距离按照百分比减小的算法,防止数值异常

    ◆后期处理效果
    • 全局后期处理
    通过全局后期处理管理后期的开启、关闭,控制自定义的选项。
    • 场景后期处理
    场景配置高、低两种后期处理方案,低配时只使用ColorGrading
    • UI和剧情动画中的后期处理只在高配时开启
    比如:UI中使用的Bloom、剧情中使用的RadialBlur运动模糊等

    ◆单个场景的特效等级
    通过配置表定义场景的类型和同屏可显示的特效数量和等级

    LOD优化策略-角色

    ◆角色材质、shader、贴图
    • 通过配置表,在不同画质调用不同的prefab
    • A.prefab和A_Low.prefab使用A.mat和A_Low.mat
    • A_Low.mat使用的Shader降低计算和贴图纹理采样
    • A_Low.mat使用的_MainTex替换低精度贴图纹理

    ◆LODGroup
    • 角色的模型面数标准提升后,制作高模、低模两档,通过LODGroup功能按距离降档

    ◆SubShader
    • 高配和中配的光照模型切换,PBR切换Blinn-Phong

    ◆角色部件
    • 部件在配置表中可配置为空,在低配时可以不显示背部挂件

    ◆角色骨骼Skin Count
    • Skin支持的最大骨骼数降级2-Bones 1-Bones
    • DynamicBone基于物理系统的动态骨骼效果的开关
    • Npc死亡动作基于物理系统的表现的开关

    ◆同屏角色数量
    • 不同画质设置不同的同屏显示角色上限
    • 无逻辑任务的客户端NPC开关

    LOD优化策略-特效

    ◆天气系统
    • 制作不同数量级的粒子系统

    ◆脚步特效
    • 开启和关闭脚步特效,可对玩家自身和其他玩家分开控制

    ◆掉落特效
    • 复杂特效可以制作简化版本
    以上三种特效都可以通过简单的配置表功能完成。

    ◆技能特效
    • 通过配置表,在不同画质调用不同的prefab

    ◆技能特效的标准
    • 制作阶段控制特效的性能开销
    • 工具辅助生成*_Low.Prefab
    • 严格控制*_Low.Prefab的性能开销

    LOD优化策略-其它

    ◆渲染分辨率
    • 使用不同的渲染分辨率,且限制最高分辨率为1080p

    ◆开放视角
    • 视角上下左右旋转和
    • 摄像机最远最近距离

    ◆脚本控制
    特殊情况下需要制作可以在四种画质下进行切换的配置,通过脚本控制:
    • Prefab切换
    • Material切换

    不适合LOD的系统模块

    ◆UI
    • UI上的图素和特效不适合做显隐和优化
    • UI场景不适合做烘焙和实时光的切换
    • UI角色可以根据界面的重要程度选择使用高级或低级
    • 管理好加载和卸载后,可以考虑替换高低配UI资源

    ◆剧情

  • 相关阅读:
    js 基于函数伪造的方式实现继承
    js 创建List<Map> 这种格式的集合
    微信get post请求到微信服务器 模版 素材操作
    微信开发学习 问题1: 网页授权问题 “该连接无法访问” 解决方法
    Jackson 高性能的JSON处理 ObjectMapper
    baseDao 使用spring3+hibernate4方式
    PropertiesUtil 读取配置文件工具类
    C语言(函数)学习之strstr strcasestr
    命令行选项解析函数(C语言):getopt()和getopt_long()
    AE插件开发的一些总结
  • 原文地址:https://www.cnblogs.com/TravelingLight/p/9003515.html
Copyright © 2020-2023  润新知