zoukankan      html  css  js  c++  java
  • Unity插件ASE的之Template

    为什么需要ASE模板

    以开发一套角色Shader的过程为例:

    1. 开发基础版本, 满足基本功能
    2. 开发角色溶解, 褪色等基于基础版本Shader
    3. 基础版本迭代改代码
    4. 基于基础版本的Shader跟着迭代改代码
    5. 基础版本再次迭代改代码
    6. 基于基础版本的Shader再次跟着迭代改代码
      .......

    以上过程可见维护成本之高, 为了降低维护难度, Unity Standard Shader的办法是把代码 "共用" 的部分拆分到 ".cginc"文件中, 也就是的Shaderlab的头文件.然而这么干的话会导致代码可读性很差, 手工维护代码也难免出错.

    ASE则提供了模板功能来实现方便维护的需求.ASE允许用户从已存在的Shader用作基础或模板创建新的Shader. 模板是常规Unity Shader,只是在关键点上放置了特殊的ASE标记,这些标记写为注释,因此它们不会影响着色器编译及其默认行为。

    同样已开发一套角色Shader的过程为例, ASE工作流是这样的:

    1. 开发基础版本, 满足基本功能
    2. 基础版本转换为ASE模板
    3. 使用模板在ASE中制作角色溶解,褪色等版本的Shader
    4. 模板迭代改代码
    5. 溶解,褪色等版本的Shader重新编译
      ......

    上下对比,ASE主要有以下优势:

    • ASE是可视化编程,自动编译成Shader代码,开发效率高
    • 复杂代码确实手写代码更有优势, 如角色光照部分的代码可以的作为的模板中不对外暴露修改的部分, 所以在ASE中制作溶解褪色效果时,节点连接变得极为简洁
    • 修改模板后,基于模板的shader只要重新编译即可

    以上可知, ASE可极大减少 "整套的Shader" 的开发维护成本.

    最后附上 Amplify Shader Editor Template文档

  • 相关阅读:
    latex表格实现文本自动换行
    SQL like查询条件中的通配符处理
    火狐浏览器下载文件中文乱码,文件名中的空格变加号("+")的问题
    jquery.zclip.js复制到剪切板
    EF架构~过滤导航属性等,拼接SQL字符串
    日志记录类LogHelper
    VS插件开发
    C#预处理器指令
    c++Builder 下的文件及目录操作
    C#:在catch中return,会执行finally吗?
  • 原文地址:https://www.cnblogs.com/CloudLiu/p/12838328.html
Copyright © 2011-2022 走看看