当前位置: 首页 > news >正文

Unity海面效果——4、法线贴图和高光

Unity引擎制作海面效果


  大家好,我是阿赵。
  继续做海面效果,上次做完了漫反射颜色和水波动画,这次来做法线和高光效果。

一、 高光的计算

  之前介绍过高光的光照模型做法,比较常用的是Blinn-Phong
在这里插入图片描述

  所以我这里也稍微连线实现了一下
  为了能看得更清楚高光的效果,我把漫反射颜色去掉,单独看高光的部分:
在这里插入图片描述

  需要说明的是,现在这个效果,是配合着天空盒里面的太阳位置,还有我在场景里面的直射灯的角度,得到的一个好像太阳光在水面的光线反射效果,实际上只是对位置造成的效果,并不是真的写个Shader就有这么理想的效果的。
  高光的光照模型很简单,有几个参数是控制高光颜色、高光的强度和范围的。
  如果把漫反射颜色加上去,就会变成这样:
在这里插入图片描述

  从性能上来说,如果做到现在这里就停手,其实效果也不错,而且并没有太多消耗性能的地方。可以作为一个简化版的水面效果吧。
  接下来要开始添加法线的计算,后面还会添加各种深度效果。其实这些效果都是比较消耗性能的,我全部列举出来其实只是为了说明技术点,所以可以根据自己的需要,一点一点的添加。

二、 法线贴图采样

在这里插入图片描述

  我这里的这些图,都是在Unity的AssetStore里面下载的免费水的资源。效果其实并不是特别的好,不过用来学习也足够了。
  这里用到了法线贴图。其实没什么特别的难点,由于之前做漫反射水波纹的时候,已经计算好了2个会动的UV坐标来采样水波贴图,所以现在同样利用这两个UV,来采样法线贴图:
在这里插入图片描述

  需要注意的是,由于是法线贴图,所以要勾选Unpack Normal Map。
在这里插入图片描述

  勾选了之后,就可以设置参数调节法线贴图的缩放,也就是凹凸程度了。
在这里插入图片描述

  接下来,把法线贴图采样得到的法线,输入到之前计算高光模型的世界法线:
在这里插入图片描述

  把漫反射颜色去掉,单纯看高光,现在的高光会变成这样:
在这里插入图片描述

  由于UV是和波纹动画一样的,所以这个高光也会动起来。

  加上了漫反射颜色之后,水波纹和法线是同样的UV采样,所以完全是对得上的
在这里插入图片描述

相关文章:

  • Ubuntu Server 和 Ubuntu Desktop 组合使用
  • OpenHarmony 5.0 纯血鸿蒙系统
  • 改进的蜣螂优化算法仿真程序-高分资源-下载可用
  • 百度AI使用-图像文字识别
  • 低成本 高性价比 12V电压 YB5011 非隔离AC-DC 助力智能家电
  • 软考高级之系统分析师及系统架构设计师备考过程记录
  • 第4篇 区块链的优势与挑战:为什么区块链如此重要?
  • C#面:如何把一个array复制到arrayist里
  • 数据结构 - 图
  • DockerDesktop中mysql容器无法使用Exec窗口解决
  • TypeScript 中 const enum 和 enum 的核心区别在哪?日常开发应该使用哪个?
  • MySQL实训项目——餐饮点餐系统
  • HarmonyOS--开发者证书考试地址
  • 顾客满意度调查指标如何设计
  • Asp.net Core 反射加载dll
  • 自己简单写的 事件订阅机制
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • C学习-枚举(九)
  • java2019面试题北京
  • JavaScript学习总结——原型
  • ng6--错误信息小结(持续更新)
  • windows下mongoDB的环境配置
  • 给初学者:JavaScript 中数组操作注意点
  • 猴子数据域名防封接口降低小说被封的风险
  • 普通函数和构造函数的区别
  • 我是如何设计 Upload 上传组件的
  • 新版博客前端前瞻
  • 仓管云——企业云erp功能有哪些?
  • ​学习一下,什么是预包装食品?​
  • ### RabbitMQ五种工作模式:
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (2022 CVPR) Unbiased Teacher v2
  • (4) PIVOT 和 UPIVOT 的使用
  • (9)目标检测_SSD的原理
  • (十)c52学习之旅-定时器实验
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 未来三学期想要修的课 (日記)
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)四层和七层负载均衡的区别
  • .NET 使用配置文件
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net反编译工具
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET开发人员必知的八个网站
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • /etc/sudoers (root权限管理)
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @ModelAttribute使用详解
  • [2024-06]-[大模型]-[Ollama]- WebUI
  • [AIGC] Java List接口详解
  • [android] 练习PopupWindow实现对话框
  • [boost]使用boost::function和boost::bind产生的down机一例