![988216b81a052cda9f5970f6f3878f1a.png](https://i-blog.csdnimg.cn/blog_migrate/246c760d67e464903c11262f0f148de7.jpeg)
最近在学习shader,正好UI需求一个黑白滤镜的效果,就试着做了一个demo。最初的设计是写一个mask图片遮罩的shader,让美术提供一张mask图片设置进去,但是策划想要的是一个跟章节关联的开启效果,每个章节的mask图片形状、位置、大小和数量都不一样,故放弃了这个想法。改为修改NGUIshader,开启zwrite,然后用遮挡的方式实现遮罩,大体思路参考了人物遮挡X光的实现方式(
https://blog.csdn.net/puppet_master/article/details/73478905blog.csdn.net)和NGUI新手指引制作(
NGUI利用深度测试实现新手引导遮罩 - Mr. Oy - 博客园www.cnblogs.com![a6b94951514639504c2471668fb944aa.png](https://i-blog.csdnimg.cn/blog_migrate/a96d44cfc7a60dd98355906fd213f125.jpeg)
),效果图如下:
![2aaaf00902b49afeec2deacdcb30c791.gif](https://i-blog.csdnimg.cn/blog_migrate/4c1e5a298692dbc7688df9a339375688.gif)
前期准备
1.修改NGUI的Transparent Colored shader,增加黑白图绘制并开启深度写入。
Shader "Unlit/Transparent Colored GrapyPass"
{
Properties
{
_MainTex("Base (RGB), Alpha (A)", 2D) = "black" {}
}
SubShader
{
Tags
{
"Queue" = "Transparent+300" //修改渲染队列&#