Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
imjiangjun
pbrt-v4
提交
782f8e2d
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,发现更多精彩内容 >>
提交
782f8e2d
编写于
10月 09, 2020
作者:
M
Matt Pharr
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix ImageInfiniteLight luminance computation to use the equi-area parameterization
上级
88a814d4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
15 deletion
+12
-15
src/pbrt/lights.cpp
src/pbrt/lights.cpp
+12
-15
未找到文件。
src/pbrt/lights.cpp
浏览文件 @
782f8e2d
...
@@ -1430,26 +1430,23 @@ LightHandle LightHandle::Create(const std::string &name,
...
@@ -1430,26 +1430,23 @@ LightHandle LightHandle::Create(const std::string &name,
// units
// units
float
illuminance
=
0
;
float
illuminance
=
0
;
const
Image
&
image
=
imageAndMetadata
.
image
;
const
Image
&
image
=
imageAndMetadata
.
image
;
int
ye
=
image
.
Resolution
().
y
/
2
;
int
ys
=
0
;
int
xs
=
0
;
int
xe
=
image
.
Resolution
().
x
;
RGB
lum
=
imageAndMetadata
.
metadata
.
GetColorSpace
()
->
LuminanceVector
();
RGB
lum
=
imageAndMetadata
.
metadata
.
GetColorSpace
()
->
LuminanceVector
();
for
(
int
y
=
ys
;
y
<
ye
;
++
y
)
{
for
(
int
y
=
0
;
y
<
image
.
Resolution
().
y
;
++
y
)
{
float
v
=
(
float
(
y
)
+
0.5
f
)
/
float
(
image
.
Resolution
().
y
);
float
v
=
(
float
(
y
)
+
0.5
f
)
/
float
(
image
.
Resolution
().
y
);
float
theta
=
(
v
-
0.5
f
)
*
Pi
;
for
(
int
x
=
0
;
x
<
image
.
Resolution
().
x
;
++
x
)
{
float
cosTheta
=
std
::
cos
(
theta
);
Float
u
=
(
x
+
0.5
f
)
/
image
.
Resolution
().
x
;
float
sinTheta
=
std
::
sin
(
theta
);
Vector3f
w
=
EqualAreaSquareToSphere
(
Point2f
(
u
,
v
));
for
(
int
x
=
xs
;
x
<
xe
;
++
x
)
{
// We could be more clever and see if we're in the inner rotated
// square, but not a big deal...
if
(
w
.
z
<=
0
)
continue
;
ImageChannelValues
values
=
image
.
GetChannels
({
x
,
y
});
ImageChannelValues
values
=
image
.
GetChannels
({
x
,
y
});
for
(
int
c
=
0
;
c
<
3
;
++
c
)
{
for
(
int
c
=
0
;
c
<
3
;
++
c
)
illuminance
+=
values
[
c
]
*
lum
[
c
]
*
std
::
abs
(
cosTheta
)
*
illuminance
+=
values
[
c
]
*
lum
[
c
]
*
CosTheta
(
w
);
std
::
abs
(
sinTheta
);
}
}
}
}
}
illuminance
/=
float
(
ye
-
ys
)
*
float
(
xe
-
xs
);
illuminance
*=
2
*
Pi
/
(
image
.
Resolution
().
x
*
image
.
Resolution
().
y
);
illuminance
*=
Pi
*
Pi
;
// scaling factor is just the ratio of the target
// scaling factor is just the ratio of the target
// illuminance and the illuminance of the map multiplied by
// illuminance and the illuminance of the map multiplied by
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录