今天项目出现一个问题,我们灰显的图片无法被viewport进行裁剪,因为灰显的图片使用了我们自定义的shader,然而里面却没有裁剪的功能。 所以网上搜了一下, 大概解决办法就是,用原生的UGUI的shader, 然后添加上灰显的代码就可以了,代码如下:

Shader "UI/Default"
{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{Tags{ "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane""CanUseSpriteAtlas"="True"}Stencil{Ref [_Stencil]Comp [_StencilComp]Pass [_StencilOp] ReadMask [_StencilReadMask]WriteMask [_StencilWriteMask]}Cull OffLighting OffZWrite OffZTest [unity_GUIZTestMode]Blend SrcAlpha OneMinusSrcAlphaColorMask [_ColorMask]Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#include "UnityUI.cginc"#pragma multi_compile __ UNITY_UI_ALPHACLIPstruct appdata_t{float4 vertex   : POSITION;float4 color    : COLOR;float2 texcoord : TEXCOORD0;};struct v2f{float4 vertex   : SV_POSITION;fixed4 color    : COLOR;half2 texcoord  : TEXCOORD0;float4 worldPosition : TEXCOORD1;};fixed4 _Color;fixed4 _TextureSampleAdd;float4 _ClipRect;v2f vert(appdata_t IN){v2f OUT;OUT.worldPosition = IN.vertex;OUT.vertex = mul(UNITY_MATRIX_MVP, OUT.worldPosition);OUT.texcoord = IN.texcoord;#ifdef UNITY_HALF_TEXEL_OFFSETOUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1);#endifOUT.color = IN.color * _Color;return OUT;}sampler2D _MainTex;fixed4 frag(v2f IN) : SV_Target{half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;//Add Startfloat grey = dot(color.rgb , float3(0.299, 0.587, 0.114));color.rgb = half3(grey, grey, grey);//Add Endcolor.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);#ifdef UNITY_UI_ALPHACLIPclip (color.a - 0.001);#endifreturn color;}ENDCG}}
}

其中实现裁剪的代码是:

     Stencil{Ref [_Stencil]Comp [_StencilComp]Pass [_StencilOp] ReadMask [_StencilReadMask]WriteMask [_StencilWriteMask]}

UGUI 图片灰显裁剪相关推荐

  1. UGUI - 中设置UISprite图片灰显方法

    做Unity开发过程中,有需求让未开启的功能模块的入口灰色显示.因为没有滤镜的概念,所以没flash那么方便.解决思路还是Shader,以前按网上其他帖子的方法,一直没有成功实现过.这两天比较闲一点, ...

  2. unity3dui中图片加不上_Unity3d中设置UISprite图片灰显方法

    做Unity开发过程中,有需求让未开启的功能模块的入口灰色显示.因为没有滤镜的概念,所以没flash那么方便.解决思路还是Shader,以前按网上其他帖子的方法,一直没有成功实现过.这两天比较闲一点, ...

  3. 使用自定义材质球,实现NGUI屏幕溶解和灰显

    UITexture实现的溶解: 重设UITeture的材质球实现上述效果,把当前屏幕渲染的Texture2D丢给UITexture,即可实现UI屏幕特效,背景模糊等都可以. 难点主要是实时刷新问题 解 ...

  4. Unity3d Ugui图片上制作点光 、棱形光效果shader,并具有裁切

    Unity3d Ugui图片上制作点光 .棱形光效果 实现的效果可以参考如下图所示 通过shader来实现上述的效果,为了大家的适应性,推荐在unity官方的默认ui shader上更改,我用的是20 ...

  5. 【.net】Ueditor中图片上传和图片回显路径的设置

    在csdn六百多天的游侠今日现身江湖. 问题发生的背景: 所有项目代码中,图片上传都是固定存到一个图片专属的盘符,这样就可以整个盘符对所有图片进行备份以防丢失. 但是!有一个站点所引用的百度编辑器(主 ...

  6. UGUI 图片去色,变灰度图

    UGUI 图片将其他颜色去除,显示灰色图片 本例适用于 UGUI 一般项目中会有一些图标,当你拥有该图标显示为彩色图标,一般项目中最占资源的就是图片,不允许添加一张彩色图片,一张灰色图片,必须通过一些 ...

  7. iOS 图片处理-图片旋转和裁剪

    项目中要求处理图片, 简单记录一下图片旋转和裁剪过程 /** 将图片旋转弧度radians */ - (UIImage *)imageRotatedByRadians:(CGFloat)radians ...

  8. ALV Checkbox 单行灰显

    用 Function Module REUSE_ALV_GRID_DISPLAY 处理 ALV Checkbox 时,只能整列灰显Checkbox. 而用 Function Module REUSE_ ...

  9. android sdk是灰的,Android Studio 2.3 sdk管理器标签灰显

    Android Studio 2.3 - >配置 - > SDK管理器. 这些选项卡呈灰色显示: SDK工具,SDK更新站点.此外,"Show Package Details&q ...

最新文章

  1. H国的身份证号码(搜索)
  2. matlab加载ascii文件,matlab自动处理ascii文件的方法
  3. 注意!今日起 GitHub 新建存储库的默认分支就不叫“master”了!
  4. 查看linux糸统dns是否运行,探查Linux系统DNS服务器运行状况
  5. Android内存分析工具:Memory Profiler
  6. 单片机原理及其应用——单片机控制单个发光二极管实验(附超详细的C51单片机实验教程)
  7. oracle 采购 日历,Oracle日历程序
  8. Azure 托管镜像和非托管镜像对比
  9. java中程序定义book类_Java基础_0302:类和对象
  10. 【储留香系列】如何构建一个拖垮公司的备份系统
  11. 焕新:CANape 19真香~
  12. JAVA程序修改PDF内容_java 修改pdf
  13. 教新手小白如何通过五分钟学会用Python爬取女神照片!
  14. 层次分析法(AHP)—以b站up主评价问题为例
  15. 【拜小白的机器学习】2-机器学习的种类与基本术语概念
  16. geoJson全国各省市地图json数据获取
  17. SEO实战:怎样打劫肥龙龙的博客流量
  18. html中hidden属性小案例
  19. Web前端大作业、基于HTML+CSS+JavaScript响应式个人相册博客网站
  20. Android10/11 原生Launcher3深度定制开发

热门文章

  1. Shell脚本实现SSH免密登录及批量配置管理
  2. 【Oracle】管理还原数据(undo)
  3. 蓝天采集系统的安装和遇到的问题及解决方案
  4. 解决eclipse不会自动弹出Console控制台的问题
  5. 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法
  6. 如何解决 kubernetes 重启后,启来不来的问题
  7. 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties
  8. No module named scrapy 成功安装scrapy,却无法import的解决方法
  9. 从文件扩展名获取MIME类型
  10. git merge和git merge --no-ff有什么区别?