小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