Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
d8e75851
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,发现更多精彩内容 >>
提交
d8e75851
编写于
9月 01, 2011
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Uops, creating __webglMorphTargetsBuffers there is not what we want.
上级
1be08e8a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
13 addition
and
19 deletion
+13
-19
build/Three.js
build/Three.js
+6
-7
build/custom/ThreeWebGL.js
build/custom/ThreeWebGL.js
+6
-7
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+1
-5
未找到文件。
build/Three.js
浏览文件 @
d8e75851
...
...
@@ -276,13 +276,12 @@ T.vertexBuffer);n.bufferData(n.ARRAY_BUFFER,T.vertices,n.STATIC_DRAW);n.bindBuff
T
.
uniforms
.
affectedByDistance
=
n
.
getUniformLocation
(
T
.
program
,
"
affectedByDistance
"
);
T
.
uniforms
.
screenPosition
=
n
.
getUniformLocation
(
T
.
program
,
"
screenPosition
"
);
T
.
uniforms
.
modelViewMatrix
=
n
.
getUniformLocation
(
T
.
program
,
"
modelViewMatrix
"
);
T
.
uniforms
.
projectionMatrix
=
n
.
getUniformLocation
(
T
.
program
,
"
projectionMatrix
"
);
var
Ba
=!
1
;
this
.
setSize
=
function
(
b
,
c
){
za
.
width
=
b
;
za
.
height
=
c
;
this
.
setViewport
(
0
,
0
,
za
.
width
,
za
.
height
)};
this
.
setViewport
=
function
(
b
,
c
,
e
,
f
){
W
=
b
;
da
=
c
;
fa
=
e
;
la
=
f
;
n
.
viewport
(
W
,
da
,
fa
,
la
)};
this
.
setScissor
=
function
(
b
,
c
,
e
,
f
){
n
.
scissor
(
b
,
c
,
e
,
f
)};
this
.
enableScissorTest
=
function
(
b
){
b
?
n
.
enable
(
n
.
SCISSOR_TEST
):
n
.
disable
(
n
.
SCISSOR_TEST
)};
this
.
enableDepthBufferWrite
=
function
(
b
){
aa
=
b
;
n
.
depthMask
(
b
)};
this
.
setClearColorHex
=
function
(
b
,
c
){
sa
.
setHex
(
b
);
na
=
c
;
n
.
clearColor
(
sa
.
r
,
sa
.
g
,
sa
.
b
,
na
)};
this
.
setClearColor
=
function
(
b
,
c
){
sa
.
copy
(
b
);
na
=
c
;
n
.
clearColor
(
sa
.
r
,
sa
.
g
,
sa
.
b
,
na
)};
this
.
clear
=
function
(){
n
.
clear
(
n
.
COLOR_BUFFER_BIT
|
n
.
DEPTH_BUFFER_BIT
|
n
.
STENCIL_BUFFER_BIT
)};
this
.
getContext
=
function
(){
return
n
};
this
.
deallocateObject
=
function
(
b
){
if
(
b
.
__webglInit
)
if
(
b
.
__webglInit
=!
1
,
delete
b
.
_modelViewMatrix
,
delete
b
.
_normalMatrixArray
,
delete
b
.
_modelViewMatrixArray
,
delete
b
.
_objectMatrixArray
,
b
instanceof
THREE
.
Mesh
)
for
(
g
in
b
.
geometry
.
geometryGroups
){
var
c
=
b
.
geometry
.
geometryGroups
[
g
];
n
.
deleteBuffer
(
c
.
__webglVertexBuffer
);
n
.
deleteBuffer
(
c
.
__webglNormalBuffer
);
n
.
deleteBuffer
(
c
.
__webglTangentBuffer
);
n
.
deleteBuffer
(
c
.
__webglColorBuffer
);
n
.
deleteBuffer
(
c
.
__webglUVBuffer
);
n
.
deleteBuffer
(
c
.
__webglUV2Buffer
);
n
.
deleteBuffer
(
c
.
__webglSkinVertexABuffer
);
n
.
deleteBuffer
(
c
.
__webglSkinVertexBBuffer
);
n
.
deleteBuffer
(
c
.
__webglSkinIndicesBuffer
);
n
.
deleteBuffer
(
c
.
__webglSkinWeightsBuffer
);
n
.
deleteBuffer
(
c
.
__webglFaceBuffer
);
n
.
deleteBuffer
(
c
.
__webglLineBuffer
);
if
(
c
.
numMorphTargets
){
var
e
=
void
0
,
f
=
void
0
;
c
.
__webglMorphTargetsBuffers
=
[];
e
=
0
;
for
(
f
=
c
.
numMorphTargets
;
e
<
f
;
e
++
)
n
.
deleteBuffer
(
c
.
__webglMorphTargetsBuffers
[
e
])}}
else
if
(
b
instanceof
THREE
.
Ribbon
)
b
=
b
.
geometry
,
n
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
n
.
deleteBuffer
(
b
.
__webglColorBuffer
);
else
if
(
b
instanceof
THREE
.
Line
)
b
=
b
.
geometry
,
n
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
n
.
deleteBuffer
(
b
.
__webglColorBuffer
);
else
if
(
b
instanceof
THREE
.
ParticleSystem
)
b
=
b
.
geometry
,
n
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
n
.
deleteBuffer
(
b
.
__webglColorBuffer
)};
this
.
deallocateTexture
=
function
(
b
){
if
(
b
.
__webglInit
)
b
.
__webglInit
=!
1
,
n
.
deleteTexture
(
b
.
__webglTexture
)};
this
.
initMaterial
=
function
(
b
,
c
,
e
,
f
){
var
h
,
j
,
k
;
b
instanceof
THREE
.
MeshDepthMaterial
?
k
=
"
depth
"
:
b
instanceof
THREE
.
MeshNormalMaterial
?
k
=
"
normal
"
:
b
instanceof
THREE
.
MeshBasicMaterial
?
k
=
"
basic
"
:
b
instanceof
THREE
.
MeshLambertMaterial
?
k
=
"
lambert
"
:
b
instanceof
THREE
.
MeshPhongMaterial
?
k
=
"
phong
"
:
b
instanceof
THREE
.
LineBasicMaterial
?
k
=
"
basic
"
:
b
instanceof
THREE
.
ParticleBasicMaterial
&&
(
k
=
"
particle_basic
"
);
if
(
k
){
var
m
=
THREE
.
ShaderLib
[
k
];
b
.
uniforms
=
THREE
.
UniformsUtils
.
clone
(
m
.
uniforms
);
b
.
vertexShader
=
m
.
vertexShader
;
b
.
fragmentShader
=
m
.
fragmentShader
}
var
o
,
u
,
v
;
o
=
v
=
m
=
0
;
for
(
u
=
c
.
length
;
o
<
u
;
o
++
)
j
=
c
[
o
],
j
instanceof
THREE
.
SpotLight
&&
v
++
,
j
instanceof
THREE
.
DirectionalLight
&&
v
++
,
j
instanceof
THREE
.
PointLight
&&
m
++
;
m
+
v
<=
_maxLights
?
o
=
v
:(
o
=
Math
.
ceil
(
_maxLights
*
v
/
(
m
+
v
)),
m
=
_maxLights
-
o
);
j
=
{
directional
:
o
,
point
:
m
};
m
=
v
=
0
;
for
(
o
=
c
.
length
;
m
<
o
;
m
++
)
u
=
c
[
m
],
u
instanceof
THREE
.
SpotLight
&&
u
.
castShadow
&&
v
++
;
var
p
=
50
;
if
(
f
!==
void
0
&&
f
instanceof
THREE
.
SkinnedMesh
)
p
=
f
.
bones
.
length
;
var
t
;
a
:{
o
=
b
.
fragmentShader
;
u
=
b
.
vertexShader
;
var
m
=
b
.
uniforms
,
c
=
b
.
attributes
,
e
=
{
map
:
!!
b
.
map
,
envMap
:
!!
b
.
envMap
,
lightMap
:
!!
b
.
lightMap
,
vertexColors
:
b
.
vertexColors
,
fog
:
e
,
sizeAttenuation
:
b
.
sizeAttenuation
,
skinning
:
b
.
skinning
,
morphTargets
:
b
.
morphTargets
,
maxMorphTargets
:
this
.
maxMorphTargets
,
maxDirLights
:
j
.
directional
,
maxPointLights
:
j
.
point
,
maxBones
:
p
,
shadowMapEnabled
:
this
.
shadowMapEnabled
&&
f
.
receiveShadow
,
shadowMapSoft
:
this
.
shadowMapSoft
,
shadowMapWidth
:
this
.
shadowMapWidth
,
shadowMapHeight
:
this
.
shadowMapHeight
,
maxShadows
:
v
,
alphaTest
:
b
.
alphaTest
},
w
,
f
=
[];
k
?
f
.
push
(
k
):(
f
.
push
(
o
),
f
.
push
(
u
));
for
(
w
in
e
)
f
.
push
(
w
),
f
.
push
(
e
[
w
]);
k
=
f
.
join
();
w
=
0
;
for
(
f
=
V
.
length
;
w
<
f
;
w
++
)
if
(
V
[
w
].
code
==
k
){
t
=
V
[
w
].
program
;
break
a
}
w
=
n
.
createProgram
();
f
=
[
ta
?
"
#define VERTEX_TEXTURES
"
:
""
,
"
#define MAX_DIR_LIGHTS
"
+
e
.
maxDirLights
,
"
#define MAX_POINT_LIGHTS
"
+
e
.
maxPointLights
,
"
#define MAX_SHADOWS
"
+
e
.
maxShadows
,
"
#define MAX_BONES
"
+
e
.
maxBones
,
e
.
map
?
"
#define USE_MAP
"
:
""
,
e
.
envMap
?
"
#define USE_ENVMAP
"
:
""
,
e
.
lightMap
?
"
#define USE_LIGHTMAP
"
:
""
,
e
.
vertexColors
?
"
#define USE_COLOR
"
:
""
,
e
.
skinning
?
"
#define USE_SKINNING
"
:
""
,
e
.
morphTargets
?
"
#define USE_MORPHTARGETS
"
:
""
,
e
.
shadowMapEnabled
?
"
#define USE_SHADOWMAP
"
:
""
,
e
.
shadowMapSoft
?
"
#define SHADOWMAP_SOFT
"
:
""
,
e
.
sizeAttenuation
?
"
#define USE_SIZEATTENUATION
"
:
""
,
"
uniform mat4 objectMatrix;
\n
uniform mat4 modelViewMatrix;
\n
uniform mat4 projectionMatrix;
\n
uniform mat4 viewMatrix;
\n
uniform mat3 normalMatrix;
\n
uniform vec3 cameraPosition;
\n
uniform mat4 cameraInverseMatrix;
\n
attribute vec3 position;
\n
attribute vec3 normal;
\n
attribute vec2 uv;
\n
attribute vec2 uv2;
\n
#ifdef USE_COLOR
\n
attribute vec3 color;
\n
#endif
\n
#ifdef USE_MORPHTARGETS
\n
attribute vec3 morphTarget0;
\n
attribute vec3 morphTarget1;
\n
attribute vec3 morphTarget2;
\n
attribute vec3 morphTarget3;
\n
attribute vec3 morphTarget4;
\n
attribute vec3 morphTarget5;
\n
attribute vec3 morphTarget6;
\n
attribute vec3 morphTarget7;
\n
#endif
\n
#ifdef USE_SKINNING
\n
attribute vec4 skinVertexA;
\n
attribute vec4 skinVertexB;
\n
attribute vec4 skinIndex;
\n
attribute vec4 skinWeight;
\n
#endif
\n
"
].
join
(
"
\n
"
);
n
.
deleteBuffer
(
c
.
__webglSkinVertexBBuffer
);
n
.
deleteBuffer
(
c
.
__webglSkinIndicesBuffer
);
n
.
deleteBuffer
(
c
.
__webglSkinWeightsBuffer
);
n
.
deleteBuffer
(
c
.
__webglFaceBuffer
);
n
.
deleteBuffer
(
c
.
__webglLineBuffer
);
if
(
c
.
numMorphTargets
)
for
(
var
e
=
0
,
f
=
c
.
numMorphTargets
;
e
<
f
;
e
++
)
n
.
deleteBuffer
(
c
.
__webglMorphTargetsBuffers
[
e
])}
else
if
(
b
instanceof
THREE
.
Ribbon
)
b
=
b
.
geometry
,
n
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
n
.
deleteBuffer
(
b
.
__webglColorBuffer
);
else
if
(
b
instanceof
THREE
.
Line
)
b
=
b
.
geometry
,
n
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
n
.
deleteBuffer
(
b
.
__webglColorBuffer
);
else
if
(
b
instanceof
THREE
.
ParticleSystem
)
b
=
b
.
geometry
,
n
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
n
.
deleteBuffer
(
b
.
__webglColorBuffer
)};
this
.
deallocateTexture
=
function
(
b
){
if
(
b
.
__webglInit
)
b
.
__webglInit
=!
1
,
n
.
deleteTexture
(
b
.
__webglTexture
)};
this
.
initMaterial
=
function
(
b
,
c
,
e
,
f
){
var
h
,
j
,
k
;
b
instanceof
THREE
.
MeshDepthMaterial
?
k
=
"
depth
"
:
b
instanceof
THREE
.
MeshNormalMaterial
?
k
=
"
normal
"
:
b
instanceof
THREE
.
MeshBasicMaterial
?
k
=
"
basic
"
:
b
instanceof
THREE
.
MeshLambertMaterial
?
k
=
"
lambert
"
:
b
instanceof
THREE
.
MeshPhongMaterial
?
k
=
"
phong
"
:
b
instanceof
THREE
.
LineBasicMaterial
?
k
=
"
basic
"
:
b
instanceof
THREE
.
ParticleBasicMaterial
&&
(
k
=
"
particle_basic
"
);
if
(
k
){
var
m
=
THREE
.
ShaderLib
[
k
];
b
.
uniforms
=
THREE
.
UniformsUtils
.
clone
(
m
.
uniforms
);
b
.
vertexShader
=
m
.
vertexShader
;
b
.
fragmentShader
=
m
.
fragmentShader
}
var
o
,
u
,
v
;
o
=
v
=
m
=
0
;
for
(
u
=
c
.
length
;
o
<
u
;
o
++
)
j
=
c
[
o
],
j
instanceof
THREE
.
SpotLight
&&
v
++
,
j
instanceof
THREE
.
DirectionalLight
&&
v
++
,
j
instanceof
THREE
.
PointLight
&&
m
++
;
m
+
v
<=
_maxLights
?
o
=
v
:(
o
=
Math
.
ceil
(
_maxLights
*
v
/
(
m
+
v
)),
m
=
_maxLights
-
o
);
j
=
{
directional
:
o
,
point
:
m
};
m
=
v
=
0
;
for
(
o
=
c
.
length
;
m
<
o
;
m
++
)
u
=
c
[
m
],
u
instanceof
THREE
.
SpotLight
&&
u
.
castShadow
&&
v
++
;
var
p
=
50
;
if
(
f
!==
void
0
&&
f
instanceof
THREE
.
SkinnedMesh
)
p
=
f
.
bones
.
length
;
var
t
;
a
:{
o
=
b
.
fragmentShader
;
u
=
b
.
vertexShader
;
var
m
=
b
.
uniforms
,
c
=
b
.
attributes
,
e
=
{
map
:
!!
b
.
map
,
envMap
:
!!
b
.
envMap
,
lightMap
:
!!
b
.
lightMap
,
vertexColors
:
b
.
vertexColors
,
fog
:
e
,
sizeAttenuation
:
b
.
sizeAttenuation
,
skinning
:
b
.
skinning
,
morphTargets
:
b
.
morphTargets
,
maxMorphTargets
:
this
.
maxMorphTargets
,
maxDirLights
:
j
.
directional
,
maxPointLights
:
j
.
point
,
maxBones
:
p
,
shadowMapEnabled
:
this
.
shadowMapEnabled
&&
f
.
receiveShadow
,
shadowMapSoft
:
this
.
shadowMapSoft
,
shadowMapWidth
:
this
.
shadowMapWidth
,
shadowMapHeight
:
this
.
shadowMapHeight
,
maxShadows
:
v
,
alphaTest
:
b
.
alphaTest
},
w
,
f
=
[];
k
?
f
.
push
(
k
):(
f
.
push
(
o
),
f
.
push
(
u
));
for
(
w
in
e
)
f
.
push
(
w
),
f
.
push
(
e
[
w
]);
k
=
f
.
join
();
w
=
0
;
for
(
f
=
V
.
length
;
w
<
f
;
w
++
)
if
(
V
[
w
].
code
==
k
){
t
=
V
[
w
].
program
;
break
a
}
w
=
n
.
createProgram
();
f
=
[
ta
?
"
#define VERTEX_TEXTURES
"
:
""
,
"
#define MAX_DIR_LIGHTS
"
+
e
.
maxDirLights
,
"
#define MAX_POINT_LIGHTS
"
+
e
.
maxPointLights
,
"
#define MAX_SHADOWS
"
+
e
.
maxShadows
,
"
#define MAX_BONES
"
+
e
.
maxBones
,
e
.
map
?
"
#define USE_MAP
"
:
""
,
e
.
envMap
?
"
#define USE_ENVMAP
"
:
""
,
e
.
lightMap
?
"
#define USE_LIGHTMAP
"
:
""
,
e
.
vertexColors
?
"
#define USE_COLOR
"
:
""
,
e
.
skinning
?
"
#define USE_SKINNING
"
:
""
,
e
.
morphTargets
?
"
#define USE_MORPHTARGETS
"
:
""
,
e
.
shadowMapEnabled
?
"
#define USE_SHADOWMAP
"
:
""
,
e
.
shadowMapSoft
?
"
#define SHADOWMAP_SOFT
"
:
""
,
e
.
sizeAttenuation
?
"
#define USE_SIZEATTENUATION
"
:
""
,
"
uniform mat4 objectMatrix;
\n
uniform mat4 modelViewMatrix;
\n
uniform mat4 projectionMatrix;
\n
uniform mat4 viewMatrix;
\n
uniform mat3 normalMatrix;
\n
uniform vec3 cameraPosition;
\n
uniform mat4 cameraInverseMatrix;
\n
attribute vec3 position;
\n
attribute vec3 normal;
\n
attribute vec2 uv;
\n
attribute vec2 uv2;
\n
#ifdef USE_COLOR
\n
attribute vec3 color;
\n
#endif
\n
#ifdef USE_MORPHTARGETS
\n
attribute vec3 morphTarget0;
\n
attribute vec3 morphTarget1;
\n
attribute vec3 morphTarget2;
\n
attribute vec3 morphTarget3;
\n
attribute vec3 morphTarget4;
\n
attribute vec3 morphTarget5;
\n
attribute vec3 morphTarget6;
\n
attribute vec3 morphTarget7;
\n
#endif
\n
#ifdef USE_SKINNING
\n
attribute vec4 skinVertexA;
\n
attribute vec4 skinVertexB;
\n
attribute vec4 skinIndex;
\n
attribute vec4 skinWeight;
\n
#endif
\n
"
].
join
(
"
\n
"
);
j
=
[
"
#ifdef GL_ES
\n
precision highp float;
\n
#endif
"
,
"
#define MAX_DIR_LIGHTS
"
+
e
.
maxDirLights
,
"
#define MAX_POINT_LIGHTS
"
+
e
.
maxPointLights
,
"
#define MAX_SHADOWS
"
+
e
.
maxShadows
,
e
.
alphaTest
?
"
#define ALPHATEST
"
+
e
.
alphaTest
:
""
,
e
.
fog
?
"
#define USE_FOG
"
:
""
,
e
.
fog
instanceof
THREE
.
FogExp2
?
"
#define FOG_EXP2
"
:
""
,
e
.
map
?
"
#define USE_MAP
"
:
""
,
e
.
envMap
?
"
#define USE_ENVMAP
"
:
""
,
e
.
lightMap
?
"
#define USE_LIGHTMAP
"
:
""
,
e
.
vertexColors
?
"
#define USE_COLOR
"
:
""
,
e
.
shadowMapEnabled
?
"
#define USE_SHADOWMAP
"
:
""
,
e
.
shadowMapSoft
?
"
#define SHADOWMAP_SOFT
"
:
""
,
e
.
shadowMapSoft
?
"
#define SHADOWMAP_WIDTH
"
+
e
.
shadowMapWidth
.
toFixed
(
1
):
""
,
e
.
shadowMapSoft
?
"
#define SHADOWMAP_HEIGHT
"
+
e
.
shadowMapHeight
.
toFixed
(
1
):
""
,
"
uniform mat4 viewMatrix;
\n
uniform vec3 cameraPosition;
\n
"
].
join
(
"
\n
"
);
n
.
attachShader
(
w
,
F
(
"
fragment
"
,
j
+
o
));
n
.
attachShader
(
w
,
F
(
"
vertex
"
,
f
+
u
));
n
.
linkProgram
(
w
);
n
.
getProgramParameter
(
w
,
n
.
LINK_STATUS
)
||
console
.
error
(
"
Could not initialise shader
\n
VALIDATE_STATUS:
"
+
n
.
getProgramParameter
(
w
,
n
.
VALIDATE_STATUS
)
+
"
, gl error [
"
+
n
.
getError
()
+
"
]
"
);
w
.
uniforms
=
{};
w
.
attributes
=
{};
var
y
,
f
=
[
"
viewMatrix
"
,
"
modelViewMatrix
"
,
"
projectionMatrix
"
,
"
normalMatrix
"
,
"
objectMatrix
"
,
"
cameraPosition
"
,
"
cameraInverseMatrix
"
,
"
boneGlobalMatrices
"
,
"
morphTargetInfluences
"
];
for
(
y
in
m
)
f
.
push
(
y
);
y
=
f
;
f
=
0
;
for
(
m
=
y
.
length
;
f
<
m
;
f
++
)
o
=
y
[
f
],
w
.
uniforms
[
o
]
=
n
.
getUniformLocation
(
w
,
o
);
f
=
[
"
position
"
,
"
normal
"
,
"
uv
"
,
"
uv2
"
,
"
tangent
"
,
"
color
"
,
"
skinVertexA
"
,
"
skinVertexB
"
,
"
skinIndex
"
,
"
skinWeight
"
];
for
(
y
=
0
;
y
<
e
.
maxMorphTargets
;
y
++
)
f
.
push
(
"
morphTarget
"
+
y
);
for
(
t
in
c
)
f
.
push
(
t
);
t
=
f
;
y
=
0
;
for
(
c
=
t
.
length
;
y
<
c
;
y
++
)
e
=
...
...
build/custom/ThreeWebGL.js
浏览文件 @
d8e75851
...
...
@@ -232,13 +232,12 @@ u.vertexBuffer);e.bufferData(e.ARRAY_BUFFER,u.vertices,e.STATIC_DRAW);e.bindBuff
u
.
uniforms
.
affectedByDistance
=
e
.
getUniformLocation
(
u
.
program
,
"
affectedByDistance
"
);
u
.
uniforms
.
screenPosition
=
e
.
getUniformLocation
(
u
.
program
,
"
screenPosition
"
);
u
.
uniforms
.
modelViewMatrix
=
e
.
getUniformLocation
(
u
.
program
,
"
modelViewMatrix
"
);
u
.
uniforms
.
projectionMatrix
=
e
.
getUniformLocation
(
u
.
program
,
"
projectionMatrix
"
);
var
Va
=!
1
;
this
.
setSize
=
function
(
b
,
c
){
Ga
.
width
=
b
;
Ga
.
height
=
c
;
this
.
setViewport
(
0
,
0
,
Ga
.
width
,
Ga
.
height
)};
this
.
setViewport
=
function
(
b
,
c
,
d
,
f
){
Q
=
b
;
za
=
c
;
Da
=
d
;
Ea
=
f
;
e
.
viewport
(
Q
,
za
,
Da
,
Ea
)};
this
.
setScissor
=
function
(
b
,
c
,
d
,
f
){
e
.
scissor
(
b
,
c
,
d
,
f
)};
this
.
enableScissorTest
=
function
(
b
){
b
?
e
.
enable
(
e
.
SCISSOR_TEST
):
e
.
disable
(
e
.
SCISSOR_TEST
)};
this
.
enableDepthBufferWrite
=
function
(
b
){
va
=
b
;
e
.
depthMask
(
b
)};
this
.
setClearColorHex
=
function
(
b
,
c
){
wa
.
setHex
(
b
);
Ia
=
c
;
e
.
clearColor
(
wa
.
r
,
wa
.
g
,
wa
.
b
,
Ia
)};
this
.
setClearColor
=
function
(
b
,
c
){
wa
.
copy
(
b
);
Ia
=
c
;
e
.
clearColor
(
wa
.
r
,
wa
.
g
,
wa
.
b
,
Ia
)};
this
.
clear
=
function
(){
e
.
clear
(
e
.
COLOR_BUFFER_BIT
|
e
.
DEPTH_BUFFER_BIT
|
e
.
STENCIL_BUFFER_BIT
)};
this
.
getContext
=
function
(){
return
e
};
this
.
deallocateObject
=
function
(
b
){
if
(
b
.
__webglInit
)
if
(
b
.
__webglInit
=!
1
,
delete
b
.
_modelViewMatrix
,
delete
b
.
_normalMatrixArray
,
delete
b
.
_modelViewMatrixArray
,
delete
b
.
_objectMatrixArray
,
b
instanceof
THREE
.
Mesh
)
for
(
g
in
b
.
geometry
.
geometryGroups
){
var
c
=
b
.
geometry
.
geometryGroups
[
g
];
e
.
deleteBuffer
(
c
.
__webglVertexBuffer
);
e
.
deleteBuffer
(
c
.
__webglNormalBuffer
);
e
.
deleteBuffer
(
c
.
__webglTangentBuffer
);
e
.
deleteBuffer
(
c
.
__webglColorBuffer
);
e
.
deleteBuffer
(
c
.
__webglUVBuffer
);
e
.
deleteBuffer
(
c
.
__webglUV2Buffer
);
e
.
deleteBuffer
(
c
.
__webglSkinVertexABuffer
);
e
.
deleteBuffer
(
c
.
__webglSkinVertexBBuffer
);
e
.
deleteBuffer
(
c
.
__webglSkinIndicesBuffer
);
e
.
deleteBuffer
(
c
.
__webglSkinWeightsBuffer
);
e
.
deleteBuffer
(
c
.
__webglFaceBuffer
);
e
.
deleteBuffer
(
c
.
__webglLineBuffer
);
if
(
c
.
numMorphTargets
){
var
d
=
void
0
,
f
=
void
0
;
c
.
__webglMorphTargetsBuffers
=
[];
d
=
0
;
for
(
f
=
c
.
numMorphTargets
;
d
<
f
;
d
++
)
e
.
deleteBuffer
(
c
.
__webglMorphTargetsBuffers
[
d
])}}
else
if
(
b
instanceof
THREE
.
Ribbon
)
b
=
b
.
geometry
,
e
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
e
.
deleteBuffer
(
b
.
__webglColorBuffer
);
else
if
(
b
instanceof
THREE
.
Line
)
b
=
b
.
geometry
,
e
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
e
.
deleteBuffer
(
b
.
__webglColorBuffer
);
else
if
(
b
instanceof
THREE
.
ParticleSystem
)
b
=
b
.
geometry
,
e
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
e
.
deleteBuffer
(
b
.
__webglColorBuffer
)};
this
.
deallocateTexture
=
function
(
b
){
if
(
b
.
__webglInit
)
b
.
__webglInit
=!
1
,
e
.
deleteTexture
(
b
.
__webglTexture
)};
this
.
initMaterial
=
function
(
b
,
c
,
d
,
f
){
var
h
,
j
,
k
;
b
instanceof
THREE
.
MeshDepthMaterial
?
k
=
"
depth
"
:
b
instanceof
THREE
.
MeshNormalMaterial
?
k
=
"
normal
"
:
b
instanceof
THREE
.
MeshBasicMaterial
?
k
=
"
basic
"
:
b
instanceof
THREE
.
MeshLambertMaterial
?
k
=
"
lambert
"
:
b
instanceof
THREE
.
MeshPhongMaterial
?
k
=
"
phong
"
:
b
instanceof
THREE
.
LineBasicMaterial
?
k
=
"
basic
"
:
b
instanceof
THREE
.
ParticleBasicMaterial
&&
(
k
=
"
particle_basic
"
);
if
(
k
){
var
m
=
THREE
.
ShaderLib
[
k
];
b
.
uniforms
=
THREE
.
UniformsUtils
.
clone
(
m
.
uniforms
);
b
.
vertexShader
=
m
.
vertexShader
;
b
.
fragmentShader
=
m
.
fragmentShader
}
var
p
,
n
,
q
;
p
=
q
=
m
=
0
;
for
(
n
=
c
.
length
;
p
<
n
;
p
++
)
j
=
c
[
p
],
j
instanceof
THREE
.
SpotLight
&&
q
++
,
j
instanceof
THREE
.
DirectionalLight
&&
q
++
,
j
instanceof
THREE
.
PointLight
&&
m
++
;
m
+
q
<=
_maxLights
?
p
=
q
:(
p
=
Math
.
ceil
(
_maxLights
*
q
/
(
m
+
q
)),
m
=
_maxLights
-
p
);
j
=
{
directional
:
p
,
point
:
m
};
m
=
q
=
0
;
for
(
p
=
c
.
length
;
m
<
p
;
m
++
)
n
=
c
[
m
],
n
instanceof
THREE
.
SpotLight
&&
n
.
castShadow
&&
q
++
;
var
D
=
50
;
if
(
f
!==
void
0
&&
f
instanceof
THREE
.
SkinnedMesh
)
D
=
f
.
bones
.
length
;
var
r
;
a
:{
p
=
b
.
fragmentShader
;
n
=
b
.
vertexShader
;
var
m
=
b
.
uniforms
,
c
=
b
.
attributes
,
d
=
{
map
:
!!
b
.
map
,
envMap
:
!!
b
.
envMap
,
lightMap
:
!!
b
.
lightMap
,
vertexColors
:
b
.
vertexColors
,
fog
:
d
,
sizeAttenuation
:
b
.
sizeAttenuation
,
skinning
:
b
.
skinning
,
morphTargets
:
b
.
morphTargets
,
maxMorphTargets
:
this
.
maxMorphTargets
,
maxDirLights
:
j
.
directional
,
maxPointLights
:
j
.
point
,
maxBones
:
D
,
shadowMapEnabled
:
this
.
shadowMapEnabled
&&
f
.
receiveShadow
,
shadowMapSoft
:
this
.
shadowMapSoft
,
shadowMapWidth
:
this
.
shadowMapWidth
,
shadowMapHeight
:
this
.
shadowMapHeight
,
maxShadows
:
q
,
alphaTest
:
b
.
alphaTest
},
s
,
f
=
[];
k
?
f
.
push
(
k
):(
f
.
push
(
p
),
f
.
push
(
n
));
for
(
s
in
d
)
f
.
push
(
s
),
f
.
push
(
d
[
s
]);
k
=
f
.
join
();
s
=
0
;
for
(
f
=
ua
.
length
;
s
<
f
;
s
++
)
if
(
ua
[
s
].
code
==
k
){
r
=
ua
[
s
].
program
;
break
a
}
s
=
e
.
createProgram
();
f
=
[
Xa
?
"
#define VERTEX_TEXTURES
"
:
""
,
"
#define MAX_DIR_LIGHTS
"
+
d
.
maxDirLights
,
"
#define MAX_POINT_LIGHTS
"
+
d
.
maxPointLights
,
"
#define MAX_SHADOWS
"
+
d
.
maxShadows
,
"
#define MAX_BONES
"
+
d
.
maxBones
,
d
.
map
?
"
#define USE_MAP
"
:
""
,
d
.
envMap
?
"
#define USE_ENVMAP
"
:
""
,
d
.
lightMap
?
"
#define USE_LIGHTMAP
"
:
""
,
d
.
vertexColors
?
"
#define USE_COLOR
"
:
""
,
d
.
skinning
?
"
#define USE_SKINNING
"
:
""
,
d
.
morphTargets
?
"
#define USE_MORPHTARGETS
"
:
""
,
d
.
shadowMapEnabled
?
"
#define USE_SHADOWMAP
"
:
""
,
d
.
shadowMapSoft
?
"
#define SHADOWMAP_SOFT
"
:
""
,
d
.
sizeAttenuation
?
"
#define USE_SIZEATTENUATION
"
:
""
,
"
uniform mat4 objectMatrix;
\n
uniform mat4 modelViewMatrix;
\n
uniform mat4 projectionMatrix;
\n
uniform mat4 viewMatrix;
\n
uniform mat3 normalMatrix;
\n
uniform vec3 cameraPosition;
\n
uniform mat4 cameraInverseMatrix;
\n
attribute vec3 position;
\n
attribute vec3 normal;
\n
attribute vec2 uv;
\n
attribute vec2 uv2;
\n
#ifdef USE_COLOR
\n
attribute vec3 color;
\n
#endif
\n
#ifdef USE_MORPHTARGETS
\n
attribute vec3 morphTarget0;
\n
attribute vec3 morphTarget1;
\n
attribute vec3 morphTarget2;
\n
attribute vec3 morphTarget3;
\n
attribute vec3 morphTarget4;
\n
attribute vec3 morphTarget5;
\n
attribute vec3 morphTarget6;
\n
attribute vec3 morphTarget7;
\n
#endif
\n
#ifdef USE_SKINNING
\n
attribute vec4 skinVertexA;
\n
attribute vec4 skinVertexB;
\n
attribute vec4 skinIndex;
\n
attribute vec4 skinWeight;
\n
#endif
\n
"
].
join
(
"
\n
"
);
e
.
deleteBuffer
(
c
.
__webglSkinVertexBBuffer
);
e
.
deleteBuffer
(
c
.
__webglSkinIndicesBuffer
);
e
.
deleteBuffer
(
c
.
__webglSkinWeightsBuffer
);
e
.
deleteBuffer
(
c
.
__webglFaceBuffer
);
e
.
deleteBuffer
(
c
.
__webglLineBuffer
);
if
(
c
.
numMorphTargets
)
for
(
var
d
=
0
,
f
=
c
.
numMorphTargets
;
d
<
f
;
d
++
)
e
.
deleteBuffer
(
c
.
__webglMorphTargetsBuffers
[
d
])}
else
if
(
b
instanceof
THREE
.
Ribbon
)
b
=
b
.
geometry
,
e
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
e
.
deleteBuffer
(
b
.
__webglColorBuffer
);
else
if
(
b
instanceof
THREE
.
Line
)
b
=
b
.
geometry
,
e
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
e
.
deleteBuffer
(
b
.
__webglColorBuffer
);
else
if
(
b
instanceof
THREE
.
ParticleSystem
)
b
=
b
.
geometry
,
e
.
deleteBuffer
(
b
.
__webglVertexBuffer
),
e
.
deleteBuffer
(
b
.
__webglColorBuffer
)};
this
.
deallocateTexture
=
function
(
b
){
if
(
b
.
__webglInit
)
b
.
__webglInit
=!
1
,
e
.
deleteTexture
(
b
.
__webglTexture
)};
this
.
initMaterial
=
function
(
b
,
c
,
d
,
f
){
var
h
,
j
,
k
;
b
instanceof
THREE
.
MeshDepthMaterial
?
k
=
"
depth
"
:
b
instanceof
THREE
.
MeshNormalMaterial
?
k
=
"
normal
"
:
b
instanceof
THREE
.
MeshBasicMaterial
?
k
=
"
basic
"
:
b
instanceof
THREE
.
MeshLambertMaterial
?
k
=
"
lambert
"
:
b
instanceof
THREE
.
MeshPhongMaterial
?
k
=
"
phong
"
:
b
instanceof
THREE
.
LineBasicMaterial
?
k
=
"
basic
"
:
b
instanceof
THREE
.
ParticleBasicMaterial
&&
(
k
=
"
particle_basic
"
);
if
(
k
){
var
m
=
THREE
.
ShaderLib
[
k
];
b
.
uniforms
=
THREE
.
UniformsUtils
.
clone
(
m
.
uniforms
);
b
.
vertexShader
=
m
.
vertexShader
;
b
.
fragmentShader
=
m
.
fragmentShader
}
var
p
,
n
,
q
;
p
=
q
=
m
=
0
;
for
(
n
=
c
.
length
;
p
<
n
;
p
++
)
j
=
c
[
p
],
j
instanceof
THREE
.
SpotLight
&&
q
++
,
j
instanceof
THREE
.
DirectionalLight
&&
q
++
,
j
instanceof
THREE
.
PointLight
&&
m
++
;
m
+
q
<=
_maxLights
?
p
=
q
:(
p
=
Math
.
ceil
(
_maxLights
*
q
/
(
m
+
q
)),
m
=
_maxLights
-
p
);
j
=
{
directional
:
p
,
point
:
m
};
m
=
q
=
0
;
for
(
p
=
c
.
length
;
m
<
p
;
m
++
)
n
=
c
[
m
],
n
instanceof
THREE
.
SpotLight
&&
n
.
castShadow
&&
q
++
;
var
D
=
50
;
if
(
f
!==
void
0
&&
f
instanceof
THREE
.
SkinnedMesh
)
D
=
f
.
bones
.
length
;
var
r
;
a
:{
p
=
b
.
fragmentShader
;
n
=
b
.
vertexShader
;
var
m
=
b
.
uniforms
,
c
=
b
.
attributes
,
d
=
{
map
:
!!
b
.
map
,
envMap
:
!!
b
.
envMap
,
lightMap
:
!!
b
.
lightMap
,
vertexColors
:
b
.
vertexColors
,
fog
:
d
,
sizeAttenuation
:
b
.
sizeAttenuation
,
skinning
:
b
.
skinning
,
morphTargets
:
b
.
morphTargets
,
maxMorphTargets
:
this
.
maxMorphTargets
,
maxDirLights
:
j
.
directional
,
maxPointLights
:
j
.
point
,
maxBones
:
D
,
shadowMapEnabled
:
this
.
shadowMapEnabled
&&
f
.
receiveShadow
,
shadowMapSoft
:
this
.
shadowMapSoft
,
shadowMapWidth
:
this
.
shadowMapWidth
,
shadowMapHeight
:
this
.
shadowMapHeight
,
maxShadows
:
q
,
alphaTest
:
b
.
alphaTest
},
s
,
f
=
[];
k
?
f
.
push
(
k
):(
f
.
push
(
p
),
f
.
push
(
n
));
for
(
s
in
d
)
f
.
push
(
s
),
f
.
push
(
d
[
s
]);
k
=
f
.
join
();
s
=
0
;
for
(
f
=
ua
.
length
;
s
<
f
;
s
++
)
if
(
ua
[
s
].
code
==
k
){
r
=
ua
[
s
].
program
;
break
a
}
s
=
e
.
createProgram
();
f
=
[
Xa
?
"
#define VERTEX_TEXTURES
"
:
""
,
"
#define MAX_DIR_LIGHTS
"
+
d
.
maxDirLights
,
"
#define MAX_POINT_LIGHTS
"
+
d
.
maxPointLights
,
"
#define MAX_SHADOWS
"
+
d
.
maxShadows
,
"
#define MAX_BONES
"
+
d
.
maxBones
,
d
.
map
?
"
#define USE_MAP
"
:
""
,
d
.
envMap
?
"
#define USE_ENVMAP
"
:
""
,
d
.
lightMap
?
"
#define USE_LIGHTMAP
"
:
""
,
d
.
vertexColors
?
"
#define USE_COLOR
"
:
""
,
d
.
skinning
?
"
#define USE_SKINNING
"
:
""
,
d
.
morphTargets
?
"
#define USE_MORPHTARGETS
"
:
""
,
d
.
shadowMapEnabled
?
"
#define USE_SHADOWMAP
"
:
""
,
d
.
shadowMapSoft
?
"
#define SHADOWMAP_SOFT
"
:
""
,
d
.
sizeAttenuation
?
"
#define USE_SIZEATTENUATION
"
:
""
,
"
uniform mat4 objectMatrix;
\n
uniform mat4 modelViewMatrix;
\n
uniform mat4 projectionMatrix;
\n
uniform mat4 viewMatrix;
\n
uniform mat3 normalMatrix;
\n
uniform vec3 cameraPosition;
\n
uniform mat4 cameraInverseMatrix;
\n
attribute vec3 position;
\n
attribute vec3 normal;
\n
attribute vec2 uv;
\n
attribute vec2 uv2;
\n
#ifdef USE_COLOR
\n
attribute vec3 color;
\n
#endif
\n
#ifdef USE_MORPHTARGETS
\n
attribute vec3 morphTarget0;
\n
attribute vec3 morphTarget1;
\n
attribute vec3 morphTarget2;
\n
attribute vec3 morphTarget3;
\n
attribute vec3 morphTarget4;
\n
attribute vec3 morphTarget5;
\n
attribute vec3 morphTarget6;
\n
attribute vec3 morphTarget7;
\n
#endif
\n
#ifdef USE_SKINNING
\n
attribute vec4 skinVertexA;
\n
attribute vec4 skinVertexB;
\n
attribute vec4 skinIndex;
\n
attribute vec4 skinWeight;
\n
#endif
\n
"
].
join
(
"
\n
"
);
j
=
[
"
#ifdef GL_ES
\n
precision highp float;
\n
#endif
"
,
"
#define MAX_DIR_LIGHTS
"
+
d
.
maxDirLights
,
"
#define MAX_POINT_LIGHTS
"
+
d
.
maxPointLights
,
"
#define MAX_SHADOWS
"
+
d
.
maxShadows
,
d
.
alphaTest
?
"
#define ALPHATEST
"
+
d
.
alphaTest
:
""
,
d
.
fog
?
"
#define USE_FOG
"
:
""
,
d
.
fog
instanceof
THREE
.
FogExp2
?
"
#define FOG_EXP2
"
:
""
,
d
.
map
?
"
#define USE_MAP
"
:
""
,
d
.
envMap
?
"
#define USE_ENVMAP
"
:
""
,
d
.
lightMap
?
"
#define USE_LIGHTMAP
"
:
""
,
d
.
vertexColors
?
"
#define USE_COLOR
"
:
""
,
d
.
shadowMapEnabled
?
"
#define USE_SHADOWMAP
"
:
""
,
d
.
shadowMapSoft
?
"
#define SHADOWMAP_SOFT
"
:
""
,
d
.
shadowMapSoft
?
"
#define SHADOWMAP_WIDTH
"
+
d
.
shadowMapWidth
.
toFixed
(
1
):
""
,
d
.
shadowMapSoft
?
"
#define SHADOWMAP_HEIGHT
"
+
d
.
shadowMapHeight
.
toFixed
(
1
):
""
,
"
uniform mat4 viewMatrix;
\n
uniform vec3 cameraPosition;
\n
"
].
join
(
"
\n
"
);
e
.
attachShader
(
s
,
Z
(
"
fragment
"
,
j
+
p
));
e
.
attachShader
(
s
,
Z
(
"
vertex
"
,
f
+
n
));
e
.
linkProgram
(
s
);
e
.
getProgramParameter
(
s
,
e
.
LINK_STATUS
)
||
console
.
error
(
"
Could not initialise shader
\n
VALIDATE_STATUS:
"
+
e
.
getProgramParameter
(
s
,
e
.
VALIDATE_STATUS
)
+
"
, gl error [
"
+
e
.
getError
()
+
"
]
"
);
s
.
uniforms
=
{};
s
.
attributes
=
{};
var
u
,
f
=
[
"
viewMatrix
"
,
"
modelViewMatrix
"
,
"
projectionMatrix
"
,
"
normalMatrix
"
,
"
objectMatrix
"
,
"
cameraPosition
"
,
"
cameraInverseMatrix
"
,
"
boneGlobalMatrices
"
,
"
morphTargetInfluences
"
];
for
(
u
in
m
)
f
.
push
(
u
);
u
=
f
;
f
=
0
;
for
(
m
=
u
.
length
;
f
<
m
;
f
++
)
p
=
u
[
f
],
s
.
uniforms
[
p
]
=
e
.
getUniformLocation
(
s
,
p
);
f
=
[
"
position
"
,
"
normal
"
,
"
uv
"
,
"
uv2
"
,
"
tangent
"
,
"
color
"
,
"
skinVertexA
"
,
"
skinVertexB
"
,
"
skinIndex
"
,
"
skinWeight
"
];
for
(
u
=
0
;
u
<
d
.
maxMorphTargets
;
u
++
)
f
.
push
(
"
morphTarget
"
+
u
);
for
(
r
in
c
)
f
.
push
(
r
);
r
=
f
;
u
=
0
;
for
(
c
=
r
.
length
;
u
<
c
;
u
++
)
d
=
...
...
src/renderers/WebGLRenderer.js
浏览文件 @
d8e75851
...
...
@@ -541,11 +541,7 @@ THREE.WebGLRenderer = function ( parameters ) {
if
(
geometryGroup
.
numMorphTargets
)
{
var
m
,
ml
;
geometryGroup
.
__webglMorphTargetsBuffers
=
[];
for
(
m
=
0
,
ml
=
geometryGroup
.
numMorphTargets
;
m
<
ml
;
m
++
)
{
for
(
var
m
=
0
,
ml
=
geometryGroup
.
numMorphTargets
;
m
<
ml
;
m
++
)
{
_gl
.
deleteBuffer
(
geometryGroup
.
__webglMorphTargetsBuffers
[
m
]
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录