位置: 编程技术 - 正文
推荐整理分享Unity2D Sprite 描边Shader(unity描边shader),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:unity2d绘制线条,unity2d设置边界,unity对选中的物体描边,unity2d设置边界,unity模型描边效果,unity模型描边效果,unity模型描边效果,unity 后处理 描边,内容如对您有帮助,希望把文章链接给更多的朋友!
自制的第一个shader,比较简单所以直接贴源码。
是用官方的Sprite shader稍作加工完成的。
核心就是这一部分
fixed4 o = tex2D(_MainTex, IN.texcoord float2(_OutLineSpread, 0.0)) tex2D(_MainTex, IN.texcoord - float2(0.0, _OutLineSpread));o = o tex2D(_MainTex, IN.texcoord float2(0.0, _OutLineSpread)) tex2D(_MainTex, IN.texcoord - float2(_OutLineSpread, 0.0));o = IN.color;fixed4 main = tex2D(_MainTex, IN.texcoord);if (main.a > 0.1){o = main;}return o;
美中不足的是,描边范围必须要在sprite图片的范围之内。所以需要在一定程度上留白。
以下是全部源码
Shader "Sprites/Default"{Properties{[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}_Color ("Tint", Color) = (1,1,1,1)[MaterialToggle] PixelSnap ("Pixel snap", Float) = 0_OutLineSpread ("Outline Spread", Range(0,0.)) = 0. _Color("Outline Color", Color) = (1.0,1.0,1.0,1.0)}SubShader{Tags{ "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane""CanUseSpriteAtlas"="True"}Cull OffLighting OffZWrite OffFog { Mode Off }Blend SrcAlpha OneMinusSrcAlphaPass{CGPROGRAM#pragma vertex vert #pragma fragment frag#pragma multi_compile DUMMY PIXELSNAP_ON#include "UnityCG.cginc"struct appdata_t{float4 vertex : POSITION;float4 color : COLOR;float2 texcoord : TEXCOORD0;};struct v2f{float4 vertex : SV_POSITION;fixed4 color : COLOR;half2 texcoord : TEXCOORD0;};fixed4 _Color;v2f vert(appdata_t IN){v2f OUT;OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex);OUT.texcoord = IN.texcoord;OUT.color = IN.color * _Color;#ifdef PIXELSNAP_ONOUT.vertex = UnityPixelSnap (OUT.vertex);#endifreturn OUT;}sampler2D _MainTex;float _OutLineSpread;fixed4 frag(v2f IN) : COLOR{fixed4 o = tex2D(_MainTex, IN.texcoord float2(_OutLineSpread, 0.0)) tex2D(_MainTex, IN.texcoord - float2(0.0, _OutLineSpread));o = o tex2D(_MainTex, IN.texcoord float2(0.0, _OutLineSpread)) tex2D(_MainTex, IN.texcoord - float2(_OutLineSpread, 0.0));o = IN.color;fixed4 main = tex2D(_MainTex, IN.texcoord);if (main.a > 0.1){o = main;}return o;}ENDCG}}}
小地图的实现与远近景的切换 ///summary///Minimapcamera.///Thisscriptusetocontrolminimapcamera////summaryusingUnityEngine;usingSystem.Collections;publicclassMinimapCamera:MonoBehaviour{publicstaticintzoomLevel;//zoomlevelpublicst
【unity资源管理】内存池 内存池思想:创建对象时,先检查内存池中是否有缓存对象,如果没有再创建新的。删除对象时,不立即销毁,缓存一段时间,避免重复创建,提升执
编辑器拓展 Menuitem usingUnityEngine;usingSystem.Collections;usingUnityEditor;publicclassMyEditorWindow:EditorWindow{[MenuItem(Window/MyWindow)]staticvoidAddWindow(){//创建窗口Rectrect=newRect(0,0,,);MyEditorWi
标签: unity描边shader
本文链接地址:https://www.jiuchutong.com/biancheng/369358.html 转载请保留说明!上一篇:Visual Studio 2013 Tools for Unity安装目录,Visual Studio 2013 Tools.unitypackage
友情链接: 武汉网站建设