请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 314|回复: 2

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

Rank: 5Rank: 5

注册时间
2015-10-17
积分
58
发表于 2017-12-18 19:01:23 |显示全部楼层
网上很多资料都会讨论brdf的定义以及各种不同的brdf,但是在实时情况下如何对这些brdf求积分却少有提及。据我所知离线的渲染使用蒙特卡洛方法之类的来计算半球积分,那么在实时渲染中,像ue4这种基于pbr的引擎又是如何做光线积分的呢?

Rank: 8Rank: 8

注册时间
2016-12-2
积分
148
发表于 2018-1-11 11:05:13 |显示全部楼层
因为游戏引擎通常使用的是 delta 光源,且只使用直接光照,不考虑二次光照。
所有 delta 光源计算直接光照 渲染方程中的积分 就会退化为 累加。也就不需要蒙特卡罗了。
个人所见,欢迎拍砖。
1

查看全部评分

使用道具 举报

Rank: 16Rank: 16Rank: 16Rank: 16

注册时间
2010-10-30
积分
3098
发表于 2018-1-13 22:42:41 |显示全部楼层
一般引擎的这部分叫做IBL,大部分都是预计算。比如irradiance map是将cubemap的每个方向做为法线的整个半球方向通过蒙特卡洛积分的方式卷积到新的cube map的这个方向上,实时计算的之后只需要用法线采样这个预计算后的cubemap就可以得到整个半球的漫反射光照。高光部分一般是根据粗糙度通过importance sampling的方法存储到cubemap的各个mipmap中,然后采样,也有引擎再预计算一张BRDF integration map的,实时的时候将这两部分一起计算。
至于这些预计算是怎么处理的,这个时候涉及到各个brdf的pdf,cdf等,如何生成采样点,如何保证蒙托卡罗积分最后的方差最小,这些楼主就需要多去看看离线相关的资料了。

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2018-1-22 14:27 , Processed in 0.018555 second(s), 12 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部