当前位置: 首页 > news >正文

Unity可视化Shader工具ASE介绍——3、ASE的Shader类型介绍

  大家好,我是阿赵。这里继续介绍Unity可视化Shader编辑插件ASE的用法。
  上一篇介绍了节点的输入输出节点。这一篇来介绍一下不同的Shader类型的区别。

一、修改Shader类型

  之前介绍创建Shader的时候,曾经说过可以选择Shader的类型。
在这里插入图片描述

  其实这个类型是可以在Shader的输出节点里面修改的。选择输出节点,然后在Shader Type选项,就可以修改Shader的 类型。
在这里插入图片描述

二、不同Shader类型的区别

  这里选择一个Legacy/Unlit类型的Shader来试试。选择了之后,会发现好像整个世界都变了
在这里插入图片描述

  首先,坐标的输出节点属性栏,会变得少了很多选项
在这里插入图片描述

  然后输出节点本身,会看出也是少了很多个输出接口
在这里插入图片描述

  这里可以比较明显的看出来,不同的Shader类型,它提供的输出接口和渲染功能都是不一样的。
  其中提供功能最少的是Legacy/Unlit类型,它只提供基础Shader的LOD、CullMode、ColorMask、ZWrite、ZTest、BlendMode、Stencil等设置,并没有什么额外的功能,输出节点里面的接口,就只有一个颜色和一个顶点偏移,对应的是最基础的顶点/片段着色器的输出结果。如果想实现法线贴图的效果,还需要自己去计算法线。
在这里插入图片描述

  其中提供的功能最多的是Surface类型,输出节点的属性,除了上面所说的基础Shader属性以外,还提供了很多其他功能,比如可以直接选择光照模型、实现Outline效果,等等。
  而输出接口也是非常的多,如果想实现发现贴图效果,只需要把法线贴图节点拖到Normal输出接口就可以了。最后,Surface的输出节点最下面有一个Debug的接口。这个接口只有Surface类型才提供,是ASE提供的一个测试效果接口,可以把任意的节点步骤连线到这个debug输出,测试某个节点的效果。
  再介绍一下UI的类型
在这里插入图片描述

  UI类型的输出节点,和刚才的Unlit一样,这不是重点。
在这里插入图片描述

  点击用文本编辑器打开shader,可以看到UI模板生成的Shader如下:

// Made with Amplify Shader Editor
// Available at the Unity Asset Store - http://u3d.as/y3X 
Shader "TestShader"
{Properties{[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}_Color ("Tint", Color) = (1,1,1,1)_StencilComp ("Stencil Comparison", Float) = 8_Stencil ("Stencil ID", Float) = 0_StencilOp ("Stencil Operation", Float) = 0_StencilWriteMask ("Stencil Write Mask", Float) = 255_StencilReadMask ("Stencil Read Mask", Float) = 255_ColorMask ("Color Mask", Float) = 15[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0}SubShader{LOD 0Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" "CanUseSpriteAtlas"="True" }Stencil{Ref [_Stencil]ReadMask [_StencilReadMask]WriteMask [_StencilWriteMask]CompFront [_StencilComp]PassFront [_StencilOp]FailFront KeepZFailFront KeepCompBack AlwaysPassBack KeepFailBack KeepZFailBack Keep}Cull OffLighting OffZWrite OffZTest [unity_GUIZTestMode]Blend SrcAlpha OneMinusSrcAlphaColorMask [_ColorMask]Pass{Name "Default"CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma target 3.0#include "UnityCG.cginc"#include "UnityUI.cginc"#pragma multi_compile __ UNITY_UI_CLIP_RECT#pragma multi_compile __ UNITY_UI_ALPHACLIPstruct appdata_t{float4 vertex   : POSITION;float4 color    : COLOR;float2 texcoord : TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};struct v2f{float4 vertex   : SV_POSITION;fixed4 color    : COLOR;half2 texcoord  : TEXCOORD0;float4 worldPosition : TEXCOORD1;UNITY_VERTEX_INPUT_INSTANCE_IDUNITY_VERTEX_OUTPUT_STEREO};uniform fixed4 _Color;uniform fixed4 _TextureSampleAdd;uniform float4 _ClipRect;uniform sampler2D _MainTex;v2f vert( appdata_t IN  ){v2f OUT;UNITY_SETUP_INSTANCE_ID( IN );UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);UNITY_TRANSFER_INSTANCE_ID(IN, OUT);OUT.worldPosition = IN.vertex;OUT.worldPosition.xyz +=  float3( 0, 0, 0 ) ;OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);OUT.texcoord = IN.texcoord;OUT.color = IN.color * _Color;return OUT;}fixed4 frag(v2f IN  ) : SV_Target{half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;#ifdef UNITY_UI_CLIP_RECTcolor.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);#endif#ifdef UNITY_UI_ALPHACLIPclip (color.a - 0.001);#endifreturn color;}ENDCG}}CustomEditor "ASEMaterialInspector"}

  这里需要注意的是,UI类型的Shader模板已经添加了用于UI的shader所需的各种标签,还有UI上使用的各种Rect裁剪和Alpha裁剪。如果不添加这些东西,在UI上使用一般模型的Shader,是不会有这些UI特效的裁剪效果的。

三、总结

  不同的Shader类型,生成出来的Shader代码会有不同的特性。选择虽然看起来很多,但都是从我们的需求出发的。需要什么样的效果,就选择怎样的类型。如果是手机游戏项目,我一般都是使用Unlit或者UI的类型,因为他们不附带多余的效果,每一步都可以自己去控制性能。如果是想快速的实现某个效果,或者是要实现PBR的次世代效果,那我一般会选择Surface类型,因为它提供的功能实在是多,而且调试方便。

相关文章:

Unity可视化Shader工具ASE介绍——3、ASE的Shader类型介绍

大家好,我是阿赵。这里继续介绍Unity可视化Shader编辑插件ASE的用法。   上一篇介绍了节点的输入输出节点。这一篇来介绍一下不同的Shader类型的区别。 一、修改Shader类型 之前介绍创建Shader的时候,曾经说过可以选择Shader的类型。 其实这个类型是…...

国内手机安装 Google Play 服务 (GMS/Google Mobile Services)

目录 1. 国内手机安装 Google Play 服务 (GMS/Google Mobile Services)1.1. 什么是 GMS1.2. 国内手机只需要安装 3 个 APP1.2.1. Google Services Framework 服务框架1.2.2. Google Play Services1.2.3. Google Play Store 应用商店 1.3. 问题1.3.1. 谷歌地图闪退 2. 小米手机 …...

数据结构与算法-(7)---栈的应用-(4)后缀表达式求值

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…...

[VIM]spcaevim

Home | SpaceVim SpaceVim - 知乎 关于Vim/Neovim/SpaceVim的一些思考 - 知乎 vim高配版(1) – SpaceVim 简介 SpaceVim 是国内的一个大佬将一些NB的插件整合到一起的一个插件包. 一键式安装, 功能强大. 官网参见 Home | SpaceVim vim高配版(2) – vimplus 简介 vimplu…...

Android中的RxJava入门及常用操作符

文章目录 1.定义2.作用3.特点4.使用4.1创建被观察者(Observable)4.2创建观察者(Observer)4.3订阅(Subscribe)4.4Dispose 5.操作符5.1操作符类型5.2just操作符5.2链式调用5.3 fromArray操作符5.4 fromIterab…...

【数字化转型】10大数字化转型能力成熟度模型03

一、前言 数字化转型是数据化能力建设的目标和价值,作为一个新兴的课题,目前为止并未出现一个统一的数字化转型成熟度模型。不同的企业和机构,根据自身的发展和认知,推出了自己的企业级或者准行业级标准。这些标准具有很强的参考意义,作者收集和整理了相关的标准和规范,整…...

【算法与数据结构】--前言

欢迎来到《算法与数据结构》专栏!这个专栏将引领您进入计算机科学领域中最重要、最精彩的领域之一:算法与数据结构。不管您是一名初学者,还是已经拥有一定编程经验的开发者,都可以从这里找到有益的知识和实践。 在计算机科学的世…...

R²决定系数

R 2 R^2 R2(决定系数)是一个用于衡量统计模型拟合数据的指标,通常用于线性回归分析。它表示模型所解释的因变量(目标变量)方差的比例,范围从0到1。 更具体地说, R 2 R^2 R2告诉我们模型能够解释…...

软件工程与计算总结(一)软件工程基础

国庆快乐,今天开始更新《软件工程与计算(卷二)》的重要知识点内容~ 一.软件 1.软件独立于硬件 早期的软件是为了计算机硬件在研究型项目中而开发制造的,人们使用专门针对于硬件的指令码和汇编语言编写,这也是最早软件…...

SpringBoot-黑马程序员-学习笔记(一)

8.pom文件中的parent 我们使用普通maven项目导入依赖时,通常需要在导入依赖的时候指定版本号,而springboot项目不需要指定版本号,会根据当前springboot的版本来下载对应的最稳定的依赖版本。 点开pom文件会看到这个: 继承了一个…...

Apache Tomcat安装、运行

介绍 Apache Tomcat是下面多个规范的一个开源实现:Jakarta Servlet、Jakarta Server Pages、Jakarta Expression Language、Jakarta WebSocket、Jakarta Annotations 和 Jakarta Authentication。这些规范是 Jakarta EE 平台的一部分。 Jakarta EE 平台是Java EE平…...

聊聊分布式架构05——[NIO基础]BIO到NIO的演进

目录 I/O I/O模型 BIO示例 BIO与NIO比较 NIO的三大核心 NIO核心之缓冲区 Buffer常用子类: Buffer常用API Buffer中的重要概念 NIO核心之通道 FileChannel 类 FileChannel常用方法 NIO核心之选择器 概述 应用 NIO非阻塞原理分析 服务端流程 客户端…...

聊天、会议、多媒体一体化:多平台支持的即时通讯系统 | 开源日报 No.44

harness/gitness Stars: 28.2k License: Apache-2.0 Gitness 是一个建立在 Drone 之上的新型开源开发者平台,具备代码托管和流水线功能。它提供了以下核心优势: 轻量级、超快速的代码托管和持续集成服务支持 Docker 容器化部署可以在本地环境中构建和…...

收录一些常见的算法题型

常用算法 字符串 s.trim():去掉字符串首尾的空格s.split("\\s"):按照空格对字符串分割 树 前中后序遍历 /*** 统一一下* param root* return*///前序public static List<Integer> preOrder(TreeNode root){List<Integer> list new ArrayList();Stac…...

Node-RED系列教程-25node-red获取天气

安装节点:node-red-contrib-weather 节点图标如下: 使用说明:node-red-contrib-weather (node) - Node-RED 流程图中填写经度和纬度即可。 演示: json内容: {...

Rust中的枚举和模式匹配

专栏简介&#xff1a;本专栏作为Rust语言的入门级的文章&#xff0c;目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言&#xff0c;虽然历史没有C、和python历史悠远&#xff0c;但是它的优点可以说是非常的多&#xff0c;既继承了C运行速度&#xff0c;还拥有了Java…...

好物周刊#19:开源指北

https://github.com/cunyu1943/JavaPark https://yuque.com/cunyu1943 村雨遥的好物周刊&#xff0c;记录每周看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;每周五发布。 一、项目 1. Vditor 一款浏览器端的 Markdown 编辑器&#xff0c;支持所见即所得、…...

分布式数据库(林子雨慕课课程)

文章目录 4. 分布式数据库HBase4.1 HBase简介4.2 HBase数据模型4.3 HBase的实现原理4.4 HBase运行机制4.5 HBase的应用方案4.6 HBase安装和编程实战 4. 分布式数据库HBase 4.1 HBase简介 HBase是BigTable的开源实现 对于网页搜索主要分为两个阶段 1.建立整个网页索引&#xf…...

使用UiPath和AA构建的解决方案 3. CRM 自动化

您是否曾经从一个应用程序中查找数据并更新另一个系统? 在许多情况下,人们在系统之间复制和移动数据。有时,可能会发生“转椅活动”,从而导致人为失误。RPA可以帮助我们自动化这些活动,使其更快,同时还可以消除任何人为错误。 在这个项目中,我们将在客户服务中自动化一…...

【C++设计模式之状态模式:行为型】分析及示例

简介 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为&#xff0c;看起来就像是改变了其类。状态模式将对象的状态封装成不同的类&#xff0c;并使得对象在不同状态下有不同的行为。 描述 状态模式通过…...

Perplexity开发者文档结构逆向工程:通过17个真实HTTP响应头+OpenAPI Schema反推隐藏端点与beta功能开关

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity开发者文档查询 Perplexity 提供了一套面向 AI 应用开发者的 RESTful API 文档体系&#xff0c;其开发者中心&#xff08;developer.perplexity.ai&#xff09;支持结构化检索、版本过滤与实…...

终极B站视频下载指南:BilibiliDown一键解锁高清视频下载

终极B站视频下载指南&#xff1a;BilibiliDown一键解锁高清视频下载 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors…...

超自动化巡检:如何应对海量增长的基础设施?

在数字化转型的浪潮中&#xff0c;企业IT基础设施正经历着前所未有的指数级增长。从物理服务器到虚拟机&#xff0c;从容器集群到云原生环境&#xff0c;从传统数据中心到边缘节点&#xff0c;运维对象的数量与种类正在以几何级数膨胀。某大型企业单日告警量可达130万条&#x…...

CodMate:基于上下文感知的智能代码伴侣设计与实践

1. 项目概述&#xff1a;一个为开发者量身定制的代码伴侣如果你和我一样&#xff0c;每天大部分时间都在和代码编辑器、终端以及各种文档打交道&#xff0c;那你一定对“效率”这个词有很深的执念。我们总是在寻找能让自己写代码更快、调试更准、理解项目更轻松的工具。今天要聊…...

Linux入门篇之RK3588基于Buildroot系统下安装交叉编译器

一、交叉编译器 交叉编译器是一种能够在一种计算机平台上生成另一种平台可执行代码的编译器。例如&#xff0c;在x86架构的PC上编译出运行于ARM架构嵌入式设备的程序。与本地编译器不同&#xff0c;交叉编译器的编译环境和运行环境是分离的。 二、为什么需要交叉编译器&#…...

别再傻傻分不清!RV、RVV、RVVP这些电工字母到底啥意思?一张图帮你搞定家庭布线选线

家庭电工实战指南&#xff1a;RV/RVV/RVVP线材选型与避坑手册 刚打开装修材料清单时&#xff0c;那些密密麻麻的字母组合让人瞬间头大——RV、RVV、RVVP、AVVR...这些看似天书的代号&#xff0c;直接决定了你家插座能否承载大功率电器、智能窗帘会不会信号中断&#xff0c;甚至…...

告别付费!手把手教你用Matrikon OPC Server Simulation(v1.7.2)搭建免费工业数据模拟环境

零成本构建工业数据模拟环境&#xff1a;Matrikon OPC Server Simulation全攻略 在工业自动化领域&#xff0c;数据采集与监控系统&#xff08;SCADA&#xff09;的开发与测试往往需要真实的OPC服务器环境。然而&#xff0c;商业OPC服务器的高昂成本常常成为初学者和小型团队的…...

如何快速掌握DevPod:开源远程开发环境的完整指南

如何快速掌握DevPod&#xff1a;开源远程开发环境的完整指南 【免费下载链接】devpod Codespaces but open-source, client-only and unopinionated: Works with any IDE and lets you use any cloud, kubernetes or just localhost docker. 项目地址: https://gitcode.com/g…...

无代码物联网开发实战:WipperSnapper与Adafruit IO快速构建数据采集系统

1. 项目概述&#xff1a;当硬件开发告别代码如果你和我一样&#xff0c;对物联网项目充满热情&#xff0c;但又时常被嵌入式编程的编译、烧录、调试劝退&#xff0c;那么今天聊的这个工具&#xff0c;可能会彻底改变你的工作流。我们不再需要为读取一个按键的状态去写几行digit…...

苹果手机照片去背景怎么操作?2026年最全工具对比指南

最近有个朋友问我&#xff0c;怎样才能快速给iPhone拍的照片去背景&#xff0c;特别是想换成不同颜色的背景或者制作透明背景图。我才意识到&#xff0c;现在很多人其实都需要这样的功能——无论是为了制作证件照、商品图&#xff0c;还是用于社交媒体。今天我就把这些年用过的…...