Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
0c185139
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,发现更多精彩内容 >>
提交
0c185139
编写于
12月 12, 2010
作者:
A
alteredq
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added check for normals in shader when rendering VBOs.
上级
9e5017a2
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
59 addition
and
55 deletion
+59
-55
build/Three.js
build/Three.js
+1
-1
build/ThreeDebug.js
build/ThreeDebug.js
+1
-1
build/ThreeExtras.js
build/ThreeExtras.js
+51
-51
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+6
-2
未找到文件。
build/Three.js
浏览文件 @
0c185139
...
...
@@ -166,7 +166,7 @@ f.program}else z=x;if(z!=A){c.useProgram(z);A=z}z==x&&this.setupLights(z,k);this
6
?
d
(
Q
,
H
):
e
(
Q
,
H
)}}}
if
(
f
instanceof
THREE
.
MeshPhongMaterial
||
f
instanceof
THREE
.
MeshLambertMaterial
||
f
instanceof
THREE
.
MeshBasicMaterial
){
j
=
f
.
color
;
i
=
f
.
opacity
;
u
=
f
.
wireframe
;
s
=
f
.
wireframe_linewidth
;
G
=
f
.
map
;
y
=
f
.
env_map
;
k
=
f
.
combine
==
THREE
.
MixOperation
;
g
=
f
.
reflectivity
;
Q
=
f
.
env_map
&&
f
.
env_map
.
mapping
instanceof
THREE
.
CubeRefractionMapping
;
H
=
f
.
refraction_ratio
;
c
.
uniform4f
(
z
.
uniforms
.
mColor
,
j
.
r
*
i
,
j
.
g
*
i
,
j
.
b
*
i
,
i
);
c
.
uniform1i
(
z
.
uniforms
.
mixEnvMap
,
k
);
c
.
uniform1f
(
z
.
uniforms
.
mReflectivity
,
g
);
c
.
uniform1i
(
z
.
uniforms
.
useRefract
,
Q
);
c
.
uniform1f
(
z
.
uniforms
.
mRefractionRatio
,
H
)}
if
(
f
instanceof
THREE
.
MeshNormalMaterial
){
i
=
f
.
opacity
;
c
.
uniform1f
(
z
.
uniforms
.
mOpacity
,
i
);
c
.
uniform1i
(
z
.
uniforms
.
material
,
4
)}
else
if
(
f
instanceof
THREE
.
MeshDepthMaterial
){
i
=
f
.
opacity
;
u
=
f
.
wireframe
;
s
=
f
.
wireframe_linewidth
;
c
.
uniform1f
(
z
.
uniforms
.
mOpacity
,
i
);
c
.
uniform1f
(
z
.
uniforms
.
m2Near
,
f
.
__2near
);
c
.
uniform1f
(
z
.
uniforms
.
mFarPlusNear
,
f
.
__farPlusNear
);
c
.
uniform1f
(
z
.
uniforms
.
mFarMinusNear
,
f
.
__farMinusNear
);
c
.
uniform1i
(
z
.
uniforms
.
material
,
3
)}
else
if
(
f
instanceof
THREE
.
MeshPhongMaterial
){
j
=
f
.
ambient
;
g
=
f
.
specular
;
f
=
f
.
shininess
;
c
.
uniform4f
(
z
.
uniforms
.
mAmbient
,
j
.
r
,
j
.
g
,
j
.
b
,
i
);
c
.
uniform4f
(
z
.
uniforms
.
mSpecular
,
g
.
r
,
g
.
g
,
g
.
b
,
i
);
c
.
uniform1f
(
z
.
uniforms
.
mShininess
,
f
);
c
.
uniform1i
(
z
.
uniforms
.
material
,
2
)}
else
if
(
f
instanceof
THREE
.
MeshLambertMaterial
)
c
.
uniform1i
(
z
.
uniforms
.
material
,
1
);
else
if
(
f
instanceof
THREE
.
MeshBasicMaterial
)
c
.
uniform1i
(
z
.
uniforms
.
material
,
0
);
else
if
(
f
instanceof
THREE
.
MeshCubeMaterial
){
c
.
uniform1i
(
z
.
uniforms
.
material
,
5
);
y
=
f
.
env_map
}
if
(
G
){
e
(
G
,
0
);
c
.
uniform1i
(
z
.
uniforms
.
tMap
,
0
);
c
.
uniform1i
(
z
.
uniforms
.
enableMap
,
1
)}
else
c
.
uniform1i
(
z
.
uniforms
.
enableMap
,
0
);
if
(
y
){
d
(
y
,
1
);
c
.
uniform1i
(
z
.
uniforms
.
tCube
,
1
);
c
.
uniform1i
(
z
.
uniforms
.
enableCubeMap
,
1
)}
else
c
.
uniform1i
(
z
.
uniforms
.
enableCubeMap
,
0
);
i
=
z
.
attributes
;
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLVertexBuffer
);
c
.
vertexAttribPointer
(
i
.
position
,
3
,
c
.
FLOAT
,
false
,
0
,
0
);
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLNormalBuffer
);
c
.
vertexAttribPointer
(
i
.
normal
,
3
,
c
.
FLOAT
,
false
,
0
,
0
);
if
(
i
.
tangent
>=
0
){
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLTangentBuffer
);
0
);
c
.
uniform1i
(
z
.
uniforms
.
enableMap
,
1
)}
else
c
.
uniform1i
(
z
.
uniforms
.
enableMap
,
0
);
if
(
y
){
d
(
y
,
1
);
c
.
uniform1i
(
z
.
uniforms
.
tCube
,
1
);
c
.
uniform1i
(
z
.
uniforms
.
enableCubeMap
,
1
)}
else
c
.
uniform1i
(
z
.
uniforms
.
enableCubeMap
,
0
);
i
=
z
.
attributes
;
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLVertexBuffer
);
c
.
vertexAttribPointer
(
i
.
position
,
3
,
c
.
FLOAT
,
false
,
0
,
0
);
if
(
i
.
normal
>=
0
){
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLNormalBuffer
);
c
.
vertexAttribPointer
(
i
.
normal
,
3
,
c
.
FLOAT
,
false
,
0
,
0
)}
if
(
i
.
tangent
>=
0
){
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLTangentBuffer
);
c
.
vertexAttribPointer
(
i
.
tangent
,
4
,
c
.
FLOAT
,
false
,
0
,
0
)}
if
(
i
.
uv
>=
0
)
if
(
p
.
__webGLUVBuffer
){
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLUVBuffer
);
c
.
enableVertexAttribArray
(
i
.
uv
);
c
.
vertexAttribPointer
(
i
.
uv
,
2
,
c
.
FLOAT
,
false
,
0
,
0
)}
else
c
.
disableVertexAttribArray
(
i
.
uv
);
if
(
u
){
c
.
lineWidth
(
s
);
c
.
bindBuffer
(
c
.
ELEMENT_ARRAY_BUFFER
,
p
.
__webGLLineBuffer
);
c
.
drawElements
(
c
.
LINES
,
p
.
__webGLLineCount
,
c
.
UNSIGNED_SHORT
,
0
)}
else
{
c
.
bindBuffer
(
c
.
ELEMENT_ARRAY_BUFFER
,
p
.
__webGLFaceBuffer
);
c
.
drawElements
(
c
.
TRIANGLES
,
p
.
__webGLFaceCount
,
c
.
UNSIGNED_SHORT
,
0
)}};
this
.
renderPass
=
function
(
g
,
k
,
f
,
p
,
j
,
i
){
var
u
,
s
,
G
,
y
,
H
;
G
=
0
;
for
(
y
=
f
.
material
.
length
;
G
<
y
;
G
++
){
u
=
f
.
material
[
G
];
if
(
u
instanceof
THREE
.
MeshFaceMaterial
){
u
=
0
;
for
(
s
=
p
.
material
.
length
;
u
<
s
;
u
++
)
if
((
H
=
p
.
material
[
u
])
&&
H
.
blending
==
j
&&
H
.
opacity
<
1
==
i
){
this
.
setBlending
(
H
.
blending
);
this
.
renderBuffer
(
g
,
k
,
H
,
p
)}}
else
if
((
H
=
u
)
&&
H
.
blending
==
j
&&
H
.
opacity
<
1
==
i
){
this
.
setBlending
(
H
.
blending
);
this
.
renderBuffer
(
g
,
k
,
H
,
p
)}}};
this
.
render
=
function
(
g
,
k
){
var
f
,
p
,
j
,
i
,
u
=
g
.
lights
;
this
.
initWebGLObjects
(
g
);
this
.
autoClear
&&
this
.
clear
();
k
.
autoUpdateMatrix
&&
k
.
updateMatrix
();
f
=
0
;
for
(
p
=
g
.
__webGLObjects
.
length
;
f
<
p
;
f
++
){
j
=
g
.
__webGLObjects
[
f
];
i
=
j
.
object
;
j
=
j
.
buffer
;
if
(
i
.
visible
){
this
.
setupMatrices
(
i
,
k
);
this
.
renderPass
(
k
,
u
,
i
,
j
,
THREE
.
NormalBlending
,
false
)}}
f
=
0
;
for
(
p
=
g
.
__webGLObjects
.
length
;
f
<
p
;
f
++
){
j
=
g
.
__webGLObjects
[
f
];
i
=
j
.
object
;
j
=
j
.
buffer
;
if
(
i
.
visible
){
this
.
setupMatrices
(
i
,
k
);
this
.
renderPass
(
k
,
u
,
i
,
j
,
THREE
.
AdditiveBlending
,
false
);
this
.
renderPass
(
k
,
u
,
i
,
j
,
THREE
.
SubtractiveBlending
,
false
);
this
.
renderPass
(
k
,
u
,
i
,
j
,
THREE
.
AdditiveBlending
,
true
);
...
...
build/ThreeDebug.js
浏览文件 @
0c185139
...
...
@@ -167,7 +167,7 @@ f.program}else A=y;if(A!=B){c.useProgram(A);B=A}A==y&&this.setupLights(A,l);this
6
?
d
(
Q
,
H
):
e
(
Q
,
H
)}}}
if
(
f
instanceof
THREE
.
MeshPhongMaterial
||
f
instanceof
THREE
.
MeshLambertMaterial
||
f
instanceof
THREE
.
MeshBasicMaterial
){
j
=
f
.
color
;
i
=
f
.
opacity
;
u
=
f
.
wireframe
;
t
=
f
.
wireframe_linewidth
;
G
=
f
.
map
;
z
=
f
.
env_map
;
l
=
f
.
combine
==
THREE
.
MixOperation
;
g
=
f
.
reflectivity
;
Q
=
f
.
env_map
&&
f
.
env_map
.
mapping
instanceof
THREE
.
CubeRefractionMapping
;
H
=
f
.
refraction_ratio
;
c
.
uniform4f
(
A
.
uniforms
.
mColor
,
j
.
r
*
i
,
j
.
g
*
i
,
j
.
b
*
i
,
i
);
c
.
uniform1i
(
A
.
uniforms
.
mixEnvMap
,
l
);
c
.
uniform1f
(
A
.
uniforms
.
mReflectivity
,
g
);
c
.
uniform1i
(
A
.
uniforms
.
useRefract
,
Q
);
c
.
uniform1f
(
A
.
uniforms
.
mRefractionRatio
,
H
)}
if
(
f
instanceof
THREE
.
MeshNormalMaterial
){
i
=
f
.
opacity
;
c
.
uniform1f
(
A
.
uniforms
.
mOpacity
,
i
);
c
.
uniform1i
(
A
.
uniforms
.
material
,
4
)}
else
if
(
f
instanceof
THREE
.
MeshDepthMaterial
){
i
=
f
.
opacity
;
u
=
f
.
wireframe
;
t
=
f
.
wireframe_linewidth
;
c
.
uniform1f
(
A
.
uniforms
.
mOpacity
,
i
);
c
.
uniform1f
(
A
.
uniforms
.
m2Near
,
f
.
__2near
);
c
.
uniform1f
(
A
.
uniforms
.
mFarPlusNear
,
f
.
__farPlusNear
);
c
.
uniform1f
(
A
.
uniforms
.
mFarMinusNear
,
f
.
__farMinusNear
);
c
.
uniform1i
(
A
.
uniforms
.
material
,
3
)}
else
if
(
f
instanceof
THREE
.
MeshPhongMaterial
){
j
=
f
.
ambient
;
g
=
f
.
specular
;
f
=
f
.
shininess
;
c
.
uniform4f
(
A
.
uniforms
.
mAmbient
,
j
.
r
,
j
.
g
,
j
.
b
,
i
);
c
.
uniform4f
(
A
.
uniforms
.
mSpecular
,
g
.
r
,
g
.
g
,
g
.
b
,
i
);
c
.
uniform1f
(
A
.
uniforms
.
mShininess
,
f
);
c
.
uniform1i
(
A
.
uniforms
.
material
,
2
)}
else
if
(
f
instanceof
THREE
.
MeshLambertMaterial
)
c
.
uniform1i
(
A
.
uniforms
.
material
,
1
);
else
if
(
f
instanceof
THREE
.
MeshBasicMaterial
)
c
.
uniform1i
(
A
.
uniforms
.
material
,
0
);
else
if
(
f
instanceof
THREE
.
MeshCubeMaterial
){
c
.
uniform1i
(
A
.
uniforms
.
material
,
5
);
z
=
f
.
env_map
}
if
(
G
){
e
(
G
,
0
);
c
.
uniform1i
(
A
.
uniforms
.
tMap
,
0
);
c
.
uniform1i
(
A
.
uniforms
.
enableMap
,
1
)}
else
c
.
uniform1i
(
A
.
uniforms
.
enableMap
,
0
);
if
(
z
){
d
(
z
,
1
);
c
.
uniform1i
(
A
.
uniforms
.
tCube
,
1
);
c
.
uniform1i
(
A
.
uniforms
.
enableCubeMap
,
1
)}
else
c
.
uniform1i
(
A
.
uniforms
.
enableCubeMap
,
0
);
i
=
A
.
attributes
;
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLVertexBuffer
);
c
.
vertexAttribPointer
(
i
.
position
,
3
,
c
.
FLOAT
,
false
,
0
,
0
);
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLNormalBuffer
);
c
.
vertexAttribPointer
(
i
.
normal
,
3
,
c
.
FLOAT
,
false
,
0
,
0
);
if
(
i
.
tangent
>=
0
){
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLTangentBuffer
);
0
);
c
.
uniform1i
(
A
.
uniforms
.
enableMap
,
1
)}
else
c
.
uniform1i
(
A
.
uniforms
.
enableMap
,
0
);
if
(
z
){
d
(
z
,
1
);
c
.
uniform1i
(
A
.
uniforms
.
tCube
,
1
);
c
.
uniform1i
(
A
.
uniforms
.
enableCubeMap
,
1
)}
else
c
.
uniform1i
(
A
.
uniforms
.
enableCubeMap
,
0
);
i
=
A
.
attributes
;
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLVertexBuffer
);
c
.
vertexAttribPointer
(
i
.
position
,
3
,
c
.
FLOAT
,
false
,
0
,
0
);
if
(
i
.
normal
>=
0
){
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLNormalBuffer
);
c
.
vertexAttribPointer
(
i
.
normal
,
3
,
c
.
FLOAT
,
false
,
0
,
0
)}
if
(
i
.
tangent
>=
0
){
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLTangentBuffer
);
c
.
vertexAttribPointer
(
i
.
tangent
,
4
,
c
.
FLOAT
,
false
,
0
,
0
)}
if
(
i
.
uv
>=
0
)
if
(
p
.
__webGLUVBuffer
){
c
.
bindBuffer
(
c
.
ARRAY_BUFFER
,
p
.
__webGLUVBuffer
);
c
.
enableVertexAttribArray
(
i
.
uv
);
c
.
vertexAttribPointer
(
i
.
uv
,
2
,
c
.
FLOAT
,
false
,
0
,
0
)}
else
c
.
disableVertexAttribArray
(
i
.
uv
);
if
(
u
){
c
.
lineWidth
(
t
);
c
.
bindBuffer
(
c
.
ELEMENT_ARRAY_BUFFER
,
p
.
__webGLLineBuffer
);
c
.
drawElements
(
c
.
LINES
,
p
.
__webGLLineCount
,
c
.
UNSIGNED_SHORT
,
0
)}
else
{
c
.
bindBuffer
(
c
.
ELEMENT_ARRAY_BUFFER
,
p
.
__webGLFaceBuffer
);
c
.
drawElements
(
c
.
TRIANGLES
,
p
.
__webGLFaceCount
,
c
.
UNSIGNED_SHORT
,
0
)}};
this
.
renderPass
=
function
(
g
,
l
,
f
,
p
,
j
,
i
){
var
u
,
t
,
G
,
z
,
H
;
G
=
0
;
for
(
z
=
f
.
material
.
length
;
G
<
z
;
G
++
){
u
=
f
.
material
[
G
];
if
(
u
instanceof
THREE
.
MeshFaceMaterial
){
u
=
0
;
for
(
t
=
p
.
material
.
length
;
u
<
t
;
u
++
)
if
((
H
=
p
.
material
[
u
])
&&
H
.
blending
==
j
&&
H
.
opacity
<
1
==
i
){
this
.
setBlending
(
H
.
blending
);
this
.
renderBuffer
(
g
,
l
,
H
,
p
)}}
else
if
((
H
=
u
)
&&
H
.
blending
==
j
&&
H
.
opacity
<
1
==
i
){
this
.
setBlending
(
H
.
blending
);
this
.
renderBuffer
(
g
,
l
,
H
,
p
)}}};
this
.
render
=
function
(
g
,
l
){
var
f
,
p
,
j
,
i
,
u
=
g
.
lights
;
this
.
initWebGLObjects
(
g
);
this
.
autoClear
&&
this
.
clear
();
l
.
autoUpdateMatrix
&&
l
.
updateMatrix
();
f
=
0
;
for
(
p
=
g
.
__webGLObjects
.
length
;
f
<
p
;
f
++
){
j
=
g
.
__webGLObjects
[
f
];
i
=
j
.
object
;
j
=
j
.
buffer
;
if
(
i
.
visible
){
this
.
setupMatrices
(
i
,
l
);
this
.
renderPass
(
l
,
u
,
i
,
j
,
THREE
.
NormalBlending
,
false
)}}
f
=
0
;
for
(
p
=
g
.
__webGLObjects
.
length
;
f
<
p
;
f
++
){
j
=
g
.
__webGLObjects
[
f
];
i
=
j
.
object
;
j
=
j
.
buffer
;
if
(
i
.
visible
){
this
.
setupMatrices
(
i
,
l
);
this
.
renderPass
(
l
,
u
,
i
,
j
,
THREE
.
AdditiveBlending
,
false
);
this
.
renderPass
(
l
,
u
,
i
,
j
,
THREE
.
SubtractiveBlending
,
false
);
this
.
renderPass
(
l
,
u
,
i
,
j
,
THREE
.
AdditiveBlending
,
true
);
...
...
build/ThreeExtras.js
浏览文件 @
0c185139
此差异已折叠。
点击以展开。
src/renderers/WebGLRenderer.js
浏览文件 @
0c185139
...
...
@@ -539,8 +539,12 @@ THREE.WebGLRenderer = function ( scene ) {
// normals
_gl
.
bindBuffer
(
_gl
.
ARRAY_BUFFER
,
geometryChunk
.
__webGLNormalBuffer
);
_gl
.
vertexAttribPointer
(
attributes
.
normal
,
3
,
_gl
.
FLOAT
,
false
,
0
,
0
);
if
(
attributes
.
normal
>=
0
)
{
_gl
.
bindBuffer
(
_gl
.
ARRAY_BUFFER
,
geometryChunk
.
__webGLNormalBuffer
);
_gl
.
vertexAttribPointer
(
attributes
.
normal
,
3
,
_gl
.
FLOAT
,
false
,
0
,
0
);
}
// tangents
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录