位置: 编程技术 - 正文

【猫猫的Unity Shader之旅】之透明材质(猫的喵喵)

编辑:rootadmin

推荐整理分享【猫猫的Unity Shader之旅】之透明材质(猫的喵喵),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:猫的猫的视频,猫的游戏解说,猫的猫的视频,猫的游戏视频,猫的猫的视频,猫的猫的视频,猫的游戏视频,猫猫的游戏,内容如对您有帮助,希望把文章链接给更多的朋友!

  现实生活中有许多半透明的情形:玻璃、饮料瓶、塑料袋等等。半透明一个很重要的特点就是可以显示它后面的物体的部分颜色。这个“部分”具体是多少我们常用透明度来表示。

一个简单的透明例子

  想做出透明效果,第一步需要通知Shader我们要使用透明效果了。最简单的方法是在#pragma后面增加一个alpha参数,例如#pragma surface surf Lambert alpha。

  开启透明后,只要对SurfaceOutput的Alpha分量赋值就可以了,范围是[0,1],下面是一个简单的透明Shader:

  调整Alpha值,可以看到透明的效果:

  

  为了更好地观察透明效果,我们可以在立方体后面添加一个红色的平面。这时候,你可能发现一个奇怪的现象,立方体明明在平面的前面,但是看上去却被平面遮挡了,像这样:

  

  产生这种情况的原因是没有指定渲染顺序。渲染顺序,顾名思义,就是渲染的前后顺序,也可以理解为优先级。可以通过在Tags中指定键值对来指定Shader的渲染顺序。不过,作为一种全局的顺序机制,Unity已经为我们指定好了一些层级,分别是Background、Geometry、AlphaTest、Transparent、Overlay,分别表示, , 、、,顺序越小的越先渲染。默认情况下,Shader的渲染顺序是,也就是Geometry,我们可以手动指定渲染顺序:

  这样就代表我们这个Shader的渲染顺序为。为了解决上面那个奇怪的显示问题,我们可以把我们的Shader的渲染顺序稍微延后一点:

  此时渲染顺序就正确了:

【猫猫的Unity Shader之旅】之透明材质(猫的喵喵)

  

  其实Unity已经给我们定义了专门放置透明材质的层次,我们干嘛不用呢,所以最好的方法是这样写:

使用AlphaTest实现透明效果

  另一种实现透明的方式是利用裁剪。这种方式的基本原理就是利用片段的透明度和我们给定的一个透明度做对比,当片段的透明度大于给定透明度时就表现为不透明,否则就是透明(其实是被丢掉)。因此这种方式作出的效果除了完全透明的部分就是完全不透明的部分。

  要使用AlphaTest,需要在#pragma后面添加alphatest:xxx,这个xxx就是我们给定的透明度。下面是一个简单的AlphaTest的例子:

  为了体现效果我们需要一幅透明度渐变的贴图:

  

  下面是_AlphaTest在不同值下的效果:

    

  这种AlphaTest看上去比半透明的方式更有效率,事实上,大部分情况确实如此。一个例外是在移动设备上,AlphaTest在移动设备上效率非常低,甚至不如第一种半透明的方式。

  本次的工程文件在这里。

结束语

  透明材质有非常好的表现效果,可以说在游戏开发过程中是必不可少的,恰当的使用透明也可以极大地节省模型的面数。但是,使用透明会有一定的性能开销,尤其是在移动设备上。可以说,开发移动平台的游戏,资源和效率都是锱铢必较的,开发一款效果又好效率又高的产品真的不容易。OK,下回再见~

资源加载卸载与内存的关系 关于Resources.load和实例化与内存的关系:1.加载,单纯的Resources.load后消耗的内存很低,可能只是基础的引用预载、当对象被实例化后才会占用大量内存

Kinect结合Unity开发(一) 因为对Unity比较熟悉,所以一开始想着就是用Unity结合Kinect来进行游戏开发,而不是用Kinect的SDK强行撸一个出来,再说我也不会啊。然后就是上网各种找

使用BMFont+NGUI利用图片制作自定义字体 在游戏开发过程中,我们大多数时候都需要显示游戏计时和分数等,而这些数字如果用普通的字体来显示又会显得不太好看,于是我们产生了用图片来

标签: 猫的喵喵

本文链接地址:https://www.jiuchutong.com/biancheng/380151.html 转载请保留说明!

上一篇:Unity蛮牛教程噩梦射手----代码讲解(1)(unity manifest)

下一篇:资源加载卸载与内存的关系(资源加载中是什么原因)

  • 可供出售金融资产新准则叫什么
  • 今年成立的公司,残保金是否要申报
  • 固定资产40%部分能抵即征即退项目吗
  • 行政事业单位国有资产处置管理办法
  • 耕地转让权是什么意思
  • 怎么认证财付通
  • 公司账户没有钱怎么办
  • 上年计提奖金今年怎么算
  • 退税勾选的发票账务处理
  • 简易计税的分包款可以留到下期抵扣吗
  • 建筑业简易征收差额征税的计算案例
  • 小规模税局代增值税专用发票怎么交税
  • 国内外经典案例
  • 文化用品有哪些种类
  • 企业所得税应纳税所得额不得扣除
  • 行政单位需要缴税吗
  • 高新企业境外所得缴纳企业所得税税率为多少
  • 异地预缴企业所得税会计分录
  • 销售折扣账务怎么处理
  • 开土地租赁发票需要交哪些税费
  • 非房地产开发企业土地增值税扣除项目
  • 跨省增值税专用发票可以抵扣吗
  • 交通费,通讯费均按照上级行标准领取
  • 鼠标反应迟钝是什么原因
  • 定额发票可以抵进项税吗
  • 真实有效的18岁身份证
  • 电脑到u盘
  • 完税证明和纳税申报表是一种东西吗
  • 如何暂停win11更新
  • phpstudy的ftp
  • 收益类账户的会计分录
  • gws.exe是啥
  • linux xmrig
  • go是单进程还是多进程
  • 税款返还的会计处理方法
  • 外购商誉是资产吗
  • 无形资产使用寿命不确定需要摊销吗
  • php读取文件
  • Http协议之Content-Type理解
  • 火遍全网的超燃神曲旋律震撼人心,听完热血沸腾!
  • net命令详解步骤
  • 织梦cms怎么样
  • 增值税返还需要交增值税吗
  • 主营业务收入和营业外收入的区别
  • json 处理
  • 金税盘离线开票时间超限怎么办
  • 商品流通企业的种类
  • 个体户取现金的几种方法
  • 社保是当月计提当月交吗
  • 所得税申报报表
  • 吸收合并需要编制
  • 民间非营利组织会计制度
  • 我国税收税类中的流转税
  • 商业承兑背书后怎么办
  • 发票金额比实际支付金额大
  • 其他应付款的借贷方分别表示什么
  • 破产重整期间转让股权
  • sql数据库压缩能提高性能吗
  • win2008r2下载
  • linux如何安装c语言编译器
  • windows10 硬件
  • 新手怎么装
  • mac用ntfs文件夹读写ntfs硬盘
  • win7双硬盘双系统
  • win8.1快速启动
  • 在linux操作系统中
  • linux流量控制
  • windows识别码
  • win8.1系统怎么升级到win10
  • 安卓十游戏怎么玩
  • nodejs实战教程
  • 使用NGUI时遇到物理引擎错误
  • JavaScript中iframe实现局部刷新的几种方法汇总
  • 安卓怎样从旧手机把联系人导入新手机
  • 税务巡视组一般检查什么
  • 吉林省地方税务局
  • 智行火车票电子报销凭证
  • 干部任免审批表怎么填写
  • 变更法人需要法人本人去吗
  • 地税局属于国家公务员吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设