Lecture13_光线追踪1(Whitted-Style Ray Tracing)_GAMES101 课堂笔记

2023-11-07

引入光线追踪目的:
  1. 因为光栅化不能很好地处理全局效果,例如:
    • 软阴影:光栅化需要经过两个过程才能形成软阴影;
    • Glossy 反射:既有反射,又有本身材质的粗糙性影响;
    • 间接反射:光线在空间中会反射很多次,很难渲染。
  2. 光栅化速度快,但是质量并不好,表现得是相似的东西;光线追踪很精确,效果很真实,不过速度很慢。(光栅化可以达到实时,但是光线追踪需要离线。)

第一部分:光线追踪算法基础

一、光线定义:

  1. 光线沿着直线传播。(本课程不考虑光的波动性)
  2. 光线之间如果交叉不会互相碰撞。(假设)
  3. 光线从光源发出可以到达人眼。(但是物理上认为光线在路径你转不变—— Reciprocity(光可逆性))

二、光线投射(Ray Casting)

(一)定义
  1. 通过将光源逐像素投射生成一张图片。
  2. 通过投射光线检查阴影。
(二)生成过程

下图例子是照射一个透明物体,会分别产生 ② 折射光线和 ④反射光线,在分别照射出去为③、投射到物体上。最后将照射在物体上的几个黑点连接到点光源(light source),如果未被遮挡,则叠加计算到从eye point(camera point)中投射出来的像素中。使用着色模型(例如:Blin Phong模型)进行着色。

观察上图,可知四根shadow rays,其中长方形投射的光线被三角形挡住,因此该像素点为其他那根光线的累加值。

(三)光线等式

光线通过原点(O点)和方向(\(\overrightarrow d\))决定。公式如下:

(四)光线和球面角点


光线:\(r\left(t\right) = o +td,0 \leq t < \infty\)
球面:$ p:(p-c)^2 - R^2 = 0$
交点P: 交点P必须同时满足射线方程和球面方程。
求解交点:\((o+td-c)^2 - R^2 = 0\)
求解交点P过程

(五)光线和三角形网格交点
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lecture13_光线追踪1(Whitted-Style Ray Tracing)_GAMES101 课堂笔记 的相关文章

  • Docker-compose部署Nacos启动时报错 Failed to create database ‘/data/nacos/data/derby-data‘

    Docker compose部署Nacos启动时报错Failed to create database data nacos data derby data 部署Nacos版本是2 2 1 启动时候报错 Failed to create d
  • STM32---RTC(Real Time Clock)

    文章目录 前言 STM32 RTC Real Time Clock 一 RTC概述 二 详细描述 三 中断配置注意事项 1 所有RTC中断均与EXTI控制器相连 2 要使能RTC闹钟中断 需按照以下顺序操作 3 要使能RTC唤醒中断 需按照
  • Linux下查看和监控GPU 信息的工具汇总

    GPU信息查看 要获取显卡信息 只有两种可能 一种是通过系统的API访问 或者直接读取 dev 下相关文件的状态 另一种方式是通过BIOS读取 1 通过PCI查看 通用的方法 通过lspci查看 lspci grep i vga 前边的序号
  • 平面设计矢量绘图软件 CorelDRAW 2019简体中文特别版 Win/Mac

    CorelDraw 2019回归Mac并进入网络经过近20年的努力 Corel再次吸引Mac用户加入到CorelDraw Graphics Suite 2019大家庭 Corel在2001年不可避免放弃了其Mac版CorelDraw产品 1
  • 实践教程|使用Stable Diffusion图像修复来生成自己的目标检测数据集

    作者丨R dig par Gabriel Guerin 来源丨AI公园 深度学习模型需要大量的数据才能得到很好的结果 目标检测模型也是一样 要训练一个YOLOv5的模型来自动检测你最喜欢的玩具 你需要拍几千张你的玩具在不同上下文中的照片 对
  • er图的主键外键_卓象科技:MYSQL外键的优缺点

    MYSQL外键是什么 定义 外键是相对于主键说的 是建立表之间联系的必须的前提 例如 这里有两张 user 用户 表和qx 权限 表 user中gid是用户权限id 而gid是依赖于qx中的id 那么qx中的id就是user的外键 也就是当
  • Java增强for循环(学习笔记)

    Java增强for循环 主要用于数组或者集合的增强型for循环 格式 for 声明语句 表达式 代码句子 声明语句 声明新的局部变量 该变量的类型必须和数组元素的类型匹配 其作用域限定在循环语句块 其值与此时数组元素的值相等 表达式 表达式
  • pycharm配置python路径_pycharm如何配置python环境

    pycharm配置python环境的方法是 1 依次点击 File Project Interpreter 2 点击 Show All 选择 Existing Environment 3 选择python的安装路径 点击OK即可 配置方法
  • 安装secureCRT提示sorry的解决办法

    摘自 你的secureCRT还在sorry吗 作者 丶PURSUING 发布时间 2021 03 12 08 21 37 网址 https blog csdn net weixin 44742824 article details 1146
  • WinCE5.0中文模拟器SDK(VS2005)的配置

    WinCE5 0中文模拟器SDK的安装过程不细说了 一路默认即可 下面主要介绍如何配置 使其能在VS2005中正常使用 安装完成后 打开VS2005 点击菜单 工具 选项 设备工具 设备 选择 Windows CE 5 0 ARMV4I E
  • Keil报错:Libraries\CMSIS\stm32f10x.h(298): error: #67: expected a "}"

    原因主要有三点 启动文件 头文件定义 驱动选择不一致 各项如下 1 启动文件 2 头文件定义 3 驱动选择 会导致报错的情况案例 1 启动文件为startup stm32f10x md s C C 的Define为 STM32F10X HD
  • moose安装过程中遇到问题及解决方案

    问题 curl 56 OpenSSL SSL read error 0A000126 SSL routines unexpected eof while reading errno 104 解决方案 未使用vpn 下载速度慢 可多次执行命令
  • [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)

    使用暴风魔镜SDK来操作 将魔镜的摄像头拖放到项目中 将MoJingVrHead的Script剪切到CamRoot中 这个时候能看到显示2个物体了 不过使用的Canvas还是显示一个 调整Canvas的属性 使其显示2份 步骤一 将Rend
  • Linux下杀死指定命令进程

    ps grep cat awk F print 1 xargs kill 9 执行如下 在网上搜到其他不一样的方式 也在此贴一下 https www jianshu com p 80b141746fae
  • 深入理解JS闭包

    关于JS中闭包的理解 相信很多人都和笔者一样刚开始很是困惑 笔者也是在看了很多前辈的文章后 总结出一点自己的理解 记录与此 囿于笔者水平有限 若有错误之处 恳请不啬赐教 你可以在一个函数里面嵌套另外一个函数 嵌套 内部 函数对其容器 外部
  • Windows电脑怎么设置局域网内共享磁盘?

    前言 我有一台主机硬盘容量比较大 想做为一个共享硬盘 方便我其他笔记本能够往这台硬盘传输文件 想到的最好最快的方法就是通过局域网内部进行文件传输 通过局域网共享磁盘 这种方法也是非常便捷的 那如何设置操作呢 请详细看下文 局域网共享磁盘 共
  • 用QEMU虚拟国产飞腾+麒麟环境

    1 简述 由于调试 测试需要飞腾主机及麒麟的环境 但是飞腾主机资源有限 于是便尝试了下在Qemu下虚拟出来一个ARM主机用来作为测试环境 本文介绍如何在Qemu虚拟的ARM环境下安装麒麟操作系统 2 安装过程 2 1 准备 本次安装需要准备
  • 什么是分布式系统?

    分布式系统是由多个独立的计算机或计算节点组成的系统 这些节点通过消息传递或共享数据的方式进行协调和通信 以实现共同的目标 分布式系统的设计目标是提高系统的可靠性 可扩展性 性能和容错性 在一个分布式系统中 各个计算机节点之间相互合作 共同完
  • .NET Framework简介

    1 什么是 NET Framework NET Framework 是支持生成 运行下一代应用程序和XML Web Services的内部Windows组件 它简化了在高度分布式Internet环境中的应用程序开发 NET Framewor
  • python之数值类型数据及运算

    数据类型 数据类型分为 字符串 str 整型 int 浮点型 float 负数 complex 布尔型 bool 一 字符串 1双引号 单引号括起来的 2双引号开头 结尾 xxx 3单引号开通 结尾 xxx 4不能一边单一边双 5多行字符串

随机推荐

  • iOS 为app生成下载链接,并生成二维码

    1 打开这个网址 http aso100 com 在此处输入app名称 点搜索 2 看 第一个就是我们的app 下一步点击图标 3 点击app id 4 看连接出来了 5 最后到这个网站生成二维码 http 2bai com cn hao2
  • Vue2中使用高德地图(Loader )

    1 需求 根据输入的地址 地图显示地址的位置 2 准备工作 2 1 注册高德开放平台账户 并完成认证 根据具体实际情况 完成个人开发或者企业开发认证 高德开放平台https console amap com 2 2在应用管理 我的应用中添加
  • 斗地主老输?只能领低保?看我用Python写一个AI出牌器!现在一亿欢乐豆了!

    前言 最近在网上看到一个有意思的开源项目 快手团队开发的开源AI斗地主 DouZero 今天我们就一起来学习制作一个基于DouZero的欢乐斗地主出牌器 看看AI是如何来帮助我们斗地主 赢欢乐豆 实现财富自由的吧 首先一起来看看AI斗地主出
  • View那些事儿(1) -- View绘制的整体流程

    写在开头 Android的知识体系十分庞大 在Android的学习道路上难免会遇到学习了新东西就忘了旧东西的情况 本系列文章主要是对自己对View的学习过程进行一个深入的理解与总结 当然还结合自己在实际项目中的一些体会写了一些东西 当用户打
  • LINUX 下 用C语言编写 TCP/IP通信的 sqlite3数据库服务器

    一 功能需求 我们首先明确一下 我们要制作的这个小服务器 需要具备什么功能 1 1 用户的注册和登录 使用sqlite3数据库 插入新的用户和查询用户的名字和密码是否匹配 1 2 查询单词 单词及其解释中 保存在一个文本文件当中 需要打开文
  • Android 12(S) 图形显示系统 - 示例应用(二)

    1 前言 为了更深刻的理解Android图形系统抽象的概念和BufferQueue的工作机制 这篇文章我们将从Native Level入手 基于Android图形系统API写作一个简单的图形处理小程序 透过这个小程序我们将学习如何使用Nat
  • spring boot配置dubbo(properties)

    spring boot与dubbo配置 properties dubbo和zookeeper配合使用 具体的它们之间的配置这里不说了 一 spring boot与dubbo配置有两种方式 1 spring boot在自己的配置文件appli
  • ScratchJr-ScratchJr介绍

    ScratchJr是什么 ScratchJr 是一个入门级的编程语言 它可以让幼儿 5 7岁 创建互动的故事和游戏 孩子利用图形化的程序积木让角色移动 跳跃 舞蹈 唱歌 孩子也可以利用绘图编辑器绘制自己的角色 用麦克风录制自己声音 用照相机
  • QT中野指针问题。

    错误提示 Signal received The inferior stopped because it received a signal from the Operating System Signal name SIGSEGV Sig
  • 服务器共享文件更改名称报错,服务器文件修改

    服务器文件修改 内容精选 换一换 本节操作指导用户实现同一个子网的Windows弹性云服务器之间文件共享 共享文件的云服务器在同一个子网下 且网络互通 在云服务器右下方的网络图标处 右键单击 打开网络和共享中心 打开网络和共享中心单击 更改
  • mysql规范

    数据库表设置规范 字符集一般选择utf8mb4 MySQL5 5 3以后支持 因为utf8mb4是utf8的超集并完全兼容utf8 能够用四个字节存储更多的字符 排序规则一般选择utf8mb4 general ci 比较和排序的时候更快 一
  • 编写一个算法来判断一个数是不是“快乐数”。

    一个 快乐数 定义为 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 然后重复这个过程直 到这个数变为 1 也可能是无限循环但始终变不到 1 如果可以变为 1 那么这个数就是快乐数 示例 输入 19 输出 true 解释 1
  • 用VBS脚本查询纯真IP库QQWry.dat(转)

    查询给的IP地址所在的国家 ADSL服务商名称 前提 需要提供一个纯真的IP库 这个可以只需将从网上搜索QQWry dat进行搜索这个文件下载即可 然后将该文件放到与该脚本同目录下即可 原文地址 http demon tw programm
  • CSMA/CD协议原理及作用

    CSMA CD Carrier Sense Multiple Access with Collision Detection 协议是一种通信协议 它用于在以太网网络中解决多端口同时发送数据的冲突问题 原理 Carrier Sense 在发送
  • jvm的学习方法

    jvm详解 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 SmartyPa
  • debug常规的基本使用

    1 debug启动 在需要的调试的地方打上断点 然后右键debug启动 2 窗口调试功能 1 终止 程序终止 2 放行 有断点则调到下一个断点 没有则直接有运行完 3 跳到下一行 4 进入方法 3 快捷键 F8 跳到下一行 F9 放行 到下
  • Pandas提取数据的几种方式

    文章目录 前言 Pandas读取数据的几种方式 1 read csv 2 read excel 3 read sql 总结 前言 快期末了 数据挖掘的大作业需要用到python的相关知识 这太难为我这个以前主学C 的人了 不过没办法还是得学
  • Oracle 9i中表的在线重定义

    Oracle 9i中表的在线重定义 今天遇到要把数据库中的某张表改成分区表 而且该表在别的地方还有其他的注册信息 如果自己手工建一个分区表的替代该表的话 那就得要手工地去执行该表在其他地方的注册 所以不想删除该表再手工创建同名的分区表 想到
  • 前端预览下载pdf文件

    合同预览 拿到需要合同显示的数据 后台需要的参数 将参数经过base64编码传给后台 后段规定 问题 base64可能会将某些字符串符号编译为空格 后台返回一个文件地址 创建a标签 href指向返回的文件地址 function viewCo
  • Lecture13_光线追踪1(Whitted-Style Ray Tracing)_GAMES101 课堂笔记

    引入光线追踪目的 因为光栅化不能很好地处理全局效果 例如 软阴影 光栅化需要经过两个过程才能形成软阴影 Glossy 反射 既有反射 又有本身材质的粗糙性影响 间接反射 光线在空间中会反射很多次 很难渲染 光栅化速度快 但是质量并不好 表现