第一章 05 Rim 边缘光
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 边缘光相关推荐
- 变身后是一只火鸟的机器人_中生代机器人 第一章 丛林求生历险记 05 (05)一-望书阁...
望书阁 -> 玄幻魔法 -> 中生代机器人-> 第一章 丛林求生历险记 05 (05)一第一章 丛林求生历险记 05 (05)一 (05)一刻都不想! 叶天悟想得到一个新的身体变回来 ...
- 第一章图像处理基础概念(人眼和光)
系列文章目录 第一章 图像处理基础概念 第二章 常见算法处理 第三章 灰度变化 第四章 空间滤波 第五章 频域滤波 第六章 色彩基础 第七章 小波和多分辨率 第八章 图像表示和描述 第九章 形态学图像 ...
- Unity Shader 表面着色器边缘光(Rim Lighting)二
这一节我们要实现下面的效果 (图一) (图二) 首先针对图一我们创建一个材质,并把颜色改成红色的,然后我们就得到了一个很普通的红色小球. 我们只需要在鼠标进入的时候把材质的Shader换成带边缘光的S ...
- Unity Shader Graph 制作Rim Light边缘光效果
效果图: 模型为Asset Store资源商店中免费资源Robot Kyle机器人 实现原理: 通过法线方向和视线方向的夹角来判断点是否处于边缘,从而给其增加边缘光,视线方向和法线方向垂直时,则该点在 ...
- 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.2. Torvalds的Linux发展)
第一章.Linux是什么 最近更新日期:2009/08/05 2. Torvalds的Linux发展 2.1 与Minix之间 2.2 对386硬件的多任务测试 2.3 初次释出Linux 0.02 ...
- itpt_TCPL 第一章:C简要教程
2016.06.19 – 07.05 个人英文阅读练习笔记(极低水准). 06.19 第一章:C语言的一个简单教程 让我们以对C语言的一个快速介绍开始.我们的目标是展示语言在真实程序中所需元素,但并不 ...
- Day1ps设计基础作业第一章第二章
Day1 ps设计基础作业第一章第二章 1.1工作区和工作流程 3种调整人像照片亮度的方式:1图像-调整-亮度/对比度,2图像-调整-色阶,3获取图像亮度+混合模式,通道(右下)按ctrl RGB的缩 ...
- 计算机网络第一章(概述)
第一章 概述 1.1因特网概述 1.1.1网络.互联网和因特网 网络(Network),由若干结点(Node) 和连接这些结点的 链路(Link) 组成. 多个网络还可以通过路由器互联起来,这样就构成 ...
- 【Unity云消散】理论基础:实现边缘光
写在前面 既然想要实现云的消散效果,那么边缘光如何计算也是一个重点. 在Unity Shader入门精要的14章,介绍轮廓线渲染就介绍了--轮廓边检测,而边缘光也是需要先检测出轮廓边再进行的. Uni ...
最新文章
- php前面有人排队,PHP实现打印类(实现队列排队打印)
- Layer 2 Tunneling Protocol
- Selenium3自动化测试——17.控制滑动解锁
- 自动化测试8大元素定位之xpath语法
- java文件拷贝时 buff给多大合适_Java复制文件
- 如何获取字符串中某个具体的数值--通过json.load转化成字典形式获取
- 关于恐怖小说“分级”及其他:答《北京娱乐信报》记者张守刚问
- WPF效果(GIS三维续篇)
- 3.1_ 1_ 内存的基础知识
- android开源tabview,TabBarView
- 接口测试文件上传(python+requests)
- LeetCode刷题(35)--Permutation Sequence
- Mac下搭建react及bable
- 在FFMPEG中使用libRTMP的经验
- windows 安装python2.7
- 使用jquery为table动态添加行的实现代码
- CSDN认证博客专家申请通过,感动,欣慰,分享一下我的经验!
- stvd c语言编译器,STM8--STVD编译工具安装与程序下载
- C语言:逆转线性链表
- 会员积分系统设计 1 内容说明
热门文章
- 团队协作三、OnlyOffice 实现文件在线预览和编辑
- 怎么把word转换成excel表格的格式
- 为什么一群人之中,蚊子就“盯”着你?为你揭秘“蚊子”的真相!
- 上海浦东新区计算机学校排名2015,最新2015浦东新区初中排名 分为四个档次
- swift版QQ音乐播放器(一)
- DSGN: Deep Stereo Geometry Network for 3D Object Detection---基于双目视觉的3D目标检测(1)
- 电力系统分析(Matlab代码实现)
- three.js之高级几何体-使用二元操作组合网格(vue中使用three.js38)
- 【CISSP备考笔记】第1章:安全与风险管理
- WEB项目系统添加redis缓存逻辑和功能