Shader "05_Rim"{Properties{// 常用五种类型_MainTex("MainTex",2D) = "White"{}_MainColor("Main Color",Color) = (1,1,1,1)_Emiss("Emiss",Float) = 1.0_RimPower("RimPower",Float) = 1.0[Enum(UnityEngine.Rendering.CullMode)]_CullMode("CullMode",Float)=2}SubShader{Tags{"Queue"="Transparent"}// 预先写深度 不写入颜色Pass{Cull OffZWrite OnColorMask 0CGPROGRAMfloat _Color;#pragma vertex vert#pragma fragment fragfloat4 vert(float4 vertexPos:POSITION):SV_POSITION{return UnityObjectToClipPos(vertexPos);}fixed4 frag(void):Color{return _Color;}ENDCG}Pass{ZWrite Off//Blend SrcAlpha OneMinusSrcAlphaBlend SrcAlpha One // 更柔和Cull [_CullMode]CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex :POSITION;float2 uv:TEXCOORD0;//TEXCOORD0 第一套UV float3 normal:NORMAL;};struct v2f{float4 pos: SV_POSITION;float2 uv:TEXCOORD0;float3 normal_world:TEXCOORD1;float3 view_world:TEXCOORD2;};sampler2D _MainTex;float4 _MainTex_ST;float4 _MainColor;float _Emiss;float _RimPower;v2f vert(appdata v){v2f o;//第三种写法 模型空间转齐次裁剪空间o.pos = UnityObjectToClipPos(v.vertex);o.normal_world = normalize(UnityObjectToWorldNormal(v.normal));//这里很多人喜欢用矩阵去转 我还是比较喜欢调用函数 获取视野方向// 获取世界顶点坐标float4 pos_world = mul(unity_ObjectToWorld,v.vertex);// 获取世界空间视野方向o.view_world = normalize(UnityWorldSpaceViewDir(pos_world));o.uv = v.uv*_MainTex_ST.xy + _MainTex_ST.zw;return o;}fixed4 frag(v2f i):SV_TARGET{float3 normal_world = normalize(i.normal_world);float3 view_world = normalize(i.view_world);float NDotV =saturate(dot(normal_world,view_world));float3 col = _MainColor.xyz* _Emiss;float fresnel = pow((1- NDotV),_RimPower);float alpha = saturate(fresnel * _Emiss);return float4(col,alpha);}ENDCG}}
}

第一章 05 Rim 边缘光相关推荐

  1. 变身后是一只火鸟的机器人_中生代机器人 第一章 丛林求生历险记 05 (05)一-望书阁...

    望书阁 -> 玄幻魔法 -> 中生代机器人-> 第一章 丛林求生历险记 05 (05)一第一章 丛林求生历险记 05 (05)一 (05)一刻都不想! 叶天悟想得到一个新的身体变回来 ...

  2. 第一章图像处理基础概念(人眼和光)

    系列文章目录 第一章 图像处理基础概念 第二章 常见算法处理 第三章 灰度变化 第四章 空间滤波 第五章 频域滤波 第六章 色彩基础 第七章 小波和多分辨率 第八章 图像表示和描述 第九章 形态学图像 ...

  3. Unity Shader 表面着色器边缘光(Rim Lighting)二

    这一节我们要实现下面的效果 (图一) (图二) 首先针对图一我们创建一个材质,并把颜色改成红色的,然后我们就得到了一个很普通的红色小球. 我们只需要在鼠标进入的时候把材质的Shader换成带边缘光的S ...

  4. Unity Shader Graph 制作Rim Light边缘光效果

    效果图: 模型为Asset Store资源商店中免费资源Robot Kyle机器人 实现原理: 通过法线方向和视线方向的夹角来判断点是否处于边缘,从而给其增加边缘光,视线方向和法线方向垂直时,则该点在 ...

  5. 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.2. Torvalds的Linux发展)

    第一章.Linux是什么 最近更新日期:2009/08/05 2. Torvalds的Linux发展 2.1 与Minix之间 2.2 对386硬件的多任务测试 2.3 初次释出Linux 0.02 ...

  6. itpt_TCPL 第一章:C简要教程

    2016.06.19 – 07.05 个人英文阅读练习笔记(极低水准). 06.19 第一章:C语言的一个简单教程 让我们以对C语言的一个快速介绍开始.我们的目标是展示语言在真实程序中所需元素,但并不 ...

  7. Day1ps设计基础作业第一章第二章

    Day1 ps设计基础作业第一章第二章 1.1工作区和工作流程 3种调整人像照片亮度的方式:1图像-调整-亮度/对比度,2图像-调整-色阶,3获取图像亮度+混合模式,通道(右下)按ctrl RGB的缩 ...

  8. 计算机网络第一章(概述)

    第一章 概述 1.1因特网概述 1.1.1网络.互联网和因特网 网络(Network),由若干结点(Node) 和连接这些结点的 链路(Link) 组成. 多个网络还可以通过路由器互联起来,这样就构成 ...

  9. 【Unity云消散】理论基础:实现边缘光

    写在前面 既然想要实现云的消散效果,那么边缘光如何计算也是一个重点. 在Unity Shader入门精要的14章,介绍轮廓线渲染就介绍了--轮廓边检测,而边缘光也是需要先检测出轮廓边再进行的. Uni ...

最新文章

  1. php前面有人排队,PHP实现打印类(实现队列排队打印)
  2. Layer 2 Tunneling Protocol
  3. Selenium3自动化测试——17.控制滑动解锁
  4. 自动化测试8大元素定位之xpath语法
  5. java文件拷贝时 buff给多大合适_Java复制文件
  6. 如何获取字符串中某个具体的数值--通过json.load转化成字典形式获取
  7. 关于恐怖小说“分级”及其他:答《北京娱乐信报》记者张守刚问
  8. WPF效果(GIS三维续篇)
  9. 3.1_ 1_ 内存的基础知识
  10. android开源tabview,TabBarView
  11. 接口测试文件上传(python+requests)
  12. LeetCode刷题(35)--Permutation Sequence
  13. Mac下搭建react及bable
  14. 在FFMPEG中使用libRTMP的经验
  15. windows 安装python2.7
  16. 使用jquery为table动态添加行的实现代码
  17. CSDN认证博客专家申请通过,感动,欣慰,分享一下我的经验!
  18. stvd c语言编译器,STM8--STVD编译工具安装与程序下载
  19. C语言:逆转线性链表
  20. 会员积分系统设计 1 内容说明

热门文章

  1. 团队协作三、OnlyOffice 实现文件在线预览和编辑
  2. 怎么把word转换成excel表格的格式
  3. 为什么一群人之中,蚊子就“盯”着你?为你揭秘“蚊子”的真相!
  4. 上海浦东新区计算机学校排名2015,最新2015浦东新区初中排名 分为四个档次
  5. swift版QQ音乐播放器(一)
  6. DSGN: Deep Stereo Geometry Network for 3D Object Detection---基于双目视觉的3D目标检测(1)
  7. 电力系统分析(Matlab代码实现)
  8. three.js之高级几何体-使用二元操作组合网格(vue中使用three.js38)
  9. 【CISSP备考笔记】第1章:安全与风险管理
  10. WEB项目系统添加redis缓存逻辑和功能