Home Forums Games202-高质量实时渲染 为什么E_avg是E(μ)的cos加权平均,而不是立体角积分?

Tagged: 

Viewing 4 reply threads
  • Author
    Posts
    • #11242 Score: 0
      Aidan
      Participant

      Kulla Conty算法里面的E_avg,表示一个点反射出来的能量。为什么E_avg是E(μ)的cos加权平均,而不是E(μ)对立体角进行积分呢?
      cos加权平均结果是2∫E(μ)μdμ,如果是对E(μ)进行立体角积分的话,结果是2π∫E(μ)dμ,会比cos加权平均要大很多。
      那么为什么这样做呢,不就应该算出所有方向上反射出的能量么。为什么cos越小,也就是视线越接近法线,权重会越大呢?

    • #11258 Score: 0
      hannoch
      Participant

      这部分我的mu用的sin,就是按照课件上说的
      而且我还有个疑惑,这边的Eavg是不是应该不需要采样呢,因此Emu*mu的积分本来就是对所有出射方向做积分了,而Emu已经计算好了,采样也只是要采样入射光,和这个积分无关才对……

    • #11284 Score: 0
      Aidan
      Participant

      更正一下问题:
      E_avg表示对于一条入射光,经过单次反射,出来的能量。为什么E_avg是E(μ)的cos加权平均,而不是E(θ,φ)在整个半球的平均?具体来说是两个问题:
      1.为什么用E(μ),而不是用E(θ,φ)进行加权平均,毕竟E(θ,φ)才真正表示“一个”方向,而E(μ)表示的是某个θ下的E(θ,φ)。
      2. 为什么不是简单平均,而是cos加权平均?
      我觉得原因有可能是,这个公式认为 θ越小时,入射光分布的概率越大;θ越大时(grazing angle),入射光分布的概率越小。有大佬可以解释下原因吗?

    • #11644 Score: 1
      charvl
      Participant
      2 pts

      附件

      This post has received 1 vote up.
      Attachments:
      You must be logged in to view attached files.
      • #11646 Score: 0
        charvl
        Participant
        2 pts

        如果假设个方向的入射 Radiance 是 1,那么 E(u) 也是一个 Radiance,所以需要 cos\theta 的加权

    • #11659 Score: 0
      qwmnerbvqwmn
      Participant

      因为Eavg是放在brdf里,最终要用到渲染方程里的,渲染方程自带一个costheta,求avg时,越多考虑原本式子里的项,求出的avg越精确。别的项都是运行时变动的,不好预计算,但costheta是定死的,不用白不用。下边的图里是具体的说明

      Attachments:
      You must be logged in to view attached files.
Viewing 4 reply threads
  • You must be logged in to reply to this topic.