Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
3ed8a04c
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,体验更适合开发者的 AI 搜索 >>
提交
3ed8a04c
编写于
8月 20, 2015
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
WebGLRenderer: Implemented MeshFaceMaterial/MultiMaterial.
上级
e5420e60
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
107 addition
and
61 deletion
+107
-61
src/core/BufferGeometry.js
src/core/BufferGeometry.js
+33
-7
src/core/DirectGeometry.js
src/core/DirectGeometry.js
+37
-2
src/core/Geometry.js
src/core/Geometry.js
+6
-6
src/materials/MultiMaterial.js
src/materials/MultiMaterial.js
+8
-4
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+15
-13
src/renderers/webgl/WebGLBufferRenderer.js
src/renderers/webgl/WebGLBufferRenderer.js
+0
-12
src/renderers/webgl/WebGLIndexedBufferRenderer.js
src/renderers/webgl/WebGLIndexedBufferRenderer.js
+0
-12
src/renderers/webgl/WebGLShadowMap.js
src/renderers/webgl/WebGLShadowMap.js
+7
-4
utils/build/includes/common.json
utils/build/includes/common.json
+1
-1
未找到文件。
src/core/BufferGeometry.js
浏览文件 @
3ed8a04c
...
...
@@ -16,7 +16,7 @@ THREE.BufferGeometry = function () {
this
.
morphAttributes
=
{};
this
.
drawcall
s
=
[];
this
.
group
s
=
[];
this
.
boundingBox
=
null
;
this
.
boundingSphere
=
null
;
...
...
@@ -62,10 +62,17 @@ THREE.BufferGeometry.prototype = {
},
get
drawcalls
()
{
console
.
error
(
'
THREE.BufferGeometry: .drawcalls has been renamed to .groups.
'
);
return
this
.
groups
;
},
get
offsets
()
{
console
.
warn
(
'
THREE.BufferGeometry: .offsets has been renamed to .
drawcall
s.
'
);
return
this
.
drawcall
s
;
console
.
warn
(
'
THREE.BufferGeometry: .offsets has been renamed to .
group
s.
'
);
return
this
.
group
s
;
},
...
...
@@ -77,18 +84,33 @@ THREE.BufferGeometry.prototype = {
}
this
.
drawcalls
.
push
(
{
console
.
warn
(
'
THREE.BufferGeometry: .addDrawCall() is now .addGroup().
'
);
this
.
addGroup
(
start
,
count
);
},
clearDrawCalls
:
function
()
{
console
.
warn
(
'
THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().
'
);
this
.
clearGroups
();
},
addGroup
:
function
(
start
,
count
,
materialIndex
)
{
this
.
groups
.
push
(
{
start
:
start
,
count
:
count
count
:
count
,
materialIndex
:
materialIndex
!==
undefined
?
materialIndex
:
0
}
);
},
clear
DrawCall
s
:
function
()
{
clear
Group
s
:
function
()
{
this
.
drawcall
s
=
[];
this
.
group
s
=
[];
},
...
...
@@ -471,6 +493,10 @@ THREE.BufferGeometry.prototype = {
}
// groups
this
.
groups
=
geometry
.
groups
;
// morphs
for
(
var
name
in
geometry
.
morphTargets
)
{
...
...
src/core/DirectGeometry.js
浏览文件 @
3ed8a04c
...
...
@@ -19,6 +19,8 @@ THREE.DirectGeometry = function () {
this
.
uvs2
=
[];
this
.
tangents
=
[];
this
.
groups
=
[];
this
.
morphTargets
=
{};
this
.
skinWeights
=
[];
...
...
@@ -67,7 +69,6 @@ THREE.DirectGeometry.prototype = {
},
fromGeometry
:
function
(
geometry
)
{
var
faces
=
geometry
.
faces
;
...
...
@@ -79,6 +80,9 @@ THREE.DirectGeometry.prototype = {
var
hasTangents
=
geometry
.
hasTangents
;
var
group
;
var
materialIndex
;
// morphs
var
morphTargets
=
geometry
.
morphTargets
;
...
...
@@ -125,7 +129,7 @@ THREE.DirectGeometry.prototype = {
//
for
(
var
i
=
0
;
i
<
faces
.
length
;
i
++
)
{
for
(
var
i
=
0
,
i3
=
0
;
i
<
faces
.
length
;
i
++
,
i3
+=
3
)
{
var
face
=
faces
[
i
];
...
...
@@ -195,6 +199,28 @@ THREE.DirectGeometry.prototype = {
}
// materials
if
(
face
.
materialIndex
!==
materialIndex
)
{
materialIndex
=
face
.
materialIndex
;
if
(
group
!==
undefined
)
{
group
.
count
=
i3
-
group
.
start
;
this
.
groups
.
push
(
group
);
}
group
=
{
start
:
i3
,
materialIndex
:
materialIndex
};
}
// tangents
if
(
hasTangents
===
true
)
{
var
vertexTangents
=
face
.
vertexTangents
;
...
...
@@ -247,6 +273,15 @@ THREE.DirectGeometry.prototype = {
}
//
if
(
group
!==
undefined
)
{
group
.
count
=
i3
-
group
.
start
;
this
.
groups
.
push
(
group
);
}
this
.
verticesNeedUpdate
=
geometry
.
verticesNeedUpdate
;
this
.
normalsNeedUpdate
=
geometry
.
normalsNeedUpdate
;
this
.
colorsNeedUpdate
=
geometry
.
colorsNeedUpdate
;
...
...
src/core/Geometry.js
浏览文件 @
3ed8a04c
...
...
@@ -299,16 +299,16 @@ THREE.Geometry.prototype = {
if
(
indices
!==
undefined
)
{
var
drawcalls
=
geometry
.
drawcall
s
;
var
groups
=
geometry
.
group
s
;
if
(
drawcall
s
.
length
>
0
)
{
if
(
group
s
.
length
>
0
)
{
for
(
var
i
=
0
;
i
<
drawcall
s
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
group
s
.
length
;
i
++
)
{
var
drawcall
=
drawcall
s
[
i
];
var
group
=
group
s
[
i
];
var
start
=
drawcall
.
start
;
var
count
=
drawcall
.
count
;
var
start
=
group
.
start
;
var
count
=
group
.
count
;
for
(
var
j
=
start
,
jl
=
start
+
count
;
j
<
jl
;
j
+=
3
)
{
...
...
src/materials/M
eshFace
Material.js
→
src/materials/M
ulti
Material.js
浏览文件 @
3ed8a04c
...
...
@@ -2,11 +2,11 @@
* @author mrdoob / http://mrdoob.com/
*/
THREE
.
M
eshFace
Material
=
function
(
materials
)
{
THREE
.
M
ulti
Material
=
function
(
materials
)
{
this
.
uuid
=
THREE
.
Math
.
generateUUID
();
this
.
type
=
'
M
eshFace
Material
'
;
this
.
type
=
'
M
ulti
Material
'
;
this
.
materials
=
materials
instanceof
Array
?
materials
:
[];
...
...
@@ -14,9 +14,9 @@ THREE.MeshFaceMaterial = function ( materials ) {
};
THREE
.
M
eshFace
Material
.
prototype
=
{
THREE
.
M
ulti
Material
.
prototype
=
{
constructor
:
THREE
.
M
eshFace
Material
,
constructor
:
THREE
.
M
ulti
Material
,
toJSON
:
function
()
{
...
...
@@ -60,3 +60,7 @@ THREE.MeshFaceMaterial.prototype = {
}
};
// backwards compatibility
THREE
.
MeshFaceMaterial
=
THREE
.
MultiMaterial
;
src/renderers/WebGLRenderer.js
浏览文件 @
3ed8a04c
...
...
@@ -759,7 +759,9 @@ THREE.WebGLRenderer = function ( parameters ) {
};
this
.
renderBufferDirect
=
function
(
camera
,
lights
,
fog
,
geometry
,
material
,
object
)
{
this
.
renderBufferDirect
=
function
(
camera
,
lights
,
fog
,
geometry
,
material
,
object
,
group
)
{
if
(
material
.
visible
===
false
)
return
;
setMaterial
(
material
);
...
...
@@ -844,8 +846,6 @@ THREE.WebGLRenderer = function ( parameters ) {
}
var
groups
=
geometry
.
drawcalls
;
var
renderer
;
if
(
index
!==
undefined
)
{
...
...
@@ -871,7 +871,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
if
(
group
s
.
length
===
0
)
{
if
(
group
===
undefined
)
{
var
count
;
...
...
@@ -889,10 +889,10 @@ THREE.WebGLRenderer = function ( parameters ) {
}
group
s
=
[
{
group
=
{
start
:
0
,
count
:
count
}
]
;
};
}
...
...
@@ -919,7 +919,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
else
{
renderer
.
render
Groups
(
groups
);
renderer
.
render
(
group
.
start
,
group
.
count
);
}
...
...
@@ -941,12 +941,12 @@ THREE.WebGLRenderer = function ( parameters ) {
}
renderer
.
render
Groups
(
groups
);
renderer
.
render
(
group
.
start
,
group
.
count
);
}
else
if
(
object
instanceof
THREE
.
PointCloud
)
{
renderer
.
setMode
(
_gl
.
POINTS
);
renderer
.
render
Groups
(
groups
);
renderer
.
render
(
group
.
start
,
group
.
count
);
}
...
...
@@ -1381,15 +1381,17 @@ THREE.WebGLRenderer = function ( parameters ) {
if
(
material
instanceof
THREE
.
MeshFaceMaterial
)
{
var
groups
=
geometry
.
groups
;
var
materials
=
material
.
materials
;
for
(
var
j
=
0
,
jl
=
material
s
.
length
;
j
<
jl
;
j
++
)
{
for
(
var
j
=
0
,
jl
=
group
s
.
length
;
j
<
jl
;
j
++
)
{
material
=
materials
[
j
];
var
group
=
groups
[
j
];
var
groupMaterial
=
materials
[
group
.
materialIndex
];
if
(
material
.
visible
)
{
if
(
groupMaterial
!==
undefined
)
{
_this
.
renderBufferDirect
(
camera
,
lights
,
fog
,
geometry
,
material
,
object
);
_this
.
renderBufferDirect
(
camera
,
lights
,
fog
,
geometry
,
groupMaterial
,
object
,
group
);
}
...
...
src/renderers/webgl/WebGLBufferRenderer.js
浏览文件 @
3ed8a04c
...
...
@@ -22,17 +22,6 @@ THREE.WebGLBufferRenderer = function ( _gl, extensions, _infoRender ) {
}
function
renderGroups
(
groups
)
{
for
(
var
i
=
0
,
il
=
groups
.
length
;
i
<
il
;
i
++
)
{
var
group
=
groups
[
i
];
render
(
group
.
start
,
group
.
count
);
}
}
function
renderInstances
(
geometry
)
{
var
extension
=
extensions
.
get
(
'
ANGLE_instanced_arrays
'
);
...
...
@@ -60,7 +49,6 @@ THREE.WebGLBufferRenderer = function ( _gl, extensions, _infoRender ) {
this
.
setMode
=
setMode
;
this
.
render
=
render
;
this
.
renderGroups
=
renderGroups
;
this
.
renderInstances
=
renderInstances
;
};
src/renderers/webgl/WebGLIndexedBufferRenderer.js
浏览文件 @
3ed8a04c
...
...
@@ -40,17 +40,6 @@ THREE.WebGLIndexedBufferRenderer = function ( _gl, extensions, _infoRender ) {
}
function
renderGroups
(
groups
)
{
for
(
var
i
=
0
,
il
=
groups
.
length
;
i
<
il
;
i
++
)
{
var
group
=
groups
[
i
];
render
(
group
.
start
,
group
.
count
);
}
}
function
renderInstances
(
geometry
)
{
var
extension
=
extensions
.
get
(
'
ANGLE_instanced_arrays
'
);
...
...
@@ -71,7 +60,6 @@ THREE.WebGLIndexedBufferRenderer = function ( _gl, extensions, _infoRender ) {
this
.
setMode
=
setMode
;
this
.
setIndex
=
setIndex
;
this
.
render
=
render
;
this
.
renderGroups
=
renderGroups
;
this
.
renderInstances
=
renderInstances
;
};
src/renderers/webgl/WebGLShadowMap.js
浏览文件 @
3ed8a04c
...
...
@@ -210,15 +210,17 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
if
(
material
instanceof
THREE
.
MeshFaceMaterial
)
{
var
groups
=
geometry
.
groups
;
var
materials
=
material
.
materials
;
for
(
var
k
=
0
,
kl
=
materials
.
length
;
k
<
kl
;
k
++
)
{
for
(
var
j
=
0
,
jl
=
groups
.
length
;
j
<
jl
;
j
++
)
{
material
=
materials
[
k
];
var
group
=
groups
[
j
];
var
groupMaterial
=
materials
[
group
.
materialIndex
];
if
(
material
.
visible
)
{
if
(
groupMaterial
!==
undefined
)
{
_renderer
.
renderBufferDirect
(
shadowCamera
,
_lights
,
null
,
geometry
,
getDepthMaterial
(
object
,
material
),
object
);
_renderer
.
renderBufferDirect
(
shadowCamera
,
_lights
,
null
,
geometry
,
getDepthMaterial
(
object
,
groupMaterial
),
object
,
group
);
}
...
...
@@ -281,6 +283,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
}
depthMaterial
.
visible
=
material
.
visible
;
depthMaterial
.
wireframe
=
material
.
wireframe
;
depthMaterial
.
wireframeLinewidth
=
material
.
wireframeLinewidth
;
...
...
utils/build/includes/common.json
浏览文件 @
3ed8a04c
...
...
@@ -66,7 +66,7 @@
"src/materials/MeshPhongMaterial.js"
,
"src/materials/MeshDepthMaterial.js"
,
"src/materials/MeshNormalMaterial.js"
,
"src/materials/M
eshFace
Material.js"
,
"src/materials/M
ulti
Material.js"
,
"src/materials/PointCloudMaterial.js"
,
"src/materials/ShaderMaterial.js"
,
"src/materials/RawShaderMaterial.js"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录