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

3.基础光照

从宏观上讲渲染包含了两大部分:决定一个像素的可见性,决定一个像素的光照计算

而光照模型就是用于决定在一个像素上决定怎样的渲染光照计算。

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

1.光源

实时渲染中,我们通常把光源当成一个没有体积的点,用l来表示它的方向

辐照度:量化光的方法,一个光源发出了多少光

在计算光照模型时,我们需要知道一个物体的辐照度

对于平行光辐照度通过计算垂直于l的单位时间内穿过的能量来得到。

但物体表面往往时和l不垂直的,那么

如何计算辐照度:光源方向l和法线n之间的夹角的余弦值

注意:这里的默认方向的模都为1

辐照度和照射到物体表面时光线之间的距离\frac{d}{\cos \theta }成反比,因此辐照度与\cos \theta成正比。

\cos \theta可以使用光源方向l和表面法线n的点积得到。这也是用点积来计算辐照度的由来。

2.吸收和散射

光线由光源发射出来后,会与物体相交,相交的结果有两种:散射和吸收

散射:只改变方向,不改变颜色和密度

吸收:只改变密度和颜色,但不改变光线的方向

散射后的两种方向:

  • 1.散射到物体内部,这种现象被称为折射或投射
  • 2.散射到外部,这种现象被称为反射

对于不透明物体,折射进入物体内部的光线还会继续与内部的颗粒进行交互。其中一些光线最后会重新发射出物体表面,而另一些则被物体吸收。那些从物体表面重新发射出的光线将具有和入射光线不同的方向分布和颜色。

为了区分两种不同的散射,光照模型中用了两种不同的部分来计算:

  • 高光反射:表示物体表面是如何反射光线的
  • 漫反射:表示有多少光线会被折射、吸收和散射出表面

出射度:根据入射光线的数量和方向,计算出出射光线的数量和方向

辐照度和出射度之间是满足线性关系的,而他们之间的比值就是材质的漫反射和高光反射属性

3.着色

定义:着色(shading)是指根据材质属性(如漫反射属性等)、光源信息(如光源方向、辐照度等),使用一个等式去计算沿着某一个观察方向的出射度的过程。

我们把这个等式称为光照模型。不同的光照模型有不同的目的。

如:一些用于描述粗糙的物体表面,一些用于描述金属表面

4.BRDF光照模型

通俗的来讲,当给定入射光线的方向和辐照度后,BRDF可以给出在某个出射方向上的能量分布。

本章涉及的BRDF是对真实场景进行理想化和简化后的模型,并不能真实的反应物体与光线的交互。这写光照模型被称为经验模型。

图形学第一定律:如果它看起来是对的,那么它就是对的。

 二、标准光照模型

1975年,著名学者裴祥风提出了标准光照模型背后的基本理念。标准光照模型只关心直接光照,也就是那些直接从光源发射出来照射到物体表面后,经过物体表面的一次反射直接进入摄像机的光线。

该方法将光线分为4部分:

自发光(emissive)c_{emissive}。用于表述当给定一个方向时,一个表面本身会向该方向发射出多少辐射度。注意,如果没有使用全局光照技术,这些自发光是并不会真的照亮周围物体的,而是它本身看起来更亮了而已。

高光反射(specular)c_{specular}。用于描述当光线从光源照射到模型表面时,该表面会在完全镜面反射方向散射多少辐射量。

漫反射(diffuse)c_{diffuse}。用于描述当光线从光源照射到模型表面时,该表面会向每个方向散射多少辐射量。

环境光(ambient)c_{ambient}。用于描述其他所有间接光照。

1.环境光

间接光照是指,光线通常会在多个物体间反射,最后进入摄像机,也就是说,光线在进入摄像机前,经过了不只一次光照。

在标准光照模型中,使用了一种被称为环境光的部分来近似模拟间接光照。环境光的计算非常简单,它是一个全局变量,即场景中的所有物体都使用这个环境光。

c_{ambient}=\delta _{ambient}

2.自发光

自发光也可以直接由光源发射进摄像机,而不需要经过任何物体的反射。标准光照模型使用自发光来计算这个部分的贡献度。其计算很简答,直接使用该材质的自发光颜色

c_{emissive}=m_{emissive}

通常在实时渲染中,自发光表面并不会照亮周围表面,这个物体并不会被当成一个光源。

只有引入全局光照系统后才可以模拟这类自发光物体对周围环境的影响

3.漫反射

漫反射用于对那些被物体表面随机散射到各个方向的辐射度进行建模。

漫反射中视角不重要,入射光线角度很重要

兰伯特定律:反射光线的强度与表面法线和光源方向之间的夹角的余弦值成正比。

c_{diffuse}=(c_{light\cdot m_{diffuse}})max(0,n\cdot l)

m_{diffuse} 材质的漫反射颜色

c_{light} 光源颜色

防止物体被从后面来的光源照亮,所以将负值截去

4.高光反射

用于计算沿着完全镜面防溺水方向被反射的光线,这可以让物体看起来是有光泽的,如金属材质

需要知道的变量:法线方向、视角方向、光源方向、反射方向等

相关文章:

  • 进程间通信(27000字超详解)
  • 领域建模(系统操作复习)
  • Prime1 - 提权的另一种解法,彻底搞懂OpenSSL解密渗透提权,超强思路版。
  • leetcode155. 最小栈
  • Photoshop 首选项设置建议
  • React框架的快速入门
  • Java 获取和修改期日与时间的各种操作方法
  • Flutter 中的 CustomMultiChildLayout 小部件:全面指南
  • mysql的inner join 和left join区别
  • mac 安装java jdk8 jdk11 jdk17 等
  • 安全风险 - 检测设备是否为模拟器
  • 【漏洞复现】电信网关配置管理系统 rewrite.php 文件上传漏洞
  • 安装pytorch深度学习模型时要知道自己的电脑显卡是否支持CUDA
  • 关于 Spring 是什么
  • c++车票管理系统
  • 【技术性】Search知识
  • 【剑指offer】让抽象问题具体化
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Android开源项目规范总结
  • Electron入门介绍
  • gf框架之分页模块(五) - 自定义分页
  • gulp 教程
  • JS实现简单的MVC模式开发小游戏
  • Leetcode 27 Remove Element
  • Lsb图片隐写
  • PaddlePaddle-GitHub的正确打开姿势
  • php中curl和soap方式请求服务超时问题
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 对象引论
  • 如何合理的规划jvm性能调优
  • 小李飞刀:SQL题目刷起来!
  • 异步
  • 原生js练习题---第五课
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • const的用法,特别是用在函数前面与后面的区别
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • # C++之functional库用法整理
  • ###STL(标准模板库)
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (1)Nginx简介和安装教程
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (二)学习JVM —— 垃圾回收机制
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (四)事件系统
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .Net环境下的缓存技术介绍
  • .NET技术成长路线架构图
  • .net下的富文本编辑器FCKeditor的配置方法
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @Repository 注解