中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 794|回复: 3

实时渲染中如何计算来自与半球上任何方向光线的积分?

[复制链接]
发表于 2017-12-18 19:01:23 | 显示全部楼层 |阅读模式
网上很多资料都会讨论brdf的定义以及各种不同的brdf,但是在实时情况下如何对这些brdf求积分却少有提及。据我所知离线的渲染使用蒙特卡洛方法之类的来计算半球积分,那么在实时渲染中,像ue4这种基于pbr的引擎又是如何做光线积分的呢?
发表于 2018-1-11 11:05:13 | 显示全部楼层
因为游戏引擎通常使用的是 delta 光源,且只使用直接光照,不考虑二次光照。
所有 delta 光源计算直接光照 渲染方程中的积分 就会退化为 累加。也就不需要蒙特卡罗了。
个人所见,欢迎拍砖。

评分

1

查看全部评分

发表于 2018-1-13 22:42:41 | 显示全部楼层
一般引擎的这部分叫做IBL,大部分都是预计算。比如irradiance map是将cubemap的每个方向做为法线的整个半球方向通过蒙特卡洛积分的方式卷积到新的cube map的这个方向上,实时计算的之后只需要用法线采样这个预计算后的cubemap就可以得到整个半球的漫反射光照。高光部分一般是根据粗糙度通过importance sampling的方法存储到cubemap的各个mipmap中,然后采样,也有引擎再预计算一张BRDF integration map的,实时的时候将这两部分一起计算。
至于这些预计算是怎么处理的,这个时候涉及到各个brdf的pdf,cdf等,如何生成采样点,如何保证蒙托卡罗积分最后的方差最小,这些楼主就需要多去看看离线相关的资料了。
发表于 2018-1-31 19:04:30 | 显示全部楼层
我知道的ue4啊这些的pbr对于点光源的确是参照微表面的模型算的一个模拟值。
至于半球的光线信息,提前得算好IBL以及brdf的表,到时候采样就行。
这玩意的积分要是这么好算,那实时的游戏肯定早就开始整了,一般512的采样都慢吞吞的,你得挑一些重要的环境信息提前算好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|小黑屋|Archiver|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2018-4-20 08:54 , Processed in 0.038972 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表