Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
8c25afa5
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,发现更多精彩内容 >>
提交
8c25afa5
编写于
8月 01, 2012
作者:
A
alteredq
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactored shadow coordinates generation to use less matrix multiplications.
上级
90495673
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
14 addition
and
12 deletion
+14
-12
build/Three.js
build/Three.js
+1
-1
build/custom/ThreeWebGL.js
build/custom/ThreeWebGL.js
+1
-1
src/renderers/WebGLShaders.js
src/renderers/WebGLShaders.js
+12
-10
未找到文件。
build/Three.js
浏览文件 @
8c25afa5
...
...
@@ -284,7 +284,7 @@ morphtarget_vertex:"#ifdef USE_MORPHTARGETS\nvec3 morphed = vec3( 0.0 );\nmorphe
default_vertex
:
"
#ifndef USE_MORPHTARGETS
\n
#ifndef USE_SKINNING
\n
gl_Position = projectionMatrix * mvPosition;
\n
#endif
\n
#endif
"
,
morphnormal_vertex
:
"
#ifdef USE_MORPHNORMALS
\n
vec3 morphedNormal = vec3( 0.0 );
\n
morphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];
\n
morphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];
\n
morphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];
\n
morphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];
\n
morphedNormal += normal;
\n
#endif
"
,
skinnormal_vertex
:
"
#ifdef USE_SKINNING
\n
mat4 skinMatrix = skinWeight.x * boneMatX;
\n
skinMatrix
\t
+= skinWeight.y * boneMatY;
\n
vec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );
\n
#endif
"
,
defaultnormal_vertex
:
"
vec3 transformedNormal;
\n
#ifdef USE_SKINNING
\n
transformedNormal = skinnedNormal.xyz;
\n
#endif
\n
#ifdef USE_MORPHNORMALS
\n
transformedNormal = morphedNormal;
\n
#endif
\n
#ifndef USE_MORPHNORMALS
\n
#ifndef USE_SKINNING
\n
transformedNormal = normal;
\n
#endif
\n
#endif
\n
transformedNormal = normalMatrix * transformedNormal;
"
,
shadowmap_pars_fragment
:
"
#ifdef USE_SHADOWMAP
\n
uniform sampler2D shadowMap[ MAX_SHADOWS ];
\n
uniform vec2 shadowMapSize[ MAX_SHADOWS ];
\n
uniform float shadowDarkness[ MAX_SHADOWS ];
\n
uniform float shadowBias[ MAX_SHADOWS ];
\n
varying vec4 vShadowCoord[ MAX_SHADOWS ];
\n
float unpackDepth( const in vec4 rgba_depth ) {
\n
const vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );
\n
float depth = dot( rgba_depth, bit_shift );
\n
return depth;
\n
}
\n
#endif
"
,
shadowmap_fragment
:
"
#ifdef USE_SHADOWMAP
\n
#ifdef SHADOWMAP_DEBUG
\n
vec3 frustumColors[3];
\n
frustumColors[0] = vec3( 1.0, 0.5, 0.0 );
\n
frustumColors[1] = vec3( 0.0, 1.0, 0.8 );
\n
frustumColors[2] = vec3( 0.0, 0.5, 1.0 );
\n
#endif
\n
#ifdef SHADOWMAP_CASCADE
\n
int inFrustumCount = 0;
\n
#endif
\n
float fDepth;
\n
vec3 shadowColor = vec3( 1.0 );
\n
for( int i = 0; i < MAX_SHADOWS; i ++ ) {
\n
vec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;
\n
bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );
\n
bool inFrustum = all( inFrustumVec );
\n
#ifdef SHADOWMAP_CASCADE
\n
inFrustumCount += int( inFrustum );
\n
bvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );
\n
#else
\n
bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );
\n
#endif
\n
bool frustumTest = all( frustumTestVec );
\n
if ( frustumTest ) {
\n
shadowCoord.z += shadowBias[ i ];
\n
#ifdef SHADOWMAP_SOFT
\n
float shadow = 0.0;
\n
const float shadowDelta = 1.0 / 9.0;
\n
float xPixelOffset = 1.0 / shadowMapSize[ i ].x;
\n
float yPixelOffset = 1.0 / shadowMapSize[ i ].y;
\n
float dx0 = -1.25 * xPixelOffset;
\n
float dy0 = -1.25 * yPixelOffset;
\n
float dx1 = 1.25 * xPixelOffset;
\n
float dy1 = 1.25 * yPixelOffset;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
shadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );
\n
#else
\n
vec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );
\n
float fDepth = unpackDepth( rgbaDepth );
\n
if ( fDepth < shadowCoord.z )
\n
shadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );
\n
#endif
\n
}
\n
#ifdef SHADOWMAP_DEBUG
\n
#ifdef SHADOWMAP_CASCADE
\n
if ( inFrustum && inFrustumCount == 1 ) gl_FragColor.xyz *= frustumColors[ i ];
\n
#else
\n
if ( inFrustum ) gl_FragColor.xyz *= frustumColors[ i ];
\n
#endif
\n
#endif
\n
}
\n
#ifdef GAMMA_OUTPUT
\n
shadowColor *= shadowColor;
\n
#endif
\n
gl_FragColor.xyz = gl_FragColor.xyz * shadowColor;
\n
#endif
"
,
shadowmap_pars_vertex
:
"
#ifdef USE_SHADOWMAP
\n
varying vec4 vShadowCoord[ MAX_SHADOWS ];
\n
uniform mat4 shadowMatrix[ MAX_SHADOWS ];
\n
#endif
"
,
shadowmap_vertex
:
"
#ifdef USE_SHADOWMAP
\n
for( int i = 0; i < MAX_SHADOWS; i ++ ) {
\n
#ifdef USE_MORPHTARGETS
\n
vShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * vec4( morphed, 1.0 );
\n
#else
\n
#ifdef USE_SKINNING
\n
vShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * skinned;
\n
#else
\n
vShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * vec4( position, 1.0 );
\n
#endif
\n
#endif
\n
}
\n
#endif
"
,
shadowmap_pars_vertex
:
"
#ifdef USE_SHADOWMAP
\n
varying vec4 vShadowCoord[ MAX_SHADOWS ];
\n
uniform mat4 shadowMatrix[ MAX_SHADOWS ];
\n
#endif
"
,
shadowmap_vertex
:
"
#ifdef USE_SHADOWMAP
\n
vec4 transformedPosition;
\n
#ifdef USE_MORPHTARGETS
\n
transformedPosition = objectMatrix * vec4( morphed, 1.0 );
\n
#else
\n
#ifdef USE_SKINNING
\n
transformedPosition = objectMatrix * skinned;
\n
#else
\n
transformedPosition = objectMatrix * vec4( position, 1.0 );
\n
#endif
\n
#endif
\n
for( int i = 0; i < MAX_SHADOWS; i ++ ) {
\n
vShadowCoord[ i ] = shadowMatrix[ i ] * transformedPosition;
\n
}
\n
#endif
"
,
alphatest_fragment
:
"
#ifdef ALPHATEST
\n
if ( gl_FragColor.a < ALPHATEST ) discard;
\n
#endif
"
,
linear_to_gamma_fragment
:
"
#ifdef GAMMA_OUTPUT
\n
gl_FragColor.xyz = sqrt( gl_FragColor.xyz );
\n
#endif
"
};
THREE
.
UniformsUtils
=
{
merge
:
function
(
a
){
var
b
,
c
,
d
,
e
=
{};
for
(
b
=
0
;
b
<
a
.
length
;
b
++
){
d
=
this
.
clone
(
a
[
b
]);
for
(
c
in
d
)
e
[
c
]
=
d
[
c
]}
return
e
},
clone
:
function
(
a
){
var
b
,
c
,
d
,
e
=
{};
for
(
b
in
a
){
e
[
b
]
=
{};
for
(
c
in
a
[
b
]){
d
=
a
[
b
][
c
];
e
[
b
][
c
]
=
d
instanceof
THREE
.
Color
||
d
instanceof
THREE
.
Vector2
||
d
instanceof
THREE
.
Vector3
||
d
instanceof
THREE
.
Vector4
||
d
instanceof
THREE
.
Matrix4
||
d
instanceof
THREE
.
Texture
?
d
.
clone
():
d
instanceof
Array
?
d
.
slice
():
d
}}
return
e
}};
THREE
.
UniformsLib
=
{
common
:{
diffuse
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
15658734
)},
opacity
:{
type
:
"
f
"
,
value
:
1
},
map
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
offsetRepeat
:{
type
:
"
v4
"
,
value
:
new
THREE
.
Vector4
(
0
,
0
,
1
,
1
)},
lightMap
:{
type
:
"
t
"
,
value
:
2
,
texture
:
null
},
envMap
:{
type
:
"
t
"
,
value
:
1
,
texture
:
null
},
flipEnvMap
:{
type
:
"
f
"
,
value
:
-
1
},
useRefract
:{
type
:
"
i
"
,
value
:
0
},
reflectivity
:{
type
:
"
f
"
,
value
:
1
},
refractionRatio
:{
type
:
"
f
"
,
value
:
0.98
},
combine
:{
type
:
"
i
"
,
value
:
0
},
morphTargetInfluences
:{
type
:
"
f
"
,
value
:
0
}},
fog
:{
fogDensity
:{
type
:
"
f
"
,
...
...
build/custom/ThreeWebGL.js
浏览文件 @
8c25afa5
...
...
@@ -246,7 +246,7 @@ morphtarget_vertex:"#ifdef USE_MORPHTARGETS\nvec3 morphed = vec3( 0.0 );\nmorphe
default_vertex
:
"
#ifndef USE_MORPHTARGETS
\n
#ifndef USE_SKINNING
\n
gl_Position = projectionMatrix * mvPosition;
\n
#endif
\n
#endif
"
,
morphnormal_vertex
:
"
#ifdef USE_MORPHNORMALS
\n
vec3 morphedNormal = vec3( 0.0 );
\n
morphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];
\n
morphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];
\n
morphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];
\n
morphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];
\n
morphedNormal += normal;
\n
#endif
"
,
skinnormal_vertex
:
"
#ifdef USE_SKINNING
\n
mat4 skinMatrix = skinWeight.x * boneMatX;
\n
skinMatrix
\t
+= skinWeight.y * boneMatY;
\n
vec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );
\n
#endif
"
,
defaultnormal_vertex
:
"
vec3 transformedNormal;
\n
#ifdef USE_SKINNING
\n
transformedNormal = skinnedNormal.xyz;
\n
#endif
\n
#ifdef USE_MORPHNORMALS
\n
transformedNormal = morphedNormal;
\n
#endif
\n
#ifndef USE_MORPHNORMALS
\n
#ifndef USE_SKINNING
\n
transformedNormal = normal;
\n
#endif
\n
#endif
\n
transformedNormal = normalMatrix * transformedNormal;
"
,
shadowmap_pars_fragment
:
"
#ifdef USE_SHADOWMAP
\n
uniform sampler2D shadowMap[ MAX_SHADOWS ];
\n
uniform vec2 shadowMapSize[ MAX_SHADOWS ];
\n
uniform float shadowDarkness[ MAX_SHADOWS ];
\n
uniform float shadowBias[ MAX_SHADOWS ];
\n
varying vec4 vShadowCoord[ MAX_SHADOWS ];
\n
float unpackDepth( const in vec4 rgba_depth ) {
\n
const vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );
\n
float depth = dot( rgba_depth, bit_shift );
\n
return depth;
\n
}
\n
#endif
"
,
shadowmap_fragment
:
"
#ifdef USE_SHADOWMAP
\n
#ifdef SHADOWMAP_DEBUG
\n
vec3 frustumColors[3];
\n
frustumColors[0] = vec3( 1.0, 0.5, 0.0 );
\n
frustumColors[1] = vec3( 0.0, 1.0, 0.8 );
\n
frustumColors[2] = vec3( 0.0, 0.5, 1.0 );
\n
#endif
\n
#ifdef SHADOWMAP_CASCADE
\n
int inFrustumCount = 0;
\n
#endif
\n
float fDepth;
\n
vec3 shadowColor = vec3( 1.0 );
\n
for( int i = 0; i < MAX_SHADOWS; i ++ ) {
\n
vec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;
\n
bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );
\n
bool inFrustum = all( inFrustumVec );
\n
#ifdef SHADOWMAP_CASCADE
\n
inFrustumCount += int( inFrustum );
\n
bvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );
\n
#else
\n
bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );
\n
#endif
\n
bool frustumTest = all( frustumTestVec );
\n
if ( frustumTest ) {
\n
shadowCoord.z += shadowBias[ i ];
\n
#ifdef SHADOWMAP_SOFT
\n
float shadow = 0.0;
\n
const float shadowDelta = 1.0 / 9.0;
\n
float xPixelOffset = 1.0 / shadowMapSize[ i ].x;
\n
float yPixelOffset = 1.0 / shadowMapSize[ i ].y;
\n
float dx0 = -1.25 * xPixelOffset;
\n
float dy0 = -1.25 * yPixelOffset;
\n
float dx1 = 1.25 * xPixelOffset;
\n
float dy1 = 1.25 * yPixelOffset;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
fDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );
\n
if ( fDepth < shadowCoord.z ) shadow += shadowDelta;
\n
shadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );
\n
#else
\n
vec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );
\n
float fDepth = unpackDepth( rgbaDepth );
\n
if ( fDepth < shadowCoord.z )
\n
shadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );
\n
#endif
\n
}
\n
#ifdef SHADOWMAP_DEBUG
\n
#ifdef SHADOWMAP_CASCADE
\n
if ( inFrustum && inFrustumCount == 1 ) gl_FragColor.xyz *= frustumColors[ i ];
\n
#else
\n
if ( inFrustum ) gl_FragColor.xyz *= frustumColors[ i ];
\n
#endif
\n
#endif
\n
}
\n
#ifdef GAMMA_OUTPUT
\n
shadowColor *= shadowColor;
\n
#endif
\n
gl_FragColor.xyz = gl_FragColor.xyz * shadowColor;
\n
#endif
"
,
shadowmap_pars_vertex
:
"
#ifdef USE_SHADOWMAP
\n
varying vec4 vShadowCoord[ MAX_SHADOWS ];
\n
uniform mat4 shadowMatrix[ MAX_SHADOWS ];
\n
#endif
"
,
shadowmap_vertex
:
"
#ifdef USE_SHADOWMAP
\n
for( int i = 0; i < MAX_SHADOWS; i ++ ) {
\n
#ifdef USE_MORPHTARGETS
\n
vShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * vec4( morphed, 1.0 );
\n
#else
\n
#ifdef USE_SKINNING
\n
vShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * skinned;
\n
#else
\n
vShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * vec4( position, 1.0 );
\n
#endif
\n
#endif
\n
}
\n
#endif
"
,
shadowmap_pars_vertex
:
"
#ifdef USE_SHADOWMAP
\n
varying vec4 vShadowCoord[ MAX_SHADOWS ];
\n
uniform mat4 shadowMatrix[ MAX_SHADOWS ];
\n
#endif
"
,
shadowmap_vertex
:
"
#ifdef USE_SHADOWMAP
\n
vec4 transformedPosition;
\n
#ifdef USE_MORPHTARGETS
\n
transformedPosition = objectMatrix * vec4( morphed, 1.0 );
\n
#else
\n
#ifdef USE_SKINNING
\n
transformedPosition = objectMatrix * skinned;
\n
#else
\n
transformedPosition = objectMatrix * vec4( position, 1.0 );
\n
#endif
\n
#endif
\n
for( int i = 0; i < MAX_SHADOWS; i ++ ) {
\n
vShadowCoord[ i ] = shadowMatrix[ i ] * transformedPosition;
\n
}
\n
#endif
"
,
alphatest_fragment
:
"
#ifdef ALPHATEST
\n
if ( gl_FragColor.a < ALPHATEST ) discard;
\n
#endif
"
,
linear_to_gamma_fragment
:
"
#ifdef GAMMA_OUTPUT
\n
gl_FragColor.xyz = sqrt( gl_FragColor.xyz );
\n
#endif
"
};
THREE
.
UniformsUtils
=
{
merge
:
function
(
a
){
var
b
,
c
,
d
,
e
=
{};
for
(
b
=
0
;
b
<
a
.
length
;
b
++
){
d
=
this
.
clone
(
a
[
b
]);
for
(
c
in
d
)
e
[
c
]
=
d
[
c
]}
return
e
},
clone
:
function
(
a
){
var
b
,
c
,
d
,
e
=
{};
for
(
b
in
a
){
e
[
b
]
=
{};
for
(
c
in
a
[
b
]){
d
=
a
[
b
][
c
];
e
[
b
][
c
]
=
d
instanceof
THREE
.
Color
||
d
instanceof
THREE
.
Vector2
||
d
instanceof
THREE
.
Vector3
||
d
instanceof
THREE
.
Vector4
||
d
instanceof
THREE
.
Matrix4
||
d
instanceof
THREE
.
Texture
?
d
.
clone
():
d
instanceof
Array
?
d
.
slice
():
d
}}
return
e
}};
THREE
.
UniformsLib
=
{
common
:{
diffuse
:{
type
:
"
c
"
,
value
:
new
THREE
.
Color
(
15658734
)},
opacity
:{
type
:
"
f
"
,
value
:
1
},
map
:{
type
:
"
t
"
,
value
:
0
,
texture
:
null
},
offsetRepeat
:{
type
:
"
v4
"
,
value
:
new
THREE
.
Vector4
(
0
,
0
,
1
,
1
)},
lightMap
:{
type
:
"
t
"
,
value
:
2
,
texture
:
null
},
envMap
:{
type
:
"
t
"
,
value
:
1
,
texture
:
null
},
flipEnvMap
:{
type
:
"
f
"
,
value
:
-
1
},
useRefract
:{
type
:
"
i
"
,
value
:
0
},
reflectivity
:{
type
:
"
f
"
,
value
:
1
},
refractionRatio
:{
type
:
"
f
"
,
value
:
0.98
},
combine
:{
type
:
"
i
"
,
value
:
0
},
morphTargetInfluences
:{
type
:
"
f
"
,
value
:
0
}},
fog
:{
fogDensity
:{
type
:
"
f
"
,
...
...
src/renderers/WebGLShaders.js
浏览文件 @
8c25afa5
...
...
@@ -1357,25 +1357,27 @@ THREE.ShaderChunk = {
"
#ifdef USE_SHADOWMAP
"
,
"
for( int i = 0; i < MAX_SHADOWS; i ++ ) {
"
,
"
vec4 transformedPosition;
"
,
"
#ifdef USE_MORPHTARGETS
"
,
"
#ifdef USE_MORPHTARGETS
"
,
"
vShadowCoord[ i ] = shadowMatrix[ i ] *
objectMatrix * vec4( morphed, 1.0 );
"
,
"
transformedPosition =
objectMatrix * vec4( morphed, 1.0 );
"
,
"
#else
"
,
"
#else
"
,
"
#ifdef USE_SKINNING
"
,
"
#ifdef USE_SKINNING
"
,
"
transformedPosition = objectMatrix * skinned;
"
,
"
vShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * skinned;
"
,
"
#else
"
,
"
#else
"
,
"
transformedPosition = objectMatrix * vec4( position, 1.0 );
"
,
"
vShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * vec4( position, 1.0 );
"
,
"
#endif
"
,
"
#endif
"
,
"
#endif
"
,
"
for( int i = 0; i < MAX_SHADOWS; i ++ ) {
"
,
"
#endif
"
,
"
vShadowCoord[ i ] = shadowMatrix[ i ] * transformedPosition;
"
,
"
}
"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录