快速跳转:
1、矩阵变换原理Transform(旋转、位移、缩放、正交投影、透视投影)
2、光栅化(反走样、傅里叶变换、卷积)
3、着色计算(深度缓存、着色模型、着色频率)
4、纹理映射(重心坐标插值、透视投影矫正、双线性插值MipMap、环境光遮蔽AO)
5、几何(距离函数SDF、点云、贝塞尔曲线、曲面细分、曲面简化)
6、阴影映射(Shadow Mapping)
7、光线追踪原理(线面求交、预处理光追加速)
8、辐射度量学与光线追踪
9、蒙特卡洛路径追踪(Path Tracing)(光源采样)
10、材质(BRDF)(折射、菲涅尔项、微表面模型、各向异性材质)
11、渲染前沿技术介绍(双向路径追踪BDPT、MLT、光子映射、实时辐射度、外观建模)
12、相机(视场、曝光、光圈(F-Stop)、薄棱镜近似、CoC、景深)
13、光场、颜色与感知
14、动画(物理模拟、质点弹簧系统、粒子系统、运动学、动作捕捉、欧拉方法)


阴影映射(Shadow Mapping)

之前计算着色的时候,并没有考虑遮挡,即有可能着色点跟光源之间会有别的物体或者是自身的某个部位遮挡住光线,这种情况下应该有阴影产生

  • ShadowMapping特点
    (1)在图像空间中计算的,即生成阴影时不需要场景的几何信息
    (2)会产生走样现象
    (3)只能生成点光源的阴影(硬阴影)

  • 阴影映射的思想
    -不在阴影里:能被光源和摄像机同时看道
    -在阴影里:能被相机看到,但不能被光源看到

  • 生成过程
    Step1:在光源处做光栅化,得到光栅图像(不重要)和深度图(二维数组,每个像素存放深度)

    Step2:从摄像机做光栅化,得到光栅图像和深度图(不重要)

    Step3: 把摄像机得到的图像中的每个像素所对应的空间中物体的点投影回光源处,得到该点在光源处的某个特定像素处存放的深度值,将此数值跟该点到光源的距离(相减即得)做比较
    if (计算距离 ==深度缓存) 则该点不在阴影里
    if (计算距离 != 深度缓存) 则该点在阴影里

  • 比如下图,相机处的图像结果里面能看见那个点,用这个点的坐标减去光源的坐标取模得到距离d不等于该点对光源做投影得到的像素位置所存放的深度值z,所以这个点必然在阴影之中

  • 遍历所有像素后得到的光栅化阴影映射结果

    光源处光栅化的结果:(只要深度图,不要光栅图像)

    相机处光栅化结果:(只要光栅图像,不要深度图)

  • 但由于浮点数精度问题,基本不太可能相等,所以会有各种瑕疵。

  • 老生常谈的 又涉及到采样频率了(阴影贴图分辨率),每个像素做一次or多次采样?
    采样率低有锯齿,采样率高耗性能。

硬阴影、软阴影

  • 软阴影的必要条件是光源有一定的大小
    (日蚀)

GAMES101图形学专栏

计算机图形学【GAMES-101】6、阴影映射(Shadow Mapping)相关推荐

  1. openGL实现阴影映射(Shadow Mapping)

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 阴影映射 阴影映射原理 二.使用步骤 显示效果 源码下载 参考 前言 阴影是光线被阻挡的结果:当一个光源的光线由于其他物体的阻挡不能 ...

  2. 计算机图形学阴影的的分类,计算机图形学8_光照模型与阴影处理_.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp图形图像 计算机图形学8_光照模型与阴影处理_.pdf5页 本文 ...

  3. 图形学笔记(十一)光线追踪——Shadow Mapping、光线追踪、光线投射、软硬阴影、光线与物体交点、AABB包围盒

    图形学笔记(十)几何2 -- 曲面细分(Loop细分.Catmull-Clark细分).曲面简化(边坍缩.二次度量误差).曲面正则化 图形学笔记(十二)光线追踪2--使用AABB包围盒加速光线追踪.空 ...

  4. 阴影(shadow mapping)(硬阴影)

            着色是一种局部现象,只考虑着色点自己.光源.摄像机,如果我要算出它的着色,完全不考虑其它物体,甚至自己的其它部分对这个着色点的影响.而事实上如果有其它物体挡在 shading poin ...

  5. 【Shading】Shadow Mapping 阴影映射

    课程来源:GAMES101-现代计算机图形学入门-闫令琪 Lecture12 GAMES101 现代计算机图形学入门 主讲老师:闫令琪,UCSB 课程主页:https://sites.cs.ucsb. ...

  6. 计算机图形学【GAMES-101】11、渲染前沿技术介绍(双向路径追踪BDPT、MLT、光子映射、实时辐射度、外观建模)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  7. 计算机图形学【GAMES-101】13、光场、颜色与感知

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  8. 计算机图形学【GAMES-101】14、动画(物理模拟、质点弹簧系统、粒子系统、运动学、动作捕捉、欧拉方法)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  9. 计算机图形学【GAMES-101】8、辐射度量学与光线追踪

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

最新文章

  1. undefined reference to 'typeinfo for android::Thread'
  2. python 中time和datetime_python中time模块与datetime模块的详解
  3. oracle使一个字段自增,Oracle数据库实现一个字段自增
  4. python的while循环时if不能打印_Python if语句在while循环中没有响应
  5. Linux学习私人笔记-Vim
  6. Java常用正则表达式大全(史上最全的正则表达式-匹配中英文、字母和数字)
  7. 用Python做一个游戏辅助脚本,完整编程思路分享!
  8. 关于司法行政管理系统
  9. 漫画 | 揭密微信诞生记之民间传说
  10. Flutter中StatefulWidget生命周期小记
  11. 图数据库 Dgraph 学习笔记
  12. epub文件打开乱码_什么是EPUB文件(以及如何打开一个文件)?
  13. linux中shell命令行缩进,Linux下几个实用的bash命令 | 旺旺知识库
  14. 一个简单的猜数字游戏(附带关机惩罚)
  15. NC用友启动服务异常
  16. ClickableSpan 去除下划线
  17. 厉害了!麟哥新书登顶京东销量排行榜!
  18. CSS中height:100vh和height:100%的区别是什么?
  19. 从我写程序那天起:我就没有打算写程序
  20. 使用 HTTP 拉取 Docker 镜像

热门文章

  1. java 删除空行_java实现文本文件删除空行的示例分享
  2. [转] 一个iOS开发者的修真之路
  3. SQL语句的执行顺序以及流程
  4. Android自动化测试初探
  5. vb6DataGrid
  6. 代码REVIEW的流程化工作
  7. 利用Vector CANOE/CANalyzer的系统变量System Variables观察CAN信号之间的关系
  8. es6转es5的转码器babel的安装与使用
  9. vue如何配置兼容ie es6转es5
  10. 医学图像处理技术_上海交大---第一章笔记