通过卡通渲染描边shader来学习Unity的Shader写法

本文介绍了在Unity中自定义卡通渲染和描边效果的Shader实现,详细讲解了Shader的基本结构、关键指令以及如何处理透明贴图、剔除、灯光影响等问题。同时,文中也提到在实现描边效果时需要注意摄像机距离的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        Unity自带了很多shader,其中就包含卡通渲染和描边的shader。但是我在实际开发游戏的过程中还是遇到了这些shader无法解决的问题。

        于是,我们需要理解如何写Unity的shader,并且按照我们自己的需求编写一个新的shader。

        大多数情况下,我们遇到的实际问题要比一个酷炫的demo复杂和恶心。就像Daikon Forge GUI插件非常完善的Atlas图集功能却因为我们的GUI图片元素过多而变得非常鸡肋,甚至不得不做修改。 或者明明很正常的Dynamic Font功能却因为我们要渲染的文字繁而多,变得bug频频。

        我们因为游戏风格和玩法的特殊需求,所以我们需要这样一个shader:

        1、卡通渲染(这个主要是使用卡通渲染掩盖本身模型和贴图的不给力)

        2、支持透明贴图 (我们很多模型使用了透明贴图,当时主美的说法是使用透明贴图可以减少很多面数,但是现在看来,如果我为了支持透明贴图而禁用了剔除,说不定反而是得不偿失的做法)

        3、不依赖灯光 (毕竟我们的游戏不是3D的MMO,而且即便是火炬之光似乎在人物渲染的时候也是不依赖灯光的,对于我们的游戏风格而言,如果因为灯光造成明显的明暗区分是会削弱表现的)

       4、最好有灯光影响  (这个跟上一点不冲突,灯光可以在shader中计算,场景中无论有没有灯光,人物都会有一定的明暗区分,很多情况下这个是加分的)

       5、能够正确处理好透明和剔除  (如果处理不正确,要么会使人物表现错乱,甚至无法分辨出哪条腿在前那条退在后,要么会因为背面剔除而造成一部分部件无法显示)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值