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

深度缓存

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

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

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

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

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

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

例子如下

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

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

着色

目前我们所作的内容

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

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

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

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

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

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

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用webrtc-streamer查看rtsp实时视频

1.下载webrtc-streamer 2.解压运行webrtc-streamer.exe 在浏览器访问127.0.0.1:8000,点击窗口可以看到本机上各窗口实时状态,点击摄像头可以显示摄像头画面。 5.安装phpstudy,并建立网站。(具体过程自己网上搜) 6.打开…

手把手带你本地部署大模型

这篇文章的唯一目的是实现在本地运行大模型,我们使用LMStudio这个工具协助达成这个目标。 文章目录 一,下载安装LM Studio二,本地部署大模型1,搜索模型2,下载大模型3,加载大模型4,测试大模型5&a…

Java实战:寻找完美数

文章目录 一、何谓完美数二、寻找完美数(一)编程思路(二)编写程序(三)运行程序 三、实战小结 一、何谓完美数 完美数是一种特殊的自然数,它等于其所有正除数(不包括其本身&#xff…

算法——同步算法

在力扣有这样一道题求交集,与此类似的还有求差集,相关的解法有很多。我这里提供一种思路:利用C的容器set对这两个数组去重,遍历数组插入set即可去重。再同时遍历比较set的每个元素。 代码实现很简单,如下所示&#xff…

《mysql篇》--索引事务

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

人工智能AI安全认证,我推荐CAISP认证!

在人工智能AI越来越火热的时代,AI信息安全认证已经成为热门职业,是众多知名企业众星捧月的人才! 成为高级AI安全专业官,认准CAISP人工智能安全专家认证! 课程概述: 生成式人工智能、大模型等人工智能技术…

VBA实现Excel的数据透视表

前言 本节会介绍通过VBA的PivotCaches.Create方法实现Excel创建新的数据透视表、修改原有的数据透视表的数据源以及刷新数据透视表内容。 本节测试内容以下表信息为例 1、创建数据透视表 语法:PivotCaches.Create(SourceType, [SourceData], [Version]) 说明&am…

文章SameStr(三):图3代码

“Publication Figure 3” 百度云盘链接: https://pan.baidu.com/s/15g7caZp354zIWktpnWzWhQ 提取码: 4sh7 Libraries Standard Import library(tidyverse) library(cowplot) library(scales) library(ggpubr)Special library(ggridges) library(grid) # library(Hmisc) …

国产鸿道Intewel操作系统与Codesys高实时虚拟化运动控制解决方案

随着运控行业的快速发展,实时与非实时业务的融合应用需求日益增长。例如在机器视觉处理领域,无论是在Windows还是Linux平台上,传统实时操作系统无法与非实时操作系统如Windows或Linux兼容,不能充分利用Windows或者Linux系统的生态…

CC7利用链分析

分析版本 Commons Collections 3.2.1 JDK 8u65 环境配置参考JAVA安全初探(三):CC1链全分析 分析过程 CC7,6,5都是在CC1 LazyMap利用链(引用)的基础上。 只是进入到LazyMap链的入口链不同。 CC7这个链有点绕,下面顺着分析一下利用链。 入口类是Hashtable&…

Java面试八股之MySQL索引B+树、全文索引、哈希索引

MySQL索引B树、全文索引、哈希索引 注意:B树中B不是代表二叉树(binary),而是代表平衡(balance),因为B树是从最早的平衡二叉树演化而来,但是B树不是一个二叉树。 B树的高度一般在2~…

java之循环练习题

思路分析&#xff1a; 代码&#xff1a; public static void main(String[] args) {int sum0;for (int i1;i<100;i){for (int j1;j<i;j) {sum j;}}System.out.println(sum);} 结果为&#xff1a;

量子保密通信协议原理:量子保密通信实验

纸上得来终觉浅&#xff0c;绝知此事要躬行。 在之前的文章中&#xff0c;我们对量子密钥分发协议原理、分发过程进行了详细的描述&#xff0c;今天我们实操一波。博主向大家隆重介绍一下华中师范大学量子保密通信虚拟仿真试验平台&#xff1a;量子保密通信是将量子密钥分发和一…

数字化时代下,财务共享数据分析建设之路

随着人工智能、云计算、大数据、区块链等技术&#xff0c;以及衍生出的各种产品的大发展&#xff0c;使得数字化发展的速度再一次加快&#xff0c;也让数字经济和数字化转型得到了更多人的关注和认可。 在传统经济增长逐渐放缓&#xff0c;市场竞争愈发激烈的局面下&#xff0…

3D模型进入可快速编辑时代,51建模网赋能Web3D展示!

丰富多样的Web3D展示形式&#xff0c;离不开强大的3D互动引擎作为坚实后盾。51建模网依托WebGL技术的先进力量&#xff0c;匠心打造了一款在线3D模型编辑器&#xff0c;它不仅能够迅速优化3D模型效果&#xff0c;更能够生成引人入胜的3D互动内容&#xff0c;让创意无界&#xf…

Linux 系统 CPU 100% 异常问题,能否用一个 Shell 脚本完美解决?

昨天下午突然收到运维邮件报警&#xff0c;显示数据平台服务器cpu利用率达到了98.94%&#xff0c;而且最近一段时间一直持续在70%以上&#xff0c;看起来像是硬件资源到瓶颈需要扩容了&#xff0c;但仔细思考就会发现咱们的业务系统并不是一个高并发或者CPU密集型的应用&#x…

uniapp本地打包到Android Studio生成APK文件

&#xff08;1&#xff09;安装 Android Studio 软件&#xff1b; 下载地址&#xff1a;官方下载地址&#xff0c;英文环境 安装&#xff1a;如下之外&#xff0c;其他一键 next &#xff08;2&#xff09;配置java环境&#xff1b; 下载&#xff1a;j…

第一次坐火车/高铁,如何坐?全流程讲解

第一次坐动车注意事项 第一次乘动车流程&#xff1a;进站→安检→候车厅→找检票口→过闸机→站台候车→找车厢→上车找座→下车→出站 乘车流程 一、进火车站/高铁站&#xff1a;刷购票证件原件进站 1、自助闸机刷证&#xff1a;身份证 2、人工通道&#xff1a;护照、临时…

AFT:Attention Free Transformer论文笔记

原文链接 2105.14103 (arxiv.org) 原文翻译 Abstract 我们介绍了 Attention Free Transformer (AFT)&#xff0c;这是 Transformer [1] 的有效变体&#xff0c;它消除了点积自注意力的需要。在 AFT 层&#xff0c;键key和值value首先与一组学习的位置偏差position biases相结…

九、Linux二进制安装ElasticSearch集群

目录 九、Linux二进制安装ElasticSearch集群1 下载2 安装前准备(单机&#xff0c;集群每台机器都需要配置)3 ElasticSearch单机&#xff08;7.16.2&#xff09;4 ElasticSearch集群&#xff08;8.14.2&#xff09;4.1 解压文件&#xff08;先将下载文件放到/opt下&#xff09;4…