Q87:间接光照(Indirect Illumination)的高光反射(Glossy Reflcetion)
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)相关推荐
- Unity Shader中的基础光照与标准光照模型(自发光、环境光、高光反射、漫反射)、BRDF光照模型
我们是如何看到这个世界的 从宏观上来说,渲染包含了两大部分 决定一个像素的可见性 决定这个像素上的关照计算 而光照模型就是用于决定一个像素上进行怎样的光照计算 通常来讲,我们要模拟真实的光照环境来生成 ...
- Q85:对比“直接光照”和“间接光照”的反射模型
这里只是罗列"直接光照"和"间接光照"的反射模型的示意图.这一章节的作用主要是:联系之前学过的反射模型(漫反射模型.高光反射模型)和接下来将要学习的反射模型. ...
- GPU Gems2 - 13 动态环境光遮蔽与间接光照(Dynamic Ambient Occlusion and Indirect Lighting)
本文摘自https://zhuanlan.zhihu.com/p/38411575 [章节概览] 这章在讲大家很熟知的环境光遮蔽(Ambient Occlusion , AO). 文中的描述是,介绍了 ...
- Q89:全局光照(Global Illumination)——Path Tracing(只用于间接光照)
89.1 Path Tracing只用于间接光照 根据Path Trace的算法,只有当最终的反射光线撞击到发光材质物体时,才会对最初的撞击点进行"有效"着色,否则着色为" ...
- unity入门精要之第6 章 Unity 中的基础光照---实现高光反射光照模型
Unity系列文章目录 文章目录 Unity系列文章目录 前言 参考 前言 在6.2.4 节中,我们给出了基本光照模型中高光反射部分的计算公式: 从公式可以看出,要计算高光反射需要知道4 个参数:入射 ...
- 【PBR】光照与物体的颜色对塑料金属的漫反射与高光反射的探究
[PBR]光照与物体的颜色对塑料金属的漫反射与高光反射的探究 参与面试时被问到了一个有色金属与塑料在白光照射下,它的漫反射与高光反射的颜色是怎样的.我就想实际操作看看效果如何. 首先,创建一个简单场景 ...
- 问题六十八:着色模型(shading model)(1)——反射模型(reflection model)(2.2)——高光反射(specular reflection)
和diffuse reflection对应的是specular reflection.一直以来,本人都将"specular reflection"理解为"镜面反射&quo ...
- Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)
Unity Shader 学习笔记(33) 全局光照(GI).反射探针.线性空间和伽马空间.高动态范围(HDR) 参考书籍:<Unity Shader 入门精要> [<Real-Ti ...
- UE4 间接光照缓存
照亮环境 尽管Lightmass可以生成静态对象上的间接光照的光照贴图,但像角色这样的动态对象 也需要一种接收间接光照的方法.这个问题可以通过Indirect Lighting Cache(间接光照缓 ...
最新文章
- Spring Boot Starters启动器
- Windows系统程序设计之结构化异常处理
- 编译性语言、解释性语言和脚本语言的区别
- LeetCode - Convert Sorted Array to Binary Search Tree
- android将拍摄的图片存入sd卡中,Android将图片保存至SD卡上
- (85)FPGA显示激励(monitor)
- 1.5万人!京东面向2021届高校毕业生开启最大规模校招
- 因发生下列错误 无法创建映射网络驱动器_怎么来修复“Windows无法安装所需文件的错误原因”?...
- WebDriver使用入门
- 点云合并pcl重载“+”
- 手机喇叭积灰,一段音波就能清理干净
- 应用加速,数字人民币接入多地交通出行场景 | 产业区块链发展周报
- 税务会计实务【14】
- 2.1 Apache Hadoop、HDFS - Apache Hadoop概述
- java 发送 邮件通知 HTML模板 个性邮件 (十分钟内完成集成与调试)
- IT项目经理应该做什么
- vue中将字符转换成数字的简单做法
- opencv3/C++ SURF特征检测
- QStatusBar
- 现在有哪些可以与微软的Visio相媲美的作图工具?
热门文章
- ERP软件管理持续升级 抢占产业先机
- 小蚂蚁学习数据结构(26)——题目——输出二叉树上值大于x的算法
- 国内域名商.wang总量TOP14统计报告(6月9日)
- 华为服务器的中国梦——给客户带来价值
- 电子邮件正则表达式-集结号
- Mysql server has gone away
- 【To Do】LeetCode 28. Implement strStr() 和KMP算法
- watershed用法详解
- 在ubuntu16上新创建了一个用户,通过xrdp远程连接时出现灰屏,鼠标是“x”号
- hibernate框架学习笔记2:配置文件详解