• 精确光源(Punctual Light Sources)


    《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)的表面,反射亮度是

  • 相关阅读:
    如果你也用过struts2.简单介绍下springMVC和struts2的区别有哪些?
    人事面试
    人事面试
    人事面试
    java 数字和日期处理
    jsp文件导包
    asp.net MVC中使用Autofac小结 (遇到的最傻错误: 没有为该对象定义无参数的构造函数)
    Asp.net MVC 单元测试 简要笔记
    NewtonJson中转义的斜杠和多余的引号处理
    RecyclerView onTouch & onClick 触摸事件与点击事件
  • 原文地址:https://www.cnblogs.com/wantnon/p/6954242.html
Copyright © 2020-2023  润新知