element3ds.com
原创TA-Shader [Unity] Unity屏幕空间描边SSO
发布于
2020-1-4
20110
1
原创TA/Shader
Shader信息: 节点shader文件
Shader类型: 后处理 
工程信息: 插件包形式 
使用的版本管线: -

您需要 登录 才可以下载或查看,没有账号?注册

x
价格:50 元素币 百度网盘 收益:650元素币 销量:13
尊敬的游客 ,本内容需要支付后可见.
您可以[充值][发帖] [悬赏] [任务]来赚取积分。
提醒使用【余额支付】需要: ¥5 余额

用Unity2018.1.1f制作的屏幕空间描边shader及其调用代码。
屏幕空间描边其实还是一个非常简单的技术。
但是我在初学的时候没有找到比较完整的教程以及实现代码。
虽然商店里面其实已经有非常多的功能强大的屏幕空间描边了。但是有些时候我们就只想很方便的轻量的实现一下描边这个小功能,或者是直接了当的了解一下他的原理。
到发帖的今天,我也没能很容易的搜索到屏幕空间描边的代码。所以我就把我写的这个传上来了。

诚然,这套脚本的优化的工作还是有很多的。比如批次问题,模糊问题等等。但是就小项目来说已经不影响使用了。萌新们自己了解过后再改改即可。

简介:
Shader

我使用了四个通道分别来完成着色,边缘扩充,模糊,合并。
image.png
1、着色就是输出了一个单色
2、边缘扩充原本是用的sobel算子做边缘描边,后来想想疯了,直接外拓即可。
3、模糊是为了使得边缘更柔和,测试了几次,均值模糊效果也还不错。

C#
image.png
具体实现只实现了基本的添加和移除需要描边的对象,设置描边线粗细,颜色,分辨率等问题需要自己来简单实现一下(变量都是写好了的,只需要重新赋值一下)。

第一个脚本是demo演示用的,可以看到使用非常简单


第二个脚本是调用shader的脚本

这三个属性即可控制描边的一些参数。

如图我只是在初始化的时候赋值过。要扩展的话在修改的时候同步重新赋值即可。


效果


顺便问个问题
我使用的是这个CommandBurffer对象中的DrawRenderer的方法来绘制第一次的着色。但是要取消某个描边时,我就不知道怎么remove掉这个设置上的Renderer了。就只有使用Clearn方法清空所有,再把没有取消描边的物体重新设置上去。如果有知道怎么remove掉的大佬请告诉我。

===================================================over====================================


image.png
image.png
参与人数 3 元素币 +32 活跃度 +35
bili:https://space.bilibili.com/41002401

使用道具 举报 登录

回复 <
神佛之上  发表于 2022-11-22 23:34:05  
2#
给力!元素有你更精彩
回复 收起回复
使用道具

快来发表你宝贵的意见吧!

RiverPork 实名

通过了实名认证的内容创造者

萌新TA

主题
16
精华
10
超神
0
扩散
0
微金
3000
智慧
300
余额
32
在线时间
2210 小时

【绝】红龙战甲 短杖 学徒法袍 无色原始矿 绿母翠晶矿 彗星钛晶矿 长枪 粒粒皆辛苦 元素铜币 元素银币 希望人没事 长剑 铁剑 魔法帽 莆田鞋 火元素 魔法扫帚 裁决 龙枪 双杀 烈火长枪 翡翠剑 青戒之钻

快速回复 返回顶部 返回列表