GPU Gems2 - 8 使用距离函数的逐像素位移贴图
【章节概览】
距离贴图(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 使用距离函数的逐像素位移贴图相关推荐
- GPU Gems1 - 15 逐像素光照的可见性管理
这章讲到了可见性在逐像素渲染光照场景中的作用,也考虑如何使用可见性减少必须渲染的批次数量,从而改善性能. 假设一个非常简单的场景,一个房间,因为房间的不同部位是不同的材质,所以将其分为8个batch, ...
- OpenCV(总结篇)图像逐像素访问(三种操作:指针、迭代器、at()函数)
目录 概述 1.指针访问 2.迭代器访问 3.at()函数访问 总代码 效果 参考资料 概述 访问图像像素值是图像处理的基本操作.OpenCV提供了很多访问方式,比较常用的三种方式: (1) 通过指 ...
- OpenCV(二)逐像素的图像复制、图像边缘检测(自实现和API实现)
目录 一.逐像素的图像复制 1.代码 2.效果 二.简单的图像边缘检测(自实现) 0.图像处理的卷积运算 1.简单模糊处理 2.强化边缘处理 1.原理 2.代码 3.效果 三.简单的图像边缘检测(调用 ...
- OpenGL perpixelgloss逐像素光泽度的实例
OpenGL perpixelgloss逐像素光泽度 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <vmath.h> #inclu ...
- GPU Gems2 - 7 带位移映射的细分表面自适应镶嵌
文章参照该文 https://zhuanlan.zhihu.com/p/38411575 [章节概览] 这章介绍了如何使用可选的位移贴图(Displacement Mapping)执行Catmull- ...
- 在场景中添加光线——给光线添加更高的细节:逐像素光照
问题 在前两个教程中,是在每个顶点中计算明暗程度,对三角形的每个像素需要对这个值进行插值.所以这叫做逐顶点光照(per-vertex lighting,又叫做高洛德着色,高洛德浓淡Gouraud sh ...
- 【GLSL教程】(七)逐像素的光照
逐像素的方向光(Directional Light per Pixel) 这一节将把前面的shader代码改为逐像素计算的方向光.我们需要将工作按照两个shader拆分,以确定哪些是需要逐像素操作的. ...
- cv图像预处理——逐像素变换
cv图像预处理--逐像素变换 标签:计算机视觉 逐像素变换 对图像中的每个像素逐个进行处理. 白化(类似于标准化) 白化的目的是要为图像的平均亮度水平和对比度提供波动的恒定性.其中每个像素进行如下转换 ...
- 如何在unity的前向渲染路径ForwardBase中同时使用逐顶点和逐像素光源
前言:问题来自于<Unity Shader入门精要>中,第195页.书中给出了如何在forwardbase和forwardadd中计算逐像素光照,并没有给出如何同时进行逐顶点的光照,因此当 ...
最新文章
- erlang在NotePad++下的高亮
- eclipse的jsp第一行代码报错_机器学习之AdaBoost算法及纯python代码手工实现
- 聚类 | 超详细的性能度量和相似度方法总结
- 24、JSON与OC互相转化
- Cacti使用配置及FAQ
- Linux下的基本命令详解,Linux基本命令详解-1.0
- 程序员你写的代码,被人挖出了黑产
- java自用代码(包括:新建单线程、创建文件夹及文件、map转为json并将json写入txt、文件剪切或改名)...
- java 根据类名示例化类_Java即时类| plusMillis()方法与示例
- storm计数器(小白看懂系列)
- android update sdk --no-ui,CircleCI Android constraintLayout不起作用
- idea上一步下一步快捷键_【MySQL】一步一步的教你在windows下安装MySQL5.7
- 动态加载so库的实现方法与问题处理
- mysql小问题集锦
- Matplotlib常用绘图示例
- 异速联未获取服务器信息,异速联客户端连接服务器的方法
- hse是什么意思的缩写_什么是HSE
- 穆迪分析宣布推出云服务,助力银行实现监管合规
- 中标麒麟安装达梦数据库DM8
- Python中切片详细讲解
热门文章
- server新手引导 sql_Web SQL初体验之新手指导(全功能解析)
- latex中怎样写上标_LaTex:参考文献引用的方法
- python hbase_Python操作Hbase
- 无头虚拟化服务器,在 Ubuntu 18.04 LTS 上使用 KVM 配置无头虚拟化服务器
- java invokeall 阻塞_ExecutorService.invokeAll并关闭
- Rumor CodeForces - 893C(并查集)
- FP Tree算法原理总结(转)
- jquery多维对象计算个数_多维尺度分析理论概述
- 不要轻易和少妇上床:金融危机是这…
- PAT_B_1040_Java(25分)