位置: 编程技术 - 正文

【猫猫的Unity Shader之旅】之法线贴图的运用(猫咪的testflight)

编辑:rootadmin

推荐整理分享【猫猫的Unity Shader之旅】之法线贴图的运用(猫咪的testflight),希望有所帮助,仅作参考,欢迎阅读内容。

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

  前几篇文章都在讲原理性的东西,不知道大家有没有烦。其实,当对Shader了解越来越多之后,就会越来越发现原理的重要性。建议大家学了一些Unity Shader的用法之后,多了解一点图形学知识,勿筑台于浮沙。

为什么需要法线贴图

  在实际的开发过程中,我们经常会遇到这样的矛盾:一方面希望模型的显示效果好,另一方面又希望模型具有较少的面数,节省开发成本和运行效率。例如我们现在要做一面砖墙,思路可能是这样的:

  1、创建一个立方体,调整各方向缩放使其看上去像一面墙。如图。

  

  2、创建一个默认材质和Shader,材质附加到立方体上,材质的Shader选择我们创建的Shder。

  3、为材质选择一幅石砖的贴图。为了更好地观察效果我们可以再添加一个方向光。

  

  当我们仔细观察这面墙时,会发现它不那么真实,尤其是旋转灯光或者墙时,墙的明暗是统一变化的,砖之间没有明暗变化,看上去就像平整的墙面上贴了一层墙纸一样。那么为什么会这样呢,这还需要从光照说起。

  回想一下我们上回说到的光照模型,对于默认的Unity Shader,我们用的Lambert光照模型,也就是LightingLambert方法(可以在Lighting.cginc文件中找到),Lambert模型是这样的:

  下面我们来简单分析下这段代码。上回我们说到,光照模型的任务是返回一个颜色(准确说经过处理的片段颜色,片段是模型经过顶点变换后形成的与屏幕坐标一一对应的部分)。可以看到最终返回的颜色c,它的rgb是光照颜色乘以反射率后又乘了一个系数。光照颜色乘以反射率容易理解,物体的颜色就是光的颜色经过衰减后得到的,比如白光(颜色为(1.0, 1.0, 1.0))照射在红色物体(反射率为(1.0, 0.0, 0.0),反射全部红光,不反射绿蓝光)上时,产生的颜色为红色(1.0, 0.0, 0.0)。那么系数diff是什么呢?

  从代码fixed diff = max (0, dot (s.Normal, lightDir));这句可以看到,diff是光照方向(lightDir)和片段的法线(s.Normal)经过点乘后得到的。回想一下中学学过的物理知识:

【猫猫的Unity Shader之旅】之法线贴图的运用(猫咪的testflight)

  

  法线垂直于平面,入射光与法线的夹角称作入射角,反射光和法线夹角成为反射角,入射角等于反射角,对吧。OK,这么多就够了,毕竟不是物理课…对于Lambert光照模型,由于入射光方向(lightDir)和法线方向(s.Normal)都是规范化过的(长度为1),所以点乘的结果就是入射角的余弦值,由于余弦值的取值范围是[-1, 1],经过和0进行最大值比较后,diff得到的就是个[0, 1]范围内的值,而且入射角越小,diff的值越小。

  到现在情况就明朗很多了,这个光照先是通过折射率对光照颜色进行衰减,又通过diff这个随着入射角增大而减小的[0,1]之间的值进行衰减,通俗点说就是光线越正着照,颜色就越亮。

  这就是为什么我们的墙没有那么多明暗变化了,我们这个墙是个简单的立方体,模型中只包含八个顶点信息,顶点之间的片段是通过差值产生的。想要实现我们想要的真正的墙壁的感觉,需要从以下两个方面入手:

  1、增加模型顶点信息,用模型自带法线信息增加表面细节。

  2、在Shader中修改片段的法线。

  我想不用我说大家也知道第二种方式更好一些。但是问题是,我们如何知道应该把法线改成多少呢?这就需要贴图来提供信息了。之前我们用贴图的颜色去修改片段的颜色,同样也可以通过法线贴图去修改片段的法线。这种用rgb值表示对应法线的xyz值得贴图,就叫法线贴图。

在Shader中使用法线贴图

  猫猫本来打算少说一些理论呢,结果不知不觉又说了一大堆…不过好在,猫猫感觉已经解释的很清楚啦,下面的代码就显得灰常简单了,不说了,直接上代码了:

  我们在代码中定义了一幅新的贴图,在surf方法中通过tex2D取得贴图的信息,UnpackNormal方法将其转换为对应的法线值。这里我把Lambert模型放进来,方便大家看到一个完整的过程。

  为我们的材质选择一个合适的法线贴图,再次移动光源,就可以看到砖墙表面出现了更多的细节效果。

  

  需要完整工程的童鞋请戳这里。

结束语

  从这篇开始,猫猫打算讲一些具体的渲染技术,那些无聊的理论终于要退居二线了。目前的打算是只说下最常用的和比较关键的渲染技巧和方法,毕竟猫猫觉得一种好的渲染效果更多靠的是对图形学的理解和…审美…好吧,咱们下回见。

雷爵代理游戏风云Unity休闲养成页游《宠物派对》 雷爵网络近日宣布与上海游戏风云文化传媒合作,取得可爱休闲养成游戏营运代理权,并正式命名为《宠物派对》,将预计于今年Q4在台湾推出,《宠物

Unity UGUI UnityUGUI的教程好少,幸亏找到一个UGUI的Demo,看了几个例子,以下是一些简单的学习笔记:1.导入UI图片资源2.设置参数:TextureType(纹理类型)精灵2DandUISpri

【Unity】NGUI插件核心脚本类的继承关系 虽说目前(年3月日)Unity4.6版本之后推出的UGUI系统替代NGUI已是大势所趋,但作为被长久且广泛使用的优秀插件之一,NGUI的代码和架构依然有很多

标签: 猫咪的testflight

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

上一篇:Unity_制作小地图——利用遮挡(unity2d小地图)

下一篇:雷爵代理游戏风云Unity休闲养成页游《宠物派对》(雷爵电动车官网)

  • 企业税收收入怎么计算
  • 个人所得税起征点2023税率表
  • 企业所得税的代码是什么
  • 饭店发光板图片大全
  • 会计凭证辅助项
  • 发票备注没写
  • 旅游业全额开票可以差额征税吗
  • 税总界定超标准小规模纳税人偷税数额
  • 小规模纳税人购车好处
  • 资本溢价能不能退还股东呢
  • 施工企业结算金额怎么算
  • 办公室租赁合同需要交哪些税额?
  • 核定征收未分配利润分红分录
  • 免税商品进项税可以抵扣吗
  • 空报税怎么报
  • 通用机打发票税率在哪改
  • 收到普通发票税号错了不改会怎么样
  • 小企业报表为什么勾选不到小型微利企业
  • 计提工资和实际发放工资
  • 应付职工薪酬包括公积金吗
  • 公司社保和公积金没有足额缴纳
  • 可供出售债券投资
  • 一般纳税人怎么查询
  • 公积金多交退回怎么申报个税
  • 小规模纳税人医院免增值税吗
  • 不动产广告位出租税率是多少
  • 2021最新版眼保健视频
  • 预售房款预缴企税怎么算
  • 王者荣耀中孙尚香怎么玩
  • mac设置定时任务
  • 苹果电脑屏幕键盘怎么去除
  • 宽带调制解调器出现问题怎么解决
  • 事业单位财产清查怎么进行
  • 涉税服务实务重点总结
  • 最贵的冰箱是多少钱
  • 专用发票开具错误
  • 给退休人员发放一次性工龄补贴是真的吗
  • 简易计税办法和计税依据
  • php图片识别处理归类
  • web前端开发期末试题及答案
  • php调用变量的符号
  • php处理接收的xml
  • High-resolution image reconstruction with latent diffusion models from human brain activity
  • 发票勾选了还能冲红吗
  • 小型微利企业的认定标准
  • 出租设备折旧费用计入什么科目
  • python中如何创建一个新文件
  • 缴纳印花税的会计凭证怎么做
  • 企业会计准则每股收益
  • 服务业按什么结算工资
  • 利息收入计入借方
  • 预收账款挂多久确认收入
  • 行政事业单位赞助支出会计核算办法
  • 本期销项税额怎么算
  • 以设备投资入股的账务处理
  • 可以假设两种情形吗
  • 运输公司发票抵扣
  • 上月的普票下月可以记账么
  • 在职职工在单位应享受哪些待遇
  • 税务局返还的个税手续费是否纳税
  • 低值易耗品摊销怎么做账
  • 债权投资的交易费用计入成本还是利息调整
  • 什么是盈余公积和资本公积
  • 收入与费用配比也就是费用要由收入补偿
  • 公司购买的打印机附赠给客户进项税可以抵扣吗
  • 土地出让的钱归谁
  • sql语句的查询语句
  • xp系统可以双屏吗
  • macos 修改mac
  • Centos安装dig命令
  • windows开始搜索栏
  • win7系统开启无线服务
  • win10微软在哪
  • centos bz
  • win8系统没有wifi
  • jsp生成uuid
  • gimp批处理
  • Android -- service两种启动方式startService与bindService
  • Android应用程序可以直接在ios中安装运行吗
  • 报企业增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设