分享一个shader Lod的实现

分享一个shader Lod的实现

本文实现基于Cocos Creator 3D v1.2.0

大纲

本文将按照以下顺序讲解:

  1. shader Lod是什么?为什么要使用它?
  2. 如何使用?
  3. 背后的实现原理是什么?

shader Lod是什么?为什么要使用它?

shader Lod其实就是根据手机性能自适应使用不同性能损耗的shader。也可以理解成根据手机性能选取相应的光照计算算法。具体实现:高端机使用pbr、中端机使用blinn-phong、低端机使用unlit。使用shader Lod后,高端机将会有更好的画面表现,而低端机通过降低画面表现减轻了性能压力。看效果图更直观一些。
场景编辑器中:


低端机
image
中端机
image
高端机
image

如何使用

  1. 导入依赖的资源
    assets.rar (11.6 KB)
    image
  2. 挂载MatLodMgr脚本
    在场景的最外层添加一个空节点,取名PersistNode。然后在这个节点上添加MatLodMgr组件。
  3. 给MatLodMgr组件赋值默认材质模板
  4. 给需要shader Lod的模型添加LOD组件MatLodComp
  5. 使用自定义材质替代默认材质(可选)
    因为默认材质的参数是统一的,所以默认生成的材质效果有可能不太理想,所以组件提供了使用自定义新材质取代默认生成的材质

实现原理过程讲解

高中低端机型的枚举
image
核心代码


加一下注释


图解一下

  1. 初始状态
    image
  2. 生成LOD后的材质
  3. 将新的材质应用给模型
    image

更多文章
个人博客: https://blog.csdn.net/u014560101
公众号:
image

6赞

assets.rar (11.6 KB)
模型跟图片资源太大论坛传不上来,所以上传一个极简的资源。

2赞

请问!!mat[’_defines’][0][key]这里两个!!是什么意思?

变成布尔值