【章节概览】

距离贴图(distance map)是一种在像素着色器中给对象添加小范围位移映射的技术。这章中详细介绍了使用距离函数的逐像素位移贴图(Per-Pixel Displacement Mapping with Distance Functions)技术。

【核心要点】

这章中提出了距离贴图(Distance Mapping)/距离函数(Distance Functions)的概念,是一种基于隐式曲面光线追踪的位移映射快速迭代技术(a fast iterative technique for displacement mapping based on ray tracing of implicit surfaces)。实际表明,距离函数中包含的信息,允许我们在光线远离表面时前进更大的距离,并保证不会跨得太远以至于在渲染的几何体上产生缝隙。实现的结果非常高效:会在很少的迭代次数内收敛。

传统的位移映射是“对于这片几何体,它最终映射到了图像中的哪个像素”,我们的算法是“对于图像中的这个像素,我们可以看到哪片几何体”。第一个问题利用了光栅化算法,第二个问题利用了光线跟踪算法。

常见的光线跟踪算法是以均匀的距离对高度图采样,测试视线是否与表面相交,但却存在下列问题:如果采样距离远大于一个纹素,就不能保证在样本之间没有错过一个交点。

均匀步长采样难以解决的问题

本文算法预先计算好空间中任一点到该表面最近的距离,将结果存入3D图中,在进行光线追踪计算的时候,选择该点到表面最近的距离向量作为步长进行迭代,从而避免了均匀步长带来的问题,并且加速了收敛得到结果

最终,算法在保持实时性能的同时显着增加了场景的感知几何复杂度。

【关键词】

距离贴图(Distance Mapping)

距离函数(Distance Functions)

位移贴图(Displacement Mapping)

GPU Gems2 - 8 使用距离函数的逐像素位移贴图相关推荐

  1. GPU Gems1 - 15 逐像素光照的可见性管理

    这章讲到了可见性在逐像素渲染光照场景中的作用,也考虑如何使用可见性减少必须渲染的批次数量,从而改善性能. 假设一个非常简单的场景,一个房间,因为房间的不同部位是不同的材质,所以将其分为8个batch, ...

  2. OpenCV(总结篇)图像逐像素访问(三种操作:指针、迭代器、at()函数)

    目录 概述 1.指针访问 2.迭代器访问 3.at()函数访问 总代码 效果 参考资料 概述 访问图像像素值是图像处理的基本操作.OpenCV提供了很多访问方式,比较常用的三种方式:  (1) 通过指 ...

  3. OpenCV(二)逐像素的图像复制、图像边缘检测(自实现和API实现)

    目录 一.逐像素的图像复制 1.代码 2.效果 二.简单的图像边缘检测(自实现) 0.图像处理的卷积运算 1.简单模糊处理 2.强化边缘处理 1.原理 2.代码 3.效果 三.简单的图像边缘检测(调用 ...

  4. OpenGL perpixelgloss逐像素光泽度的实例

    OpenGL perpixelgloss逐像素光泽度 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <vmath.h> #inclu ...

  5. GPU Gems2 - 7 带位移映射的细分表面自适应镶嵌

    文章参照该文 https://zhuanlan.zhihu.com/p/38411575 [章节概览] 这章介绍了如何使用可选的位移贴图(Displacement Mapping)执行Catmull- ...

  6. 在场景中添加光线——给光线添加更高的细节:逐像素光照

    问题 在前两个教程中,是在每个顶点中计算明暗程度,对三角形的每个像素需要对这个值进行插值.所以这叫做逐顶点光照(per-vertex lighting,又叫做高洛德着色,高洛德浓淡Gouraud sh ...

  7. 【GLSL教程】(七)逐像素的光照

    逐像素的方向光(Directional Light per Pixel) 这一节将把前面的shader代码改为逐像素计算的方向光.我们需要将工作按照两个shader拆分,以确定哪些是需要逐像素操作的. ...

  8. cv图像预处理——逐像素变换

    cv图像预处理--逐像素变换 标签:计算机视觉 逐像素变换 对图像中的每个像素逐个进行处理. 白化(类似于标准化) 白化的目的是要为图像的平均亮度水平和对比度提供波动的恒定性.其中每个像素进行如下转换 ...

  9. 如何在unity的前向渲染路径ForwardBase中同时使用逐顶点和逐像素光源

    前言:问题来自于<Unity Shader入门精要>中,第195页.书中给出了如何在forwardbase和forwardadd中计算逐像素光照,并没有给出如何同时进行逐顶点的光照,因此当 ...

最新文章

  1. erlang在NotePad++下的高亮
  2. eclipse的jsp第一行代码报错_机器学习之AdaBoost算法及纯python代码手工实现
  3. 聚类 | 超详细的性能度量和相似度方法总结
  4. 24、JSON与OC互相转化
  5. Cacti使用配置及FAQ
  6. Linux下的基本命令详解,Linux基本命令详解-1.0
  7. 程序员你写的代码,被人挖出了黑产
  8. java自用代码(包括:新建单线程、创建文件夹及文件、map转为json并将json写入txt、文件剪切或改名)...
  9. java 根据类名示例化类_Java即时类| plusMillis()方法与示例
  10. storm计数器(小白看懂系列)
  11. android update sdk --no-ui,CircleCI Android constraintLayout不起作用
  12. idea上一步下一步快捷键_【MySQL】一步一步的教你在windows下安装MySQL5.7
  13. 动态加载so库的实现方法与问题处理
  14. mysql小问题集锦
  15. Matplotlib常用绘图示例
  16. 异速联未获取服务器信息,异速联客户端连接服务器的方法
  17. hse是什么意思的缩写_什么是HSE
  18. 穆迪分析宣布推出云服务,助力银行实现监管合规
  19. 中标麒麟安装达梦数据库DM8
  20. Python中切片详细讲解

热门文章

  1. server新手引导 sql_Web SQL初体验之新手指导(全功能解析)
  2. latex中怎样写上标_LaTex:参考文献引用的方法
  3. python hbase_Python操作Hbase
  4. 无头虚拟化服务器,在 Ubuntu 18.04 LTS 上使用 KVM 配置无头虚拟化服务器
  5. java invokeall 阻塞_ExecutorService.invokeAll并关闭
  6. Rumor CodeForces - 893C(并查集)
  7. FP Tree算法原理总结(转)
  8. jquery多维对象计算个数_多维尺度分析理论概述
  9. 不要轻易和少妇上床:金融危机是这…
  10. PAT_B_1040_Java(25分)