Unity2D实现贴图凹凸感并接受实时光照效果
先看终于效果:
我们的原图是一个3D模型的截图:
这一效果是通过Shader实现的:
(Shader代码来自国外博客:http://www.thomas-joncorpuz.com/blog/2014/11/30/custom-unity-2d-sprite-shader)
Shader "Custom/SpriteNormal" {Properties{[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}_NormalsTex ("Sprite Normals", 2D) = "bump" {}_Ramp ("Shading Ramp", 2D) = "white" {}_Color ("Tint", Color) = (1,1,1,1)[MaterialToggle] PixelSnap ("Pixel snap", Float) = 0_Cutoff ("Alpha Cutoff", Range (0,1)) = 0.5}SubShader{Tags{ "Queue"="Transparent" "IgnoreProjector"="False" "RenderType"="Transparent" "PreviewType"="Plane""CanUseSpriteAtlas"="True"}Cull OffLighting OnZWrite OffFog { Mode Off }Blend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma surface surf CustomLambert alpha vertex:vert addshadow alphatest:_Cutoff #pragma multi_compile DUMMY PIXELSNAP_ONsampler2D _MainTex;sampler2D _NormalsTex;sampler2D _Ramp;fixed4 _Color;struct Input{float2 uv_MainTex;fixed4 color;};half4 LightingCustomLambert (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten) {half NdotL = dot (s.Normal, lightDir);half4 c;c.rgb = (s.Albedo * _LightColor0.rgb * (tex2D (_Ramp, half2 (NdotL * 0.5 + 0.5, 0)))) * (atten * 2);c.a = s.Alpha;return c;}void vert (inout appdata_full v, out Input o){#if defined(PIXELSNAP_ON) && !defined(SHADER_API_FLASH)v.vertex = UnityPixelSnap (v.vertex);#endifv.normal = float3(0,0,-1);v.tangent = float4(-1, 0, 0, 1);UNITY_INITIALIZE_OUTPUT(Input, o);o.color = _Color * v.color;}void surf (Input IN, inout SurfaceOutput o){fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * IN.color;o.Albedo = c.rgb;o.Normal = UnpackNormal (tex2D (_NormalsTex, IN.uv_MainTex));o.Alpha = c.a;}ENDCG} FallBack "Diffuse"
}
Shader须要的法线贴图能够通过一个软件:PixPlant生成出来,仅仅需提供原素材图。这个软件就能生成一个法线贴图了。
此外还须要一张阴影梯度图:
Unity2D实现贴图凹凸感并接受实时光照效果相关推荐
- 用CSS实现图片的3D凹凸感(即:凸出镜框外或凹陷镜框里)
Ⅰ.问题描述: 使用css实现图片的3D凹凸感: Ⅱ实现过程如下: 1.展示结果为: A.正常的图片(图一.图二都正常): B.图一凸出镜框外,图二正常: 触发过程:将鼠标放在图一的红色边框内,就会显 ...
- html凹凸效果,用CSS实现图片的3D凹凸感(凸出镜框外或凹陷镜框里)
Ⅰ.问题描述: 使用css实现图片的3D凹凸感: Ⅱ实现过程如下: 1.展示结果为: A.正常的图片(图一.图二都正常): B.图一凸出镜框外,图二正常: 触发过程:将鼠标放在图一的红色边框内,就会显 ...
- Normal map (Bump mapping) 法线贴图(凹凸映射) Standard Shader系列10
Normal map (Bump mapping) 法线贴图(凹凸映射) 本文档主要是对Unity官方手册的个人理解与总结(其实以翻译记录为主:>) 仅作为个人学习使用,不得作为商业用途,欢迎转 ...
- UnityShader凹凸感
1._TexelSize:纹理以这个为后缀, 后2个则是像素的数量如256x128.那么后2个就是256和128.而前两个值为x = 1/256, y = 1 / 128 2.有限差分近似 image ...
- IntelliJ IDEA使用教程(动图详解):实时代码模板的使用
实时代码模板的使用 实时代码模板的介绍 上图 Gif 演示为最好的介绍 Live Templates. 实时代码模板需要字符串前缀,如 Gif 演示中,在输入 sys 后生成一段输出语句,其中 sys ...
- 经纬度画轨迹图_空气质量、实时路况、出租车轨迹,城市中海量数据如何高效管理?...
原创 JUST团队-何华均 JUST时空数据 一.问题背景 城市中超过80%的数据都与时空有关,如加油站点.出租车轨迹.交通路况等.这些数据多为半结构化和非结构化数据,并且需要管理的数据量巨大. 传统 ...
- arduino uno r3单片机封装图_Arduino提高篇22—实时时钟DS1302
关注.星标公众号,不错过精彩内容 编辑:Tony 来源:公众号TonyCode 很多电子爱好者都热衷制作电子时钟来练手,这些时钟会使用数码管.点阵屏.LCD液晶屏.OLED屏.TFT屏等显示模块,所使 ...
- Java乐图下载_Java平台乐图导航地图测评:实时跟踪是亮点
如何区分这是一款智能手机还是非智能机手机,长久以来这是一个没有结果的辩论话题,没有官方的区分条件,也没有任何可靠的判定依据,早期论坛里有种"民间"的判定方法,就是看这款手机是否能装 ...
- 贴图平移凹凸贴图偏移
1. 平移(UV坐标动画) UV 坐标动画或 UV 平移的含义是,水平 (U) 和/或垂直 (V) 移动纹理的 UV 坐标,以产生复杂动画的错觉. 在以下示例中,火焰纹理沿着 U(水平)方向平移, ...
最新文章
- “奔三”了,程序员,你该怎么选择未来的路?
- MySQL函数/数据库函数
- 7 款 Python 开源框架的优劣总结
- Python学习入门3:编程零基础应当如何开始学习Python?
- 拆解百度自动驾驶最新动作:Apollo企业版和Apollo 3.5里的生意经和新风向 | CES 2019...
- Spring的事务管理和数据库事务相关知识
- 【题解】ZJOI2017仙人掌
- CreateInstance 方法解析
- 消息称微软Windows暂停接受华为新订单;2019 Q1 亚太区公有云IaaS、PaaS服务收入排名现已揭晓……...
- 计算机好多个页面,哪些电脑分屏软件好用?好用电脑分屏软件推荐
- Power bi 3.10 折线和堆积柱形图
- 【python报错】Python词云库wordcloud不显示中文
- 三消游戏算法图文详解
- gdb reading symbols xxxx 段错误
- Golang编码规范
- 如果你打算看完Linux内核源码,可能穷尽一生都做不出一个系统
- CVE和NVD的关系
- java socket 打印机_socket.BeginReceive()使打印机无响应
- MobRecon: Mobile-Friendly Hand Mesh Reconstruction from Monocular Image阅读笔记
- Ajax入门(附学习案例)
热门文章
- 0x80070659系统策略禁止这个安装 vc_不安装DNS解析服务器下安装Vcenter6.7
- linux安装python_VTK:华为笔记本电脑+深度deepin-linux+python下安装和入门
- 服务器所有文件,检索服务器端文件夹中的所有文件
- edittext无法获取焦点_小黑鞋强势回归,用帅气拉回时尚焦点
- 编程迷宫_少儿创意编程(特23)scratch之迷宫模式探索(上)
- php jsonp 设置,php 输出 jsonp
- 提取过程_大米多肽提取过程中如何应用膜分离技术呢?
- 中国高校计算机考研:计算机数据结构核心考点解析
- 5G时代谁的天下???
- 401 Unauthorized