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

第四天 开始Unity Shader的学习之旅之Unity中的基础光照

Unity Shader的学习笔记

第四天 开始Unity Shader的学习之旅之Unity中的基础光照


文章目录

  • Unity Shader的学习笔记
  • 前言
  • 一、我们是如何看到这个世界的
    • 1. 光源
    • 2.吸收和散射
    • 3.着色
  • 二、标准光照模型
    • 1. 自发光
    • 2. 高光反射
      • ① Phong模型
      • ② Blinn-Phong模型
    • 3.漫反射
    • 4.环境光
  • 总结


前言

渲染总是围绕一个基础问题:我们如何决定一个像素的颜色?从宏观上来说,渲染包含了两大部分:决定一个像素的可见性,决定这个像素上的光照计算,而光照模型就是用于决定这一像素上进行怎样的光照计算.今天我们会介绍一下这一章的基本知识,明天再对代码进行详细解释.


一、我们是如何看到这个世界的

1. 光源

光不是从石头缝里面蹦出来的,而是由光源发射出来的,在实时渲染中,我们通常把光源当成一个没有体积的点,用l来表示他的方向,在光学中,我们使用辐照度来量化光,对于平行光来说,他的辐照度可通过计算在垂直于l的单位面积上单位时间内穿过的能量来得到,那如果光照方向和物体表面不是垂直的呢,那我们其实可以使用光源方向l和表面法线n之间的夹角的余弦值来得到.

2.吸收和散射

光线由光源发出后,就会与一些物体相交,相交的结果通常只有两个:散射和吸收.
散射只改变光的方向,不改变光的大小和颜色,光线在经过表面散射后,有两种方向,这两种方向现实生活中我们怎么区分的就不说了,在光照模型中,为了区分这两个不同方向的散射,我们使用不同的部分来计算他们
高光反射部分表示物体表面是如何反射光线的;
漫反射部分部分表示有多少光线会被折射,吸收和散射出表面
在本章中,我们假设漫反射部分是没有方向性的,也就是说,光线在所有方向上都是平均分布的(平行光),同时,我们也只考虑某一个特定方向上的高光反射.

3.着色

着色指的是根据材质属性,光源信息,使用一个等式去计算沿着某个观察方向的出射度的过程,这个等式就是光照模型,本章设计的BRDF光照模型都是对真实场景进行理想化和简化后的模型, 也就是说,他们并不能真实的反应物体和光线之间的交互,因此这些光照模型也被称为经验模型.
但是,你要记住图形学第一定律:如果他看起来是对的,那么他就是对的.

二、标准光照模型

虽然光照模型有很多中,但是早期的游戏引擎往往只使用一个光照模型,那就是标准光照模型.标准光照模型只关心直接光照,也就是那些直接从光源发出照射到物体表面上经过物体的一次反射直接进入摄像机的光线.
他的基本方法是:把进入到摄像机内的光线分为四个部分,每一个部分使用一种方法来计算他的贡献度,这四个部分是:
①自发光部分:本书使用C[^emissive]来表示,这个部分用于描述当给定一个方向时,一个表面本身会向该方向发射多少辐射量.
②高光反射部分:本书使用C[^specular] 来表示,这个部分用于描述当光线从光源照射到模型表面时,该表面会在镜面反射方向散射多少辐射量.
③漫反射部分:本书使用C[^diffuse] 来表示,这个部分用于描述当管线从光源照射到模型表面时,该表面会向每个方向散射多少辐射量.
④环境光部分:本书使用C[^ambient] 来表示,它用于描述其他所有的简介光照.

1. 自发光

自发光的计算肥肠煎蛋,就是直接使用了该材质表面的自发光颜色,因此在实时渲染中,自发光的物体不能作为一个光源,所以自发光的表面不会照亮周围的表面,只是会比环境更亮一些.下面为自发光的计算公式:
自发光的计算公式

2. 高光反射

① Phong模型

这里的高光反射是一种经验模型,她并不符合真实世界的高光反射现象,高光反射的计算需要的信息就比较多了,如表面法线n,视角方向v,光源方向l,反射方向r等,在本书中,我们假设这些方向都是单位矢量,反射方向可以由其他三个变量计算得来,公式如下:
Phong模型计算反射方向
有了这四个变量,我们就可以通过Phong模型来计算高光反射的部分了,公式如下:
Phong模型
其中mgloss表示材质的光泽度,也称为反光度,mgloss越大,高光反射的亮点就越小, mspecular是材质的高光反射的颜色,他表示材质的高光反射的颜色和强度,clight则是光源的颜色和强度,为了避免视角方向和反射方向的点积为负数,我们使用max来限制其最小值为0.

② Blinn-Phong模型

为了避免计算反射方向,Blinn模型引入了新的矢量h,计算公式如下:
Blinn-Phong模型的的h变量计算
然后通过下面的同时计算高光反射的部分的颜色和强度.
Blinn-Phong模型

3.漫反射

在漫反射中,视角方向是不重要的,因为反射是完全随机的,因此可以认为任何反射方向上的分布都是一样的,但是入射光线的角度很重要.
漫反射符合兰伯特定律,漫反射的计算公式如下:
兰伯特定律
其中, n是表面法线,l是指向光源的单位矢量,mdiffuse是材质的漫反射颜色,clight是光源颜色,为了避免法线和光源方向点乘的结果为负值,我们使用max将其最小值截取至0;

4.环境光

在标准光照模型中,我们使用环境光来模拟间接光照,环境光的计算肥肠煎蛋,它通常是一个全局变量,即场景中的所有物体都使用这个环境光,下面是计算环境光的公式:
环境光的计算公式


总结

今天主要是对标准光照模型的四个部分进行了一个大致介绍,明天在Unity Shader对这些知识点进行讲解!!!

相关文章:

  • 专业级 AI 提示生成工具清单
  • 纯文本驱动的数据可视化革命——AI生成图表「图表狐」全场景深度解析
  • 深度拆解:AI Agent发展演练·数字挑战
  • 【蓝桥杯每日一题】3.20
  • AI医疗革命:英伟达GTC 2025医疗健康与生命科学会议全分析
  • “张江引擎 人形启程”,AI 机器人开启上海进化新范式
  • Jackson实现JSON数据的合并
  • python如何提取html中所有的图片链接
  • 第44章:外部配置中心与Kubernetes集成
  • 深入解析 Socket:网络通信的桥梁
  • LangChain组件Tools/Toolkits详解(6)——特殊类型注解Annotations
  • 删除重复数据,防止删除所有数据
  • 在 Ubuntu 下通过 Docker 部署 Mastodon 服务器的详细教程
  • 循环不变量原则——螺旋矩阵
  • 基于Spring Boot的企业内管信息化系统的设计与实现(LW+源码+讲解)
  • 综合章节:游戏网络化、模组化与深度扩展
  • Mysql深分页的解决方案
  • 再次理解 Spring 中的 IOC、DI、AOP 与多态
  • 【CF】Day14——Codeforces Round(Div2) 924 BC + 926 C + 934 C + 922 C
  • k8s的控制应用Helm
  • 默茨在德国联邦议院第一轮投票中未能当选总理
  • 青岛鞋企双星名人集团家族内斗:创始人发公开信指控子孙夺权
  • “五一”假期预计全社会跨区域人员流动量累计14.67亿人次
  • 黎巴嫩9年来首次举行地方选举
  • 普京称俄中关系对维护世界稳定具有战略意义
  • 传奇落幕!波波维奇卸任马刺队主教练,转型全职球队总裁