Unity3D学习笔记(三十七):顶点偏移和溶解
沿法线方向偏移,球体放大,立方体拆分
Shader "Lesson/VFVertOffsetVertex" {Properties {_Offset ("偏移量", float) = 1}SubShader {Pass{CGPROGRAM#pragma vertex vert#pragma fragment fragfloat _Offset;struct m2v{float4 vex : POSITION;float3 normal : NORMAL;};struct v2f{float4 position : SV_POSITION;};v2f vert(m2v v){v2f f;//v.vex.xyz += float3(1, 0, 0);//沿向量偏移v.vex.xyz += v.normal * _Offset;//沿法线偏移f.position = UnityObjectToClipPos(v.vex);return f;}fixed4 frag(v2f f) : SV_Target{return fixed4(1,0,0,1);}ENDCG}}FallBack "Diffuse" }
溶解效果
Shader "Lesson/VFVertOffsetVertex" {Properties {_MainTex("纹理", 2D) = ""{}_DissTex("噪声图", 2D) = ""{}_MarginColor("边缘的颜色", Color) = (1,1,1,1)_DissValue("阈值", Range(0, 1)) = 0_MarginValue("边缘的宽度", Range(0, 1)) = 0.1}SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment fragsampler2D _MainTex;sampler2D _DissTex;float _DissValue;float _MarginValue;fixed4 _MarginColor;struct m2v{float4 vex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float4 position : SV_POSITION;float2 uv : TEXCOORD0;};v2f vert(m2v v){v2f f;f.position = UnityObjectToClipPos(v.vex);f.uv = v.uv;return f;}fixed4 frag(v2f f) : SV_Target{fixed4 texColor = tex2D(_MainTex, f.uv);fixed4 dissColor = tex2D(_DissTex, f.uv);//通过UV获取噪声图上的颜色if (dissColor.r < _DissValue)//借助噪声图的颜色的一个通道去做判断 {discard;//裁剪掉小于阈值的部分 }float lerpValue = _DissValue / dissColor.r;//边缘过渡if (lerpValue < 1 && lerpValue > (1 - _MarginValue)){return _MarginColor;} return texColor;}ENDCG}}FallBack "Diffuse" }
转载于:https://www.cnblogs.com/cnwuchao/p/10363728.html
Unity3D学习笔记(三十七):顶点偏移和溶解相关推荐
- openGL学习笔记三十七:绘制简单地图
地形本质上由一个个顶点(x,y,z)组成多个三角面连接而成. 地形有两种来源: 1.美术使用3dmax.maya.bleader工具,画点.线.面,导出三维模型,然后在游戏中加载进来,进行绘制 ...
- Unity3D学习笔记(十七):IK动画、粒子系统和塔防
新动画系统: 反向动力学动画(IK功能): 魔兽世界(头部动画),神秘海域(手部动画),人类一败涂地(手部动画) 如何启用(调整) 1.必须是新动画系统Animator 设置头.手.肘的目标点 2.动 ...
- brisk matlab,opencv学习笔记三十七:BRISK特征点检测与匹配
简介 BRISK算法是2011年ICCV上<BRISK:Binary Robust Invariant Scalable Keypoints>文章中,提出来的一种特征提取算法,也是一种二进 ...
- Unity3D学习笔记3——Unity Shader的初步使用
文章目录 1. 概述 2. 详论 2.1. 创建材质 2.2. 着色器 2.2.1. 名称 2.2.2. 属性 2.2.3. SubShader 2.2.3.1. 标签(Tags) 2.2.3.2. ...
- OpenCV学习笔记(十七):图像修补:inpaint()
OpenCV学习笔记(十七):图像修补:inpaint() inpaint()函数 使用区域邻域在图像中还原选定区域. void inpaint( InputArray src, // 表示要修复的图 ...
- OpenCV学习笔记(十七):查找并绘制轮廓:findContours(),drawContours(),approxPolyDP()
OpenCV学习笔记(十七):查找并绘制轮廓:findContours() 1.findContours() 函数 该函数使用Suzuki85算法从二值图像中检索轮廓.轮廓线是一种用于形状分析.目标检 ...
- Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装
扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...
- MATLAB学习笔记(十七)
MATLAB学习笔记(十七) 一.符号对象 1.1 符号对象的建立 1.2 符号对象的运算 1.3 符号矩阵 二.符号微积分 2.1 符号函数的极限 2.2 符号函数的导数 2.3 符号函数的积分 三 ...
- Unity3D 学习笔记3——了解U3D引擎的操作面板和各种工具
Unity3D 学习笔记3--了解U3D引擎的操作面板和各种工具 在完成了Unity的安装破解之后,我们接下来要做的当前是启动这个引擎,然后学会如何去使用它为我们提供的各种工具,这也是上手任何一个软件 ...
- Unity3D 学习笔记4 —— UGUI+uLua游戏框架
Unity3D 学习笔记4 -- UGUI+uLua游戏框架 使用到的资料下载地址以及基础知识 框架讲解 拓展热更过程 在这里我们使用的是uLua/cstolua技术空间所以提供的UGUI+uLua的 ...
最新文章
- 自动驾驶开发云平台业务分析
- 浅入 spring ioc 单例容器
- WWDC 2018:iOS 12 通知的新特性
- Java手写Hashmap(HashMap的基本用法)
- javafx 自定义控件_JavaFX自定义控件– Nest Thermostat第3部分
- C语言中的转义字符【转ce123的技术博客】
- 初创公司5大Java服务困局,阿里工程师如何打破?
- android6.0 goldfish内核,ubuntu16.04下编译android-goldfish-3.4内核源码(android6.0.1系统源代码)...
- 显示器+测试软件,MonitorTest(显示器性能测试软件
- 实朴检测深交所上市:市值44亿 应收账款逾期6587万
- c中宏定义的特殊符号
- java日志系统介绍
- CoaoaChina开发者小测验常识题
- 机翻《C-CAM: Causal CAM for Weakly Supervised Semantic Segmentation onMedical Image 》
- JAVA面试潜规则大公开,能帮你多拿5k薪资!
- umi_tools使用
- AD GND铺铜与GND线没有连接上
- Python脚本解析BitTorrent种子文件内容
- 数字多道幅度分析器/APG7300
- webview Dialog在onPageFinished()中无法dismiss
热门文章
- 看到前一篇文章的感慨
- 程序关闭是总是出异常解决方法
- SVN—怎么删除 SVN 上已有的URl
- Windows中使用http-server搭建一个本地服务
- Alpha、Beta、RC、GA、RTM、OEM等版本的解释
- Asp.Net(C#.VB)Array、ArrayList和List的区别
- java基础 小知识点
- C语言scanf中%%,C语言scanf()和gets()及printf()和puts()的区别
- 计算机管理创建超级用户,win10家庭版怎么开启Administrator超级管理员帐户
- logrotate测试_日志管理工具logrotate