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

Unity引擎制作海面效果


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

一、 高光的计算

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

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

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

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

二、 法线贴图采样

在这里插入图片描述

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/366452.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖项目 常用注解 + 动态sql

常用注解 常见的注解解析方法有两种: 编译期直接扫描:编译器在编译 Java 代码的时候扫描对应的注解并处理,比如某个方法使用Override 注解,编译器在编译的时候就会检测当前的方法是否重写了父类对应的方法。运行期通过反射处理&…

云数据中心运维新纪元:让Linux服务器如虎添翼

文章目录 一、Linux系统管理的高级技巧1. 性能调优与监控:2. 自动化与脚本编写:3. 文件系统与存储管理: 二、服务器配置优化的策略1. 硬件选型与配置:2. 网络配置与优化:3. 应用部署与调优: 三、安全策略的…

postgre事务id用完后,如何解决这个问题

在PG中事务年龄不能超过2^31 (2的31次方2,147,483,648),如果超过了,这条数据就会丢失。 PG中不允许这种情况出现,当事务的年龄离2^31还有1千万的时候,数据库的日志中就会 有如下告警: warning:…

js获取当前浏览器地址,ip,端口号等等

前言: js获取当前浏览器地址,ip,端口号等等 window.location属性查询 具体属性: 1、获取他的ip地址 window.location.hostname 2、获取他的端口号 window.location.port 3、获取他的全路径 window.location.origin 4、获取…

【机器学习】基于层次的聚类方法:理论与实践

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 基于层次的聚类方法:理论与实践引言1. 层次聚类基础1.1 概述1.2 距离…

讨论Nginx服务器的反爬虫和反DDoS攻击策略

Nginx服务器是一个高性能的Web服务器和反向代理服务器,具有强大的反爬虫和反DDoS攻击能力。本文将讨论Nginx服务器的反爬虫和反DDoS攻击策略,并给出相关的代码示例。 一、反爬虫策略 爬虫是一种自动化程序,用于从互联网上收集特定网站的数据…

【产品运营】Saas的核心六大数据

国内头部软件公司的一季度表现惨不忍睹,为啥美国的还那么赚钱呢?其实核心是,没几个Saas产品经理是看数据的,也不知道看啥数据。 SaaS 行业,天天抛头露面、名头叫的响的 SaaS 产品,真没有几个赚钱的。 那为…

笔记101:OSQP求解器的底层算法 -- ADMM算法

前言1:这篇博客仅限于介绍拉格朗日乘子法,KKT条件,ALM算法,ADMM算法等最优化方法的使用以及简版代码实现,但不会涉及具体的数学推导;不过在下面我会给出具体数学推导的相关文章和截图,供学有余力…

Pytest+Allure+Yaml+PyMsql+Jenkins+Gitlab接口自动化(四)Jenkins配置

一、背景 Jenkins(本地宿主机搭建) 拉取GitLab(服务器)代码到在Jenkins工作空间本地运行并生成Allure测试报告 二、框架改动点 框架主运行程序需要先注释掉运行代码(可不改,如果运行报allure找不到就直接注释掉) …

CCAA:认证通用基础 10(审核的概念、审核有关的术语、审核的特征、审核原则)

10.审核的概念、审核有关的术语、审核的特征、审核原则 10.1审核的基本概念 第一章 审核基础知识 第一节 概述 1.什么是审核 审核是认证过程中最基本的活动,是审核方案的重要组成部分,其实施效果直接影响到审核方案的意图和审核目标的达成。 在认证…

葡萄串目标检测YoloV8——从Pytorch模型训练到C++部署

文章目录 软硬件准备数据准备数据处理脚本模型训练模型部署数据分享软硬件准备 训练端 PytorchultralyticsNvidia 3080Ti部署端 fastdeployonnxruntime数据准备 用labelimg进行数据标注 数据处理脚本 xml2yolo import os import glob import xml.etree.ElementTree as ETxm…

DSPy:变革式大模型应用开发

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模…

ADS1220IRVAR 模数转换器(ADC) TI德州仪器 封装 国产替代

ADS1220IRVAR 模数转换器(ADC) TI德州仪器 封装 国产替代

docker 多网卡指定网卡出网

前言 宿主机中有多个网卡 ens160 192.168.4.23/20 内网通信用 ens192 10.31.116.128/24 出公网访问-1 ens193 10.31.116.128/24 出公网访问-2 现在需要不同容器中不同出网访问,举例 容器1 192.168.0.1/20 网段走宿主机 ens160网卡,否则全部走ens192 网…

vue根据文字长短展示跑马灯效果

介绍 为大家介绍一个我编写的vue组件 auto-marquee ,他可以根据要展示文本是否超出展示区域,来判断是否使用跑马灯效果,效果图如下所示 假设要展示区域的宽度为500px,当要展示文本的长度小于500px时,只会展示文本&…

1077 韩信点兵

这是一个中国剩余定理的问题。中国剩余定理是数论中的一个定理,它给出了一组同余方程的解的存在性和唯一性。在这个问题中,我们需要找到一个数,使得它对给定的每个质数取余的结果等于给定的余数。 以下是一个使用C实现的解决方案&#xff1a…

【每日一练】Python遍历循环

1. 情节描述:上公交车(10个座位),并且有座位就可以坐下 要求:输入公交卡当前的余额,只要超过2元,就可以上公交车;如果车上有空座位,才可以上。 seat 10 while seat > 0:money int(input(…

CentOS修复OpenSSH漏洞升级到openssh 9.7 RPM更新包

在做政府和学校单位网站时,经常需要服务器扫描检测,经常被OpenSSH Server远程代码执行漏洞(CVE-2024-6387)安全风险通告,出了报告需要升级OpenSSH。 使用yum update openssh是无法更新到最新的,因为系统里的…

JsonCpp:更简洁的序列化及反序列化

简介 jsoncpp 提供了一组简单易用的 API&#xff0c;使得在 C 程序中处理 JSON 数据变得更加方便和高效。 安装 linux环境下安装jsoncpp sudo apt-get update sudo apt-get install --reinstall libjsoncpp-dev建立软链接确保编译器找到头文件 #include <json/json.h>…

Vue原生写全选反选框

效果 场景&#xff1a;Vue全选框在头部&#xff0c;子框在v-for循环内部。 实现&#xff1a;点击全选框&#xff0c;所有子项选中&#xff0c;再次点击取消&#xff1b;子项全选中&#xff0c;全选框自动勾选&#xff0c;子项并未全选&#xff0c;全选框不勾选&#xff1b;已选…