【GAMES101】Lecture 12 阴影 Shadow Mapping

这里是光栅化的最后一部分,讲这个光栅化里面怎么实现这个阴影

实际上阴影就是光源看不到的地方但是是我们能看到的地方,那这个地方就应该有阴影,那具体怎么做呢,这个就叫做Shadow Mapping,分两步做

我们之前说过这个解决远近问题用的深度缓冲Z-Buffer,会用一个depth buffer存储像素的深度,类似的,这里把这个光源当作摄像机,然后去记录一次像素的深度,这样记录到的像素的深度都是光源可以看到的点的深度,因为光源看不到的点的深度会被覆盖对不对

然后我再从摄像机出发去记录像素的深度,这时记录下的像素的深度都是我能够看到的点的深度,如果这个点投影到光源的深度和第一轮记录的深度一样,那么说这个点光源和我都能看到,那这里应该没有阴影

如果摄像机看到的点投影到光源的深度和第一轮记录的深度不一样,那么说明这个点我能够看到,但是光源看不到,那么说明此处应该有阴影

实际操作中那么第一轮就会得到这个和深度缓冲Z-buffer一样的depth buffer深度图

然后去比较摄像机能够看到的点投影到光源的距离是否和depth buffer记录的相等,就是下面的绿色部分,非绿色部分就是应该存在阴影

然后其实可以看到这里绿色的部分不是很均匀,这几个球上颜色有点混乱,这个说明这个阴影不是非常理想,为什么会出现这种情况呢?主要有两个原因,一呢是因为浮点数精度问题,计算机二进制存储嘛,有些小数无法精确表示,那么就导致这个比较浮点数相等这个事情比较困难,那改成大于行不行呢,其实还是不行,还有大于某个阈值也不能根本解决这个问题;二呢是因为这个分辨率问题,就是这个采样问题,一个像素可能覆盖很多点,那每个点都有距离对吧,那我这个像素上不上阴影呢,这也是问题

还有就是它只能解决这个点光源的硬阴影,就是下面这个上面的阴影,就是阴影都是一样的,而无法表示这个软阴影,就是渐变的阴影,因为如果这个光源它不是点光源,它就会产生这种软阴影

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

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

相关文章

初识attention

近年来,attention机制在机器视觉和机器翻译领域受到了广泛的关注,有很多文章都是融合attention来提高性能。attention受启发于人类的视觉系统,最先应用于序列化的机器翻译(NLP)后又推广到计算机视觉中,本篇文章就来简单学习一下at…

[GN] 设计模式——面向对象设计原则概述

文章目录 面向对象设计原则概述单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 总结 提示:以下是本篇文章正文内容,下面案例可供参考 面向对象设计原则概述 单一职责原则 一个类只负责一个功能领域中的相应职责 类…

JavaScript DOM属性和方法之attribute属性对象

在HTML的DOM中,attribute对象表示HTML属性。HTML属性始终属于HTML元素,它在DOM节点中被称为属性节点。在DOM中,NamedNodeMap对象表示元素属性节点的无序集合,我们可以通过指定的索引访问指定的属性。通过element对象的attribute属…

【Leetcode】两数之和

目录 题目: 解法1:暴力双for 1.想到的第一种方法两for循环解 复杂度分析 解法2:hash表 总结: 笔记: 题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标…

实现扫码登录

扫码登录是如何实现的? 二维码信息里主要包括唯一的二维码ID,过期的时间,还有扫描状态:未扫描、已扫描、已失效。 扫码登录流程 用户打开网站登录页面的时候,浏览器会向二维码服务器发送一个获取登录二维码的请求。二维码服务器收…

让Elasticsearch飞起来!百亿级实时查询优化实战

让Elasticsearch飞起来!百亿级实时查询优化实战 - 简书 最近的一个项目是风控过程数据实时统计分析和聚合的一个 OLAP 分析监控平台,日流量峰值在 10 到 12 亿上下,每年数据约 4000 亿条,占用空间大概 200T。 面对这样一个数据量…

【Java】内存溢出和内存泄露的区别

目录 概念 内存溢出分类 内存泄漏分类 发生场景以及解决方法 内存溢出 内存泄漏 解决方法 这道题是面试常考的,一定要区分好区别,我之前就是直接认为内存溢出就是内存泄漏了 概念 内存溢出:是指程序在申请内存时,没有足够…

国考省考行测:分析推理,形式逻辑,集合推理,真假推理

国考省考行测:分析推理,形式逻辑 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论,而常规国考省考最重要的还是申论和行测,所以大家认真准备吧,我讲一起屡屡申论和…

基于Springboot的视频网站系统的设计与实现(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的视频网站系统的设计与实现(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层…

git diff查看比对两次不同时间点提交的异同

git diff查看比对两次不同时间点提交的异同 用 git diff命令: git diff commit-id-1 commit-id-2 不同commit-id在不同的时间点提交产生,因为也可以认为git diff是比对两个不同时间点的代码异同。 git diff比较不同commit版本的代码文件异同_git diff c…

顺序表的奥秘:高效数据存储与检索

🍿顺序表 🧀1、顺序表的实现🍥1.1 创建顺序表类🍥1.2 插入操作🍥1.3 查找操作🍥1.4 删除操作🍥1.5 清空操作 🧀2、ArrayList的说明🧀3、ArrayList使用🍥3.1 A…

Focaler-IoU:更聚焦的IoU损失

摘要 边界框回归在目标检测领域中起着至关重要的作用,而目标检测的定位精度在很大程度上取决于边界框回归的损失函数。现有的研究通过利用边界框之间的几何关系来提高回归性能,而忽略了难易样本分布对边界框回归的影响。本文分析了难易样本分布对回归结…

在linux上进行编译调试

1.相关疑问 1. 为什么在代码里使用了一个未定义过的函数(如add()),在编译阶段不会报错,在链接阶段会报错呢? 答:先说几个代码编译的结论: 单个\.c源文件文件被编译成机器码文件时&#xff0c…

DC-Windows备份(23国赛真题)

2023全国职业院校技能大赛网络系统管理赛项–模块B:服务部署(WindowServer2022) 文章目录 题目配置步骤在DC1上备份系统状态到D:\共享文件夹所有用户具有读/写权限验证查看DC1备份成功的截图在InsideCli上查看备份文件(查看文件夹安全属性)题目 在DC1上备份系统状态到D:\,…

Linux实验记录:使用firewalld

前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: RHEL8系统中集成了多款防火墙管理工具&#xf…

Qt之QLabel介绍

概述 QLabel是QT界面中的标签类,它从QFrame下继承,QLabel 类代表标签,它是一个用于显示文本或图像的窗口部件。我们主要介绍一下QLabel的一些简单的使用。 设置颜色背景色和字体的颜色大小 字体及颜色 设置文字使用的是setText函数。 QStri…

一文彻底搞懂redis数据结构及应用

文章目录 1. Redis介绍2.五种基本类型2.1 String字符串2.2 List列表2.3 Set集合2.4 Zset有序集合2.5 Hash散列 3. 三种基本类型3.1 Bitmap (位存储)3.2 HyperLogLogs(基数统计)3.3 geospatial (地理位置) 4. Stream详解4.1 Stream…

小土堆pytorch学习笔记002

目录 1、TensorBoard的使用 (1)显示坐标: (2)显示图片: 2、Transform的使用 3、常见的Transforms (1)#ToTensor() (2)# Normalize() (3&…

Java基础—面向对象—19static关键字详解、抽象类、接口、N种内部类

1、static关键字 匿名代码块、静态代码块、构造方法 静态代码块是在类加载的时候执行,仅执行一次 匿名代码块在调用构造函数之前 验证如下图: 2、静态导入包(可能很多人听都没听过) 3、Math是用final关键字的,fina…

Mybatis-Plus扩展

7 MybatisX插件[扩展] 7.1 MybatisX插件介绍 MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。 安装方法:打开 IDEA,进入 File -> Settings -> Plugins -> Browse Repositories,输入 mybatisx 搜索并安装。 功…