Games101——光珊化——深度缓存——shading着色 1

news2024/11/11 9:21:13

深度缓存

如何解决远近的问题,能正确的覆盖

按照画作来说,先画出远处的物体,再画出近处的物体,近处会将其覆盖,这种算法叫做画家算法

但事实上,排序不仅要花更多的时间,而且排序并不容易,而且如果存在互相遮挡关系存在的情况下,画家算法就无法实现

为了解决这个问题,现代图形学所使用的都是深度缓存的算法,我们最后要做到的是基于每一个像素,我们存下每一个位置最前的那个像素,生成深度图,每一次计算的时候,我们会同时生成一个结果图和一个深度图

因为我们之前在定义相机的时候说过,我们的相机永远是朝向-z轴的方向,因此,我们需要定义,深度是一个距离,永远是一个正的值,离相机近深度就小,离相机远,深度就大,举一个深度图和渲染图的例子

这两张图永远是同步生成的,离相机越近的点,深度越小,那么像素值越小,那也就越黑,那么这个算法要怎么进行呢,永远只记下当前像素最小的值就可以了,一开始都是无限远,再遍历每一个三角形光栅化后的每一个像素的深度

例子如下

通过这样一个办法,我们可以通过逐像素的方法来维护深度图,我们需要明确一点,该算法只是在每次记录最小值,而并没有排序,所以在时间复杂度上并不大,而且这个算法和画出图像的顺序没有关系

在实际情况下,两个浮点数很难相等,因此,基本上不存在深度相同的情况,这个深度缓存在所有的硬件上都存在,如果有反走样的运用的话,可能记录的是采样点,不仅仅是像素点的采样

着色

目前我们所作的内容

我们目前还没解决的问题就是着色

所谓着色,意思就是引入明暗和颜色的变化,对于计算机图形学来说,就是对于不同的物体运用不同的材质叫做着色,一个相同的物体拥有不同的材质也就看起来大不相同,最基础的着色模型phong模型,或者说反射模型

例如下面的反射例子,包括高光(镜面反射),漫反射,以及间接光照(在路径追踪上详细介绍)

如何定义光照,例如一个着色点上的光照,我们可以定义法向,观察方向,光源方向,这些向量都是单位向量,仅仅表示方向,除了这几个方向以外,就需要定义这个点平面的表面属性,颜色,有多亮等

最后,着色不等于阴影,着色情况只看它自己,而并不考虑其它物体的存在,也就是具有局部性,阴影在后面解释如何生成

那么我们首先考虑简单的漫反射,漫反射的定义是当光线打在这个点上时,反射的方向不确定,是自由的

但是事实上这个并不容易,我们可以通过能量守恒的定义来推导物体表面的亮度,接受的能量是通过着色点周围的单位面积来考虑的,能量的接受度和角度的大小有关,和余弦的大小成正比

光作为一种能量,那么它是怎么产生的,例如一个点光源,我们如果认为点光源,认为辐射出来的能量在每一个方向上相同,又根据能量守恒的定理,点光源的的能量随着传播,每一个点的能量会小很多,距离和单位面积上的光的强度是衰减,并且以距离的平方成反比

那么我们就可以写出我们所在漫反射上能看到多少的能量,首先根据点光源,单位面积光照强度和距离的关系,求出此时单位面积投射出的光的能量大小,又根据余弦定理求出接受的百分比,就可以求出看到这个着色点的明暗

我们在此时有定义一个系数Kd,这个就是用来表示颜色的,因为颜色的产生是根据吸收光的多少来决定的,如果Kd为1,那就说明没有能量在这个着色点被吸收,那这个点就非常亮,根据这个就可以表示明暗,如果将Kd定义为三通道RGB,那么我们就可以定义颜色了

因为是漫反射,所以这个和我们观测角度V完全没有任何的关系,因为光线漫反射在四面八方反射的光线是完全一样的

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

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

相关文章

Simulink生成代码时端口名称乱码问题

写在最前: 在使用Simulink生成代码时发现端口名称与模型中定义的输如输出端口名称不一致,代码生成的端口名称为随机字符名称。 在生成的H文件中发现,端口定义的结构体名称与模型中实际定义的名称不符。 模型中的定义 检查后发现&#xff0c…

Dbeaver连接人大金仓

Dbeaver 连接 人大金仓。 1、新建驱动管理器 类名:com.kingbase8.Driver URL模板:jdbc:kingbase8://{host}[:{port}]/[{database}] (格式:jdbc:kingbase://IP地址:端口号/数据库名称); 默认端口&#x…

【学术会议征稿】第八届电气、机械与计算机工程国际学术会议(ICEMCE 2024)

第八届电气、机械与计算机工程国际学术会议(ICEMCE 2024) 2024 8th International Conference on Electrical, Mechanical and Computer Engineering 第八届电气、机械与计算机工程国际学术会议(ICEMCE 2024)将于2024年10月25日…

1区老牌神刊,仅37天录用!网友:“这审稿速度救了我一条命”!

关注GZH【欧亚科睿学术】,GET完整版2023JCR分区列表! ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 期刊信息概况 【期刊类型】计算机科学类SCIE&EI 【出版社】ELSEVIER出版社 【期刊概况】IF:4.0-5.0,JCR1区,中科院3区…

MATLAB实现-基于CNN-BiLSTM卷积神经网络结合双向长短期记忆神经网络数据分类预测(多输入多分类)

MATLAB实现-基于CNN-BiLSTM卷积神经网络结合双向长短期记忆神经网络数据分类预测(多输入多分类) 1.数据均为Excel数据,直接替换数据就可以运行程序。 2.所有程序都经过验证,保证程序可以运行。 3.具有良好的编程习惯&#xff0…

工业机床CNC设备如何上云?

工业机床CNC设备如何上云? 工业机床的计算机数控(CNC)设备实现远程监控数据上云,是现代制造业智能化转型的关键一环。这一过程不仅能够实时监测设备状态、优化生产流程,还能通过大数据分析提升生产效率与产品质量&…

模型泛化与工程技巧-模型泛化

1. 模型存在问题 1.1 过拟合 过拟合(Overfitting):模型过于紧密或精确地匹配特定数据集,以致于无法良好地拟合其他数据或预测未来的观察结果的现象。通俗的来讲,就是训练的模型在训练集上的精确度很高,但是在测试集上的精确度却很差的现象。 1.2 如何防止过拟合—数据角度 …

汇聚荣拼多多实力怎么样?

汇聚荣拼多多实力怎么样?拼多多作为中国电子商务行业的后起之秀,其市场表现和商业策略引起了广泛的关注。在回答“汇聚荣拼多多实力怎么样?”这一问题时,我们可以明确地看到,拼多多通过其独特的商业模式和创新策略,在竞争激烈的…

1. CSS Grid 网格布局教程

CSS Grid 网格布局教程 一、概述 网格布局(Grid)是最强大的 CSS 布局方案。 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器…

推三返一结合消费增值,高效裂变且稳定增值

在当今竞争激烈的商业版图中,企业正寻求创新的路径以吸引顾客、驱动增长。推三返一与消费增值模式作为两大创新策略,正以其独特的裂变机制,为企业开辟出一条通往成功的高速公路。 推三返一模式,其精髓在于通过消费者自身的社交网…

海外文摘杂志社《海外文摘》杂志社2024年第1期目录

作品选 封2,封3-封4 海外艺术 穿越色彩的维度康定斯基的艺术哲学 谢博文1-3 舍伍德安德森《小城畸人》中重复性女性形象塑造分析 吴燕佳 郭思霈4-6 文化艺术《海外文摘》投稿:cnqikantg126.com 浅谈文化润疆视域下的西域汉语诗学 蔡丽7-9 明清时期书法艺术发展 柏则…

《mysql篇》--索引事务

索引 索引的介绍 索引是帮助MySQL高效获取数据的数据结构,是一种特殊的文件,包含着对数据表里所有记录的引用指针,因为索引本身也比较大,所以索引一般是存储在磁盘上的,索引的种类有很多,不过如果没有特殊…

AI工具GitHub Copilot:GitHub和OpenAI联合打造的一款创新的智能代码辅助工具

GitHub Copilot是由GitHub和OpenAI联合打造的一款创新的智能代码辅助工具,它正改变着全球数百万开发者编写代码的方式。这个AI编程助手以其强大的代码补全和生成能力,帮助程序员们以更高的效率、准确性和速度完成编码任务。 喜好儿网查看更多 GitHub C…

leetcode:LCR 018. 验证回文串(python3解法)

难度:简单 给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的 回文串 。 示例 1: 输入: s "A man, a plan, a canal: Panama" 输出: t…

Windows Server 2012 R2查看IIS版本

文章目录 一、方法一1.win R 键打开运行窗口 → 输入 "regedit" → 点击【确定】2.HKEY_LOCAL_MACHINE → SOFTWARE → Microsoft → InetStp 二、方法二1.win R 键打开运行窗口 → 输入 "inetmgr" → 点击【确定】2.点击 【帮助】 → 选择【关于 Intern…

昇思大模型——MindFormers的使用----从零开始安装配置环境

MindSpore Transformers套件的目标是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件,提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性。期望帮助用户轻松的实现大模型训练和创新研发。 MindSpore Transform…

短剧新风潮:海外制作的艺术与技术

海外短剧新风潮在艺术与技术两个维度上都展现出了显著的创新与进步。 艺术层面 1、内容创新: (1)多元化与包容性:海外短剧在内容创新上更加注重多元化和包容性,将不同地域、民族的文化元素融入创作中,展现丰…

游戏AI的创造思路-技术基础-蒙特卡洛树搜索(2)

接上一篇,让我们来看更多的例子 目录 7. 更多例子 7.1. 国际象棋实例 7.2. RTS类游戏实例 7.3. FPS类游戏实例 7. 更多例子 蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)在游戏AI中有着广泛的应用,尤其是在那些…

Python数据获取:从基础到实践,一场数据探索之旅

目录 一、引言 二、理解数据获取的基本概念 三、使用Python进行网络数据抓取 3.1 基础工具:requests库 3.2 解析HTML:BeautifulSoup库 3.3 实战案例:抓取网页新闻列表 四、从文件中读取数据 4.1 使用pandas读取CSV文件 4.2 读取Exce…

LORAHUB: EFFICIENT CROSS-TASK GENERALIZATION VIA DYNAMIC LORA COMPOSITION

文章汇总 动机 效果如上:希望将多个任务训练得到的LoRA组合起来,效果比单独一个任务得到的LoRA效果更好。 愿景:那未来我们每个人都贡献出自己训练出来的LoRA,之后通过LoRAHub简单组合起来,就可以得到适用于多任务且功…