Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
15c6845a
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,发现更多精彩内容 >>
提交
15c6845a
编写于
8月 01, 2011
作者:
A
alteredq
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added shadow receiving to ParticleBasicMaterial.
上级
3d94fc6b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
7 deletion
+19
-7
build/Three.js
build/Three.js
+4
-3
build/custom/ThreeWebGL.js
build/custom/ThreeWebGL.js
+4
-3
src/renderers/WebGLShaders.js
src/renderers/WebGLShaders.js
+11
-1
未找到文件。
build/Three.js
浏览文件 @
15c6845a
...
...
@@ -222,9 +222,10 @@ THREE.ShaderChunk.lights_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderCh
THREE
.
ShaderChunk
.
color_pars_fragment
,
THREE
.
ShaderChunk
.
map_pars_fragment
,
THREE
.
ShaderChunk
.
lightmap_pars_fragment
,
THREE
.
ShaderChunk
.
envmap_pars_fragment
,
THREE
.
ShaderChunk
.
fog_pars_fragment
,
THREE
.
ShaderChunk
.
lights_pars_fragment
,
THREE
.
ShaderChunk
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( vLightWeighting, 1.0 );
"
,
THREE
.
ShaderChunk
.
lights_fragment
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
),
vertexShader
:[
"
#define PHONG
\n
varying vec3 vLightWeighting;
\n
varying vec3 vViewPosition;
\n
varying vec3 vNormal;
"
,
THREE
.
ShaderChunk
.
map_pars_vertex
,
THREE
.
ShaderChunk
.
lightmap_pars_vertex
,
THREE
.
ShaderChunk
.
envmap_pars_vertex
,
THREE
.
ShaderChunk
.
lights_pars_vertex
,
THREE
.
ShaderChunk
.
color_pars_vertex
,
THREE
.
ShaderChunk
.
skinning_pars_vertex
,
THREE
.
ShaderChunk
.
morphtarget_pars_vertex
,
THREE
.
ShaderChunk
.
shadowmap_pars_vertex
,
"
void main() {
\n
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
"
,
THREE
.
ShaderChunk
.
map_vertex
,
THREE
.
ShaderChunk
.
lightmap_vertex
,
THREE
.
ShaderChunk
.
envmap_vertex
,
THREE
.
ShaderChunk
.
color_vertex
,
"
#ifndef USE_ENVMAP
\n
vec4 mPosition = objectMatrix * vec4( position, 1.0 );
\n
#endif
\n
vViewPosition = cameraPosition - mPosition.xyz;
\n
vec3 transformedNormal = normalize( normalMatrix * normal );
\n
vNormal = transformedNormal;
"
,
THREE
.
ShaderChunk
.
lights_vertex
,
THREE
.
ShaderChunk
.
skinning_vertex
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
)},
particle_basic
:{
uniforms
:
THREE
.
UniformsLib
.
particle
,
fragmentShader
:[
"
uniform vec3 psColor;
\n
uniform float opacity;
"
,
THREE
.
ShaderChunk
.
color_pars_fragment
,
THREE
.
ShaderChunk
.
map_particle_pars_fragment
,
THREE
.
ShaderChunk
.
fog_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( psColor, opacity );
"
,
THREE
.
ShaderChunk
.
map_particle_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
),
vertexShader
:[
"
uniform float size;
\n
uniform float scale;
"
,
THREE
.
ShaderChunk
.
color_pars_vertex
,
"
void main() {
"
,
THREE
.
ShaderChunk
.
color_vertex
,
"
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
\n
#ifdef USE_SIZEATTENUATION
\n
gl_PointSize = size * ( scale / length( mvPosition.xyz ) );
\n
#else
\n
gl_PointSize = size;
\n
#endif
\n
gl_Position = projectionMatrix * mvPosition;
\n
}
"
].
join
(
"
\n
"
)},
depthRGBA
:{
uniforms
:{},
fragmentShader
:
"
vec4 pack_depth( const in float depth ) {
\n
const vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );
\n
const vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );
\n
vec4 res = fract( depth * bit_shift );
\n
res -= res.xxyz * bit_mask;
\n
return res;
\n
}
\n
void main() {
\n
gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );
\n
}
"
,
vertexShader
:[
THREE
.
ShaderChunk
.
morphtarget_pars_vertex
,
"
void main() {
\n
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
"
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
"
}
"
].
join
(
"
\n
"
)}};
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
)},
particle_basic
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
particle
,
THREE
.
UniformsLib
.
shadowmap
]),
fragmentShader
:[
"
uniform vec3 psColor;
\n
uniform float opacity;
"
,
THREE
.
ShaderChunk
.
color_pars_fragment
,
THREE
.
ShaderChunk
.
map_particle_pars_fragment
,
THREE
.
ShaderChunk
.
fog_pars_fragment
,
THREE
.
ShaderChunk
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( psColor, opacity );
"
,
THREE
.
ShaderChunk
.
map_particle_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
),
vertexShader
:[
"
uniform float size;
\n
uniform float scale;
"
,
THREE
.
ShaderChunk
.
color_pars_vertex
,
THREE
.
ShaderChunk
.
shadowmap_pars_vertex
,
"
void main() {
"
,
THREE
.
ShaderChunk
.
color_vertex
,
"
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
\n
#ifdef USE_SIZEATTENUATION
\n
gl_PointSize = size * ( scale / length( mvPosition.xyz ) );
\n
#else
\n
gl_PointSize = size;
\n
#endif
\n
gl_Position = projectionMatrix * mvPosition;
"
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
)},
depthRGBA
:{
uniforms
:{},
fragmentShader
:
"
vec4 pack_depth( const in float depth ) {
\n
const vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );
\n
const vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );
\n
vec4 res = fract( depth * bit_shift );
\n
res -= res.xxyz * bit_mask;
\n
return res;
\n
}
\n
void main() {
\n
gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );
\n
}
"
,
vertexShader
:[
THREE
.
ShaderChunk
.
morphtarget_pars_vertex
,
"
void main() {
\n
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
"
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
"
}
"
].
join
(
"
\n
"
)}};
THREE
.
WebGLRenderer
=
function
(
b
){
function
c
(
b
,
e
,
c
){
var
f
,
h
,
g
,
j
=
b
.
vertices
,
m
=
j
.
length
,
n
=
b
.
colors
,
p
=
n
.
length
,
t
=
b
.
__vertexArray
,
o
=
b
.
__colorArray
,
u
=
b
.
__sortArray
,
v
=
b
.
__dirtyVertices
,
y
=
b
.
__dirtyColors
,
x
=
b
.
__webglCustomAttributes
,
B
,
w
;
if
(
x
)
for
(
B
in
x
)
x
[
B
].
offset
=
0
;
if
(
c
.
sortParticles
){
ka
.
multiplySelf
(
c
.
matrixWorld
);
for
(
f
=
0
;
f
<
m
;
f
++
)
h
=
j
[
f
].
position
,
Aa
.
copy
(
h
),
ka
.
multiplyVector3
(
Aa
),
u
[
f
]
=
[
Aa
.
z
,
f
];
u
.
sort
(
function
(
b
,
e
){
return
e
[
0
]
-
b
[
0
]});
for
(
f
=
0
;
f
<
m
;
f
++
)
h
=
j
[
u
[
f
][
1
]].
position
,
g
=
f
*
3
,
t
[
g
]
=
h
.
x
,
t
[
g
+
1
]
=
h
.
y
,
t
[
g
+
2
]
=
h
.
z
;
for
(
f
=
0
;
f
<
p
;
f
++
)
g
=
f
*
3
,
color
=
n
[
u
[
f
][
1
]],
o
[
g
]
=
color
.
r
,
o
[
g
+
1
]
=
color
.
g
,
o
[
g
+
2
]
=
color
.
b
;
if
(
x
)
for
(
B
in
x
){
f
=
x
[
B
];
n
=
f
.
value
.
length
;
for
(
g
=
0
;
g
<
n
;
g
++
){
index
=
u
[
g
][
1
];
p
=
f
.
offset
;
if
(
f
.
size
===
1
){
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
f
.
array
[
p
]
=
f
.
value
[
index
]}
else
{
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
w
=
f
.
value
[
index
];
f
.
size
===
2
?(
f
.
array
[
p
]
=
w
.
x
,
f
.
array
[
p
+
1
]
=
w
.
y
):
f
.
size
===
3
?
f
.
type
===
"
c
"
?(
f
.
array
[
p
]
=
w
.
r
,
f
.
array
[
p
+
1
]
=
w
.
g
,
f
.
array
[
p
+
2
]
=
w
.
b
):(
f
.
array
[
p
]
=
w
.
x
,
f
.
array
[
p
+
1
]
=
w
.
y
,
f
.
array
[
p
+
2
]
=
w
.
z
):(
f
.
array
[
p
]
=
w
.
x
,
f
.
array
[
p
+
1
]
=
w
.
y
,
f
.
array
[
p
+
2
]
=
w
.
z
,
f
.
array
[
p
+
3
]
=
w
.
w
)}
f
.
offset
+=
f
.
size
}}}
else
{
if
(
v
)
for
(
f
=
0
;
f
<
m
;
f
++
)
h
=
j
[
f
].
position
,
g
=
f
*
3
,
t
[
g
]
=
h
.
x
,
t
[
g
+
1
]
=
h
.
y
,
t
[
g
+
2
]
=
h
.
z
;
if
(
y
)
for
(
f
=
0
;
f
<
p
;
f
++
)
color
=
n
[
f
],
g
=
f
*
3
,
o
[
g
]
=
color
.
r
,
o
[
g
+
1
]
=
color
.
g
,
o
[
g
+
2
]
=
color
.
b
;
if
(
x
)
for
(
B
in
x
)
if
(
f
=
x
[
B
],
f
.
__original
.
needsUpdate
){
n
=
f
.
value
.
length
;
for
(
g
=
0
;
g
<
n
;
g
++
){
p
=
f
.
offset
;
if
(
f
.
size
===
1
){
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
f
.
array
[
p
]
=
f
.
value
[
g
]}
else
{
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
w
=
f
.
value
[
g
];
f
.
size
===
2
?(
f
.
array
[
p
]
=
...
...
build/custom/ThreeWebGL.js
浏览文件 @
15c6845a
...
...
@@ -180,9 +180,10 @@ THREE.ShaderChunk.lights_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderCh
THREE
.
ShaderChunk
.
color_pars_fragment
,
THREE
.
ShaderChunk
.
map_pars_fragment
,
THREE
.
ShaderChunk
.
lightmap_pars_fragment
,
THREE
.
ShaderChunk
.
envmap_pars_fragment
,
THREE
.
ShaderChunk
.
fog_pars_fragment
,
THREE
.
ShaderChunk
.
lights_pars_fragment
,
THREE
.
ShaderChunk
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( vLightWeighting, 1.0 );
"
,
THREE
.
ShaderChunk
.
lights_fragment
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
),
vertexShader
:[
"
#define PHONG
\n
varying vec3 vLightWeighting;
\n
varying vec3 vViewPosition;
\n
varying vec3 vNormal;
"
,
THREE
.
ShaderChunk
.
map_pars_vertex
,
THREE
.
ShaderChunk
.
lightmap_pars_vertex
,
THREE
.
ShaderChunk
.
envmap_pars_vertex
,
THREE
.
ShaderChunk
.
lights_pars_vertex
,
THREE
.
ShaderChunk
.
color_pars_vertex
,
THREE
.
ShaderChunk
.
skinning_pars_vertex
,
THREE
.
ShaderChunk
.
morphtarget_pars_vertex
,
THREE
.
ShaderChunk
.
shadowmap_pars_vertex
,
"
void main() {
\n
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
"
,
THREE
.
ShaderChunk
.
map_vertex
,
THREE
.
ShaderChunk
.
lightmap_vertex
,
THREE
.
ShaderChunk
.
envmap_vertex
,
THREE
.
ShaderChunk
.
color_vertex
,
"
#ifndef USE_ENVMAP
\n
vec4 mPosition = objectMatrix * vec4( position, 1.0 );
\n
#endif
\n
vViewPosition = cameraPosition - mPosition.xyz;
\n
vec3 transformedNormal = normalize( normalMatrix * normal );
\n
vNormal = transformedNormal;
"
,
THREE
.
ShaderChunk
.
lights_vertex
,
THREE
.
ShaderChunk
.
skinning_vertex
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
)},
particle_basic
:{
uniforms
:
THREE
.
UniformsLib
.
particle
,
fragmentShader
:[
"
uniform vec3 psColor;
\n
uniform float opacity;
"
,
THREE
.
ShaderChunk
.
color_pars_fragment
,
THREE
.
ShaderChunk
.
map_particle_pars_fragment
,
THREE
.
ShaderChunk
.
fog_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( psColor, opacity );
"
,
THREE
.
ShaderChunk
.
map_particle_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
),
vertexShader
:[
"
uniform float size;
\n
uniform float scale;
"
,
THREE
.
ShaderChunk
.
color_pars_vertex
,
"
void main() {
"
,
THREE
.
ShaderChunk
.
color_vertex
,
"
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
\n
#ifdef USE_SIZEATTENUATION
\n
gl_PointSize = size * ( scale / length( mvPosition.xyz ) );
\n
#else
\n
gl_PointSize = size;
\n
#endif
\n
gl_Position = projectionMatrix * mvPosition;
\n
}
"
].
join
(
"
\n
"
)},
depthRGBA
:{
uniforms
:{},
fragmentShader
:
"
vec4 pack_depth( const in float depth ) {
\n
const vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );
\n
const vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );
\n
vec4 res = fract( depth * bit_shift );
\n
res -= res.xxyz * bit_mask;
\n
return res;
\n
}
\n
void main() {
\n
gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );
\n
}
"
,
vertexShader
:[
THREE
.
ShaderChunk
.
morphtarget_pars_vertex
,
"
void main() {
\n
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
"
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
"
}
"
].
join
(
"
\n
"
)}};
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
)},
particle_basic
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
particle
,
THREE
.
UniformsLib
.
shadowmap
]),
fragmentShader
:[
"
uniform vec3 psColor;
\n
uniform float opacity;
"
,
THREE
.
ShaderChunk
.
color_pars_fragment
,
THREE
.
ShaderChunk
.
map_particle_pars_fragment
,
THREE
.
ShaderChunk
.
fog_pars_fragment
,
THREE
.
ShaderChunk
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( psColor, opacity );
"
,
THREE
.
ShaderChunk
.
map_particle_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
),
vertexShader
:[
"
uniform float size;
\n
uniform float scale;
"
,
THREE
.
ShaderChunk
.
color_pars_vertex
,
THREE
.
ShaderChunk
.
shadowmap_pars_vertex
,
"
void main() {
"
,
THREE
.
ShaderChunk
.
color_vertex
,
"
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
\n
#ifdef USE_SIZEATTENUATION
\n
gl_PointSize = size * ( scale / length( mvPosition.xyz ) );
\n
#else
\n
gl_PointSize = size;
\n
#endif
\n
gl_Position = projectionMatrix * mvPosition;
"
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
)},
depthRGBA
:{
uniforms
:{},
fragmentShader
:
"
vec4 pack_depth( const in float depth ) {
\n
const vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );
\n
const vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );
\n
vec4 res = fract( depth * bit_shift );
\n
res -= res.xxyz * bit_mask;
\n
return res;
\n
}
\n
void main() {
\n
gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );
\n
}
"
,
vertexShader
:[
THREE
.
ShaderChunk
.
morphtarget_pars_vertex
,
"
void main() {
\n
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
"
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
"
}
"
].
join
(
"
\n
"
)}};
THREE
.
WebGLRenderer
=
function
(
b
){
function
d
(
b
,
d
,
e
){
var
f
,
h
,
g
,
i
=
b
.
vertices
,
j
=
i
.
length
,
Ca
=
b
.
colors
,
E
=
Ca
.
length
,
s
=
b
.
__vertexArray
,
k
=
b
.
__colorArray
,
B
=
b
.
__sortArray
,
n
=
b
.
__dirtyVertices
,
p
=
b
.
__dirtyColors
,
q
=
b
.
__webglCustomAttributes
,
o
,
r
;
if
(
q
)
for
(
o
in
q
)
q
[
o
].
offset
=
0
;
if
(
e
.
sortParticles
){
va
.
multiplySelf
(
e
.
matrixWorld
);
for
(
f
=
0
;
f
<
j
;
f
++
)
h
=
i
[
f
].
position
,
Ja
.
copy
(
h
),
va
.
multiplyVector3
(
Ja
),
B
[
f
]
=
[
Ja
.
z
,
f
];
B
.
sort
(
function
(
b
,
c
){
return
c
[
0
]
-
b
[
0
]});
for
(
f
=
0
;
f
<
j
;
f
++
)
h
=
i
[
B
[
f
][
1
]].
position
,
g
=
f
*
3
,
s
[
g
]
=
h
.
x
,
s
[
g
+
1
]
=
h
.
y
,
s
[
g
+
2
]
=
h
.
z
;
for
(
f
=
0
;
f
<
E
;
f
++
)
g
=
f
*
3
,
color
=
Ca
[
B
[
f
][
1
]],
k
[
g
]
=
color
.
r
,
k
[
g
+
1
]
=
color
.
g
,
k
[
g
+
2
]
=
color
.
b
;
if
(
q
)
for
(
o
in
q
){
f
=
q
[
o
];
Ca
=
f
.
value
.
length
;
for
(
g
=
0
;
g
<
Ca
;
g
++
){
index
=
B
[
g
][
1
];
E
=
f
.
offset
;
if
(
f
.
size
===
1
){
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
f
.
array
[
E
]
=
f
.
value
[
index
]}
else
{
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
r
=
f
.
value
[
index
];
f
.
size
===
2
?(
f
.
array
[
E
]
=
r
.
x
,
f
.
array
[
E
+
1
]
=
r
.
y
):
f
.
size
===
3
?
f
.
type
===
"
c
"
?(
f
.
array
[
E
]
=
r
.
r
,
f
.
array
[
E
+
1
]
=
r
.
g
,
f
.
array
[
E
+
2
]
=
r
.
b
):(
f
.
array
[
E
]
=
r
.
x
,
f
.
array
[
E
+
1
]
=
r
.
y
,
f
.
array
[
E
+
2
]
=
r
.
z
):(
f
.
array
[
E
]
=
r
.
x
,
f
.
array
[
E
+
1
]
=
r
.
y
,
f
.
array
[
E
+
2
]
=
r
.
z
,
f
.
array
[
E
+
3
]
=
r
.
w
)}
f
.
offset
+=
f
.
size
}}}
else
{
if
(
n
)
for
(
f
=
0
;
f
<
j
;
f
++
)
h
=
i
[
f
].
position
,
g
=
f
*
3
,
s
[
g
]
=
h
.
x
,
s
[
g
+
1
]
=
h
.
y
,
s
[
g
+
2
]
=
h
.
z
;
if
(
p
)
for
(
f
=
0
;
f
<
E
;
f
++
)
color
=
Ca
[
f
],
g
=
f
*
3
,
k
[
g
]
=
color
.
r
,
k
[
g
+
1
]
=
color
.
g
,
k
[
g
+
2
]
=
color
.
b
;
if
(
q
)
for
(
o
in
q
)
if
(
f
=
q
[
o
],
f
.
__original
.
needsUpdate
){
Ca
=
f
.
value
.
length
;
for
(
g
=
0
;
g
<
Ca
;
g
++
){
E
=
f
.
offset
;
if
(
f
.
size
===
1
){
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
f
.
array
[
E
]
=
f
.
value
[
g
]}
else
{
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
r
=
f
.
value
[
g
];
f
.
size
===
2
?(
f
.
array
[
E
]
=
...
...
src/renderers/WebGLShaders.js
浏览文件 @
15c6845a
...
...
@@ -1428,7 +1428,12 @@ THREE.ShaderLib = {
'
particle_basic
'
:
{
uniforms
:
THREE
.
UniformsLib
[
"
particle
"
],
uniforms
:
THREE
.
UniformsUtils
.
merge
(
[
THREE
.
UniformsLib
[
"
particle
"
],
THREE
.
UniformsLib
[
"
shadowmap
"
]
]
),
fragmentShader
:
[
...
...
@@ -1438,6 +1443,7 @@ THREE.ShaderLib = {
THREE
.
ShaderChunk
[
"
color_pars_fragment
"
],
THREE
.
ShaderChunk
[
"
map_particle_pars_fragment
"
],
THREE
.
ShaderChunk
[
"
fog_pars_fragment
"
],
THREE
.
ShaderChunk
[
"
shadowmap_pars_fragment
"
],
"
void main() {
"
,
...
...
@@ -1445,6 +1451,7 @@ THREE.ShaderLib = {
THREE
.
ShaderChunk
[
"
map_particle_fragment
"
],
THREE
.
ShaderChunk
[
"
color_fragment
"
],
THREE
.
ShaderChunk
[
"
shadowmap_fragment
"
],
THREE
.
ShaderChunk
[
"
fog_fragment
"
],
"
}
"
...
...
@@ -1457,6 +1464,7 @@ THREE.ShaderLib = {
"
uniform float scale;
"
,
THREE
.
ShaderChunk
[
"
color_pars_vertex
"
],
THREE
.
ShaderChunk
[
"
shadowmap_pars_vertex
"
],
"
void main() {
"
,
...
...
@@ -1472,6 +1480,8 @@ THREE.ShaderLib = {
"
gl_Position = projectionMatrix * mvPosition;
"
,
THREE
.
ShaderChunk
[
"
shadowmap_vertex
"
],
"
}
"
].
join
(
"
\n
"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录