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.高光反射

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

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

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

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

相关文章

远程服务器上,再次配笔记1、2、11、12相同的深度学习和gcc环境

文章目录 参考文献 创建环境在(zgp_m3dm)中安装会显示zgp_m3dm_main环境中的情况满足(base) ~/zgp/M3DM-repetition conda deactivate 再次安装如果服务器本身不能联网,需下载pysocks包以设置反向代理(具体可参考之前的笔记10): 再…

简易版本的QFD质量屋

比如餐馆要考虑什么因素最重要,这里列出好吃,快速,便宜三类问题,然后设置上图的权重, 然后设置9,3,1三类因子,9比如是最重要的,3,1,依次没那么重要…

[vue2项目]vue2+supermap[mapboxgl]+天地图之地图的初始化

Supermap参考教程 天地图 一、安装 1、终端:npm install supermap/vue-iclient-mapboxgl 2、在package.json文件的dependencies查看supermap/vue-iclient-mapboxgl依赖是否安装成功。 3、在mian.js全局引入 import VueiClient from supermap/vue-iclient-mapboxgl; Vue.use(…

牛客网刷题 | BC106 K形图案

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi学习了循环&am…

WPS部分快捷操作汇总

记录一些个人常用的WPS快捷操作 一、去除文档中所有的超链接: 1、用WPS打开文档; 2、用Ctrla全选,或者点击上方的【选择】-【全选】,选中文档全部内容; 3、按CTRLSHIFTF9组合键,即可一次性将取文档中所有…

Linux的程序管理2:设置优先级,程序的查看与处理---ps命令详解与kill,killall,top,renice,nice搭配使用管理linux

前言 程序的管理除了前文说到的前后台执行,离线执行。还包括下面几个方面: 1:如何找到最耗费系统资源的程序? (使用top命令找到PID然后排查原因) 2:设置程序的优先级,让其被执行的概…

“论软件的可靠性评价”必过范文,突击2024软考高项论文

论文部分 摘要 2023年03月,我参与了某艺术品公司线上拍卖管理平台的研发。该项目的目标是建立一个互联网在线拍卖平台,用户可以通过手机或PC浏览器进入拍卖平台,对喜欢的拍品进行参拍出价。平台提供了在线支付、在线出价、保证金管理、拍品…

Android开机动画的结束过程BootAnimation(基于Android10.0.0-r41)

文章目录 Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) 路径frameworks/base/cmds/bootanimation/bootanimation_main.cpp init进程把我们的BootAnimation的二进制文件拉起来了&#xf…

YOLOv5改进 | 添加注意力篇 | 利用YOLOv10提出的PSA注意力机制助力YOLOv5有效涨点(附代码 + 详细修改教程)

一、本文介绍 本文给大家带来的改进机制是YOLOv10提出的PSA注意力机制,自注意力在各种视觉任务中得到了广泛应用,因为它具有显著的全局建模能力。然而,自注意力机制表现出较高的计算复杂度和内存占用。为了解决这个问题,鉴于注意…

一个可以自动生成随机区组试验的excel VBA小程序

在作物品种区域试验时,通常会采用随机区组试验设计,特制作了一个可以自动生成随机区组试验的小程序。excel参数界面如下: 参数含义如下: 1、生成新表的名称:程序将新建表格,用于生成随机区组试验。若此处为…

arm cortex-m架构 SVC指令详解以及其在freertos的应用

1. 前置知识 本文基于arm cortex-m架构描述, 关于arm cortex-m的一些基础知识可以参考我另外几篇文章: arm cortex-m 架构简述arm异常处理分析c语言函数调用规范-基于arm 分析 2 SVC指令 2.1 SVC指令位域表示 bit15 - bit12:条件码&#…

SOFA-RPC学习记录

文章目录 需求分析模块划分微服务模块交互模块 可拓展架构插件机制 功能分析交互模块 学习微服务模块交互模块 dubbo与nacos集成学习Nacos配置中心实战 dubbo与apollo集成学习配置中心组件与k8s的抉择参考资料 结论 本报告旨在深入学习SOFA-RPC框架,特别是其动态配置…

Linux综合实践(Ubuntu)

目录 一、配置任务 1.1 配置该服务器的软件源为中科大软件源 1.2 安装相关软件openssh-server和vim 1.3 设置双网卡,网卡1为NAT模式,网卡2为桥接模式(桥接模式下,使用静态ip,该网卡数据跟实验室主机网络设置相似,除…

如何搜索[仅有1个文件]或[指定个数范围、名称、类型文件等复杂情况]的文件夹

首先,需要用到的这个工具: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 打开工具,切换到批量复制板块,用Ctrl5可以快速切换 然后鼠标移动到工具的贴边的右侧,不是移出工具外面,还在…

【赠书第22期】AI绘画全面精通

文章目录 前言 1 AI绘画基础知识 2 AI绘画技术应用 2.1 风格迁移 2.2 自动绘画 2.3 辅助绘画 3 AI绘画发展前景 3.1 艺术创作领域的变革 3.2 跨领域融合与创新 3.3 个性化艺术创作的普及 4 结语 5 推荐图书 6 粉丝福利 前言 随着科技的飞速发展,人工智…

自学 Java 怎么入门?

关于自学 Java 如何入门这一重要课题,在此为大家进行详细阐述。 在此之前,如果大家有兴趣的话,可以看看我自己精心整理的嵌入式入门资料,这些资料将全部免费送给大家。其中包含了编程教学内容、详细的视频讲解、实用的数据库资料…

锅炉智能制造工厂工业物联数字孪生平台,推进制造业数字化转型

在制造业快速发展的今天,数字化转型已经成为企业提升竞争力的关键途径。锅炉智能制造工厂工业物联数字孪生平台,作为一种创新的技术解决方案,正以其独特的优势,为制造业的数字化转型提供强大动力。锅炉智能制造工厂工业物联数字孪…

libevent源码跨平台编译(windows/macos/linux)

1.windows编译: 克隆: git clone https://github.com/libevent/libevent.git 克隆成功 生成makefile 生成成功 默认不支持OpenSSL,MbedTLS,ZLIB这三个库 编译: cmake --build . --config release

深入分析 Android Service (完)

文章目录 深入分析 Android Service (完)1. Service 的生命周期管理2. Service 的生命周期方法2.1 onCreate()2.2 onStartCommand(Intent intent, int flags, int startId)2.3 onBind(Intent intent)2.4 onUnbind(Intent intent)2.5 onRebind(Intent intent)2.6 onDestroy() 3.…