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类型,因为它提供的功能实在是多,而且调试方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/128179.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Holographic MIMO Surfaces (HMIMOS)以及Reconfigurable Holographic Surface(RHS)仿真

这里写目录标题 Simulation setupchatgpt帮我总结代码总结:chatgpt生成的代码还是不靠谱:考虑把之前看的RHS中对于多用户的改成单用户全系MIMO与普通MIMO或者说RIS的区别到底是啥? Holographic MIMO Surfaces (HMIMOS)…

想升级macOS Big Sur,但是MacBook内存空间不够该怎么办?

随着使用时间的增长,我们会发现Mac电脑的存储空间越来越少,这时候我们就需要对Mac电脑进行清理,以释放更多的存储空间。那么,Mac空间不足怎么解决呢? 1.清理垃圾文件 Mac空间不足怎么解决?首先要做的就是清…

基于边缘网关的智慧工地监测方案

边缘物联网技术为千行百业赋能,依托边缘计算的低延时、高效率、广适用优势,也为工程建设产业带来新的增长动力。 例如在智慧工地应用中,围绕建设施工过程中的人员、设备、环境等要素,利用边缘计算网关构建全面的数据采集、分析、联…

基于SVM+TensorFlow+Django的酒店评论打分智能推荐系统——机器学习算法应用(含python工程源码)+数据集+模型(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型训练及保存3. 模型应用 系统测试1. 训练准确率2. 测试效果3. 模型应用 相关其它博客工程源代码下载其它资料下载 前言 本项目以支持向量机(SVM)技术为核心,…

python常用库之数据库orm框架之SQLAlchemy

文章目录 python常用库之数据库orm框架之SQLAlchemy一、什么是SQLAlchemySQLAlchemy 使用场景 二、SQLAlchemy使用SQLAlchemy根据模型查询SQLAlchemy SQL 格式化的方式db_session.query和 db_session.execute区别实测demo 总结:让我们留意一下SQLAlchemy 的 lazy lo…

【C++设计模式之迭代器模式】分析及示例

简介 迭代器模式是一种行为型设计模式,它提供了一种顺序访问聚合对象元素的方法,而又不需要暴露聚合对象的内部结构。迭代器模式通过将遍历算法封装在迭代器对象中,可以使得遍历过程更简洁、灵活,并且符合开闭原则。 描述 迭代…

YOLOv8改进算法之添加CA注意力机制

1. CA注意力机制 CA(Coordinate Attention)注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制。CA 注意力机制的核心思想是引入坐标信息,以便模型可以更好地理解不同位置之间的关系。如下图: 1. 输入特…

美容美甲小程序商城的作用是什么

美容院往往有很高需求,女性悦己经济崛起,加之爱美化程度提升,无论线下环境还是线上互联网信息冲击,美容服务、化妆产品等市场规格一直稳增不减。 通过【雨科】平台制作美容美甲商城,售卖相关服务/产品,模块…

计算机网络-计算机网络体系结构-概述,模型

目录 一、计算机网络概述 二、性能指标 速率 带宽 吞吐量 时延 往返时延RTT 利用率 三、计算机网络体系结构 分层结构 IOS模型 应用层-> 表示层-> 会话层-> 传输层-> 网络层-> 数据链路层-> 物理层-> TCP/IP模型 一、计算机网络概述 计…

轻松实现视频、音频、文案批量合并,享受批量剪辑的便捷

在日常生活中,我们经常会需要将多个视频、音频和文案进行合并剪辑,以制作出符合我们需求的短视频。然而,这个过程通常需要花费大量的时间和精力。幸运的是,现在有一款名为“固乔智剪软件”的工具可以帮助我们轻松完成这个任务。 首…

Nginx搭建Rtmp流媒体服务,并使用Ffmpeg推流

文章目录 1.rtmp流媒体服务框架图2.nginx配置3.配置nginx4.使用ffmpeg推流5.实时推摄像头流 本项目在开发板上使用nginx搭建流媒体服务,利用ffmpeg进行推流,在pc上使用vlc media进行拉流播放。 1.rtmp流媒体服务框架图 2.nginx配置 下载:wge…

GitHub爬虫项目详解

前言 闲来无事浏览GitHub的时候,看到一个仓库,里边列举了Java的优秀开源项目列表,包括说明、仓库地址等,还是很具有学习意义的。但是大家也知道,国内访问GitHub的时候,经常存在访问超时的问题,…