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效果分析相关推荐

  1. 自定义动画 animate || 案例:王者荣耀手风琴效果分析

    自定义动画 animate <!DOCTYPE html> <html lang="en"><head><meta charset=&qu ...

  2. 游戏数据运营--2.新版本效果分析案例

    文本内容如下: <游戏B>:新版本效果分析 <游戏B>2017年1月1日4.0版本效果数据如下: (1)新用户登录的激活转化率相比3.9版本提高10%,目前为27%: (2)4 ...

  3. 【机器学习】线性回归实战案例一:多元素情况下广告投放效果分析步骤详解

    线性回归实战案例一:多元素情况下广告投放效果分析步骤详解 2 线性回归 2.1 案例一:多元素情况下广告投放效果分析 2.1.1 模块加载与绘图布局样式设置 2.1.2 加载数据和数据筛选 2.1.3 ...

  4. 微博营销—新浪微博粉丝头条效果分析

    2015年3月26日 BY 蓝鲸 10 COMMENTS 粉丝头条是新浪微博的一个推广功能,使用粉丝头条的24小时内,你发布的信息将出现在所有粉丝信息流的第一位.这个功能无论是从形式还是价格来说都是屌 ...

  5. 医院网络广告的投放渠道及效果分析-站外合作篇

    今天为大家分享的是医院网络营销站外合作篇的第三篇,前面两篇介绍的了<医院网络广告展现形式><医院网络广告的结算形式>,跟大家交流了一下民营医疗网络营销中的投放网络广告的一些基本 ...

  6. 计算双目视差的方法汇总及效果分析

    计算双目视差的方法汇总及效果分析 这是我在计算双目视差的过程中进行过尝试,想要记录下来.若是对大家有帮助就更好啦!如有错误或还可改进之处,欢迎指正!! matlab自带的disparity函数(BM方 ...

  7. 分群思维(四)基于KMeans聚类的广告效果分析

    分群思维(四)基于KMeans聚类的广告效果分析 小P:小H,我手上有各个产品的多维数据,像uv啊.注册率啊等等,这么多数据方便分类吗 小H:方便啊,做个聚类就好了 小P:那可以分成多少类啊,我也不确 ...

  8. 【论文学习】RepVGG: Making VGG-style ConvNets Great Again及网络重参数化的用途及效果分析

      本文学习了RepVGG以及同作者在网络重参数化领域的几篇文章,总结其主要原理,试验重参数化方法的效果并分析其价值意义.   RepVGG是CVPR2021收录的一篇论文,作者是清华大学的丁霄汉博士 ...

  9. 技术分享 |《原神》部分渲染效果分析

    一.光与影 游戏中的影子大致可以区分为以下几类: 1.场景的静态烘焙阴影 游戏中的场景应该主要还是基于lightmap实现的静态阴影.对于植被并没有计算lightmap,其实我感觉可以在草等植被的下方 ...

  10. 手机模拟位置实现精准位置营销效果分析

    对微商来说,实现位置精准营销实在太重要的一个推广方法了,位置精准营销能让你的产品展示到全世界的人身边,大大增加产品的曝光度,同时也能打造好友数量,做圈内营销,这里分享一种我们经常在用的位置精准营销方法 ...

最新文章

  1. 2021-2027年中国智能门禁系统市场研究及前瞻分析报告
  2. c语言ascw,Asc/AscB/AscW和Chr/ChrB/ChrW函数之间的区别
  3. Autoencoder 详解
  4. xib 设置阴影_使用“IBInspectable”XIB设置圆角、边框、阴影
  5. 这个火热的社区都升级到2.0了,你还不知道它?
  6. UVa 10394-Twin Primes
  7. IT民工系列——通用7130芯片视频采集卡 SDK 兼容任意天敏 宏视 等板卡
  8. 模拟iic和硬件iic区别_技术货:IIC总线的FPGA实现
  9. BoxBlur(方框模糊)
  10. Python实现信号滤波(基于scipy)
  11. wpf treeview 绑定不同的对象
  12. kafka权威指南-笔记
  13. 文档型数据库MongoDB使用教程
  14. Ubuntu 16.04 创建无线热点
  15. 单片机基础-第一个单片机系统
  16. ruoyi(若依)框架学习
  17. 学生可以租的便宜云GPU-滴滴云
  18. Java零基础学习Java编程语言基础知…
  19. Oracle安装 - Win7
  20. 蚂蚁金服开放平台-支付宝新版接口的参数设置

热门文章

  1. pygame实现王思聪吃热狗小游戏(双人版)
  2. SVG 与 Canvas:如何选择
  3. webstorm 波浪线_WebStorm 使用
  4. 海康威视网络摄像机连接、使用方法
  5. 基础Astar算法及节点优化python代码实现
  6. Realtek:电脑更新后,在主机前面板插上耳机没有声音,怎么解决?
  7. java与工业控制_JAVA工业控制系统方案
  8. electron打包失败在下载nsis的地方
  9. MapGIS干货|数据投影生成地质图的8个视频教程
  10. linux w3m命令