Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
f13189b6
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,发现更多精彩内容 >>
提交
f13189b6
编写于
9月 23, 2011
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactored WebGLShaders a bit.
上级
671b5079
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
455 addition
and
445 deletion
+455
-445
build/Three.js
build/Three.js
+15
-15
build/custom/ThreeWebGL.js
build/custom/ThreeWebGL.js
+15
-15
src/renderers/WebGLShaders.js
src/renderers/WebGLShaders.js
+425
-415
未找到文件。
build/Three.js
浏览文件 @
f13189b6
...
...
@@ -206,21 +206,21 @@ THREE.UniformsLib={common:{diffuse:{type:"c",value:new THREE.Color(15658734)},op
value
:
1
},
fogFar
:{
type
:
"
f
"
,
value
:
2
E3
},
fogColor
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
16777215
)}},
lights
:{
enableLighting
:{
type
:
"
i
"
,
value
:
1
},
ambientLightColor
:{
type
:
"
fv
"
,
value
:[]},
directionalLightDirection
:{
type
:
"
fv
"
,
value
:[]},
directionalLightColor
:{
type
:
"
fv
"
,
value
:[]},
pointLightColor
:{
type
:
"
fv
"
,
value
:[]},
pointLightPosition
:{
type
:
"
fv
"
,
value
:[]},
pointLightDistance
:{
type
:
"
fv1
"
,
value
:[]}},
particle
:{
psColor
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
15658734
)},
opacity
:{
type
:
"
f
"
,
value
:
1
},
size
:{
type
:
"
f
"
,
value
:
1
},
scale
:{
type
:
"
f
"
,
value
:
1
},
map
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
fogDensity
:{
type
:
"
f
"
,
value
:
2.5
E
-
4
},
fogNear
:{
type
:
"
f
"
,
value
:
1
},
fogFar
:{
type
:
"
f
"
,
value
:
2
E3
},
fogColor
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
16777215
)}},
shadowmap
:{
shadowMap
:{
type
:
"
tv
"
,
value
:
3
,
texture
:[]},
shadowMatrix
:{
type
:
"
m4v
"
,
value
:[]},
shadowBias
:{
type
:
"
f
"
,
value
:
0.0039
},
shadowDarkness
:{
type
:
"
f
"
,
value
:
0.2
}}};
THREE
.
ShaderLib
=
{
sprite
:{
vertexShader
:
"
uniform int useScreenCoordinates;
\n
uniform int affectedByDistance;
\n
uniform vec3 screenPosition;
\n
uniform mat4 modelViewMatrix;
\n
uniform mat4 projectionMatrix;
\n
uniform float rotation;
\n
uniform vec2 scale;
\n
uniform vec2 alignment;
\n
uniform vec2 uvOffset;
\n
uniform vec2 uvScale;
\n
attribute vec2 position;
\n
attribute vec2 uv;
\n
varying vec2 vUV;
\n
void main() {
\n
vUV = uvOffset + uv * uvScale;
\n
vec2 alignedPosition = position + alignment;
\n
vec2 rotatedPosition;
\n
rotatedPosition.x = ( cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y ) * scale.x;
\n
rotatedPosition.y = ( sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y ) * scale.y;
\n
vec4 finalPosition;
\n
if( useScreenCoordinates != 0 ) {
\n
finalPosition = vec4( screenPosition.xy + rotatedPosition, screenPosition.z, 1.0 );
\n
} else {
\n
finalPosition = projectionMatrix * modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
\n
finalPosition.xy += rotatedPosition * ( affectedByDistance == 1 ? 1.0 : finalPosition.z );
\n
}
\n
gl_Position = finalPosition;
\n
}
"
,
fragmentShader
:
"
#ifdef GL_ES
\n
precision highp float;
\n
#endif
\n
uniform vec3 color;
\n
uniform sampler2D map;
\n
uniform float opacity;
\n
varying vec2 vUV;
\n
void main() {
\n
vec4 texture = texture2D( map, vUV );
\n
gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );
\n
}
"
},
depth
:{
uniforms
:{
mNear
:{
type
:
"
f
"
,
value
:
1
},
mFar
:{
type
:
"
f
"
,
value
:
2
E3
},
opacity
:{
type
:
"
f
"
,
value
:
1
}},
fragmentShader
:
"
uniform float mNear;
\n
uniform float mFar;
\n
uniform float opacity;
\n
void main() {
\n
float depth = gl_FragCoord.z / gl_FragCoord.w;
\n
float color = 1.0 - smoothstep( mNear, mFar, depth );
\n
gl_FragColor = vec4( vec3( color ), opacity );
\n
}
"
,
vertexShader
:
"
void main() {
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0
);
\n
}
"
},
normal
:{
uniforms
:{
opacity
:{
type
:
"
f
"
,
value
:
1
}},
fragmentShader
:
"
uniform float opacity;
\n
varying vec3 vNormal;
\n
void main() {
\n
gl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );
\n
}
"
,
vertexShader
:
"
varying vec3 vNormal;
\n
void main() {
\n
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
\n
vNormal = normalize( normalMatrix * normal );
\n
gl_Position = projectionMatrix * mvPosition;
\n
}
"
},
basic
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
shadowmap
]),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
"
,
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
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( diffuse, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
),
vertexShader
:[
THREE
.
ShaderChunk
.
map_pars_vertex
,
THREE
.
ShaderChunk
.
lightmap_pars_vertex
,
THREE
.
ShaderChunk
.
envmap_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
,
THREE
.
ShaderChunk
.
skinning_vertex
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
)},
lambert
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
lights
,
THREE
.
UniformsLib
.
shadowmap
]),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
\n
varying vec3 vLightWeighting;
"
,
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
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( diffuse, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
"
gl_FragColor = gl_FragColor * vec4( vLightWeighting, 1.0 );
"
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
),
vertexShader
:[
"
varying vec3 vLightWeighting;
"
,
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
,
"
vec3 transformedNormal = normalize( normalMatrix * normal );
"
,
THREE
.
ShaderChunk
.
lights_vertex
,
THREE
.
ShaderChunk
.
skinning_vertex
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
)},
phong
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
lights
,
THREE
.
UniformsLib
.
shadowmap
,{
ambient
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
328965
)},
specular
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
1118481
)},
shininess
:{
type
:
"
f
"
,
value
:
30
}}]),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
\n
uniform vec3 ambient;
\n
uniform vec3 specular;
\n
uniform float shininess;
\n
varying vec3 vLightWeighting;
"
,
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, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
THREE
.
ShaderChunk
.
lights_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 = -mvPosition.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
.
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
.
alphatest_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
"
)
}};
depth
:{
uniforms
:{
mNear
:{
type
:
"
f
"
,
value
:
1
},
mFar
:{
type
:
"
f
"
,
value
:
2
E3
},
opacity
:{
type
:
"
f
"
,
value
:
1
}},
vertexShader
:
"
void main() {
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
uniform float mNear;
\n
uniform float mFar;
\n
uniform float opacity;
\n
void main() {
\n
float depth = gl_FragCoord.z / gl_FragCoord.w;
\n
float color = 1.0 - smoothstep( mNear, mFar, depth );
\n
gl_FragColor = vec4( vec3( color ), opacity
);
\n
}
"
},
normal
:{
uniforms
:{
opacity
:{
type
:
"
f
"
,
value
:
1
}},
vertexShader
:
"
varying vec3 vNormal;
\n
void main() {
\n
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
\n
vNormal = normalize( normalMatrix * normal );
\n
gl_Position = projectionMatrix * mvPosition;
\n
}
"
,
fragmentShader
:
"
uniform float opacity;
\n
varying vec3 vNormal;
\n
void main() {
\n
gl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );
\n
}
"
},
basic
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
shadowmap
]),
vertexShader
:[
THREE
.
ShaderChunk
.
map_pars_vertex
,
THREE
.
ShaderChunk
.
lightmap_pars_vertex
,
THREE
.
ShaderChunk
.
envmap_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
,
THREE
.
ShaderChunk
.
skinning_vertex
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
"
,
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
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( diffuse, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
)},
lambert
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
lights
,
THREE
.
UniformsLib
.
shadowmap
]),
vertexShader
:[
"
varying vec3 vLightWeighting;
"
,
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
,
"
vec3 transformedNormal = normalize( normalMatrix * normal );
"
,
THREE
.
ShaderChunk
.
lights_vertex
,
THREE
.
ShaderChunk
.
skinning_vertex
,
THREE
.
ShaderChunk
.
morphtarget
_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
\n
varying vec3 vLightWeighting;
"
,
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
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( diffuse, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
"
gl_FragColor = gl_FragColor * vec4( vLightWeighting, 1.0 );
"
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
)},
phong
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
lights
,
THREE
.
UniformsLib
.
shadowmap
,{
ambient
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
328965
)},
specular
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
1118481
)},
shininess
:{
type
:
"
f
"
,
value
:
30
}}]),
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 = -mvPosition.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
"
),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
\n
uniform vec3 ambient;
\n
uniform vec3 specular;
\n
uniform float shininess;
\n
varying vec3 vLightWeighting;
"
,
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, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
THREE
.
ShaderChunk
.
lights_fragment
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
)},
particle_basic
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
particle
,
THREE
.
UniformsLib
.
shadowmap
]),
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
"
),
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
.
alphatest_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
)},
depthRGBA
:{
uniforms
:{},
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
"
),
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
}
"
}};
THREE
.
WebGLRenderer
=
function
(
b
){
function
c
(
b
,
e
,
c
){
var
f
,
k
,
h
,
m
=
b
.
vertices
,
n
=
m
.
length
,
p
=
b
.
colors
,
t
=
p
.
length
,
u
=
b
.
__vertexArray
,
w
=
b
.
__colorArray
,
v
=
b
.
__sortArray
,
x
=
b
.
__dirtyVertices
,
L
=
b
.
__dirtyColors
,
z
=
b
.
__webglCustomAttributes
,
W
,
y
;
if
(
z
)
for
(
W
in
z
)
z
[
W
].
offset
=
0
;
if
(
c
.
sortParticles
){
qa
.
multiplySelf
(
c
.
matrixWorld
);
for
(
f
=
0
;
f
<
n
;
f
++
)
k
=
m
[
f
].
position
,
xa
.
copy
(
k
),
qa
.
multiplyVector3
(
xa
),
v
[
f
]
=
[
xa
.
z
,
f
];
v
.
sort
(
function
(
b
,
e
){
return
e
[
0
]
-
b
[
0
]});
for
(
f
=
0
;
f
<
n
;
f
++
)
k
=
m
[
v
[
f
][
1
]].
position
,
h
=
f
*
3
,
u
[
h
]
=
k
.
x
,
u
[
h
+
1
]
=
k
.
y
,
u
[
h
+
2
]
=
k
.
z
;
for
(
f
=
0
;
f
<
t
;
f
++
)
h
=
f
*
3
,
color
=
p
[
v
[
f
][
1
]],
w
[
h
]
=
color
.
r
,
w
[
h
+
1
]
=
color
.
g
,
w
[
h
+
2
]
=
color
.
b
;
if
(
z
)
for
(
W
in
z
){
f
=
z
[
W
];
p
=
f
.
value
.
length
;
for
(
h
=
0
;
h
<
p
;
h
++
){
index
=
v
[
h
][
1
];
t
=
f
.
offset
;
if
(
f
.
size
===
1
){
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
f
.
array
[
t
]
=
f
.
value
[
index
]}
else
{
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
y
=
f
.
value
[
index
];
f
.
size
===
2
?(
f
.
array
[
t
]
=
y
.
x
,
f
.
array
[
t
+
1
]
=
y
.
y
):
f
.
size
===
3
?
f
.
type
===
"
c
"
?(
f
.
array
[
t
]
=
y
.
r
,
f
.
array
[
t
+
1
]
=
y
.
g
,
f
.
array
[
t
+
2
]
=
y
.
b
):(
f
.
array
[
t
]
=
y
.
x
,
f
.
array
[
t
+
1
]
=
y
.
y
,
f
.
array
[
t
+
2
]
=
y
.
z
):(
f
.
array
[
t
]
=
y
.
x
,
f
.
array
[
t
+
1
]
=
y
.
y
,
f
.
array
[
t
+
2
]
=
y
.
z
,
f
.
array
[
t
+
3
]
=
y
.
w
)}
f
.
offset
+=
f
.
size
}}}
else
{
if
(
x
)
for
(
f
=
0
;
f
<
n
;
f
++
)
k
=
m
[
f
].
position
,
h
=
f
*
3
,
u
[
h
]
=
k
.
x
,
u
[
h
+
1
]
=
k
.
y
,
u
[
h
+
2
]
=
k
.
z
;
if
(
L
)
for
(
f
=
0
;
f
<
t
;
f
++
)
color
=
p
[
f
],
h
=
f
*
3
,
w
[
h
]
=
color
.
r
,
w
[
h
+
1
]
=
color
.
g
,
w
[
h
+
2
]
=
color
.
b
;
if
(
z
)
for
(
W
in
z
)
if
(
f
=
z
[
W
],
f
.
__original
.
needsUpdate
){
p
=
f
.
value
.
length
;
for
(
h
=
0
;
h
<
p
;
h
++
){
t
=
f
.
offset
;
if
(
f
.
size
===
1
){
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
f
.
array
[
t
]
=
f
.
value
[
h
]}
else
{
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
y
=
f
.
value
[
h
];
f
.
size
===
2
?(
f
.
array
[
t
]
=
...
...
build/custom/ThreeWebGL.js
浏览文件 @
f13189b6
...
...
@@ -163,21 +163,21 @@ THREE.UniformsLib={common:{diffuse:{type:"c",value:new THREE.Color(15658734)},op
value
:
1
},
fogFar
:{
type
:
"
f
"
,
value
:
2
E3
},
fogColor
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
16777215
)}},
lights
:{
enableLighting
:{
type
:
"
i
"
,
value
:
1
},
ambientLightColor
:{
type
:
"
fv
"
,
value
:[]},
directionalLightDirection
:{
type
:
"
fv
"
,
value
:[]},
directionalLightColor
:{
type
:
"
fv
"
,
value
:[]},
pointLightColor
:{
type
:
"
fv
"
,
value
:[]},
pointLightPosition
:{
type
:
"
fv
"
,
value
:[]},
pointLightDistance
:{
type
:
"
fv1
"
,
value
:[]}},
particle
:{
psColor
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
15658734
)},
opacity
:{
type
:
"
f
"
,
value
:
1
},
size
:{
type
:
"
f
"
,
value
:
1
},
scale
:{
type
:
"
f
"
,
value
:
1
},
map
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
fogDensity
:{
type
:
"
f
"
,
value
:
2.5
E
-
4
},
fogNear
:{
type
:
"
f
"
,
value
:
1
},
fogFar
:{
type
:
"
f
"
,
value
:
2
E3
},
fogColor
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
16777215
)}},
shadowmap
:{
shadowMap
:{
type
:
"
tv
"
,
value
:
3
,
texture
:[]},
shadowMatrix
:{
type
:
"
m4v
"
,
value
:[]},
shadowBias
:{
type
:
"
f
"
,
value
:
0.0039
},
shadowDarkness
:{
type
:
"
f
"
,
value
:
0.2
}}};
THREE
.
ShaderLib
=
{
sprite
:{
vertexShader
:
"
uniform int useScreenCoordinates;
\n
uniform int affectedByDistance;
\n
uniform vec3 screenPosition;
\n
uniform mat4 modelViewMatrix;
\n
uniform mat4 projectionMatrix;
\n
uniform float rotation;
\n
uniform vec2 scale;
\n
uniform vec2 alignment;
\n
uniform vec2 uvOffset;
\n
uniform vec2 uvScale;
\n
attribute vec2 position;
\n
attribute vec2 uv;
\n
varying vec2 vUV;
\n
void main() {
\n
vUV = uvOffset + uv * uvScale;
\n
vec2 alignedPosition = position + alignment;
\n
vec2 rotatedPosition;
\n
rotatedPosition.x = ( cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y ) * scale.x;
\n
rotatedPosition.y = ( sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y ) * scale.y;
\n
vec4 finalPosition;
\n
if( useScreenCoordinates != 0 ) {
\n
finalPosition = vec4( screenPosition.xy + rotatedPosition, screenPosition.z, 1.0 );
\n
} else {
\n
finalPosition = projectionMatrix * modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
\n
finalPosition.xy += rotatedPosition * ( affectedByDistance == 1 ? 1.0 : finalPosition.z );
\n
}
\n
gl_Position = finalPosition;
\n
}
"
,
fragmentShader
:
"
#ifdef GL_ES
\n
precision highp float;
\n
#endif
\n
uniform vec3 color;
\n
uniform sampler2D map;
\n
uniform float opacity;
\n
varying vec2 vUV;
\n
void main() {
\n
vec4 texture = texture2D( map, vUV );
\n
gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );
\n
}
"
},
depth
:{
uniforms
:{
mNear
:{
type
:
"
f
"
,
value
:
1
},
mFar
:{
type
:
"
f
"
,
value
:
2
E3
},
opacity
:{
type
:
"
f
"
,
value
:
1
}},
fragmentShader
:
"
uniform float mNear;
\n
uniform float mFar;
\n
uniform float opacity;
\n
void main() {
\n
float depth = gl_FragCoord.z / gl_FragCoord.w;
\n
float color = 1.0 - smoothstep( mNear, mFar, depth );
\n
gl_FragColor = vec4( vec3( color ), opacity );
\n
}
"
,
vertexShader
:
"
void main() {
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0
);
\n
}
"
},
normal
:{
uniforms
:{
opacity
:{
type
:
"
f
"
,
value
:
1
}},
fragmentShader
:
"
uniform float opacity;
\n
varying vec3 vNormal;
\n
void main() {
\n
gl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );
\n
}
"
,
vertexShader
:
"
varying vec3 vNormal;
\n
void main() {
\n
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
\n
vNormal = normalize( normalMatrix * normal );
\n
gl_Position = projectionMatrix * mvPosition;
\n
}
"
},
basic
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
shadowmap
]),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
"
,
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
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( diffuse, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
),
vertexShader
:[
THREE
.
ShaderChunk
.
map_pars_vertex
,
THREE
.
ShaderChunk
.
lightmap_pars_vertex
,
THREE
.
ShaderChunk
.
envmap_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
,
THREE
.
ShaderChunk
.
skinning_vertex
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
)},
lambert
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
lights
,
THREE
.
UniformsLib
.
shadowmap
]),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
\n
varying vec3 vLightWeighting;
"
,
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
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( diffuse, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
"
gl_FragColor = gl_FragColor * vec4( vLightWeighting, 1.0 );
"
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
),
vertexShader
:[
"
varying vec3 vLightWeighting;
"
,
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
,
"
vec3 transformedNormal = normalize( normalMatrix * normal );
"
,
THREE
.
ShaderChunk
.
lights_vertex
,
THREE
.
ShaderChunk
.
skinning_vertex
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
)},
phong
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
lights
,
THREE
.
UniformsLib
.
shadowmap
,{
ambient
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
328965
)},
specular
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
1118481
)},
shininess
:{
type
:
"
f
"
,
value
:
30
}}]),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
\n
uniform vec3 ambient;
\n
uniform vec3 specular;
\n
uniform float shininess;
\n
varying vec3 vLightWeighting;
"
,
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, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
THREE
.
ShaderChunk
.
lights_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 = -mvPosition.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
.
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
.
alphatest_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
"
)
}};
depth
:{
uniforms
:{
mNear
:{
type
:
"
f
"
,
value
:
1
},
mFar
:{
type
:
"
f
"
,
value
:
2
E3
},
opacity
:{
type
:
"
f
"
,
value
:
1
}},
vertexShader
:
"
void main() {
\n
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
\n
}
"
,
fragmentShader
:
"
uniform float mNear;
\n
uniform float mFar;
\n
uniform float opacity;
\n
void main() {
\n
float depth = gl_FragCoord.z / gl_FragCoord.w;
\n
float color = 1.0 - smoothstep( mNear, mFar, depth );
\n
gl_FragColor = vec4( vec3( color ), opacity
);
\n
}
"
},
normal
:{
uniforms
:{
opacity
:{
type
:
"
f
"
,
value
:
1
}},
vertexShader
:
"
varying vec3 vNormal;
\n
void main() {
\n
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
\n
vNormal = normalize( normalMatrix * normal );
\n
gl_Position = projectionMatrix * mvPosition;
\n
}
"
,
fragmentShader
:
"
uniform float opacity;
\n
varying vec3 vNormal;
\n
void main() {
\n
gl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );
\n
}
"
},
basic
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
shadowmap
]),
vertexShader
:[
THREE
.
ShaderChunk
.
map_pars_vertex
,
THREE
.
ShaderChunk
.
lightmap_pars_vertex
,
THREE
.
ShaderChunk
.
envmap_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
,
THREE
.
ShaderChunk
.
skinning_vertex
,
THREE
.
ShaderChunk
.
morphtarget_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
"
,
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
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( diffuse, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
)},
lambert
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
lights
,
THREE
.
UniformsLib
.
shadowmap
]),
vertexShader
:[
"
varying vec3 vLightWeighting;
"
,
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
,
"
vec3 transformedNormal = normalize( normalMatrix * normal );
"
,
THREE
.
ShaderChunk
.
lights_vertex
,
THREE
.
ShaderChunk
.
skinning_vertex
,
THREE
.
ShaderChunk
.
morphtarget
_vertex
,
THREE
.
ShaderChunk
.
default_vertex
,
THREE
.
ShaderChunk
.
shadowmap_vertex
,
"
}
"
].
join
(
"
\n
"
),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
\n
varying vec3 vLightWeighting;
"
,
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
.
shadowmap_pars_fragment
,
"
void main() {
\n
gl_FragColor = vec4( diffuse, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
"
gl_FragColor = gl_FragColor * vec4( vLightWeighting, 1.0 );
"
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
)},
phong
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
common
,
THREE
.
UniformsLib
.
fog
,
THREE
.
UniformsLib
.
lights
,
THREE
.
UniformsLib
.
shadowmap
,{
ambient
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
328965
)},
specular
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
1118481
)},
shininess
:{
type
:
"
f
"
,
value
:
30
}}]),
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 = -mvPosition.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
"
),
fragmentShader
:[
"
uniform vec3 diffuse;
\n
uniform float opacity;
\n
uniform vec3 ambient;
\n
uniform vec3 specular;
\n
uniform float shininess;
\n
varying vec3 vLightWeighting;
"
,
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, opacity );
"
,
THREE
.
ShaderChunk
.
map_fragment
,
THREE
.
ShaderChunk
.
alphatest_fragment
,
THREE
.
ShaderChunk
.
lights_fragment
,
THREE
.
ShaderChunk
.
lightmap_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
envmap_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
)},
particle_basic
:{
uniforms
:
THREE
.
UniformsUtils
.
merge
([
THREE
.
UniformsLib
.
particle
,
THREE
.
UniformsLib
.
shadowmap
]),
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
"
),
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
.
alphatest_fragment
,
THREE
.
ShaderChunk
.
color_fragment
,
THREE
.
ShaderChunk
.
shadowmap_fragment
,
THREE
.
ShaderChunk
.
fog_fragment
,
"
}
"
].
join
(
"
\n
"
)},
depthRGBA
:{
uniforms
:{},
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
"
),
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
}
"
}};
THREE
.
WebGLRenderer
=
function
(
b
){
function
c
(
b
,
c
,
d
){
var
f
,
i
,
h
,
j
=
b
.
vertices
,
k
=
j
.
length
,
B
=
b
.
colors
,
n
=
B
.
length
,
C
=
b
.
__vertexArray
,
p
=
b
.
__colorArray
,
q
=
b
.
__sortArray
,
t
=
b
.
__dirtyVertices
,
u
=
b
.
__dirtyColors
,
m
=
b
.
__webglCustomAttributes
,
v
,
r
;
if
(
m
)
for
(
v
in
m
)
m
[
v
].
offset
=
0
;
if
(
d
.
sortParticles
){
za
.
multiplySelf
(
d
.
matrixWorld
);
for
(
f
=
0
;
f
<
k
;
f
++
)
i
=
j
[
f
].
position
,
Ia
.
copy
(
i
),
za
.
multiplyVector3
(
Ia
),
q
[
f
]
=
[
Ia
.
z
,
f
];
q
.
sort
(
function
(
b
,
c
){
return
c
[
0
]
-
b
[
0
]});
for
(
f
=
0
;
f
<
k
;
f
++
)
i
=
j
[
q
[
f
][
1
]].
position
,
h
=
f
*
3
,
C
[
h
]
=
i
.
x
,
C
[
h
+
1
]
=
i
.
y
,
C
[
h
+
2
]
=
i
.
z
;
for
(
f
=
0
;
f
<
n
;
f
++
)
h
=
f
*
3
,
color
=
B
[
q
[
f
][
1
]],
p
[
h
]
=
color
.
r
,
p
[
h
+
1
]
=
color
.
g
,
p
[
h
+
2
]
=
color
.
b
;
if
(
m
)
for
(
v
in
m
){
f
=
m
[
v
];
B
=
f
.
value
.
length
;
for
(
h
=
0
;
h
<
B
;
h
++
){
index
=
q
[
h
][
1
];
n
=
f
.
offset
;
if
(
f
.
size
===
1
){
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
f
.
array
[
n
]
=
f
.
value
[
index
]}
else
{
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
r
=
f
.
value
[
index
];
f
.
size
===
2
?(
f
.
array
[
n
]
=
r
.
x
,
f
.
array
[
n
+
1
]
=
r
.
y
):
f
.
size
===
3
?
f
.
type
===
"
c
"
?(
f
.
array
[
n
]
=
r
.
r
,
f
.
array
[
n
+
1
]
=
r
.
g
,
f
.
array
[
n
+
2
]
=
r
.
b
):(
f
.
array
[
n
]
=
r
.
x
,
f
.
array
[
n
+
1
]
=
r
.
y
,
f
.
array
[
n
+
2
]
=
r
.
z
):(
f
.
array
[
n
]
=
r
.
x
,
f
.
array
[
n
+
1
]
=
r
.
y
,
f
.
array
[
n
+
2
]
=
r
.
z
,
f
.
array
[
n
+
3
]
=
r
.
w
)}
f
.
offset
+=
f
.
size
}}}
else
{
if
(
t
)
for
(
f
=
0
;
f
<
k
;
f
++
)
i
=
j
[
f
].
position
,
h
=
f
*
3
,
C
[
h
]
=
i
.
x
,
C
[
h
+
1
]
=
i
.
y
,
C
[
h
+
2
]
=
i
.
z
;
if
(
u
)
for
(
f
=
0
;
f
<
n
;
f
++
)
color
=
B
[
f
],
h
=
f
*
3
,
p
[
h
]
=
color
.
r
,
p
[
h
+
1
]
=
color
.
g
,
p
[
h
+
2
]
=
color
.
b
;
if
(
m
)
for
(
v
in
m
)
if
(
f
=
m
[
v
],
f
.
__original
.
needsUpdate
){
B
=
f
.
value
.
length
;
for
(
h
=
0
;
h
<
B
;
h
++
){
n
=
f
.
offset
;
if
(
f
.
size
===
1
){
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
f
.
array
[
n
]
=
f
.
value
[
h
]}
else
{
if
(
f
.
boundTo
===
void
0
||
f
.
boundTo
===
"
vertices
"
)
r
=
f
.
value
[
h
];
f
.
size
===
2
?(
f
.
array
[
n
]
=
...
...
src/renderers/WebGLShaders.js
浏览文件 @
f13189b6
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录