Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
6a804759
T
three.js
项目概览
Ablesons
/
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,发现更多精彩内容 >>
提交
6a804759
编写于
11月 22, 2012
作者:
M
MiiBond
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://github.com/MiiBond/three.js
into dev
上级
0a719bab
041a5d59
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
100 addition
and
40 deletion
+100
-40
examples/textures/compressed/Mountains.dds
examples/textures/compressed/Mountains.dds
+0
-0
examples/webgl_materials_texture_compressed.html
examples/webgl_materials_texture_compressed.html
+8
-2
src/extras/ImageUtils.js
src/extras/ImageUtils.js
+86
-38
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+6
-0
未找到文件。
examples/textures/compressed/Mountains.dds
0 → 100644
浏览文件 @
6a804759
文件已添加
examples/webgl_materials_texture_compressed.html
浏览文件 @
6a804759
...
...
@@ -37,7 +37,7 @@
leaf texture by
<a
href=
"http://opengameart.org/node/10505"
>
lauris71
</a>
, explosion texture by
<a
href=
"http://opengameart.org/node/7728"
>
bart
</a>
</div>
<script
src=
"../build/three.
min.
js"
></script>
<script
src=
"../build/three.js"
></script>
<script
src=
"js/Detector.js"
></script>
<script
src=
"js/libs/stats.min.js"
></script>
...
...
@@ -82,7 +82,13 @@
var
map4
=
THREE
.
ImageUtils
.
loadCompressedTexture
(
'
textures/compressed/explosion_dxt5_mip.dds
'
);
map4
.
anisotropy
=
4
;
var
material1
=
new
THREE
.
MeshBasicMaterial
(
{
map
:
map1
}
);
var
cubemap
=
THREE
.
ImageUtils
.
loadCompressedTextureCube
(
'
textures/compressed/Mountains.dds
'
,
new
THREE
.
CubeReflectionMapping
,
function
(
cubemap
)
{
cubemap
.
magFilter
=
cubemap
.
minFilter
=
THREE
.
LinearFilter
;
material1
.
envMap
=
cubemap
;
material1
.
needsUpdate
=
true
;
}
);
var
material1
=
new
THREE
.
MeshBasicMaterial
(
{
map
:
map1
,
envMap
:
true
}
);
var
material2
=
new
THREE
.
MeshBasicMaterial
(
{
map
:
map2
}
);
var
material3
=
new
THREE
.
MeshBasicMaterial
(
{
map
:
map3
,
alphaTest
:
0.5
,
side
:
THREE
.
DoubleSide
}
);
var
material4
=
new
THREE
.
MeshBasicMaterial
(
{
map
:
map4
,
side
:
THREE
.
DoubleSide
,
blending
:
THREE
.
AdditiveBlending
,
depthTest
:
false
,
transparent
:
true
}
);
...
...
src/extras/ImageUtils.js
浏览文件 @
6a804759
...
...
@@ -103,7 +103,7 @@ THREE.ImageUtils = {
if
(
images
.
loadCount
===
6
)
{
texture
.
needsUpdate
=
true
;
if
(
onLoad
)
onLoad
();
if
(
onLoad
)
onLoad
(
texture
);
}
...
...
@@ -158,7 +158,7 @@ THREE.ImageUtils = {
texture
.
format
=
dds
.
format
;
texture
.
needsUpdate
=
true
;
if
(
onLoad
)
onLoad
();
if
(
onLoad
)
onLoad
(
texture
);
}
...
...
@@ -166,22 +166,55 @@ THREE.ImageUtils = {
}
for
(
var
i
=
0
,
il
=
array
.
length
;
i
<
il
;
++
i
)
{
if
(
array
instanceof
Array
)
{
for
(
var
i
=
0
,
il
=
array
.
length
;
i
<
il
;
++
i
)
{
var
cubeImage
=
{};
images
[
i
]
=
cubeImage
;
var
cubeImage
=
{};
images
[
i
]
=
cubeImage
;
var
request
=
new
XMLHttpRequest
();
request
.
onload
=
generateCubeFaceCallback
(
request
,
cubeImage
);
request
.
onerror
=
onError
;
var
url
=
array
[
i
];
request
.
open
(
'
GET
'
,
url
,
true
);
request
.
responseType
=
"
arraybuffer
"
;
request
.
send
(
null
);
}
}
//If the compressed cubemap texture is stored in a single DDS file.
else
{
var
url
=
array
;
var
request
=
new
XMLHttpRequest
();
request
.
onload
=
generateCubeFaceCallback
(
request
,
cubeImage
);
request
.
onerror
=
onError
;
request
.
onload
=
function
(
)
{
var
buffer
=
request
.
response
;
var
dds
=
THREE
.
ImageUtils
.
parseDDS
(
buffer
,
true
);
if
(
dds
.
isCubemap
)
{
var
faces
=
dds
.
mipmaps
.
length
/
dds
.
mipmapCount
;
for
(
var
f
=
0
;
f
<
faces
;
f
++
)
{
images
[
f
]
=
{
mipmaps
:
[]};
for
(
var
i
=
0
;
i
<
dds
.
mipmapCount
;
i
++
)
{
images
[
f
].
mipmaps
.
push
(
dds
.
mipmaps
[
f
*
dds
.
mipmapCount
+
i
]
);
images
[
f
].
format
=
dds
.
format
;
images
[
f
].
width
=
dds
.
width
;
images
[
f
].
height
=
dds
.
height
;
}
}
var
url
=
array
[
i
];
texture
.
format
=
dds
.
format
;
texture
.
needsUpdate
=
true
;
if
(
onLoad
)
onLoad
(
texture
);
}
}
request
.
onerror
=
onError
;
request
.
open
(
'
GET
'
,
url
,
true
);
request
.
responseType
=
"
arraybuffer
"
;
request
.
send
(
null
);
}
return
texture
;
...
...
@@ -268,6 +301,11 @@ THREE.ImageUtils = {
var
off_pfFlags
=
20
;
var
off_pfFourCC
=
21
;
var
off_caps
=
27
;
var
off_caps2
=
28
;
var
off_caps3
=
29
;
var
off_caps4
=
30
;
// Parse header
var
header
=
new
Int32Array
(
buffer
,
0
,
headerLengthInt
);
...
...
@@ -290,64 +328,74 @@ THREE.ImageUtils = {
var
fourCC
=
header
[
off_pfFourCC
];
switch
(
fourCC
)
{
switch
(
fourCC
)
{
case
FOURCC_DXT1
:
blockBytes
=
8
;
dds
.
format
=
THREE
.
RGB_S3TC_DXT1_Format
;
break
;
dds
.
format
=
THREE
.
RGB_S3TC_DXT1_Format
;
break
;
case
FOURCC_DXT3
:
case
FOURCC_DXT3
:
blockBytes
=
16
;
dds
.
format
=
THREE
.
RGBA_S3TC_DXT3_Format
;
break
;
blockBytes
=
16
;
dds
.
format
=
THREE
.
RGBA_S3TC_DXT3_Format
;
break
;
case
FOURCC_DXT5
:
case
FOURCC_DXT5
:
blockBytes
=
16
;
dds
.
format
=
THREE
.
RGBA_S3TC_DXT5_Format
;
break
;
blockBytes
=
16
;
dds
.
format
=
THREE
.
RGBA_S3TC_DXT5_Format
;
break
;
default
:
default
:
console
.
error
(
"
ImageUtils.parseDDS(): Unsupported FourCC code:
"
,
int32ToFourCC
(
fourCC
)
);
return
dds
;
console
.
error
(
"
ImageUtils.parseDDS(): Unsupported FourCC code:
"
,
int32ToFourCC
(
fourCC
)
);
return
dds
;
}
}
dds
.
mipmapCount
=
1
;
if
(
header
[
off_flags
]
&
DDSD_MIPMAPCOUNT
&&
loadMipmaps
!==
false
)
{
if
(
header
[
off_flags
]
&
DDSD_MIPMAPCOUNT
&&
loadMipmaps
!==
false
)
{
dds
.
mipmapCount
=
Math
.
max
(
1
,
header
[
off_mipmapCount
]
);
dds
.
mipmapCount
=
Math
.
max
(
1
,
header
[
off_mipmapCount
]
);
}
}
//TODO: Verify that all faces of the cubemap are present with DDSCAPS2_CUBEMAP_POSITIVEX, etc.
dds
.
isCubemap
=
header
[
off_caps2
]
&
DDSCAPS2_CUBEMAP
?
true
:
false
;
dds
.
width
=
header
[
off_width
];
dds
.
height
=
header
[
off_height
];
dds
.
width
=
header
[
off_width
];
dds
.
height
=
header
[
off_height
];
var
dataOffset
=
header
[
off_size
]
+
4
;
var
dataOffset
=
header
[
off_size
]
+
4
;
// Extract mipmaps buffers
var
width
=
dds
.
width
;
var
height
=
dds
.
height
;
for
(
var
i
=
0
;
i
<
dds
.
mipmapCount
;
i
++
)
{
var
faces
=
dds
.
isCubemap
?
6
:
1
;
var
dataLength
=
Math
.
max
(
4
,
width
)
/
4
*
Math
.
max
(
4
,
height
)
/
4
*
blockBytes
;
var
byteArray
=
new
Uint8Array
(
buffer
,
dataOffset
,
dataLength
);
for
(
var
face
=
0
;
face
<
faces
;
face
++
)
{
for
(
var
i
=
0
;
i
<
dds
.
mipmapCount
;
i
++
)
{
var
mipmap
=
{
"
data
"
:
byteArray
,
"
width
"
:
width
,
"
height
"
:
height
}
;
dds
.
mipmaps
.
push
(
mipmap
);
var
dataLength
=
Math
.
max
(
4
,
width
)
/
4
*
Math
.
max
(
4
,
height
)
/
4
*
blockBytes
;
var
byteArray
=
new
Uint8Array
(
buffer
,
dataOffset
,
dataLength
);
dataOffset
+=
dataLength
;
var
mipmap
=
{
"
data
"
:
byteArray
,
"
width
"
:
width
,
"
height
"
:
height
};
dds
.
mipmaps
.
push
(
mipmap
);
width
=
Math
.
max
(
width
*
0.5
,
1
);
height
=
Math
.
max
(
height
*
0.5
,
1
);
dataOffset
+=
dataLength
;
width
=
Math
.
max
(
width
*
0.5
,
1
);
height
=
Math
.
max
(
height
*
0.5
,
1
);
}
width
=
dds
.
width
;
height
=
dds
.
height
;
}
return
dds
;
...
...
src/renderers/WebGLRenderer.js
浏览文件 @
6a804759
...
...
@@ -364,6 +364,12 @@ THREE.WebGLRenderer = function ( parameters ) {
};
this
.
deallocateTextureCube
=
function
(
texture
)
{
_gl
.
deleteTexture
(
texture
.
__webglTextureCube
);
};
this
.
deallocateRenderTarget
=
function
(
renderTarget
)
{
if
(
!
renderTarget
||
!
renderTarget
.
__webglTexture
)
return
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录