这是本书中第一个实战实例,使用的是depth imposter方法来实现的Depth of view(景深),不过这个实现方法有一个缺点,就是模糊跟清晰的过渡太过明显,很容易就能看出来有一个分割平面将物体分成了模糊与清晰的两部分(书中截图不是很清晰,我多截了几张比较清晰的分割面)。

关于算法上边,没有什么好说的,要说的就是ImposterFar Pass和ImposterNear Pass中的State Block设置时应该注意的问题。

在这个实例中,我们用到了三个可渲染纹理(Renderable Texture,下文简称RT),其中一个用于物体渲染(即Render Target),另外两个用于模糊图像(即Blur1,Blur2)。

物体渲染部分采取的不是Z-buffer而是W-buffer。物体绘制完成后对Render Target进行了若干次Blur(不改变该Render Target本身,而是在另外的两个RT中交替模糊处理),等到处理完毕,我们就有了两幅待混合的图像(分别是Render Target和Blur1。Blur2中存放的是处理过程中的图像,没有用处)。

在ImposterFar Pass中(远端模糊),只有Render Target像素深度大于Blur1像素深度时,茶壶的远端会模糊,这是我们需要将Blur1中的像素绘制到Render Target中,由于Blur1属于源像素,而Render Target属于目标像素,因此我们绘制远端模糊时,使用的ZFUNC为LESSEQUAL。反之,我们绘制ImposterNear Pass时,使用的是GREATEREQUAL。

注:推开光盘代码自己从头写,最容易犯得一个错误就是Camera中近平面设置,设置的过小(比如把near plane设置为1,而far plane设置为1500),根本就不会得到任何清晰效果,全都是模糊的(目前我也没搞明白是什么原因   :(  )。Near plane的1是系统相机默认的,改的稍微大一些就可以看出来模糊效果,我用的是50。

转载于:https://www.cnblogs.com/infintyward/p/3194684.html

Chapter 6-Blurring Things Up之Depth Imposter相关推荐

  1. Chapter 6-Blurring Things Up之Using Alpha Channel

           该方法将物体绘制到RT时,和上一例子(depth imposter)仅有一个细微的差别,就是将W-buffer计算出来,保存到物体绘制RT的Alpha通道中,这里我们不讲解如何存储到Al ...

  2. [E]PSM算法简析

    转自: http://www.graphicsgeeks.org/index.php?title=PSM&oldid=153 (图形学极客) 参照:http://www.opengpu.org ...

  3. dx12 龙书第四章学习笔记 -- Direct3D的初始化

    1.预备知识: ①Direct3D 12概述: 通过Direct3D这种底层图形应用程序编程接口(Application Programming Interface, API),即可在应用程序中对图形 ...

  4. Real-Time Rendering——Chapter 7 Advanced Shading

    https://blog.csdn.net/yjr3426619/article/details/81098626 介绍brdf https://zhuanlan.zhihu.com/p/213761 ...

  5. Real-Time Rendering——Chapter 9 Global Illumination

    radiance is the final quantity computed by the rendering process. 渲染的最终结果是计算辐射率.我们使用反射率方程进行求解. so fa ...

  6. MongoDB:The Definitive Guide CHAPTER 2 Getting Started

    MongoDB is very powerful, but it is still easy to get started with. In this chapter we'll introduce ...

  7. M001: MongoDB Basics Chapter 3: Deeper Dive on the MongoDB Query Language学习记录

    M001: MongoDB Basics Chapter 3: Deeper Dive on the MongoDB Query Language学习记录 运行环境 操作系统:windows 10 家 ...

  8. 《C++ Templates》笔记 Chapter 12 Fundamentals in Depth-Chapter 13 Names in Templates

    文章目录 Chapter 12 Fundamentals in Depth 12.1 Parameterized Declarations 12.1.1 Virtual Member Function ...

  9. G-FAQ – Why is Bit Depth Important?

    直接抄: https://apollomapping.com/2012/August/article15.html For this month's Geospatial Frequently Ask ...

最新文章

  1. ATS插件channel_stats源码分析解读
  2. 基于注解的 IOC 配置——创建对象(Component、Controller、Service、Repository)注入数据(Autowired、Qualifier、Resource、Value)
  3. python语法错误修改_python基础之错误、调试(异常处理)
  4. 贝叶斯公式的个人理解
  5. SAP ABAP和Hybris Commerce的Sample数据
  6. java maven mainclass_使用Maven运行Java main的3种方式
  7. cookie 和 token 都存放在 header 中,为什么不会劫持 token?____token和cookie的区别
  8. angular-数据绑定的最佳实践
  9. 移远ec20驱动_移远通信Cat 1产品天团迎来新成员,引爆中速连接市场
  10. 并发编程的那些事。(一)
  11. Android 基于阿里云播放器实现仿抖音播放(一)
  12. 二叉树非递归遍历(先序、中序、后序)(C++)
  13. 《沧浪之水》:现实从来不怕谁倔犟
  14. 检测图像中的椭圆 并求其长短轴...
  15. 欧姆龙自动化小型连接器端子台XW2K系列
  16. 图文混排模板HTML
  17. 质谱和蛋白质组学领域简述
  18. 都这个点了,尽然还写博客啊,总结
  19. 【Linux驱动开发】Linux 自带按键驱动
  20. RecyclerView记录其滚动位置,刷新时此条数据置顶

热门文章

  1. 世界上服务器最多的游戏,魔兽科普 国服人最多的几个服务器都什么来头
  2. code::blocks自动补全诸如socket或者其它一些库中的函数
  3. 基于springboot的智能美食点餐配送系统
  4. 好好说话之Tcache Attack(1):tcache基础与tcache poisoning
  5. H5活动之家平台,开启国庆双十一福利,活动全免费
  6. android 9图工具位子,Android自定义9宫格图片视图
  7. 中国建设银行信息技术岗笔试
  8. luogu P3527 [POI2011]MET-Meteors
  9. yamlip 安装_SpringBoot中yaml配置对象
  10. win10 设备管理器显示便捷设备