unity有类似扫光的unity shader 入门么

后使用快捷导航没有帐号?
只需一步,快速开始
查看: 2333|回复: 6
1000元求半透明shader
TA的其他好贴
马上注册,加入CGJOY,享用更多功能,让你轻松玩转CGJOY。
才可以下载或查看,没有帐号?
1000元求半透明shader,&&可以调节半透明度.同时可以根据摄像机距离渐隐.
这个我会写哈
楼上两位互留联系方式,联系一下吧。呵呵,祝你们开心。
我可以,有兴趣加qq
1000元真好挣啊...
1000日元么
CGJOY 9周年 终极特惠!报名领取奖学金。
Powered by【Unity Shader】结合Projector和Rendertexture实现实时阴影
【Unity Shader】结合Projector和Rendertexture实现实时阴影
之前已在简书上发过,这里重新整理了一下,并附上实现代码。
我的热门文章
即使是一小步也想与你分享扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
当前位置: &
查看: 786|回复: 1
Unity Shader 着色器——给物体边缘加高光轮廓的办法(附Demo)
本帖为抢楼帖,欢迎抢楼!&
2118/150排名<font color="#FF昨日变化9主题帖子积分
初来乍到, 积分 118, 距离下一级还需 32 积分
初来乍到, 积分 118, 距离下一级还需 32 积分
在线时间31 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
一、边缘光方法(Rim Light)
官方教程里有例子,其中核心是这两句代码:
half rim = 1.0 - saturate(dot (normalize(IN.viewDir), IN.worldNormal));
o.Emission = _RimColor.rgb * pow (rim, _RimPower);
IN.viewDir是当前视角向量,IN.worldNormal是物体的法线。dot是计算视角和法线的点积,等于视角和法线夹角的cos值,如下图:
1.jpg (14.35 KB, 下载次数: 0)
10:13 上传
Cos的值域是1-0,1-cos就成了0-1,在夹角90度时达到最大值,正好用来模拟侧光的强度(与视角成90度的部分光线最强,就是边缘光了)
把这个值的变化率用一个pow函数(rim的_rimPower次方)进行放大,就能强化边缘发亮的效果。比较一下:
2.jpg (10.02 KB, 下载次数: 0)
10:14 上传
没有经过Pow放大变化率的边缘光,cos函数的变化是比较平缓的,造成大片区域被染色。
3.jpg (8.79 KB, 下载次数: 0)
10:14 上传
经过Pow函数放大变化率,就有了边缘发亮的效果。这个图大致体现了放大前后变化率的曲线:
4.jpg (7.73 KB, 下载次数: 0)
10:15 上传
这种边缘光在复杂几何形体的时候效果还是不错的。
5.jpg (20.5 KB, 下载次数: 0)
10:15 上传
6.jpg (22.56 KB, 下载次数: 0)
10:16 上传
但是在平直的物体上,边缘光就不见了
7.jpg (9.8 KB, 下载次数: 0)
10:16 上传
到了方形物体,几乎很难看见了
8.jpg (10.19 KB, 下载次数: 0)
10:17 上传
很好理解,正方形每个面法线都是一个方向的,没法体现出变化和轮廓了。
另外这种方法在描绘凹的几何体时,凹的部分(包括法线贴图造成的凹凸)的边缘也都会被画出来,并不是真正意义上的边缘轮廓,就是一种侧光效果。
该方法的好处是简单,只要把官方的shader改写,加上计算边缘光的几句,就能实现。要显示的时候动态切换shader就可以。基本不需要代码干预,效率高。
二、单个物体轮廓渲染方法
这个方法实现比较复杂,只能介绍大致思路:
1.把要渲染轮廓的物体放在一个单独的层里
2.在层里设置一个disable的摄像机,culling mask是渲染物体所在层。
3.主摄像机保持culling mask是everything
4.生成1个renderTexture
5.把那个disable的辅助摄像机用RenderWithShader方法,指定一个单色渲染的shader(只需要轮廓,不需要光照计算)渲染物体的轮廓到一个renderTexture
6.继续用单色Shader,用Unity自带Blur类似的方法,把物体轮廓图上下左右移动几个像素,叠加在一起,得到一个比原来轮廓大,边缘模糊的轮廓图,存到一个临时renderTexture
7.把大的轮廓图和原始轮廓图叠加,把中间清晰轮廓部分消除掉,就能得到一个完整带透明度的轮廓图。
8.在主摄像机的OnRenderImage里,把这个透明轮廓图和主摄像机渲染的图像进行alpha混合,就能产生一个完整并且不被遮挡的轮廓效果了。
9.jpg (49.69 KB, 下载次数: 0)
10:19 上传
明显效果比侧光好多了。不过这种方法开销比较大,而且需要很多代码的支持。
附上一个小Demo,包含了上述两种方法。
鼠标可以控制镜头平移、旋转、缩放。鼠标划过物体显示侧光效果,点击物体显示清晰轮廓效果,再次点击效果消除。
10.jpg (51.91 KB, 下载次数: 0)
10:19 上传
11.jpg (62.68 KB, 下载次数: 0)
10:20 上传
12.jpg (51.42 KB, 下载次数: 0)
10:20 上传
可以设置边缘颜色 和宽度 模糊度
目标按照材质进行分组以方便处理
13.jpg (19.84 KB, 下载次数: 0)
10:21 上传
变换成细线 绿色
14.jpg (46.15 KB, 下载次数: 0)
10:21 上传
优化了代码,减少了一组RenderTexture,这个东西还是很耗资源的,减少了计算的次数。
另外增加了一组模糊、裁剪一次完成的shader,资源上更节省,不过边缘较模糊。
两种算法效果比较:
15.jpg (48.8 KB, 下载次数: 0)
10:22 上传
多次模糊再裁剪的算法,边缘光滑,模型的锯齿在边缘线被光滑了,开销略大
16.jpg (41.85 KB, 下载次数: 0)
10:22 上传
一次同时模糊、裁剪算法,边缘较模糊,锯齿也被等比放大,但开销较省。
根据需要使用。
总体上因为是全屏效果,与被渲染物体数量无关,所以基本上显示轮廓物体的多少不会影响效率。
附件里包含两种方法的代码和shader。RimLight方法一个shader就能对应一种材质效果,不需要代码支持。后一种方法需要代码加shader,类似官方的Image Effect效果。
outline.unitypackage
/s/dFQWVqSRbIkIR
转自:http://dong2008hong./blog/static//5.2 没有unity自带着色器;unity消除锯齿;unity着色器有什么用;unity怎么消除锯齿
每日推荐:
13/50主题帖子积分
注册看看, 积分 3, 距离下一级还需 47 积分
注册看看, 积分 3, 距离下一级还需 47 积分
在线时间2 小时
xxxxxxxxxxxxx
每日推荐:探索,分享你喜欢的。
后使用快捷导航没有帐号?
所属分类: &
1.你可以把你想要请教的问题发表出来,热情的群友和管理员将会尽力帮你解决
2.悬赏帖子的有效期限为7天,如果发帖人未在期限内选择答案视情况进行惩罚扣分,超过7天则由管理员代为选择答案
3.本版的回复奖励为精灵币+2,成为CG问答成员答案被采纳精灵币额外+10
unity有类似扫光的shader么
查看: 802|回复: 9
主题帖子精灵币
Ta的其他精品内容:
· · · · · · · · · · · · · · ·
求解答,类似AE扫光的
未标题-1.gif (45.68 KB, 下载次数: 1)
17:19 上传
贴的这个效果没有发现扫光。U3d制作扫光效果找一张一定倾斜角度的光柱贴图给予面片双材质K下UV平移即可实现
一起努力学习吧!
主题帖子精灵币
贴的这个效果没有发现扫光。U3d制作扫光效果找一张一定倾斜角度的光柱贴图给予面片双材质K下UV平移即可实现
主题帖子精灵币
主题帖子精灵币
没有&&要自己KEY UV
主题帖子精灵币
找张有那种光效果的贴图K帧就行了
主题帖子精灵币
K帧就好了。
主题帖子精灵币
K帧就好了。
主题帖子精灵币
U3d制作扫光效果找一张一定倾斜角度的光柱贴图给予面片双材质K下UV平移即可实现
主题帖子精灵币
AE出个系列图 U3D粒子发射 还不是想怎么扫就怎么扫
主题帖子精灵币
uv动画就能解决这个问题
原Cgbuff活跃会员回归~
CGwell游戏特效01期学员
CGwell游戏特效01期学员
一年相伴 感谢有你
陪伴CGwell一周年的会员
酷炫新功能贴图库使用测试,希望大家一起帮忙反馈问题哟~!
从此告别小盘盘,快来使用贴图库在线版吧!探索,分享你喜欢的。
后使用快捷导航没有帐号?
所属分类: &
1.你可以把你想要请教的问题发表出来,热情的群友和管理员将会尽力帮你解决
2.悬赏帖子的有效期限为7天,如果发帖人未在期限内选择答案视情况进行惩罚扣分,超过7天则由管理员代为选择答案
3.本版的回复奖励为精灵币+2,成为CG问答成员答案被采纳精灵币额外+10
unity有类似扫光的shader么
查看: 802|回复: 9
主题帖子精灵币
Ta的其他精品内容:
· · · · · · · · · · · · · · ·
求解答,类似AE扫光的
未标题-1.gif (45.68 KB, 下载次数: 1)
17:19 上传
贴的这个效果没有发现扫光。U3d制作扫光效果找一张一定倾斜角度的光柱贴图给予面片双材质K下UV平移即可实现
一起努力学习吧!
主题帖子精灵币
贴的这个效果没有发现扫光。U3d制作扫光效果找一张一定倾斜角度的光柱贴图给予面片双材质K下UV平移即可实现
主题帖子精灵币
主题帖子精灵币
没有&&要自己KEY UV
主题帖子精灵币
找张有那种光效果的贴图K帧就行了
主题帖子精灵币
K帧就好了。
主题帖子精灵币
K帧就好了。
主题帖子精灵币
U3d制作扫光效果找一张一定倾斜角度的光柱贴图给予面片双材质K下UV平移即可实现
主题帖子精灵币
AE出个系列图 U3D粒子发射 还不是想怎么扫就怎么扫
主题帖子精灵币
uv动画就能解决这个问题
原Cgbuff活跃会员回归~
CGwell游戏特效01期学员
CGwell游戏特效01期学员
一年相伴 感谢有你
陪伴CGwell一周年的会员
酷炫新功能贴图库使用测试,希望大家一起帮忙反馈问题哟~!
从此告别小盘盘,快来使用贴图库在线版吧!

我要回帖

更多关于 unity 透明shader 的文章

 

随机推荐