首页 > 其他分享 >03 Real-time Environment Mapping

03 Real-time Environment Mapping

时间:2023-04-29 15:44:07浏览次数:45  
标签:Real 03 函数 球面 BRDF Mapping 可以 diffuse 光照

1. Shading from Envionment Lighting -- Split Sum

  • 使用IBL(image based lighting)做光照积分,不考虑visibility。
  • 可以使用蒙特卡洛积分,但是需要做sampling,所以很慢。一般使用sampling的手段尽量避免在RTR中使用。
  • 如果BRDF是glossy则support小,如果diffuse则smooth,则BRDF可以近似

  • 则黄色框中被拆出的部分是对环境光的滤波Prefiltering。BRDF积分区域越大则滤波范围越大。可以采取MIPMAP来实现。在有计算需求的时候只做查询不做计算,不需要对光照做采样。
  • 可见,只需要在镜面反射的方向查询MIPMAP的prefiltering后的某个值。对于漫反射而言,则是normal方向。
  • 但是第二部分的采样积分尚未解决。
  • 对于微表面,其BRDF如下,主要关注菲涅尔项与法线分布。
  • 菲涅尔项可以近似为一种指数分布,与基础反射率R0和入射角度theta(在RTR中入射角、出射角、半角可以看做相同)两个变量参数有关。而在NDF项中,法线分布可以看作一种类似高斯的分布,同样的与alpha(标准差,即材质的diffuse或glossy程度)与thetah(halfvector与法线夹角,可以从入射角得到,可看作一个变量)。因此有三个变量,如果采取预计算就是一个三维预计算,还是比较复杂。
  • 将R0从菲涅尔项中拆出来,那么BRDF积分就消除了对基础反射率的依赖。
  • 因此,只考虑alpha与theta两个参数的二维分布,就可以得到两张二维纹理。可以将其保存在一张纹理的两个通道中。在计算时直接查询就可以了,那么消除了采样。

2. Shadow from Environment Lighting


3. Spherical Harmonics 球面谐波

  • 定义在球面上的二维基函数,具有不同的频率,每种频率下具有不同的基函数。l越大,频率越高,对于不同的l,基函数有\(2\times l+1\)个,在不同的l上定义了编号-l~l,相应的前n阶有\(n^2\)个基函数。
  • 通过product integral得到基函数的系数,即projection投影。相应的,得到系数之后可以反向恢复;一般的采取前几阶的基函数来做恢复,相当于丢弃了更高频的部分。一般的选中阶的基函数都会使用。
  • 将diffuse的BRDF投影到球面谐波上只在低频部分(三阶)有明显的值。因此无论环境光多么复杂,其与diffuse物体的BRDF作用时,只有低频部分有明显的价值。
  • 那么,只考虑使用球面谐波的低频部分来描述环境光照。对于diffuse材质,只需要使用前三阶来表示就可以了。

4. Precomputed Radiance Transfer(PRT)

  • 将三个部分都做成问纹理,但是每一个shading point都需要做计算。
  • 先拆成两部分,即光照与其他。再然后将lighting表示成基函数的表示。认为每个light transport的部分是不变的,即每个shading point的属性,可以预计算,作为一个球面函数。
  • dffuse情况下,BRDF是一个常值,可以提取出来。然后将light表示成球面基函数形式。相应的积分结果就是lighttransport的基坐标,这些基座标是常数,可以被预计算。因此,对于diffuse,只需要预计算出lighting的基系数,然后提取出预计算的参数,并作点乘。但是问题在于,light transport固定意味着visibility固定,即场景中的物体是固定的。此外,如果光源变化,预计算值也会变动,即光源也不可以变化。
  • 基函数的性质。SH支持旋转,即旋转原始函数只需要通过旋转基函数来实现,而SH基函数在旋转之后不再是基函数,但是可以被同阶的基函数线性组合来描述,因此,基函数旋转只是在修改同阶基函数的系数。


  • 将球面函数变换成基函数系数,只需要保存一个张量。

  • 到目前为止,环境光照与shadow都实现了,但是全局光照还没有考虑进去。
  • 预计算过程可以通过随机光线实现,可以花费大量时间。

5.

标签:Real,03,函数,球面,BRDF,Mapping,可以,diffuse,光照
From: https://www.cnblogs.com/etherovo/p/17363901.html

相关文章

  • P7603 [THUPC2021] 鬼街(减半警报器模板)
    P7603[THUPC2021]鬼街(减半警报器模板)前言这是一个由lxl大佬提出的神奇trick,第一次省选集训的时候有点颓,听完了没写。刚好明天又要讲这个不如写篇题解。还是,我太弱了;所以又是研究一晚上才写出来,所以还是吧我对这道题的理解讲讲。正文何为折半报警器按照lxl的ppt上的......
  • SWEN20003 Object Oriented软件开发
    SWEN20003ObjectOrientedSoftwareDevelopmentProject2,2023TheUniversityofMelbourneSchoolofComputingandInformationSystemsSWEN20003ObjectOrientedSoftwareDevelopmentShadowPacProject2,Semester1,2023Released:Friday,21stApril2023at4:30......
  • NFO20003 数据库
    DatabaseSystemsINFO20003A2S12023Page1of7INFO20003Semester1,2023Assignment2:SQLDue:6:00pmFriday,28April2023Weighting:10%ofyourtotalassessmentResearchPapersDatabaseDescriptionYouandagroupoffellowundergradshavecreatedast......
  • CSSE1001/CSSE7030 卡片游戏
    CSSE1001/CSSE7030Duedate:28thApril202316:00GMT+101IntroductionSlaytheSpireisarogue-likedeckbuildingcardgameinwhichaplayermustbuildadeckofcards,whichtheyuseduringencounterswithmonsters.DetailsoftheoriginalSlaytheSpire......
  • 02 Real-Time Shadows
    1.ShadowMapping在shadowmap中,场景被离散化了。在camera中的像素对应的点跟shadow中对应深度可能会有较小偏差,则为阴影。当入射越是平行表面,shadowmap中的像素范围越大,越严重。为此,设置一个shadowmap深度的冗余的阈值偏置。此外,这个bias可以根据角度调整。但是bias过大会......
  • 【解决】axios 下载文件 Failed to read the 'responseText' property from 'XMLHttp
    主要解决以下两个问题问题一:idm一些网站不允许请求同一文件两次故障原因:IDM在发神经因为它检测到浏览器集成插件未安装,所以诱导你安装。实际上,装了插件问题也会出现。改参数都没用。1.很可能是你点击网页的下载链接有问题(换个网页下载试试,就不提示了),Edge浏览器一直会欺......
  • 【TypeScript】document.body.style TS 报错 Cannot assign to 'style' because it is
    报错信息解决方法style对象提供了一个cssText属性,支持设置多种CSS样式:document.body.style.cssText=`width:${targetX}px;height:${targetY}px;transform:scale(${scaleRatio})translateX(-50%);left:50%`;还有其他方法也可以,参考下面的文章参考文章七爪源码:使用......
  • Ubuntu 22.04 SSH the RSA key isn't working since upgrading from 20.04
    Ubuntu22.04SSHtheRSAkeyisn'tworkingsinceupgradingfrom20.04UpuntillastweekIwasrunningUbuntu20.04happily,andthenovertheweekenddecidedtobackeverythingupandinstall22.04.I'vehadacoupleofteethingissueswhichI&#......
  • INFO1113 / COMP9003
    INFO1113/COMP9003AssignmentDue:14May2023,11:59PMAESTThisassignmentisworth18%ofyourfinalgrade.TaskDescriptionInthisassignment,youwillcreateagameintheJavaprogramminglanguageusingtheProcessinglibraryforgraphicsandgradleas......
  • 控制台报错:[Vue warn]: Error in render: "TypeError: Cannot read properties of nu
    可能原因在调取接口获取返回值时,由于各种原因(参数错误、返回格式不规范等),导致接收返回时数据类型与初始值不同。data(){return{list:[]//原本是个数组对象}},methods:{getList(){letparams={}apiRequest(params).then(r......