《Physically-Based Shading Models in Film and Game Production》(SIGGRAPH 2010 Course Notes)

(地址:http://renderwonk.com/publications/s2010-shading-course/hoffman/s2010_physically_based_shading_hoffman_a_notes.pdf)

Punctual Light Sources一段若干注解:

由于物理渲染基于辐射理论,而辐射理论的图景是”面元间能量传输“,即只有面光源的概念,所以经典光源(directional light, point light, spot light)需要用“面元”的语言来重新定义。

于是就有了精确光源(Punctual Light Source)的概念:

精确光源就是如下图所示的一个球面面元(面光源),其光锥张角无限小,且光锥内方向为l的光线的亮度为Ltiny(l)。

接下来问题就是,怎么定义此光源的颜色?

让此光源垂直照射一反射率为1的lambert(理想漫反射)表面,则反射亮度为

注:

1,因为lambert表面的BRDF为Albedo/PI,又Albedo=1,所以BRDF为1/PI。

2,dot(n,l)在式中消失是因为:当->0时l->lc,又由于垂直入射lc=n,所以dot(n,l)->1。

就将定义为光源的颜色clight,于是得

至此方向为lc,颜色为clight的精确光源定义完毕。

定义完,我们就开始用。

于是问题来了:方向为lc,颜色为clight的精确光源产生的效果到底啥样?

即:如果用此光源照射一个BRDF为f(l,v)的表面,反射亮度是多少?

计算如下:

这样就得到了精确光源的反射亮度公式:

然后就是如何在精确光源的基础上定义directional light、point light、spot light:

记住第一句就ok了,即只要精确光源的lc和clight取常数,就是directional light。

也就是说:

用方向为lc,亮度为clight的directional light照射一个BRDF为f(l,v)的表面,反射亮度是

精确光源(Punctual Light Sources)的更多相关文章

  1. [原]Unity3D深入浅出 - 光源组件(Light)

    Unity中提供了四种光源: Directional light: 方向光,类似太阳的日照效果. Point light: 点光源,类似蜡烛. Spotlight: 聚光灯,类似手电筒. Area L ...

  2. Unity 3D光源-Point Light点光源详解/灯泡、模拟灯光效果教程

    Unity4大光源之点光源 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

  3. Unity 3D光源-Spot Light聚光灯用法详解、模拟手电筒、台灯等线性教程

    Unity4大光源之聚光灯 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

  4. pbr若干概念

    pbr基于辐射传输理论,最基本的一个观点是:一切皆光源--任何一个面元既是光能接收器,也是光能发射器. 光通(flux):单位时间内通过某一面积的光能,单位W(瓦特),用表示. 可见,光通其实就是功率 ...

  5. Light Explorer

    [Light Explorer] The Light Explorer allows you to select and edit light sources. Window> Lighting ...

  6. Unity Lighting - Light Types 灯光类型(八)

      Light Types 灯光类型 We have now covered some of the project settings which need to be considered befo ...

  7. ogre3D学习基础9 -- 光源程序实例

    这一章练习一下光源的使用,光源分为三种:点光源,聚光源,有向光.具体内容前面说过,这里就不解释了. 继续在上一章的程序的基础上实现. 1.创建摄像机(Camera) createCamera()函数是 ...

  8. Camera学习--光源

    进入CV 领域,视频图像的成像,最前端的camera,camera的sensor 以及影响成像质量的光源,噪声等因素是绕不开的问题. 那么今天就从成像的光源说起. 标准光源(Standard Ligh ...

  9. three.js光源

    在Threejs中,光源用Light表示,它是所有光源的基类.它的构造函数是: THREE.Light ( hex ) 它有一个参数hex,接受一个16进制的颜色值.例如要定义一种红色的光源,我们可以 ...

随机推荐

  1. Python学习笔记_05:使用Flask+MySQL实现用户登陆注册以及增删查改操作

    前言:本文代码参考自两篇英文博客,具体来源点击文末代码链接中文档说明. (PS:代码运行Python版本为2.7.14) 运行效果: 首页: 注册页面: 登陆界面: 管理员登陆后界面: 添加.删除.修 ...

  2. Executor并发框架--线程池,ThreadToolExecutor初步

    Executor存在的目的是提供一种将"任务提交"与"任务如何运行"分离开来的机制.虽然只有一个方法,但是却为灵活且强大的异步任务执行框架提供了基础.它提供了一 ...

  3. ReactNative踩坑日志——代码执行方式(面向对象)

    在ReactNative中,是以面向对象的方式执行代码的.处于同一{}內的代码以对象的形式执行,也就是说,程序虽然会自上而下执行代码,但是它会保证当前整个代码块內的语句执行完毕才执行下一代码块. 举个 ...

  4. Java多线程之锁优化策略

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561264.html  锁的优化策略 编码过程中可采取的锁优化的思路有以下几种: 1:减少锁持有时间 例如:对 ...

  5. 解决ODI 12C Studio 运行缓慢问题

    一.配置 ODI 12C Studio 1.1 修改ODI Studio process的-Xms和-Xmx ide.conf: modifying the initial Heap size (-X ...

  6. 【DB2】通过db2top找到会话对应的ip地址

    1.进入db2top监控界面 2.按l进入到会话界面 根据上图我们可以看到现在有一个应用在连接数据库,我们可以查看引用的具体信息 3.按a,然后输入应用的ID(ID为第一列对应的数字,上图的ID为29 ...

  7. 【DB2】delete大表不记录日志的正确操作

    一.原始方法 在删除大表的时候,经常会由于数据量太大,造成日志文件满了,接着无法删除数据. 以下是删除大表不记录日志的具体步骤: 1.临时设置自动提交关闭 (使用命令db2 list command ...

  8. OPML文件

    # -*- coding: cp936 -*-#python 27#xiaodeng#OPML文件 #大纲处理标记语言其实建立在颗脱战标记语言之上的标记语言#也叫文件扩展名#是建立在XML之上的一种文 ...

  9. Red Hat7.2 上安装 MySQL5.5.58

    1.首先查看linux版本:cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.2 (Maipo) 2.Linux查看版 ...

  10. HTTP协议详解(转)

    HTTP协议详解 转自: http://blog.csdn.net/gueter/article/details/1524447     Author :Jeffrey   My Blog:http: ...