UnityShader 简单护盾效果
Shader "Unlit/Shield"
{Properties{_Color("Color", Color) = (1,1,1,1)//圈内的颜色_RimColor("Rim Color", Color) = (1,1,1,1)//边缘颜色_RimScale("Rim Scale", Float) = 1//边缘大小_Transparent("Transparent", Range(0, 1)) = 0//控制透明度}SubShader{Tags { "RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True" "ForceNoShadowCasting" = "True" }LOD 300//Unity会把 CGINCLUDE 和 ENDCG 之间的代码插入到每一个pass中,已达到声明一遍,多次使用的目的。CGINCLUDE#include "UnityCG.cginc"fixed4 _Color;fixed4 _RimColor;float _RimScale;fixed _Transparent;struct a2v{float4 vertex : POSITION;float3 normal : NORMAL;};struct v2f{float4 pos : SV_POSITION;float3 worldNormal : TEXCOORD1;float3 worldViewDir : TEXCOORD2;};v2f vert(a2v v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.worldNormal = UnityObjectToWorldNormal(v.normal);o.worldViewDir = UnityWorldSpaceViewDir(v.vertex);return o;}fixed4 frag(v2f i) : SV_TARGET{fixed3 worldNormal = normalize(i.worldNormal);fixed3 worldViewDir = normalize(i.worldViewDir);// 计算法线和视线的点积结果,越靠近边缘,值越趋近于1fixed rim = 1 - abs(dot(worldNormal, worldViewDir));fixed4 finalColor = fixed4(lerp(_Color.rgb, _RimColor.rgb, rim* _RimScale), max(rim* _RimScale, _Transparent));return finalColor;}ENDCGPass {Cull OffZWrite OffBlend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma vertex vert#pragma fragment fragENDCG}}
}
可以自己更改护盾的颜色,用到了检测边缘的知识而已,挺简单的东西。
Unity会把 CGINCLUDE 和 ENDCG 之间的代码插入到每一个pass中,已达到声明一遍,多次使用的目的。
UnityShader 简单护盾效果相关推荐
- Unity Shader 之 简单 护盾Shield 效果的实现
Unity Shader 之 简单 护盾Shield 效果的实现 目录 Unity Shader 之 简单 护盾Shield 效果的实现 一.简单介绍 二.实现原理
- 简单力场护盾效果ASE实现笔记
提要:基于Emission,使用多个模块分别实现细分效果并最终组装成完整护盾效果:使用Rigidbody进行碰撞检测,通过脚本将位置传进Shader,播放由参数控制的冲击效果. https://vdn ...
- 带顶点动画的护盾效果——UnityShader学习笔记
文章目录 自言自语 一.效果 二.C# 三.Shader 总结 自言自语 最近又是很久没有更新笔记了.原因有二. 一.最近一直再啃一个看起来酷炫的护盾效果 啃了好久啊.直至效果满意 也理解了. 这个是 ...
- java喷泉编码_好程序员Java教程分享使用JS实现简单喷泉效果
原标题:好程序员Java教程分享使用JS实现简单喷泉效果 好程序员Java教程分享使用JS实现简单喷泉效果,最近,在教学生使用JS的基本操作,为了练习JS的基本作用,特地写了一个喷泉效果,代码如下: ...
- java喷泉编码_Java干货分享使用JS实现简单喷泉效果
Java干货分享使用JS实现简单喷泉效果,最近,在教学生使用JS的基本操作,为了练习JS的基本作用,特地写了一个喷泉效果,代码如下: 页面代码: body{ margin: 0px; } Partic ...
- android app启动图片 加动画效果,Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案...
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案 大家在设计APP的末期,都会想给APP搞一些"花里胡哨"的特效来提高APP的B格.博主表示亲测有效 ...
- php弹幕,PHP直播源码,实现简单弹幕效果
PHP 直播源码实现简单弹幕效果的相关代码 html> 大作业_弹幕 * { padding: 0; margin: 0; } body { font-family: 'Segoe UI', T ...
- js html css淘宝足迹日历效果,JavaScript实现简单日历效果
本文实例为大家分享了JavaScript实现简单日历效果的具体代码,供大家参考,具体内容如下 实现效果: 根据所选择的年月,列出当月对应是周几,效果图如下: 实现思路: 1.使用select标签保存年 ...
- Android直播app源代码超简单气泡效果
Android直播app源代码超简单气泡效果实现的相关代码 1.1 定义气泡 气泡效果我们关心的属性并不多,主要有这几种:半径.坐标.上升速度.水平平移速度.由于我们只在 View 内部使用,因此直接 ...
最新文章
- Android - 广播机制和Service
- Web网站架构演变—高并发、大数据
- Openlayers中设置定时绘制和清理直线图层
- 数据结构与算法(C++)– 二叉查找树(Binary Search Tree )
- Jenkins X:基于Kubernetes的CI/CD平台
- Java Web学习总结(3)Servlet(二)
- SAP UI5 jQuery.sap.includeStyleSheet
- 如何使用async和await这对组合设计统一的取Access Token的函数
- Java面试那些事--可能会问的那些问题(中高级篇)
- 仅需10道题轻松掌握Python字符串方法 | Python技能树征题
- 苹果手机开不了机怎么办
- 工作中有可能用到的运维小知识《现查现用》
- 宝宝为什么不吃奶粉,奶爸必读文章
- ipad协议最新版本
- 为什么你建出的模型不好看?
- C语言:如何判断回文数
- oracle中求下月同日,以月计算的期限,自本月某日至下月同日为一个月。
- c语言程序设计教程 ppt,本科C语言程序设计教程教学资料包.zip-第9章.ppt
- FBI和DHS在响应网络攻击时的分歧分析
- 16进制转带符号的10进制,16进制转负数10进制