Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
imjiangjun
pbrt-v4
提交
a417e141
P
pbrt-v4
项目概览
imjiangjun
/
pbrt-v4
12 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
pbrt-v4
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a417e141
编写于
9月 14, 2021
作者:
M
Matt Pharr
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Inline LightBounds Union() method.
This speeds up light BVH builds by ~20%.
上级
1cc11a8e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
19 deletion
+17
-19
src/pbrt/lights.cpp
src/pbrt/lights.cpp
+0
-18
src/pbrt/lights.h
src/pbrt/lights.h
+17
-1
未找到文件。
src/pbrt/lights.cpp
浏览文件 @
a417e141
...
...
@@ -101,24 +101,6 @@ std::string LightBounds::ToString() const {
}
// LightBounds Method Definitions
LightBounds
Union
(
const
LightBounds
&
a
,
const
LightBounds
&
b
)
{
// If one _LightBounds_ has zero power, return the other
if
(
a
.
phi
==
0
)
return
b
;
if
(
b
.
phi
==
0
)
return
a
;
// Find average direction and updated angles for _LightBounds_
DirectionCone
cone
=
Union
(
DirectionCone
(
a
.
w
,
a
.
cosTheta_o
),
DirectionCone
(
b
.
w
,
b
.
cosTheta_o
));
Float
cosTheta_o
=
cone
.
cosTheta
;
Float
cosTheta_e
=
std
::
min
(
a
.
cosTheta_e
,
b
.
cosTheta_e
);
// Return final _LightBounds_ union
return
LightBounds
(
Union
(
a
.
bounds
,
b
.
bounds
),
cone
.
w
,
a
.
phi
+
b
.
phi
,
cosTheta_o
,
cosTheta_e
,
a
.
twoSided
|
b
.
twoSided
);
}
Float
LightBounds
::
Importance
(
Point3f
p
,
Normal3f
n
)
const
{
// Return importance for light bounds at reference point
// Compute clamped squared distance to reference point
...
...
src/pbrt/lights.h
浏览文件 @
a417e141
...
...
@@ -133,7 +133,23 @@ inline LightBounds::LightBounds(const Bounds3f &b, Vector3f w, Float phi,
cosTheta_e
(
cosTheta_e
),
twoSided
(
twoSided
)
{}
LightBounds
Union
(
const
LightBounds
&
a
,
const
LightBounds
&
b
);
inline
LightBounds
Union
(
const
LightBounds
&
a
,
const
LightBounds
&
b
)
{
// If one _LightBounds_ has zero power, return the other
if
(
a
.
phi
==
0
)
return
b
;
if
(
b
.
phi
==
0
)
return
a
;
// Find average direction and updated angles for _LightBounds_
DirectionCone
cone
=
Union
(
DirectionCone
(
a
.
w
,
a
.
cosTheta_o
),
DirectionCone
(
b
.
w
,
b
.
cosTheta_o
));
Float
cosTheta_o
=
cone
.
cosTheta
;
Float
cosTheta_e
=
std
::
min
(
a
.
cosTheta_e
,
b
.
cosTheta_e
);
// Return final _LightBounds_ union
return
LightBounds
(
Union
(
a
.
bounds
,
b
.
bounds
),
cone
.
w
,
a
.
phi
+
b
.
phi
,
cosTheta_o
,
cosTheta_e
,
a
.
twoSided
|
b
.
twoSided
);
}
// LightBase Definition
class
LightBase
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录