Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
e7c65a54
T
three.js
项目概览
车家大少爷
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
e7c65a54
编写于
5月 04, 2020
作者:
M
Mr.doob
提交者:
GitHub
5月 04, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #19295 from sciecode/dev-piz-fix
EXRLoader: fix incorrect 16-bit wavelet decoding
上级
51c70b69
9531c5a4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
138 addition
and
34 deletion
+138
-34
examples/js/loaders/EXRLoader.js
examples/js/loaders/EXRLoader.js
+69
-17
examples/jsm/loaders/EXRLoader.js
examples/jsm/loaders/EXRLoader.js
+69
-17
未找到文件。
examples/js/loaders/EXRLoader.js
浏览文件 @
e7c65a54
...
...
@@ -98,6 +98,10 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
const
HUF_DECSIZE
=
1
<<
HUF_DECBITS
;
// decoding table size
const
HUF_DECMASK
=
HUF_DECSIZE
-
1
;
const
NBITS
=
16
;
const
A_OFFSET
=
1
<<
(
NBITS
-
1
);
const
MOD_MASK
=
(
1
<<
NBITS
)
-
1
;
const
SHORT_ZEROCODE_RUN
=
59
;
const
LONG_ZEROCODE_RUN
=
63
;
const
SHORTEST_LONG_RUN
=
2
+
LONG_ZEROCODE_RUN
-
SHORT_ZEROCODE_RUN
;
...
...
@@ -472,8 +476,22 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
}
function
wav2Decode
(
buffer
,
j
,
nx
,
ox
,
ny
,
oy
)
{
function
wdec16
(
l
,
h
)
{
var
m
=
UInt16
(
l
);
var
d
=
UInt16
(
h
);
var
bb
=
(
m
-
(
d
>>
1
)
)
&
MOD_MASK
;
var
aa
=
(
d
+
bb
-
A_OFFSET
)
&
MOD_MASK
;
wdec14Return
.
a
=
aa
;
wdec14Return
.
b
=
bb
;
}
function
wav2Decode
(
buffer
,
j
,
nx
,
ox
,
ny
,
oy
,
mx
)
{
var
w14
=
mx
<
(
1
<<
14
);
var
n
=
(
nx
>
ny
)
?
ny
:
nx
;
var
p
=
1
;
var
p2
;
...
...
@@ -505,25 +523,52 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
var
p10
=
px
+
oy1
;
var
p11
=
p10
+
ox1
;
wdec14
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
if
(
w14
)
{
i00
=
wdec14Return
.
a
;
i10
=
wdec14Return
.
b
;
wdec14
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
wdec14
(
buffer
[
p01
+
j
],
buffer
[
p11
+
j
]
);
i00
=
wdec14Return
.
a
;
i10
=
wdec14Return
.
b
;
i01
=
wdec14Return
.
a
;
i11
=
wdec14Return
.
b
;
wdec14
(
buffer
[
p01
+
j
],
buffer
[
p11
+
j
]
);
wdec14
(
i00
,
i01
);
i01
=
wdec14Return
.
a
;
i11
=
wdec14Return
.
b
;
buffer
[
px
+
j
]
=
wdec14Return
.
a
;
buffer
[
p01
+
j
]
=
wdec14Return
.
b
;
wdec14
(
i00
,
i01
);
buffer
[
px
+
j
]
=
wdec14Return
.
a
;
buffer
[
p01
+
j
]
=
wdec14Return
.
b
;
wdec14
(
i10
,
i11
);
wdec14
(
i10
,
i11
);
buffer
[
p10
+
j
]
=
wdec14Return
.
a
;
buffer
[
p11
+
j
]
=
wdec14Return
.
b
;
buffer
[
p10
+
j
]
=
wdec14Return
.
a
;
buffer
[
p11
+
j
]
=
wdec14Return
.
b
;
}
else
{
wdec16
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
i00
=
wdec14Return
.
a
;
i10
=
wdec14Return
.
b
;
wdec16
(
buffer
[
p01
+
j
],
buffer
[
p11
+
j
]
);
i01
=
wdec14Return
.
a
;
i11
=
wdec14Return
.
b
;
wdec16
(
i00
,
i01
);
buffer
[
px
+
j
]
=
wdec14Return
.
a
;
buffer
[
p01
+
j
]
=
wdec14Return
.
b
;
wdec16
(
i10
,
i11
);
buffer
[
p10
+
j
]
=
wdec14Return
.
a
;
buffer
[
p11
+
j
]
=
wdec14Return
.
b
;
}
}
...
...
@@ -531,7 +576,10 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
var
p10
=
px
+
oy1
;
wdec14
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
if
(
w14
)
wdec14
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
else
wdec16
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
i00
=
wdec14Return
.
a
;
buffer
[
p10
+
j
]
=
wdec14Return
.
b
;
...
...
@@ -551,7 +599,10 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
var
p01
=
px
+
ox1
;
wdec14
(
buffer
[
px
+
j
],
buffer
[
p01
+
j
]
);
if
(
w14
)
wdec14
(
buffer
[
px
+
j
],
buffer
[
p01
+
j
]
);
else
wdec16
(
buffer
[
px
+
j
],
buffer
[
p01
+
j
]
);
i00
=
wdec14Return
.
a
;
buffer
[
p01
+
j
]
=
wdec14Return
.
b
;
...
...
@@ -1294,7 +1345,7 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
// Reverse LUT
var
lut
=
new
Uint16Array
(
USHORT_RANGE
);
reverseLutFromBitmap
(
bitmap
,
lut
);
var
maxValue
=
reverseLutFromBitmap
(
bitmap
,
lut
);
var
length
=
parseUint32
(
inDataView
,
inOffset
);
...
...
@@ -1314,7 +1365,8 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
cd
.
nx
,
cd
.
size
,
cd
.
ny
,
cd
.
nx
*
cd
.
size
cd
.
nx
*
cd
.
size
,
maxValue
);
}
...
...
examples/jsm/loaders/EXRLoader.js
浏览文件 @
e7c65a54
...
...
@@ -113,6 +113,10 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
const
HUF_DECSIZE
=
1
<<
HUF_DECBITS
;
// decoding table size
const
HUF_DECMASK
=
HUF_DECSIZE
-
1
;
const
NBITS
=
16
;
const
A_OFFSET
=
1
<<
(
NBITS
-
1
);
const
MOD_MASK
=
(
1
<<
NBITS
)
-
1
;
const
SHORT_ZEROCODE_RUN
=
59
;
const
LONG_ZEROCODE_RUN
=
63
;
const
SHORTEST_LONG_RUN
=
2
+
LONG_ZEROCODE_RUN
-
SHORT_ZEROCODE_RUN
;
...
...
@@ -487,8 +491,22 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
}
function
wav2Decode
(
buffer
,
j
,
nx
,
ox
,
ny
,
oy
)
{
function
wdec16
(
l
,
h
)
{
var
m
=
UInt16
(
l
);
var
d
=
UInt16
(
h
);
var
bb
=
(
m
-
(
d
>>
1
)
)
&
MOD_MASK
;
var
aa
=
(
d
+
bb
-
A_OFFSET
)
&
MOD_MASK
;
wdec14Return
.
a
=
aa
;
wdec14Return
.
b
=
bb
;
}
function
wav2Decode
(
buffer
,
j
,
nx
,
ox
,
ny
,
oy
,
mx
)
{
var
w14
=
mx
<
(
1
<<
14
);
var
n
=
(
nx
>
ny
)
?
ny
:
nx
;
var
p
=
1
;
var
p2
;
...
...
@@ -520,25 +538,52 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
var
p10
=
px
+
oy1
;
var
p11
=
p10
+
ox1
;
wdec14
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
if
(
w14
)
{
i00
=
wdec14Return
.
a
;
i10
=
wdec14Return
.
b
;
wdec14
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
wdec14
(
buffer
[
p01
+
j
],
buffer
[
p11
+
j
]
);
i00
=
wdec14Return
.
a
;
i10
=
wdec14Return
.
b
;
i01
=
wdec14Return
.
a
;
i11
=
wdec14Return
.
b
;
wdec14
(
buffer
[
p01
+
j
],
buffer
[
p11
+
j
]
);
wdec14
(
i00
,
i01
);
i01
=
wdec14Return
.
a
;
i11
=
wdec14Return
.
b
;
buffer
[
px
+
j
]
=
wdec14Return
.
a
;
buffer
[
p01
+
j
]
=
wdec14Return
.
b
;
wdec14
(
i00
,
i01
);
buffer
[
px
+
j
]
=
wdec14Return
.
a
;
buffer
[
p01
+
j
]
=
wdec14Return
.
b
;
wdec14
(
i10
,
i11
);
wdec14
(
i10
,
i11
);
buffer
[
p10
+
j
]
=
wdec14Return
.
a
;
buffer
[
p11
+
j
]
=
wdec14Return
.
b
;
buffer
[
p10
+
j
]
=
wdec14Return
.
a
;
buffer
[
p11
+
j
]
=
wdec14Return
.
b
;
}
else
{
wdec16
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
i00
=
wdec14Return
.
a
;
i10
=
wdec14Return
.
b
;
wdec16
(
buffer
[
p01
+
j
],
buffer
[
p11
+
j
]
);
i01
=
wdec14Return
.
a
;
i11
=
wdec14Return
.
b
;
wdec16
(
i00
,
i01
);
buffer
[
px
+
j
]
=
wdec14Return
.
a
;
buffer
[
p01
+
j
]
=
wdec14Return
.
b
;
wdec16
(
i10
,
i11
);
buffer
[
p10
+
j
]
=
wdec14Return
.
a
;
buffer
[
p11
+
j
]
=
wdec14Return
.
b
;
}
}
...
...
@@ -546,7 +591,10 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
var
p10
=
px
+
oy1
;
wdec14
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
if
(
w14
)
wdec14
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
else
wdec16
(
buffer
[
px
+
j
],
buffer
[
p10
+
j
]
);
i00
=
wdec14Return
.
a
;
buffer
[
p10
+
j
]
=
wdec14Return
.
b
;
...
...
@@ -566,7 +614,10 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
var
p01
=
px
+
ox1
;
wdec14
(
buffer
[
px
+
j
],
buffer
[
p01
+
j
]
);
if
(
w14
)
wdec14
(
buffer
[
px
+
j
],
buffer
[
p01
+
j
]
);
else
wdec16
(
buffer
[
px
+
j
],
buffer
[
p01
+
j
]
);
i00
=
wdec14Return
.
a
;
buffer
[
p01
+
j
]
=
wdec14Return
.
b
;
...
...
@@ -1309,7 +1360,7 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
// Reverse LUT
var
lut
=
new
Uint16Array
(
USHORT_RANGE
);
reverseLutFromBitmap
(
bitmap
,
lut
);
var
maxValue
=
reverseLutFromBitmap
(
bitmap
,
lut
);
var
length
=
parseUint32
(
inDataView
,
inOffset
);
...
...
@@ -1329,7 +1380,8 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
cd
.
nx
,
cd
.
size
,
cd
.
ny
,
cd
.
nx
*
cd
.
size
cd
.
nx
*
cd
.
size
,
maxValue
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录