unity3d Crease效果分析
unity3d的Crease描边效果非常不错,所以分析了一下这个效果。
用到3个shader:
ConvertDepth //渲染depthmap
CreaseApply //描边
SeparableBlur//模糊
这个效果的重点是 1.怎么查找边缘 2.怎么模糊边缘
unity3d的方法是:
采用2张depthmap,一张清晰,一张模糊,模糊的depthmap上可以看到边缘都模糊了,两种图做差,就知道边缘在哪里了。
看代码:return color * (1.0-abs(hrDepth.a-lrDepth.a)*intensity);
假如abs(hrDepth.a-lrDepth.a)即深度差越大,值越大,不是边缘的部分模糊之后值是不会有变化的,原理很简单。而且模糊之后这个差也能有渐变的效果,所以最后的描边可以比较虚幻。但是消耗是很大的,会增加drawcall,overdraw比较高,模糊的shader用到了很多次的图片采样,而且是在frag shader里面采样的,手机上的显卡填充率本来就不高,根本就用不了。
下面是深度渲染的shader:
Shader "Hidden/ConvertDepth" {Properties {_MainTex ("Base (RGB)", 2D) = "" {}}CGINCLUDE#include "UnityCG.cginc"struct v2f {float4 pos : POSITION;float2 uv : TEXCOORD0;};sampler2D _MainTex;sampler2D _CameraDepthTexture;v2f vert( appdata_img v ) {v2f o;o.pos = mul(UNITY_MATRIX_MVP, v.vertex);o.uv = v.texcoord.xy;return o;}half4 frag(v2f i) : COLOR {float d = UNITY_SAMPLE_DEPTH( tex2D(_CameraDepthTexture, i.uv.xy) );d = Linear01Depth(d);if(d>0.99999)return half4(1,1,1,1);elsereturn half4(d,d,d,1);//灰度显示的深度图//return EncodeFloatRGBA(d); }ENDCGSubshader {Pass {ZTest Always Cull Off ZWrite OffFog { Mode off } CGPROGRAM#pragma fragmentoption ARB_precision_hint_fastest#pragma vertex vert#pragma fragment fragENDCG}}Fallback off
}
其中的EncodeFloatRGBA函数是为了能够更精确的存储深度值,具体算法如下:
// Encoding/decoding [0..1) floats into 8 bit/channel RGBA. Note that 1.0 will not be encoded properly.
inline float4 EncodeFloatRGBA( float v )
{float4 kEncodeMul = float4(1.0, 255.0, 65025.0, 160581375.0);float kEncodeBit = 1.0/255.0;float4 enc = kEncodeMul * v;enc = frac (enc);enc -= enc.yzww * kEncodeBit;return enc;
}
inline float DecodeFloatRGBA( float4 enc )
{float4 kDecodeDot = float4(1.0, 1/255.0, 1/65025.0, 1/160581375.0);return dot( enc, kDecodeDot );
}
unity3d Crease效果分析相关推荐
- 自定义动画 animate || 案例:王者荣耀手风琴效果分析
自定义动画 animate <!DOCTYPE html> <html lang="en"><head><meta charset=&qu ...
- 游戏数据运营--2.新版本效果分析案例
文本内容如下: <游戏B>:新版本效果分析 <游戏B>2017年1月1日4.0版本效果数据如下: (1)新用户登录的激活转化率相比3.9版本提高10%,目前为27%: (2)4 ...
- 【机器学习】线性回归实战案例一:多元素情况下广告投放效果分析步骤详解
线性回归实战案例一:多元素情况下广告投放效果分析步骤详解 2 线性回归 2.1 案例一:多元素情况下广告投放效果分析 2.1.1 模块加载与绘图布局样式设置 2.1.2 加载数据和数据筛选 2.1.3 ...
- 微博营销—新浪微博粉丝头条效果分析
2015年3月26日 BY 蓝鲸 10 COMMENTS 粉丝头条是新浪微博的一个推广功能,使用粉丝头条的24小时内,你发布的信息将出现在所有粉丝信息流的第一位.这个功能无论是从形式还是价格来说都是屌 ...
- 医院网络广告的投放渠道及效果分析-站外合作篇
今天为大家分享的是医院网络营销站外合作篇的第三篇,前面两篇介绍的了<医院网络广告展现形式><医院网络广告的结算形式>,跟大家交流了一下民营医疗网络营销中的投放网络广告的一些基本 ...
- 计算双目视差的方法汇总及效果分析
计算双目视差的方法汇总及效果分析 这是我在计算双目视差的过程中进行过尝试,想要记录下来.若是对大家有帮助就更好啦!如有错误或还可改进之处,欢迎指正!! matlab自带的disparity函数(BM方 ...
- 分群思维(四)基于KMeans聚类的广告效果分析
分群思维(四)基于KMeans聚类的广告效果分析 小P:小H,我手上有各个产品的多维数据,像uv啊.注册率啊等等,这么多数据方便分类吗 小H:方便啊,做个聚类就好了 小P:那可以分成多少类啊,我也不确 ...
- 【论文学习】RepVGG: Making VGG-style ConvNets Great Again及网络重参数化的用途及效果分析
本文学习了RepVGG以及同作者在网络重参数化领域的几篇文章,总结其主要原理,试验重参数化方法的效果并分析其价值意义. RepVGG是CVPR2021收录的一篇论文,作者是清华大学的丁霄汉博士 ...
- 技术分享 |《原神》部分渲染效果分析
一.光与影 游戏中的影子大致可以区分为以下几类: 1.场景的静态烘焙阴影 游戏中的场景应该主要还是基于lightmap实现的静态阴影.对于植被并没有计算lightmap,其实我感觉可以在草等植被的下方 ...
- 手机模拟位置实现精准位置营销效果分析
对微商来说,实现位置精准营销实在太重要的一个推广方法了,位置精准营销能让你的产品展示到全世界的人身边,大大增加产品的曝光度,同时也能打造好友数量,做圈内营销,这里分享一种我们经常在用的位置精准营销方法 ...
最新文章
- 2021-2027年中国智能门禁系统市场研究及前瞻分析报告
- c语言ascw,Asc/AscB/AscW和Chr/ChrB/ChrW函数之间的区别
- Autoencoder 详解
- xib 设置阴影_使用“IBInspectable”XIB设置圆角、边框、阴影
- 这个火热的社区都升级到2.0了,你还不知道它?
- UVa 10394-Twin Primes
- IT民工系列——通用7130芯片视频采集卡 SDK 兼容任意天敏 宏视 等板卡
- 模拟iic和硬件iic区别_技术货:IIC总线的FPGA实现
- BoxBlur(方框模糊)
- Python实现信号滤波(基于scipy)
- wpf treeview 绑定不同的对象
- kafka权威指南-笔记
- 文档型数据库MongoDB使用教程
- Ubuntu 16.04 创建无线热点
- 单片机基础-第一个单片机系统
- ruoyi(若依)框架学习
- 学生可以租的便宜云GPU-滴滴云
- Java零基础学习Java编程语言基础知…
- Oracle安装 - Win7
- 蚂蚁金服开放平台-支付宝新版接口的参数设置