首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BRDF通常是如何实现的?

BRDF通常是如何实现的?
EN

Stack Overflow用户
提问于 2016-10-26 19:31:13
回答 1查看 1.2K关注 0票数 5

我有一个很小的路径追踪器,我正在试图找出如何实现一些基本的BRDF。下面简要描述我使用的管道(不使用递归):

代码语言:javascript
复制
1) For each pixel:
   1.1) For each sample:
      1.1.1) I construct a path.
      1.1.2) I calculate the contribution of this path.
      1.1.3) I calculate the "probability" of this path.
      1.1.4) Finally, I calculate the overall color value(taking into account number of samples, "probability" and contribution of the path).
   1.2) Take the sum of all samples' values and write it to the pixel.

所以,我计算了台阶1.1.1) I construct a path中反射射线的方向。

目前,我已经实现了漫反射,镜面反射,光面反射,折射。现在,我想要实现一个复杂的BRDF,比方说库克-托伦斯BRDF。我看到它包含几个组成部分(漫反射和镜面反射)。我该怎么追踪这些射线才能得到密码?我应该随机地在漫射射线/镜面射线之间进行选择,然后像往常一样累加这些值(乘以一些系数)?(例如,如果随机值大于0.5,我就会跟踪一条漫射射线,否则是镜面射线),还是应该从每个交叉口追踪多条射线?

它通常如何在基于物理的渲染器中实现?

如果有人知道一些关于这个话题的好文章,我会很高兴看到他们。我试着读pbrt,但它对我来说似乎非常复杂和巨大。有些东西的实现方式是不同的,比如相机模型和其他东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-27 15:20:02

第一步可能是让你的BRDF决定光线应该如何反弹。如果是多个方法的组合,那么将BRDF中的概率分配给每个方法,然后让BRDF根据给定的概率选择一个。

例如,假设您需要一个BRDF,它是镜面反射和漫反射的组合。当你实例化BRDF时,你可能会告诉它你想要60%的镜面和40%的漫射。然后,当路径跟踪器询问BRDF以获得反射的射线方向时,BRDF内部可以计算60%的反射射线和40%的漫射射线。

编辑-另一种,也许更准确的方法是让BRDF使用所提供的概率,通过在这两种方法之间进行内插来生成反射方向。在我们上面的例子中,当询问时,BRDF计算每个交点的镜面射线和漫射射线,并返回一条新射线,其方向是计算出的镜面射线的60%和计算出的漫射射线的40%的线性插值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40270708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档