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

深度缓存

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

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

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

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

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

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

例子如下

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

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

着色

目前我们所作的内容

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章

U盘启动快捷键查询

电脑开机一般默认自身硬盘启动系统,如需要U盘重装系统,开机时一直按对应机型的U盘启动快捷键,选择对应USB设备即可U盘启动。 一、品牌台式 二、品牌笔记本 三、组装电脑

【LabVIEW学习篇 - 1】:初始LabVIEW

文章目录 初始LabView前面板和程序框图前面板(Front Panel)程序框图(Block Diagram)交互和工作流程 练手小案例:LabView中实现加法操作 初始LabView LabVIEW(Laboratory Virtual Instrument Engineering W…

【电脑应用技巧】如何寻找电脑应用的安装包华为电脑、平板和手机资源交换

电脑的初学者可能会直接用【百度】搜索电脑应用程序的安装包,但是这样找到的电脑应用程序安装包经常会被加入木马或者强制捆绑一些不需要的应用装入电脑。 今天告诉大家一个得到干净电脑应用程序安装包的方法,就是用【联想的应用商店】。联想电脑我是一点…

深入理解循环神经网络(RNN)

深入理解循环神经网络(RNN) 循环神经网络(Recurrent Neural Network, RNN)是一类专门处理序列数据的神经网络,广泛应用于自然语言处理、时间序列预测、语音识别等领域。本文将详细解释RNN的基本结构、工作原理以及其优…

阐述 C 语言中的参数传递机制

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会! 📙C 语言百万年薪修炼课程 通俗易懂,深入浅出,匠心打磨,死磕细节,6年迭代,看过的人都说好。 文章目…

从海上长城到数字防线:视频技术在海域边防现代化中的创新应用

随着全球化和科技发展的加速,海域安全问题日益凸显其重要性。海域边防作为国家安全的第一道防线,其监控和管理面临着诸多挑战。近年来,视频技术的快速发展为海域边防场景提供了新的解决方案,其高效、实时、远程的监控特点极大地提…

增强现实(AR)与虚拟现实(VR)的区别?

随着科技的飞速发展,增强现实(AR)与虚拟现实(VR)技术在各个领域展现出巨大的潜力和应用前景。这两种技术虽然在体验和实现方式上有所不同,但都为用户提供了全新的感知体验。本文将详细解析AR和VR的概念、区…

《Windows API每日一练》9.13资源-鼠标位图和字符串

鼠标指针位图(Mouse Cursor Bitmap)是用于表示鼠标指针外观的图像。在 Windows 窗口编程中,可以使用自定义的鼠标指针位图来改变鼠标的外观,并提供更加个性化的用户体验。 ■以下是一些与鼠标指针位图相关的要点: ●…

17集 如何用ESP-IDF编译ESP-DL深度学习工程-《MCU嵌入式AI开发笔记》

17集 如何用ESP-IDF编译ESP-DL深度学习工程-《MCU嵌入式AI开发笔记》 参考文档:ESP-DL 用户指南: https://docs.espressif.com/projects/esp-dl/zh_CN/latest/esp32/index.html 和https://docs.espressif.com/projects/esp-dl/zh_CN/latest/esp32/get-s…

详细分析@FunctionalInterface的基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)Spring框架从入门到学精(全) 1. 基本知识 FunctionalInterface 是 Java 8 引入的一个注…

gitee上传和下载idea项目的流程

环境:idea2022 一、上传项目 1、在gitee中新建一个仓库。 2、打开所要上传的项目的文件夹,点击Git Bash,生成.git文件夹。 3、在idea中打开所要上传的项目,在控制台的Terminal菜单中,输入git add . (注意&#xf…

爆破器材期刊

《爆破器材》简介   《爆破器材》自1958年创刊以来,深受广大读者喜爱,是中国兵工学会主办的中央级技术刊物,在国内外公开发行,近几年已发行到10个国家和地区。《爆破器材》杂志被美国著名检索机构《化学文摘》(CA&a…

【持续集成_03课_Linux部署Sonar+Gogs+Jenkins】

一、通过虚拟机搭建Linux环境-CnetOS 1、安装virtualbox,和Vmware是一样的,只是box更轻量级 1)需要注意内存选择,4G 2、启动完成后,需要获取服务器IP地址 命令 ip add 服务器IP地址 通过本地的工具,进…

无人机对地面运动目标定位---获取目标的移动方向和速度

目录 一、引子 我们利用单目无人机通过等时间间隔拍照的形式对地面某移动目标进行定位,当前,我们已经获得了每张相片上该目标的三维坐标,并且知道该无人机在飞行过程中拍照的时间间隔,那么我们就可以通过一定的计算,得…

Zabbix Sia Zabbix 逻辑漏洞(CVE-2022-23134)

前言 CVE-2022-23134是一个中等严重度的漏洞,影响Zabbix Web前端。这个漏洞允许未经身份验证的用户访问setup.php文件的某些步骤,这些步骤通常只对超级管理员开放。利用这个漏洞,攻击者可以通过跳过某些步骤来重新配置Zabbix前端&#xff0c…

kafka系列之offset超强总结及消费后不提交offset情况的分析总结

概述 每当我们调用Kafka的poll()方法或者使用Spring的KafkaListener(其实底层也是poll()方法)注解消费Kafka消息时,它都会返回之前被写入Kafka的记录,即我们组中的消费者还没有读过的记录。 这意味着我们有一种方法可以跟踪该组消费者读取过的记录。 如前…

List、Map、Set 接口在Java中的存取元素特点

List、Map、Set 接口在Java中的存取元素特点 1、List 接口2、Map 接口3、Set 接口4、总结 💖The Begin💖点点关注,收藏不迷路💖 在Java中,List、Map和Set是三个最常用的集合接口。它们各自有不同的特点和用途&#xff…

如何在 Microsoft Edge 上使用开发人员工具

Microsoft Edge 提供了一套强大的开发人员工具,可帮助 Web 开发人员检查、调试和优化他们的网站或 Web 应用程序。 无论您是经验丰富的 Web 开发人员还是刚刚起步,了解如何有效地使用这些工具都可以对开发过程产生重大影响。 在本文中,我们…

Camera Raw:常规工具

在 Camera Raw 窗口右下角提供了四个常用的工具,它们分别是:缩放工具、抓手工具、切换取样器叠加以及切换网格叠加工具。 ◆ ◆ ◆ 缩放工具 Zoom Tool 用于放大或缩小预览图像,便于查看和编辑细节。 快捷键:Z 1、双击“缩放工具…

[21] Opencv_CUDA应用之使用Haar级联的对象检测

Opencv_CUDA应用之使用Haar级联的对象检测 Haar级联使用矩形特征来检测对象,它使用不同大小的矩形来计算不同的线和边缘特征。矩形包含一些黑色和白色区域,如下图所示,它们在图像的不同位置居中 类Haar特征检测算法的思想是计算矩形内白色像素和黑色像素之间的差异这个方法的…