Unity Sprite2D Outline Shader 图片描边+纯色填充

2024-01-05 21:08

本文主要是介绍Unity Sprite2D Outline Shader 图片描边+纯色填充,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2D图片描边,2D图片纯色填充,二合一Shader。支持UGUI UI Mask。

Shader "Sprites/SpriteOutline"
{Properties{[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}_Color ("Tint Color", Color) = (1,1,1,1)_TintColorFactor ("Tint Color Factor", Range(0, 1)) = 1_FillColor ("Fill Color", Color) = (1,1,1,1)_FillColorFactor ("Fill Color Factor", Range(0, 1)) = 0_OutlineColor("Outline Color", Color) = (1,1,1,1)_LineWidth("Outline Width", Float) = 0.39_CheckRange("Check Range", Range(0, 1)) = 0_CheckAccuracy("Check Accuracy", Range(0.1, 0.99)) = 0.9[MaterialToggle] PixelSnap ("Pixel Snap", Float) = 0_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}SubShader{Tags{"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane""CanUseSpriteAtlas"="True"}Cull OffLighting OffZWrite OffBlend One OneMinusSrcAlphaStencil{Ref[_Stencil]Comp[_StencilComp]Pass[_StencilOp]ReadMask[_StencilReadMask]WriteMask[_StencilWriteMask]}ColorMask[_ColorMask]Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma target 2.0#pragma multi_compile _ PIXELSNAP_ON#pragma multi_compile _ ETC1_EXTERNAL_ALPHA#include "UnityCG.cginc"sampler2D _MainTex;float4 _MainTex_TexelSize;sampler2D _AlphaTex;fixed4 _Color;float _TintColorFactor;fixed4 _FillColor;float _FillColorFactor;fixed4 _OutlineColor;float _CheckRange;float _LineWidth;float _CheckAccuracy;struct appdata_t{float4 vertex   : POSITION;float4 color    : COLOR;float2 texcoord : TEXCOORD0;};struct v2f{float4 vertex   : SV_POSITION;fixed4 color    : COLOR;float2 texcoord : TEXCOORD0;};v2f vert(appdata_t IN){v2f OUT;OUT.vertex = UnityObjectToClipPos(IN.vertex);OUT.texcoord = IN.texcoord;OUT.color = IN.color * _Color;#ifdef PIXELSNAP_ONOUT.vertex = UnityPixelSnap(OUT.vertex);#endifreturn OUT;}fixed4 SampleSpriteTexture(float2 uv){fixed4 color = tex2D(_MainTex, uv);#if ETC1_EXTERNAL_ALPHA// get the color from an external texture (usecase: Alpha support for ETC1 on android)color.a = tex2D(_AlphaTex, uv).r;
#endifreturn color;}fixed4 frag(v2f IN) : SV_Target{fixed4 c = SampleSpriteTexture(IN.texcoord) * IN.color;c.rgb *= c.a;float isOut = step(abs(1 / _LineWidth), c.a);if (isOut != 0){fixed4 pixelUp    = tex2D(_MainTex, IN.texcoord + fixed2(0, _MainTex_TexelSize.y * _CheckRange));fixed4 pixelDown  = tex2D(_MainTex, IN.texcoord - fixed2(0, _MainTex_TexelSize.y * _CheckRange));fixed4 pixelRight = tex2D(_MainTex, IN.texcoord + fixed2(_MainTex_TexelSize.x * _CheckRange, 0));fixed4 pixelLeft  = tex2D(_MainTex, IN.texcoord - fixed2(_MainTex_TexelSize.x * _CheckRange, 0));float bOut = step((1 - _CheckAccuracy), pixelUp.a * pixelDown.a * pixelRight.a * pixelLeft.a);c = lerp(_OutlineColor, c * _TintColorFactor * (1 - _FillColorFactor) + _FillColor * _FillColorFactor, bOut);return c;}else{return c;}}ENDCG}}
}

这篇关于Unity Sprite2D Outline Shader 图片描边+纯色填充的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Java实现图片淡入淡出效果

《Java实现图片淡入淡出效果》在现代图形用户界面和游戏开发中,**图片淡入淡出(FadeIn/Out)**是一种常见且实用的视觉过渡效果,它可以用于启动画面、场景切换、轮播图、提示框弹出等场景,通过... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

将图片导入Python的turtle库的详细过程

《将图片导入Python的turtle库的详细过程》在Python编程的世界里,turtle库以其简单易用、图形化交互的特点,深受初学者喜爱,随着项目的复杂度增加,仅仅依靠线条和颜色来绘制图形可能已经... 目录开篇引言正文剖析1. 理解基础:Turtle库的工作原理2. 图片格式与支持3. 实现步骤详解第

在React聊天应用中实现图片上传功能

《在React聊天应用中实现图片上传功能》在现代聊天应用中,除了文字和表情,图片分享也是一个重要的功能,本文将详细介绍如何在基于React的聊天应用中实现图片上传和预览功能,感兴趣的小伙伴跟着小编一起... 目录技术栈实现步骤1. 消息组件改造2. 图片预览组件3. 聊天输入组件改造功能特点使用说明注意事项

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取