【GAMES101】Lecture 12 阴影 Shadow Mapping

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

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

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

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

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

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

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

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

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

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

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

相关文章

【Spring Boot 3】【@Scheduled】多线程执行定时任务

【Spring Boot 3】【@Scheduled】多线程执行定时任务 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新…

Stable Diffusion系列(四):提示词规则与使用

文章目录 基础规则高级规则插件使用基于相机镜头增强提示词常用提示词总结奇特提示词珍藏 基础规则 所谓提示词,也就是文生图中的文,由连贯的英语单词或句子组成。其最基础的规则是: 不同提示词之间需要用英文逗号分隔,空格和换…

基于大数据的B站数据分析系统的设计与实现

摘要:随着B站(哔哩哔哩网)在国内视频分享平台的崛起,用户规模和数据量不断增加。为了更好地理解和利用这些海量的B站数据,设计并实现了一套基于Python的B站数据分析系统。该系统采用了layui作为前端框架、Flask作为后端…

mfc140.dll找不到了要怎么解决?教你多种修复mfc140.dll的方法

遭遇 mfc140.dll 文件缺失的状况时,首要任务是保持冷静,并深入理解问题所在,随后按照科学的方法来应对这一挑战。本篇文章概述了多种应对策略,从适合新手的基本步骤到针对有技术基础用户的高级方案,各种手段都能有效地…

linux系统查看占用cpu程序

目录 一:top 二: ps 三:perf 四:/proc/stat 五:pidstat 一:top 使用 top 命令:在终端中输入 top 命令,系统会显示当前正在运行的进程和它们的资源占用情况。默认情况下&#…

awk 文本处理工具三剑客

一、什么是awk 1.1 awk 基本概念 awk(语言): 读取一行处理一行 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令。而awk比较倾向于将一行…

【Luna】AirPlaySimulator

AirPlaySimulator 镜像路径的“完整”平台测试器。该工具用于为合作伙伴提供可重复的测试用例。之所以说“完整”,是因为它既充当发送方,又充当SDK,所以这里来自测试文件的数据和来自发送方设备的数据之间没有太大的区别。 #用法: 有两个可能的初始设置步骤: 1)运行AirPl…

gstreamer学习笔记

gstreamer学习笔记 1. GStreamer中文教程1.1. GStreamer的elements仅有四种状态 2. demo2.1. hello-world 1. GStreamer中文教程 GStreamer中文教程 gstreamer-example代码列子 1.1. GStreamer的elements仅有四种状态 GStreamer的elements仅有四种状态,四种状态从…

【网络】:网络套接字(UDP)

网络套接字 一.网络字节序二.端口号三.socket1.常见的API2.封装UdpSocket 四.地址转换函数 网络通信的本质就是进程间通信。 一.网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分,网…

签名证书文件泄漏不要慌,Rotate signing带你无缝更换新签名

先说结论:如果oldkey.jks 泄漏了,可以直接换一个新的签名newkey.jks,然后使用oldkey.jks和newkey.jks共同对新APK进行签名。效果如下: 一、覆盖安装效果是: (一)可覆盖安装情况: 1.oldkey签名的包可以被o…

UE5.1_常用节点说明(经常忘记怎么用?)(常改)

UE5.1_常用节点说明(经常忘记怎么用?)(常改) 1. Gate——门节点。只有当门是Open状态才会执行Exit后面的代码。 Open开门;Close关门;Toggle开门和关门交替。 2. 关于控制ArmLength即控制相机前…

Win10下Fastboot模式下设备无法识别的解决方案

在使用Android Debug Bridge (ADB) 和 Fastboot 工具时,有时可能会遇到Windows 10无法在Fastboot模式下识别Android设备的问题。这种情况通常需要手动安装Bootloader驱动程序,并可能需要禁用驱动程序签名强制。本文将详细介绍如何解决此问题。 问题描述…

计算机是什么做的

背景 虽然我是科班出身的,但是上大学时候,对这些内容并不感兴趣,只是简单的进行做题,考试而已。并没有思考,为啥学计算机组成原理,模电数电,微机原理,单片机,操作系统啥…

vite+vue3+ts项目上线docker 配置反向代理API

这次重点的坑是反向代理。 1。项目中配置代理,为了跨域请求数据 项目根目录中新建vite.config.ts文件 在文件中添加配置代理 注意:其中 /api 和target 的地址后面没有 / 2。在项目根目录中新建Httprequest.ts文件,引入axios,并…

Kotlin快速入门系列8

Kotlin的泛型 与Java一样,Kotlin也提供泛型。泛型,即 "参数化类型",将类型参数化,可以用在类,接口,方法上。可以为类型安全提供保证,消除类型强转的烦恼。声明泛型类的格式如下&…

UDP/TCP协议特点

1.前置知识 定义应用层协议 1.确定客户端和服务端要传递哪些信息 2.约定传输格式 网络上传输的一般是二进制数据/字符串 结构化数据转二进制/字符串 称为序列化 反之称之为反序列化 下面就是传输层了 在TCP/IP协议中,我们以 目的端口,目的IP 源端口 源IP 协议号这样一个五…

路口最短时间问题(100%用例)C卷(JavaPythonC++Node.jsC语言)

假定街道是棋盘型的,每格距离相等,车辆通过每格街道需要时间均为 timePerRoad; 街道的街口(交叉点)有交通灯,灯的周期T(=lights[row][col])各不相同;车辆可直行、左转和右转,其中直行和左转需要等相应T时间的交通灯才可通行,右转无需等待。 现给出 n*m 个街口的交通灯周期…

202413读书笔记|《好好恋爱是件正经事》——希望我们的故事永远崭新得像刚刚开始,永远未完待续

202413读书笔记|《好好恋爱是件正经事》——希望我们的故事永远崭新得像刚刚开始,永远未完待续 明亮的色彩,小红和小绿,哲理又日常治愈的文字,明快的线条,丰富的背景色,星星点点的⭐️斑斓点缀。 是情侣的…

能替代微软AD的国产化方案,搭建自主可控的身份管理体系

随着国产化替代步伐加速,以及企业出于信息安全建设的需要,越来越多的企业和组织开始考虑将现有的微软 Active Directory(AD)替换为国产化的LDAP身份目录服务(也称统一身份认证和管理)系统。本文将介绍一种国…

ABAP EXCEL 转 PDF

DATA: application TYPE ole2_object, workbook TYPE ole2_object, sheet TYPE ole2_object. IF iv_pdf IS NOT INITIAL. CREATE OBJECT application ‘EXCEL.APPLICATION’. CALL METHOD OF application ‘WORKBOOKS’ workbook. CALL METHOD OF workbook ‘OPEN’ EXPORTING…