87.1 建立模型

接下来就是采样啦!

之前,我们遇到过的采样一般都是对撞击点处的上半球面进行采样,比如:

这是因为cos分布对应的夹角是光线和法向量的夹角。

但是,我们这里对应的夹角是光线和镜面反射光线r的夹角。所以,我们需要采样的半球面是这个这样子:

具体采样过程可以参考“ 问题七十一:环境光遮蔽(AmbientOcclusion)”:

http://blog.csdn.net/libing_zeng/article/details/57639455

(只需要在建立正交基时,将原来的n换成r)

但是,有个问题:

有一部分采样点会落在物体表面以下。

针对这个问题的处理方式是:将这部分落在物体表面以下的采样点沿着表面翻转到表面以上:

在程序中只需做如下处理:

87.2 C++代码实现

87.3 测试图形

87.3.1 测试图形(1)

相关代码:

输出图形:

单像素点采样次数为1时:

单像素点采样次数为256时:

87.3.2 测试图形(2)

相关代码:

输出图形:

接下来测试是:改变“模糊指数”exp(其他所有参数如上方测试程序所示,并保持不变),对比输出图形的效果。

exp=10:

exp=100:

exp=1000:

exp=10000:

exp=100000:

exp=1000000:

对比之前的镜面反射模型的图形(之前图形是600*600,现在的图形是400*600):(当“模糊指数exp”足够大时,高光反射模型就非常接近镜面反射模型了。)

87.4 其他说明

完整的代码,参考:http://download.csdn.net/detail/libing_zeng/9781791

Referrance

[1]. Kevin Suffern, Ray Tracing from theGround Up, A K Peters Ltd, 2007.

Q87:间接光照(Indirect Illumination)的高光反射(Glossy Reflcetion)相关推荐

  1. Unity Shader中的基础光照与标准光照模型(自发光、环境光、高光反射、漫反射)、BRDF光照模型

    我们是如何看到这个世界的 从宏观上来说,渲染包含了两大部分 决定一个像素的可见性 决定这个像素上的关照计算 而光照模型就是用于决定一个像素上进行怎样的光照计算 通常来讲,我们要模拟真实的光照环境来生成 ...

  2. Q85:对比“直接光照”和“间接光照”的反射模型

    这里只是罗列"直接光照"和"间接光照"的反射模型的示意图.这一章节的作用主要是:联系之前学过的反射模型(漫反射模型.高光反射模型)和接下来将要学习的反射模型. ...

  3. GPU Gems2 - 13 动态环境光遮蔽与间接光照(Dynamic Ambient Occlusion and Indirect Lighting)

    本文摘自https://zhuanlan.zhihu.com/p/38411575 [章节概览] 这章在讲大家很熟知的环境光遮蔽(Ambient Occlusion , AO). 文中的描述是,介绍了 ...

  4. Q89:全局光照(Global Illumination)——Path Tracing(只用于间接光照)

    89.1 Path Tracing只用于间接光照 根据Path Trace的算法,只有当最终的反射光线撞击到发光材质物体时,才会对最初的撞击点进行"有效"着色,否则着色为" ...

  5. unity入门精要之第6 章 Unity 中的基础光照---实现高光反射光照模型

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 参考 前言 在6.2.4 节中,我们给出了基本光照模型中高光反射部分的计算公式: 从公式可以看出,要计算高光反射需要知道4 个参数:入射 ...

  6. 【PBR】光照与物体的颜色对塑料金属的漫反射与高光反射的探究

    [PBR]光照与物体的颜色对塑料金属的漫反射与高光反射的探究 参与面试时被问到了一个有色金属与塑料在白光照射下,它的漫反射与高光反射的颜色是怎样的.我就想实际操作看看效果如何. 首先,创建一个简单场景 ...

  7. 问题六十八:着色模型(shading model)(1)——反射模型(reflection model)(2.2)——高光反射(specular reflection)

    和diffuse reflection对应的是specular reflection.一直以来,本人都将"specular reflection"理解为"镜面反射&quo ...

  8. Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)

    Unity Shader 学习笔记(33) 全局光照(GI).反射探针.线性空间和伽马空间.高动态范围(HDR) 参考书籍:<Unity Shader 入门精要> [<Real-Ti ...

  9. UE4 间接光照缓存

    照亮环境 尽管Lightmass可以生成静态对象上的间接光照的光照贴图,但像角色这样的动态对象 也需要一种接收间接光照的方法.这个问题可以通过Indirect Lighting Cache(间接光照缓 ...

最新文章

  1. Spring Boot Starters启动器
  2. Windows系统程序设计之结构化异常处理
  3. 编译性语言、解释性语言和脚本语言的区别
  4. LeetCode - Convert Sorted Array to Binary Search Tree
  5. android将拍摄的图片存入sd卡中,Android将图片保存至SD卡上
  6. (85)FPGA显示激励(monitor)
  7. 1.5万人!京东面向2021届高校毕业生开启最大规模校招
  8. 因发生下列错误 无法创建映射网络驱动器_怎么来修复“Windows无法安装所需文件的错误原因”?...
  9. WebDriver使用入门
  10. 点云合并pcl重载“+”
  11. 手机喇叭积灰,一段音波就能清理干净
  12. 应用加速,数字人民币接入多地交通出行场景 | 产业区块链发展周报
  13. 税务会计实务【14】
  14. 2.1 Apache Hadoop、HDFS - Apache Hadoop概述
  15. java 发送 邮件通知 HTML模板 个性邮件 (十分钟内完成集成与调试)
  16. IT项目经理应该做什么
  17. vue中将字符转换成数字的简单做法
  18. opencv3/C++ SURF特征检测
  19. QStatusBar
  20. 现在有哪些可以与微软的Visio相媲美的作图工具?

热门文章

  1. ERP软件管理持续升级 抢占产业先机
  2. 小蚂蚁学习数据结构(26)——题目——输出二叉树上值大于x的算法
  3. 国内域名商.wang总量TOP14统计报告(6月9日)
  4. 华为服务器的中国梦——给客户带来价值
  5. 电子邮件正则表达式-集结号
  6. Mysql server has gone away
  7. 【To Do】LeetCode 28. Implement strStr() 和KMP算法
  8. watershed用法详解
  9. 在ubuntu16上新创建了一个用户,通过xrdp远程连接时出现灰屏,鼠标是“x”号
  10. hibernate框架学习笔记2:配置文件详解