Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
e3b68c4d
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,发现更多精彩内容 >>
提交
e3b68c4d
编写于
2月 21, 2011
作者:
A
alteredq
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed bug in frustum culling.
Thanks to oosmoxiecode for reporting ;)
上级
b36cf734
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
3 addition
and
3 deletion
+3
-3
build/Three.js
build/Three.js
+1
-1
build/ThreeExtras.js
build/ThreeExtras.js
+1
-1
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+1
-1
未找到文件。
build/Three.js
浏览文件 @
e3b68c4d
...
...
@@ -205,7 +205,7 @@ h.__webGLSkinIndicesBuffer);c.vertexAttribPointer(f.skinIndex,4,c.FLOAT,!1,0,0);
0
)}
else
if
(
q
instanceof
THREE
.
Line
){
q
=
q
.
type
==
THREE
.
LineStrip
?
c
.
LINE_STRIP
:
c
.
LINES
;
c
.
lineWidth
(
j
.
linewidth
);
c
.
drawArrays
(
q
,
0
,
h
.
__webGLLineCount
)}
else
if
(
q
instanceof
THREE
.
ParticleSystem
)
c
.
drawArrays
(
c
.
POINTS
,
0
,
h
.
__webGLParticleCount
);
else
q
instanceof
THREE
.
Ribbon
&&
c
.
drawArrays
(
c
.
TRIANGLE_STRIP
,
0
,
h
.
__webGLVertexCount
)}
function
i
(
f
,
n
){
if
(
!
f
.
__webGLVertexBuffer
)
f
.
__webGLVertexBuffer
=
c
.
createBuffer
();
if
(
!
f
.
__webGLNormalBuffer
)
f
.
__webGLNormalBuffer
=
c
.
createBuffer
();
if
(
f
.
hasPos
){
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
f
.
__webGLVertexBuffer
);
c
.
bufferData
(
c
.
ARRAY_BUFFER
,
f
.
positionArray
,
c
.
DYNAMIC_DRAW
);
c
.
enableVertexAttribArray
(
n
.
attributes
.
position
);
c
.
vertexAttribPointer
(
n
.
attributes
.
position
,
3
,
c
.
FLOAT
,
!
1
,
0
,
0
)}
if
(
f
.
hasNormal
){
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
f
.
__webGLNormalBuffer
);
c
.
bufferData
(
c
.
ARRAY_BUFFER
,
f
.
normalArray
,
c
.
DYNAMIC_DRAW
);
c
.
enableVertexAttribArray
(
n
.
attributes
.
normal
);
c
.
vertexAttribPointer
(
n
.
attributes
.
normal
,
3
,
c
.
FLOAT
,
!
1
,
0
,
0
)}
c
.
drawArrays
(
c
.
TRIANGLES
,
0
,
f
.
count
);
f
.
count
=
0
}
function
l
(
f
){
if
(
ca
!=
f
.
doubleSided
){
f
.
doubleSided
?
c
.
disable
(
c
.
CULL_FACE
):
c
.
enable
(
c
.
CULL_FACE
);
ca
=
f
.
doubleSided
}
if
(
S
!=
f
.
flipSided
){
f
.
flipSided
?
c
.
frontFace
(
c
.
CW
):
c
.
frontFace
(
c
.
CCW
);
S
=
f
.
flipSided
}}
function
m
(
f
){
if
(
V
!=
f
){
f
?
c
.
enable
(
c
.
DEPTH_TEST
):
c
.
disable
(
c
.
DEPTH_TEST
);
V
=
f
}}
function
k
(
f
){
D
[
0
].
set
(
f
.
n41
-
f
.
n11
,
f
.
n42
-
f
.
n12
,
f
.
n43
-
f
.
n13
,
f
.
n44
-
f
.
n14
);
D
[
1
].
set
(
f
.
n41
+
f
.
n11
,
f
.
n42
+
f
.
n12
,
f
.
n43
+
f
.
n13
,
f
.
n44
+
f
.
n14
);
D
[
2
].
set
(
f
.
n41
+
f
.
n21
,
f
.
n42
+
f
.
n22
,
f
.
n43
+
f
.
n23
,
f
.
n44
+
f
.
n24
);
D
[
3
].
set
(
f
.
n41
-
f
.
n21
,
f
.
n42
-
f
.
n22
,
f
.
n43
-
f
.
n23
,
f
.
n44
-
f
.
n24
);
D
[
4
].
set
(
f
.
n41
-
f
.
n31
,
f
.
n42
-
f
.
n32
,
f
.
n43
-
f
.
n33
,
f
.
n44
-
f
.
n34
);
D
[
5
].
set
(
f
.
n41
+
f
.
n31
,
f
.
n42
+
f
.
n32
,
f
.
n43
+
f
.
n33
,
f
.
n44
+
f
.
n34
);
var
n
;
for
(
f
=
0
;
f
<
5
;
f
++
){
n
=
D
[
f
];
n
.
divideScalar
(
Math
.
sqrt
(
n
.
x
*
n
.
x
+
n
.
y
*
n
.
y
+
n
.
z
*
n
.
z
))}}
function
o
(
f
){
for
(
var
n
=
f
.
globalMatrix
,
p
=-
f
.
geometry
.
boundingSphere
.
radius
*
Math
.
max
(
f
.
scale
.
x
,
Math
.
max
(
f
.
scale
.
y
,
f
.
scale
.
z
)),
j
=
0
;
j
<
6
;
j
++
){
f
=
D
[
j
].
x
*
n
.
n14
+
D
[
j
].
y
*
n
.
n24
+
D
[
j
].
z
*
n
.
n34
+
D
[
j
].
w
;
if
(
f
<=
p
)
return
!
1
}
return
!
0
}
function
s
(
f
,
n
){
f
.
list
[
f
.
count
]
=
n
;
f
.
count
+=
1
}
function
w
(
f
){
var
n
,
p
,
j
=
f
.
object
,
h
=
f
.
opaque
,
q
=
f
.
transparent
;
q
.
count
=
0
;
f
=
h
.
count
=
f
.
n43
-
f
.
n33
,
f
.
n44
-
f
.
n34
);
D
[
5
].
set
(
f
.
n41
+
f
.
n31
,
f
.
n42
+
f
.
n32
,
f
.
n43
+
f
.
n33
,
f
.
n44
+
f
.
n34
);
var
n
;
for
(
f
=
0
;
f
<
6
;
f
++
){
n
=
D
[
f
];
n
.
divideScalar
(
Math
.
sqrt
(
n
.
x
*
n
.
x
+
n
.
y
*
n
.
y
+
n
.
z
*
n
.
z
))}}
function
o
(
f
){
for
(
var
n
=
f
.
globalMatrix
,
p
=-
f
.
geometry
.
boundingSphere
.
radius
*
Math
.
max
(
f
.
scale
.
x
,
Math
.
max
(
f
.
scale
.
y
,
f
.
scale
.
z
)),
j
=
0
;
j
<
6
;
j
++
){
f
=
D
[
j
].
x
*
n
.
n14
+
D
[
j
].
y
*
n
.
n24
+
D
[
j
].
z
*
n
.
n34
+
D
[
j
].
w
;
if
(
f
<=
p
)
return
!
1
}
return
!
0
}
function
s
(
f
,
n
){
f
.
list
[
f
.
count
]
=
n
;
f
.
count
+=
1
}
function
w
(
f
){
var
n
,
p
,
j
=
f
.
object
,
h
=
f
.
opaque
,
q
=
f
.
transparent
;
q
.
count
=
0
;
f
=
h
.
count
=
0
;
for
(
n
=
j
.
materials
.
length
;
f
<
n
;
f
++
){
p
=
j
.
materials
[
f
];
p
.
opacity
&&
p
.
opacity
<
1
||
p
.
blending
!=
THREE
.
NormalBlending
?
s
(
q
,
p
):
s
(
h
,
p
)}}
function
u
(
f
){
var
n
,
p
,
j
,
h
,
q
=
f
.
object
,
t
=
f
.
buffer
,
A
=
f
.
opaque
,
W
=
f
.
transparent
;
W
.
count
=
0
;
f
=
A
.
count
=
0
;
for
(
j
=
q
.
materials
.
length
;
f
<
j
;
f
++
){
n
=
q
.
materials
[
f
];
if
(
n
instanceof
THREE
.
MeshFaceMaterial
){
n
=
0
;
for
(
p
=
t
.
materials
.
length
;
n
<
p
;
n
++
)(
h
=
t
.
materials
[
n
])
&&
(
h
.
opacity
&&
h
.
opacity
<
1
||
h
.
blending
!=
THREE
.
NormalBlending
?
s
(
W
,
h
):
s
(
A
,
h
))}
else
{
h
=
n
;
h
.
opacity
&&
h
.
opacity
<
1
||
h
.
blending
!=
THREE
.
NormalBlending
?
s
(
W
,
h
):
s
(
A
,
h
)}}}
function
x
(
f
,
n
){
return
n
.
z
-
f
.
z
}
function
F
(
f
,
n
,
p
,
j
,
h
){
if
(
n
[
p
]
==
undefined
){
f
.
push
({
buffer
:
j
,
object
:
h
,
opaque
:{
list
:[],
count
:
0
},
transparent
:{
list
:[],
count
:
0
}});
n
[
p
]
=
1
}}
function
I
(
f
,
n
){
f
.
_modelViewMatrix
.
multiplyToArray
(
n
.
globalMatrix
,
f
.
globalMatrix
,
f
.
_modelViewMatrixArray
);
THREE
.
Matrix4
.
makeInvert3x3
(
f
.
_modelViewMatrix
).
transposeIntoArray
(
f
.
_normalMatrixArray
)}
function
H
(
f
){
if
(
f
!=
ba
){
switch
(
f
){
case
THREE
.
AdditiveBlending
:
c
.
blendEquation
(
c
.
FUNC_ADD
);
c
.
blendFunc
(
c
.
ONE
,
c
.
ONE
);
break
;
case
THREE
.
SubtractiveBlending
:
c
.
blendFunc
(
c
.
DST_COLOR
,
c
.
ZERO
);
break
;
case
THREE
.
BillboardBlending
:
c
.
blendEquation
(
c
.
FUNC_ADD
);
c
.
blendFunc
(
c
.
SRC_ALPHA
,
c
.
ONE_MINUS_SRC_ALPHA
);
break
;
case
THREE
.
ReverseSubtractiveBlending
:
c
.
blendEquation
(
c
.
FUNC_REVERSE_SUBTRACT
);
c
.
blendFunc
(
c
.
ONE
,
c
.
ONE
);
break
;
default
:
c
.
blendEquation
(
c
.
FUNC_ADD
);
c
.
blendFunc
(
c
.
ONE
,
c
.
ONE_MINUS_SRC_ALPHA
)}
ba
=
f
}}
function
r
(
f
,
n
){
if
(
f
&&!
f
.
__webGLFramebuffer
){
f
.
__webGLFramebuffer
=
c
.
createFramebuffer
();
f
.
__webGLRenderbuffer
=
c
.
createRenderbuffer
();
f
.
__webGLTexture
=
c
.
createTexture
();
c
.
bindRenderbuffer
(
c
.
RENDERBUFFER
,
...
...
build/ThreeExtras.js
浏览文件 @
e3b68c4d
...
...
@@ -205,7 +205,7 @@ n.__webGLUV2Buffer);e.vertexAttribPointer(l.uv2,2,e.FLOAT,!1,0,0);e.enableVertex
e
.
LINE_STRIP
:
e
.
LINES
;
e
.
lineWidth
(
p
.
linewidth
);
e
.
drawArrays
(
B
,
0
,
n
.
__webGLLineCount
)}
else
if
(
B
instanceof
THREE
.
ParticleSystem
)
e
.
drawArrays
(
e
.
POINTS
,
0
,
n
.
__webGLParticleCount
);
else
B
instanceof
THREE
.
Ribbon
&&
e
.
drawArrays
(
e
.
TRIANGLE_STRIP
,
0
,
n
.
__webGLVertexCount
)}
function
g
(
l
,
z
){
if
(
!
l
.
__webGLVertexBuffer
)
l
.
__webGLVertexBuffer
=
e
.
createBuffer
();
if
(
!
l
.
__webGLNormalBuffer
)
l
.
__webGLNormalBuffer
=
e
.
createBuffer
();
if
(
l
.
hasPos
){
e
.
bindBuffer
(
e
.
ARRAY_BUFFER
,
l
.
__webGLVertexBuffer
);
e
.
bufferData
(
e
.
ARRAY_BUFFER
,
l
.
positionArray
,
e
.
DYNAMIC_DRAW
);
e
.
enableVertexAttribArray
(
z
.
attributes
.
position
);
e
.
vertexAttribPointer
(
z
.
attributes
.
position
,
3
,
e
.
FLOAT
,
!
1
,
0
,
0
)}
if
(
l
.
hasNormal
){
e
.
bindBuffer
(
e
.
ARRAY_BUFFER
,
l
.
__webGLNormalBuffer
);
e
.
bufferData
(
e
.
ARRAY_BUFFER
,
l
.
normalArray
,
e
.
DYNAMIC_DRAW
);
e
.
enableVertexAttribArray
(
z
.
attributes
.
normal
);
e
.
vertexAttribPointer
(
z
.
attributes
.
normal
,
3
,
e
.
FLOAT
,
!
1
,
0
,
0
)}
e
.
drawArrays
(
e
.
TRIANGLES
,
0
,
l
.
count
);
l
.
count
=
0
}
function
h
(
l
){
if
(
V
!=
l
.
doubleSided
){
l
.
doubleSided
?
e
.
disable
(
e
.
CULL_FACE
):
e
.
enable
(
e
.
CULL_FACE
);
V
=
l
.
doubleSided
}
if
(
S
!=
l
.
flipSided
){
l
.
flipSided
?
e
.
frontFace
(
e
.
CW
):
e
.
frontFace
(
e
.
CCW
);
S
=
l
.
flipSided
}}
function
k
(
l
){
if
(
Z
!=
l
){
l
?
e
.
enable
(
e
.
DEPTH_TEST
):
e
.
disable
(
e
.
DEPTH_TEST
);
Z
=
l
}}
function
j
(
l
){
G
[
0
].
set
(
l
.
n41
-
l
.
n11
,
l
.
n42
-
l
.
n12
,
l
.
n43
-
l
.
n13
,
l
.
n44
-
l
.
n14
);
G
[
1
].
set
(
l
.
n41
+
l
.
n11
,
l
.
n42
+
l
.
n12
,
l
.
n43
+
l
.
n13
,
l
.
n44
+
l
.
n14
);
G
[
2
].
set
(
l
.
n41
+
l
.
n21
,
l
.
n42
+
l
.
n22
,
l
.
n43
+
l
.
n23
,
l
.
n44
+
l
.
n24
);
G
[
3
].
set
(
l
.
n41
-
l
.
n21
,
l
.
n42
-
l
.
n22
,
l
.
n43
-
l
.
n23
,
l
.
n44
-
l
.
n24
);
G
[
4
].
set
(
l
.
n41
-
l
.
n31
,
l
.
n42
-
l
.
n32
,
l
.
n43
-
l
.
n33
,
l
.
n44
-
l
.
n34
);
G
[
5
].
set
(
l
.
n41
+
l
.
n31
,
l
.
n42
+
l
.
n32
,
l
.
n43
+
l
.
n33
,
l
.
n44
+
l
.
n34
);
var
z
;
for
(
l
=
0
;
l
<
5
;
l
++
){
z
=
G
[
l
];
z
.
divideScalar
(
Math
.
sqrt
(
z
.
x
*
z
.
x
+
z
.
y
*
z
.
y
+
z
.
z
*
z
.
z
))}}
function
m
(
l
){
for
(
var
z
=
l
.
globalMatrix
,
C
=-
l
.
geometry
.
boundingSphere
.
radius
*
Math
.
max
(
l
.
scale
.
x
,
Math
.
max
(
l
.
scale
.
y
,
l
.
scale
.
z
)),
p
=
0
;
p
<
6
;
p
++
){
l
=
G
[
p
].
x
*
z
.
n14
+
G
[
p
].
y
*
z
.
n24
+
G
[
p
].
z
*
z
.
n34
+
G
[
p
].
w
;
if
(
l
<=
C
)
return
!
1
}
return
!
0
}
function
o
(
l
,
z
){
l
.
list
[
l
.
count
]
=
z
;
l
.
count
+=
1
}
function
w
(
l
){
var
z
,
C
,
p
=
l
.
object
,
n
=
l
.
opaque
,
B
=
l
.
transparent
;
B
.
count
=
0
;
l
=
n
.
count
=
0
;
for
(
z
=
p
.
materials
.
length
;
l
<
z
;
l
++
){
C
=
p
.
materials
[
l
];
l
.
n32
,
l
.
n43
+
l
.
n33
,
l
.
n44
+
l
.
n34
);
var
z
;
for
(
l
=
0
;
l
<
6
;
l
++
){
z
=
G
[
l
];
z
.
divideScalar
(
Math
.
sqrt
(
z
.
x
*
z
.
x
+
z
.
y
*
z
.
y
+
z
.
z
*
z
.
z
))}}
function
m
(
l
){
for
(
var
z
=
l
.
globalMatrix
,
C
=-
l
.
geometry
.
boundingSphere
.
radius
*
Math
.
max
(
l
.
scale
.
x
,
Math
.
max
(
l
.
scale
.
y
,
l
.
scale
.
z
)),
p
=
0
;
p
<
6
;
p
++
){
l
=
G
[
p
].
x
*
z
.
n14
+
G
[
p
].
y
*
z
.
n24
+
G
[
p
].
z
*
z
.
n34
+
G
[
p
].
w
;
if
(
l
<=
C
)
return
!
1
}
return
!
0
}
function
o
(
l
,
z
){
l
.
list
[
l
.
count
]
=
z
;
l
.
count
+=
1
}
function
w
(
l
){
var
z
,
C
,
p
=
l
.
object
,
n
=
l
.
opaque
,
B
=
l
.
transparent
;
B
.
count
=
0
;
l
=
n
.
count
=
0
;
for
(
z
=
p
.
materials
.
length
;
l
<
z
;
l
++
){
C
=
p
.
materials
[
l
];
C
.
opacity
&&
C
.
opacity
<
1
||
C
.
blending
!=
THREE
.
NormalBlending
?
o
(
B
,
C
):
o
(
n
,
C
)}}
function
u
(
l
){
var
z
,
C
,
p
,
n
,
B
=
l
.
object
,
H
=
l
.
buffer
,
N
=
l
.
opaque
,
ca
=
l
.
transparent
;
ca
.
count
=
0
;
l
=
N
.
count
=
0
;
for
(
p
=
B
.
materials
.
length
;
l
<
p
;
l
++
){
z
=
B
.
materials
[
l
];
if
(
z
instanceof
THREE
.
MeshFaceMaterial
){
z
=
0
;
for
(
C
=
H
.
materials
.
length
;
z
<
C
;
z
++
)(
n
=
H
.
materials
[
z
])
&&
(
n
.
opacity
&&
n
.
opacity
<
1
||
n
.
blending
!=
THREE
.
NormalBlending
?
o
(
ca
,
n
):
o
(
N
,
n
))}
else
{
n
=
z
;
n
.
opacity
&&
n
.
opacity
<
1
||
n
.
blending
!=
THREE
.
NormalBlending
?
o
(
ca
,
n
):
o
(
N
,
n
)}}}
function
t
(
l
,
z
){
return
z
.
z
-
l
.
z
}
function
x
(
l
,
z
,
C
,
p
,
n
){
if
(
z
[
C
]
==
undefined
){
l
.
push
({
buffer
:
p
,
object
:
n
,
opaque
:{
list
:[],
count
:
0
},
transparent
:{
list
:[],
count
:
0
}});
z
[
C
]
=
1
}}
function
A
(
l
,
z
){
l
.
_modelViewMatrix
.
multiplyToArray
(
z
.
globalMatrix
,
l
.
globalMatrix
,
l
.
_modelViewMatrixArray
);
THREE
.
Matrix4
.
makeInvert3x3
(
l
.
_modelViewMatrix
).
transposeIntoArray
(
l
.
_normalMatrixArray
)}
function
F
(
l
){
if
(
l
!=
Y
){
switch
(
l
){
case
THREE
.
AdditiveBlending
:
e
.
blendEquation
(
e
.
FUNC_ADD
);
e
.
blendFunc
(
e
.
ONE
,
e
.
ONE
);
break
;
case
THREE
.
SubtractiveBlending
:
e
.
blendFunc
(
e
.
DST_COLOR
,
e
.
ZERO
);
break
;
case
THREE
.
BillboardBlending
:
e
.
blendEquation
(
e
.
FUNC_ADD
);
e
.
blendFunc
(
e
.
SRC_ALPHA
,
e
.
ONE_MINUS_SRC_ALPHA
);
break
;
case
THREE
.
ReverseSubtractiveBlending
:
e
.
blendEquation
(
e
.
FUNC_REVERSE_SUBTRACT
);
e
.
blendFunc
(
e
.
ONE
,
e
.
ONE
);
break
;
default
:
e
.
blendEquation
(
e
.
FUNC_ADD
);
e
.
blendFunc
(
e
.
ONE
,
e
.
ONE_MINUS_SRC_ALPHA
)}
Y
=
l
}}
function
v
(
l
,
z
){
if
(
l
&&!
l
.
__webGLFramebuffer
){
l
.
__webGLFramebuffer
=
e
.
createFramebuffer
();
l
.
__webGLRenderbuffer
=
e
.
createRenderbuffer
();
l
.
__webGLTexture
=
e
.
createTexture
();
e
.
bindRenderbuffer
(
e
.
RENDERBUFFER
,
...
...
src/renderers/WebGLRenderer.js
浏览文件 @
e3b68c4d
...
...
@@ -1739,7 +1739,7 @@ THREE.WebGLRenderer = function ( parameters ) {
var
i
,
plane
;
for
(
i
=
0
;
i
<
5
;
i
++
)
{
for
(
i
=
0
;
i
<
6
;
i
++
)
{
plane
=
_frustum
[
i
];
plane
.
divideScalar
(
Math
.
sqrt
(
plane
.
x
*
plane
.
x
+
plane
.
y
*
plane
.
y
+
plane
.
z
*
plane
.
z
)
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录