Unity里面为Sprite添加边框写的的shader

本文介绍如何在Unity中为Sprite创建一个自定义Shader,实现边框效果。通过调整Shader代码,实现排除精灵内部透明部分,并解决两个完全相同Shader导致不同结果的异常问题。
摘要由CSDN通过智能技术生成

小boss让我写个shader加到sprite上,然后发现了一个神奇的问题,

Sprite的vertex在哪?现在考虑一种Sprite,它的内容没有占满整个

sprite的rect(就是你能拖动的rect),其他地方是透明的。这种sprite

的顶点既不是rect的四个顶点,也不在图像内容的边界上,而是系统

自动生成的一个多边形,这个多边形比图像内容大,把图像内容包括

在其中。

那么我现在想弄一个效果,原sprite的背后弄个影子,对于新创建的

sprite,他的shader是内置的。只能自己新建一个material,然后把做

sprite的png图像拖到material的tex里。

主要是怎么排除多边形内部的透明部分,其实就是用 Blend One One让

该部分与当前屏幕的颜色混合就行,具体看代码。另外我又发现一个问题,

可能是个偶然会出现的bug还是什么,两个自定义的shader内容完全一致(除了

文件名字和第一行的shader“XXX”),竟然有一个会得出异常结果。

Shader "Custom/Fragment extend" {
    Properties {
        _Color ("Surround Color"Color) = (0.2,0.2,0.2,0.7)
        _MainTex ("Base (RGB)"2D) = "white" {}
        _Range("Range",Range(0.1,0.3)) = 0.15
        //_Range2("Range",Range(0.1,10))=0.5
    }
    SubShader {
    //Tags{"RenderType"="Transparent"}
        //Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
        LOD 100
    Pass{
        Blend One One
        CGPROGRAM
            #pragma vertex vert

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值