ASE相对于Shader Forge生成的代码更加干净, 用于制作特效的再合适不过,以下是使用ASE优化一个SF制作特效的经过:
## 分析美术用SF制作的Shader
懒得装SF, 直接分析代码可知这个溶解效果大致有以下部分组成:

  • 使用Grab的扭曲
  • 4个Step指令 + 3个lerp指令组成的溶解
  • 时间变量控制的UV动画
  • 2张贴图 + N个uniform变量
  • 顶点色

沟通去掉部分功能

由于这个特效核心需求是实现刀光的溶解消失,因此可去掉一部分功能

  • 使用Grab的扭曲 (太快看不清楚)
  • 4个Step指令 + 3个lerp指令组成的溶解 (需要精简)
  • 时间变量控制的UV动画 (可以用动画组件做UV动画)
  • 2张贴图 + N个uniform变量 (酌情精简)
  • 顶点色 (有A通道,不需要)

在ASE中重新创建Shader

1 Sahder Forge会生成很多实际不使用的代码,先要手动清理掉这部分代码
2 清理后的代码可读性依然很差,花时间在ASE重建如下:

优化节点

ASE可视化Shader编程的最大优点就是能实时看到当前节点的运算结果,下面开始优化:

  1. 首先使用新旧练个shader调成一样,用作优化是做对比,保证优化完后效果基本一致

  2. 首先是4个step,这样互换AB,结果其实就是反向,使用OneMinus代替

  3. 继续, 乘法的结果总是黑色的,这些节点都浪费了

另一组Lerp的结果也一样是浪费的↓

  1. 修复bug, 改用合适的混合模式

  2. 最后效果跟原来美术做的一样, 但性能提升极大!

跟原Shader相比

  • 去掉了grab
  • 2个Step指令 + 0个lerp指令组成的溶解
  • 动画控制UV
  • 2张贴图 + N个uniform变量 (酌情精简)
  • 去掉了顶点色和法线语义等无用的代码

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

使用Amplify Shader Editor优化特效Shader的更多相关文章

  1. WPF 像素着色器入门:使用 Shazzam Shader Editor 编写 HLSL 像素着色器代码

    原文:WPF 像素着色器入门:使用 Shazzam Shader Editor 编写 HLSL 像素着色器代码 HLSL,High Level Shader Language,高级着色器语言,是 Di ...

  2. 关于NGUI Shader 和 Draw Call的优化 & 模糊shader

    序: 1.项目过程中不可避免的需要用到大量Shader 和 UITexture,由于Ngui对Shader支持非常糟糕,导致项目drawCall异常的高 2.Panel裁剪无法裁剪自定义shader内 ...

  3. cocos2d-js Shader系列4:Shader、GLProgram在jsb(native、手机)和html5之间的兼容问题。cocos2d-js框架各种坑。

    为了让jsb也能顺利跑起滤镜效果,在手机侧折腾了2天,因为每次在真机上运行总要耗那么半分钟,而且偶尔还遇到apk文件无法删除导致运行失败的情况. 这个调试起来,实在让人烦躁加沮丧. 还好,测试上百轮, ...

  4. UnityShader之Shader格式篇【Shader资料1】

    关于Shader,在Unity里面我们一般叫做ShaderLab,只要你的职业是与渲染搭边,Unity就与ShaderLab有着直接的关联,你都应该试着去学会它,其实我们在新手未有入门的时候,我们总是 ...

  5. 今天写shader流光效果,shader代码少了个括号,unity shader compiler卡死且不提示原因

    今天写shader流光效果,shader代码少了个括号,unity shader compiler卡死且不提示原因 好在找到了原因,shader 代码如下,原理是提高经过的颜色亮度 void surf ...

  6. 流光shader 和 流光+扭曲shader

    我认为这种shader能通过简单的方式呈现出不错的效果. 1.流光shader: Shader "Unlit/StreamShader" { //流光shader Properti ...

  7. Shader 屏幕后期特效 Shake(震屏)&Wave(波纹)

    震屏效果 Shader: //////////////////////////////////////////// ///// CameraPlay - by VETASOFT 2017 ///// ...

  8. 特效Shader对雾的处理

    RFX4_Particle.shader案例 #ifdef BlendAdd UNITY_APPLY_FOG_COLOR(i.fogCoord, res, half4(0,0,0,0)); #endi ...

  9. fragment shader的优化

    ALU: 浮点数精度 选择性降低 shader 指令数 替换一些计算减小指令sqrt, sin, cos, recip 光照 计算用lightmap(用memory sample换计算) vertex ...

随机推荐

  1. JAVA反射机制教程-获取类对象

    1. 什么是类对象 类对象,就是用于描述这种类,都有什么属性,什么方法的 2. 获取类对象 获取类对象有3种方式(1). Class.forName(2). Hero.class(3). new He ...

  2. linux系统下安装两个或多个tomcat

    编辑环境变量:vi /etc/profile 加入以下代码(tomcat路径要配置自己实际的tomcat安装目录) ##########first tomcat########### CATALINA ...

  3. 20165318 2017-2018-2 《Java程序设计》第九周学习总结

    20165318 2017-2018-2 <Java程序设计>第九周学习总结 目录 学习过程遇到的问题及总结 教材学习内容总结 第13章 Java网络编程 代码托管 代码统计 学习过程遇到 ...

  4. 【洛谷】【线段树】P1471 方差

    [题目背景:] 滚粗了的HansBug在收拾旧数学书,然而他发现了什么奇妙的东西. [题目描述:] 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差 ...

  5. Hadoop学习之路(四)Hadoop集群搭建和简单应用

    概念了解 主从结构:在一个集群中,会有部分节点充当主服务器的角色,其他服务器都是从服务器的角色,当前这种架构模式叫做主从结构. 主从结构分类: 1.一主多从 2.多主多从 Hadoop中的HDFS和Y ...

  6. Docker实战(一)之使用Docker镜像

    镜像是Docker三大核心概念中最为重要的,自Docker诞生之日起“镜像”就是相关社区最为热门的关键字. Docker运行容器前需要本地存在对应的镜像,如果镜像没有保存至本地,Docker会尝试先从 ...

  7. P1006 传纸条

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...

  8. Altium Ddesigner 栅格 含义

    栅格分为可视栅格(Visible Grid).捕获栅格(snap grid).元件放置捕获栅格(Component Grid).电气栅格(Electrical Grid). 可视栅格:就是编辑过程中看 ...

  9. [笔记] Delphi 10.2.1 Tokyo 安装使用笔记

    Android 平台: ListView 滑动速度已有改善,但比起 Berlin 还是略慢一些(在较慢的机子可感觉的到)仅于 Android 平台,其它平台没差. TMemo, TEdit 输入文字的 ...

  10. CentOS6安装各种大数据软件 第四章:Hadoop分布式集群配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...