2d项目需要实现影子效果,sprite实现效果不理想,为了实现高分辨率的影子,使用shader的一个pass实现影子:这里直接上代码

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

// RGB sprite split shader test unitycoder.com
Shader "RXS/SpriteShadow"
{
Properties
{
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
// _Color ("Tint", Color) = (1,1,1,1)
[MaterialToggle] PixelSnap("Pixel snap", Float) = 0
_RedOffsetX("RedOffsetX", Float) = 0
_RedOffsetY("RedOffsetY", Float) = 0
_GreenOffsetX("GreenOffsetX", Float) = 0
_GreenOffsetY("GreenOffsetY", Float) = 0
_BlueOffsetX("BlueOffsetX", Float) = 0
_BlueOffsetY("BlueOffsetY", Float) = 0
}

SubShader
{
Tags
{
"Queue" = "Transparent"
"IgnoreProjector" = "True"
"RenderType" = "Transparent"
"PreviewType" = "Plane"
"CanUseSpriteAtlas" = "True"
}

Cull Off
Lighting Off
ZWrite Off
Fog{ Mode Off }
// Blend SrcAlpha OneMinusSrcAlpha
// Blend SrcAlpha OneMinusSrcAlpha // Soft Additiv

// shadow
Pass
{
Blend SrcAlpha OneMinusSrcAlpha // Soft Additiv
//Blend One One // Additive
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile DUMMY PIXELSNAP_ON
#include "UnityCG.cginc"

struct appdata_t
{
float4 vertex : POSITION;
float4 color : COLOR;
float2 texcoord : TEXCOORD0;
};

struct v2f
{
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
half2 texcoord : TEXCOORD0;
};

//fixed4 _Color;
float _BlueOffsetX;
float _BlueOffsetY;

v2f vert(appdata_t IN)
{
v2f OUT;
OUT.vertex = UnityObjectToClipPos(IN.vertex);
OUT.texcoord = IN.texcoord;
// OUT.color = IN.color * _Color;
OUT.color = float4(0,0,0,1);
OUT.vertex.xy += float2(_BlueOffsetX,_BlueOffsetY);
#ifdef PIXELSNAP_ON
OUT.vertex = UnityPixelSnap(OUT.vertex);
#endif

return OUT;
}

sampler2D _MainTex;

fixed4 frag(v2f IN) : COLOR
{
return (tex2D(_MainTex, IN.texcoord) * IN.color)*0.5;//;+float4(1,1,1,0.5);;
}
ENDCG
} // end pass

// texture
Pass
{
//Blend One One
Blend SrcAlpha OneMinusSrcAlpha // Soft Additiv
// Blend One One // Additive
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile DUMMY PIXELSNAP_ON
#include "UnityCG.cginc"

struct appdata_t
{
float4 vertex : POSITION;
float4 color : COLOR;
float2 texcoord : TEXCOORD0;
};

struct v2f
{
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
half2 texcoord : TEXCOORD0;
};

// fixed4 _Color;
float _RedOffsetX;
float _RedOffsetY;

v2f vert(appdata_t IN)
{
v2f OUT;
OUT.vertex = UnityObjectToClipPos(IN.vertex);
OUT.texcoord = IN.texcoord;
// OUT.color = IN.color * _Color;
OUT.color = IN.color ;
OUT.vertex.xy += float2(_RedOffsetX,_RedOffsetY);
#ifdef PIXELSNAP_ON
OUT.vertex = UnityPixelSnap(OUT.vertex);
#endif

return OUT;
}

sampler2D _MainTex;

fixed4 frag(v2f IN) : COLOR
{
return tex2D(_MainTex, IN.texcoord);// *IN.color;
}
ENDCG
}

}
}

参考网站http://unitycoder.com/blog/2014/01/06/sprite-rgb-split-shader-test/

转载于:https://www.cnblogs.com/rxs123/p/7683697.html

sprite实现影子相关推荐

  1. unity-shader 2D - Sprite 影子

    前言 今天我们来实现一个比较简单实用的shader特效 - 2D Sprite影子效果 最终效果: 准备工作: 打开unity新建一个2D场景,导入一张2D人物图片和一张透明的图片(用来接收影子),修 ...

  2. Unity2d动态影子

    Unity2d动态影子 首先创建自己准备阴影的物体,给它加上Rigidbody2d组件,将Body type属性选择Kinematic 将sprite复制,将复制的物体做成它的子类,然后改变子类的Bo ...

  3. list mybatis 接收 类型_基于mybatis拦截器实现的一款简易影子表自动切换插件

    近期因工作需要,小编基于mybatis拦截器开发了一款简易影子表自动切换插件,可以根据配置实现动态修改表名,即将对原source table表的操作自动切换到对target table表的操作.该插件 ...

  4. 关于loader加载的东西必须是继承sprite

    如果不是继承sprite 转载于:https://www.cnblogs.com/wonderKK/p/3440616.html

  5. html中sprite标签,Three.js模型标签

    Three.js模型标签 在很多的实际的项目中,你可能需要给一个Three.js的模型添加标签,标签可以通过一个包含文字图形信息的HTML元素或者一个three.js的精灵模型来表示. 层级模型 复杂 ...

  6. 在windows中创建一个影子用户

    在windows中创建一个影子用户(看不到图请下载附件) 我们可以在windows操作系统中建立一个影子用户,也就是它是实际存在的,但是不会在登录时或者用户组中显示,我们可以赋予影子用户管理员权限,可 ...

  7. python多张图片合并拼接,python制作sprite图、雪碧图

    python多张图片合并拼接,python制作sprite图.雪碧图 整理图片集 找两个文件夹,yangying和zhaoliying,分别放上照片8张,共16张照片. 创建sprite.py # 多 ...

  8. REM+SVG Sprite,web app案例

    REM+SVG Sprite,构建新时代web app <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN&quo ...

  9. 连影--影子007的回忆

    影子007的回忆    影子006是我从2年级起,一直陪着我回家,陪着我笑,陪着我哭,陪着我疯,陪着我傻得一个--外表斯文却内心强大的小女生!她就是--张晓彤.    我家楼下的彩板房,是我们友谊的见 ...

最新文章

  1. HALCON双目三维重建实验
  2. 绘制对象iPhone开发基础教程 笔记
  3. 数字和字符串的相互转化
  4. TCP协议面试灵魂10问 | 强势整理
  5. html td装满图片,HTML:桌子上的Td不满
  6. java 图片特效_强大的Java图像滤镜特效类库Java Image Filters
  7. Gradle化的Android Gallery3D App
  8. 计算机视觉论文-2021-04-06
  9. arduino 超声波测距原理_[Arduino]超声波测距
  10. linux学习系列-一些知识
  11. 简单点击图片弹出video视频弹窗功能
  12. javascript 模拟退格键_javascript禁止Backspace退格键的多种方法
  13. 仓库标准作业流程与WMS系统规划
  14. 空气净化器哪个牌子好,除甲醛空气净化器什么牌子好推荐
  15. 【SVAC2.0】国家安防监控SVAC2.0标准支持特性
  16. Android wear 睡眠追踪,为什么智能手表还不是最理想的睡眠追踪设备
  17. 使用Grunt生成雪碧图
  18. (揭秘监控技术)《潜行追踪》:FBI 给你28天,你也逃不掉,中国版呢?
  19. Linux搭建elasticsearch-7.8.0单机版本
  20. vue提示音_vue中使用audio标签进行消息提示

热门文章

  1. Sprite Kit 动作系统
  2. ERP软件对服装行业的好处有哪些?
  3. java 通联支付接口_通联支付接口.rar
  4. 大教堂与集市读书笔记
  5. 【陈鹏老师精益项目实战】华北区防水材料企业精益生产项目第四期启动
  6. Live Server 正常启用 但是网页不更新 解决方法
  7. 07长电债今上市 公司债正式启航
  8. CentOS下搭建LAMP
  9. SpringCloud SpringBoot uniapp vue b2b2c 微服务 多商家入驻直播带货商城 电商之14.0 Zookeeper 分布式锁实现原理
  10. 面向移动互联网和物联网应用的下一代移动通信