Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
51bcda74
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,发现更多精彩内容 >>
提交
51bcda74
编写于
4月 06, 2011
作者:
A
alteredq
浏览文件
操作
浏览文件
下载
差异文件
Merge remote branch 'remotes/empaempa/master'
上级
e0768d06
2c8b6b35
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
126 addition
and
12 deletion
+126
-12
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+73
-9
src/renderers/WebGLShaders.js
src/renderers/WebGLShaders.js
+53
-3
未找到文件。
src/renderers/WebGLRenderer.js
浏览文件 @
51bcda74
...
@@ -142,7 +142,6 @@ THREE.WebGLRenderer = function ( parameters ) {
...
@@ -142,7 +142,6 @@ THREE.WebGLRenderer = function ( parameters ) {
_lensFlare
.
vertices
=
new
Float32Array
(
8
+
8
);
_lensFlare
.
vertices
=
new
Float32Array
(
8
+
8
);
_lensFlare
.
faces
=
new
Uint16Array
(
6
);
_lensFlare
.
faces
=
new
Uint16Array
(
6
);
_lensFlare
.
transparency
=
0.5
;
i
=
0
;
i
=
0
;
_lensFlare
.
vertices
[
i
++
]
=
-
1
;
_lensFlare
.
vertices
[
i
++
]
=
-
1
;
// vertex
_lensFlare
.
vertices
[
i
++
]
=
-
1
;
_lensFlare
.
vertices
[
i
++
]
=
-
1
;
// vertex
...
@@ -204,8 +203,6 @@ THREE.WebGLRenderer = function ( parameters ) {
...
@@ -204,8 +203,6 @@ THREE.WebGLRenderer = function ( parameters ) {
}
}
_lensFlare
.
attributes
=
{};
_lensFlare
.
attributes
=
{};
_lensFlare
.
uniforms
=
{};
_lensFlare
.
uniforms
=
{};
_lensFlare
.
attributes
.
vertex
=
_gl
.
getAttribLocation
(
_lensFlare
.
program
,
"
position
"
);
_lensFlare
.
attributes
.
vertex
=
_gl
.
getAttribLocation
(
_lensFlare
.
program
,
"
position
"
);
...
@@ -219,6 +216,57 @@ THREE.WebGLRenderer = function ( parameters ) {
...
@@ -219,6 +216,57 @@ THREE.WebGLRenderer = function ( parameters ) {
_lensFlare
.
uniforms
.
screenPosition
=
_gl
.
getUniformLocation
(
_lensFlare
.
program
,
"
screenPosition
"
);
_lensFlare
.
uniforms
.
screenPosition
=
_gl
.
getUniformLocation
(
_lensFlare
.
program
,
"
screenPosition
"
);
// prepare sprites
_sprite
=
{};
_sprite
.
vertices
=
new
Float32Array
(
8
+
8
);
_sprite
.
faces
=
new
Uint16Array
(
6
);
i
=
0
;
_sprite
.
vertices
[
i
++
]
=
-
1
;
_sprite
.
vertices
[
i
++
]
=
-
1
;
// vertex
_sprite
.
vertices
[
i
++
]
=
0
;
_sprite
.
vertices
[
i
++
]
=
0
;
// uv... etc.
_sprite
.
vertices
[
i
++
]
=
1
;
_sprite
.
vertices
[
i
++
]
=
-
1
;
_sprite
.
vertices
[
i
++
]
=
1
;
_sprite
.
vertices
[
i
++
]
=
0
;
_sprite
.
vertices
[
i
++
]
=
1
;
_sprite
.
vertices
[
i
++
]
=
1
;
_sprite
.
vertices
[
i
++
]
=
1
;
_sprite
.
vertices
[
i
++
]
=
1
;
_sprite
.
vertices
[
i
++
]
=
-
1
;
_sprite
.
vertices
[
i
++
]
=
1
;
_sprite
.
vertices
[
i
++
]
=
0
;
_sprite
.
vertices
[
i
++
]
=
1
;
i
=
0
;
_sprite
.
faces
[
i
++
]
=
0
;
_sprite
.
faces
[
i
++
]
=
1
;
_sprite
.
faces
[
i
++
]
=
2
;
_sprite
.
faces
[
i
++
]
=
0
;
_sprite
.
faces
[
i
++
]
=
2
;
_sprite
.
faces
[
i
++
]
=
3
;
_sprite
.
vertexBuffer
=
_gl
.
createBuffer
();
_sprite
.
elementBuffer
=
_gl
.
createBuffer
();
_gl
.
bindBuffer
(
_gl
.
ARRAY_BUFFER
,
_sprite
.
vertexBuffer
);
_gl
.
bufferData
(
_gl
.
ARRAY_BUFFER
,
_sprite
.
vertices
,
_gl
.
STATIC_DRAW
);
_gl
.
bindBuffer
(
_gl
.
ELEMENT_ARRAY_BUFFER
,
_sprite
.
elementBuffer
);
_gl
.
bufferData
(
_gl
.
ELEMENT_ARRAY_BUFFER
,
_sprite
.
faces
,
_gl
.
STATIC_DRAW
);
_sprite
.
program
=
_gl
.
createProgram
();
_gl
.
attachShader
(
_sprite
.
program
,
getShader
(
"
fragment
"
,
THREE
.
ShaderLib
.
sprite
.
fragmentShader
));
_gl
.
attachShader
(
_sprite
.
program
,
getShader
(
"
vertex
"
,
THREE
.
ShaderLib
.
sprite
.
vertexShader
));
_gl
.
linkProgram
(
_sprite
.
program
);
_sprite
.
attributes
=
{};
_sprite
.
uniforms
=
{};
_sprite
.
attributes
.
vertex
=
_gl
.
getAttribLocation
(
_sprite
.
program
,
"
position
"
);
_sprite
.
attributes
.
uv
=
_gl
.
getAttribLocation
(
_sprite
.
program
,
"
UV
"
);
_sprite
.
uniforms
.
map
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
map
"
);
_sprite
.
uniforms
.
opacity
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
opacity
"
);
_sprite
.
uniforms
.
scale
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
scale
"
);
_sprite
.
uniforms
.
rotation
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
rotation
"
);
_sprite
.
uniforms
.
screenPosition
=
_gl
.
getUniformLocation
(
_sprite
.
program
,
"
screenPosition
"
);
this
.
setSize
=
function
(
width
,
height
)
{
this
.
setSize
=
function
(
width
,
height
)
{
_canvas
.
width
=
width
;
_canvas
.
width
=
width
;
...
@@ -3078,6 +3126,14 @@ THREE.WebGLRenderer = function ( parameters ) {
...
@@ -3078,6 +3126,14 @@ THREE.WebGLRenderer = function ( parameters ) {
}
}
// render 2d
if
(
scene
.
__webglSprites
.
length
)
{
renderSprites
(
scene
);
}
// render stencil shadows
// render stencil shadows
if
(
stencil
&&
scene
.
__webglShadowVolumes
.
length
&&
scene
.
lights
.
length
)
{
if
(
stencil
&&
scene
.
__webglShadowVolumes
.
length
&&
scene
.
lights
.
length
)
{
...
@@ -3301,7 +3357,6 @@ THREE.WebGLRenderer = function ( parameters ) {
...
@@ -3301,7 +3357,6 @@ THREE.WebGLRenderer = function ( parameters ) {
_gl
.
bindTexture
(
_gl
.
TEXTURE_2D
,
_lensFlare
.
occlusionTexture
);
_gl
.
bindTexture
(
_gl
.
TEXTURE_2D
,
_lensFlare
.
occlusionTexture
);
_gl
.
activeTexture
(
_gl
.
TEXTURE1
);
_gl
.
activeTexture
(
_gl
.
TEXTURE1
);
_gl
.
bindTexture
(
_gl
.
TEXTURE_2D
,
_lensFlare
.
tempTexture
);
for
(
o
=
0
;
o
<
ol
;
o
++
)
{
for
(
o
=
0
;
o
<
ol
;
o
++
)
{
...
@@ -3326,20 +3381,20 @@ THREE.WebGLRenderer = function ( parameters ) {
...
@@ -3326,20 +3381,20 @@ THREE.WebGLRenderer = function ( parameters ) {
screenPositionPixels
[
1
]
=
screenPosition
[
1
]
*
halfViewportHeight
+
halfViewportHeight
;
screenPositionPixels
[
1
]
=
screenPosition
[
1
]
*
halfViewportHeight
+
halfViewportHeight
;
// screen cull
or go on if vertex texture
// screen cull
if
(
_lensFlare
.
hasVertexTexture
||
if
(
screenPositionPixels
[
0
]
>
0
&&
(
screenPositionPixels
[
0
]
>
0
&&
screenPositionPixels
[
0
]
<
_viewportWidth
&&
screenPositionPixels
[
0
]
<
_viewportWidth
&&
screenPositionPixels
[
1
]
>
0
&&
screenPositionPixels
[
1
]
>
0
&&
screenPositionPixels
[
1
]
<
_viewportHeight
)
)
{
screenPositionPixels
[
1
]
<
_viewportHeight
)
{
// save current RGB to temp texture
// save current RGB to temp texture
_gl
.
bindTexture
(
_gl
.
TEXTURE_2D
,
_lensFlare
.
tempTexture
);
_gl
.
bindTexture
(
_gl
.
TEXTURE_2D
,
_lensFlare
.
tempTexture
);
_gl
.
copyTexSubImage2D
(
_gl
.
TEXTURE_2D
,
0
,
0
,
0
,
screenPositionPixels
[
0
]
-
8
,
screenPositionPixels
[
1
]
-
8
,
16
,
16
);
_gl
.
copyTexSubImage2D
(
_gl
.
TEXTURE_2D
,
0
,
0
,
0
,
screenPositionPixels
[
0
]
-
8
,
screenPositionPixels
[
1
]
-
8
,
16
,
16
);
_gl
.
finish
();
// render pink quad
// render pink quad
...
@@ -3351,12 +3406,14 @@ THREE.WebGLRenderer = function ( parameters ) {
...
@@ -3351,12 +3406,14 @@ THREE.WebGLRenderer = function ( parameters ) {
_gl
.
enable
(
_gl
.
DEPTH_TEST
);
_gl
.
enable
(
_gl
.
DEPTH_TEST
);
_gl
.
drawElements
(
_gl
.
TRIANGLES
,
6
,
_gl
.
UNSIGNED_SHORT
,
0
);
_gl
.
drawElements
(
_gl
.
TRIANGLES
,
6
,
_gl
.
UNSIGNED_SHORT
,
0
);
_gl
.
finish
();
// copy result to occlusionMap
// copy result to occlusionMap
_gl
.
bindTexture
(
_gl
.
TEXTURE_2D
,
_lensFlare
.
occlusionTexture
);
_gl
.
bindTexture
(
_gl
.
TEXTURE_2D
,
_lensFlare
.
occlusionTexture
);
_gl
.
copyTexSubImage2D
(
_gl
.
TEXTURE_2D
,
0
,
0
,
0
,
screenPositionPixels
[
0
]
-
8
,
screenPositionPixels
[
1
]
-
8
,
16
,
16
);
_gl
.
copyTexSubImage2D
(
_gl
.
TEXTURE_2D
,
0
,
0
,
0
,
screenPositionPixels
[
0
]
-
8
,
screenPositionPixels
[
1
]
-
8
,
16
,
16
);
_gl
.
finish
();
// restore graphics
// restore graphics
...
@@ -3447,6 +3504,7 @@ THREE.WebGLRenderer = function ( parameters ) {
...
@@ -3447,6 +3504,7 @@ THREE.WebGLRenderer = function ( parameters ) {
scene
.
__webglObjectsImmediate
=
[];
scene
.
__webglObjectsImmediate
=
[];
scene
.
__webglShadowVolumes
=
[];
scene
.
__webglShadowVolumes
=
[];
scene
.
__webglLensFlares
=
[];
scene
.
__webglLensFlares
=
[];
scene
.
__webglSprites
=
[];
}
}
while
(
scene
.
__objectsAdded
.
length
)
{
while
(
scene
.
__objectsAdded
.
length
)
{
...
@@ -3483,6 +3541,12 @@ THREE.WebGLRenderer = function ( parameters ) {
...
@@ -3483,6 +3541,12 @@ THREE.WebGLRenderer = function ( parameters ) {
}
}
for
(
var
o
=
0
,
ol
=
scene
.
__webglSprites
.
length
;
o
<
ol
;
o
++
)
{
updateObject
(
scene
.
__webglSprites
[
o
].
object
,
scene
);
}
};
};
function
addObject
(
object
,
scene
)
{
function
addObject
(
object
,
scene
)
{
...
...
src/renderers/WebGLShaders.js
浏览文件 @
51bcda74
...
@@ -602,11 +602,13 @@ THREE.ShaderLib = {
...
@@ -602,11 +602,13 @@ THREE.ShaderLib = {
"
texture2D( occlusionMap, vec2( 0.1, 0.9 )) +
"
,
"
texture2D( occlusionMap, vec2( 0.1, 0.9 )) +
"
,
"
texture2D( occlusionMap, vec2( 0.1, 0.5 )) +
"
,
"
texture2D( occlusionMap, vec2( 0.1, 0.5 )) +
"
,
"
texture2D( occlusionMap, vec2( 0.5, 0.5 ));
"
,
"
texture2D( occlusionMap, vec2( 0.5, 0.5 ));
"
,
/*
"vVisibility = ( visibility.r / 9.0 ) *",
"vVisibility = ( visibility.r / 9.0 ) *",
"( 1.0 - visibility.g / 9.0 ) *",
"( 1.0 - visibility.g / 9.0 ) *",
"( visibility.b / 9.0 ) *",
"( visibility.b / 9.0 ) *",
"( 1.0 - visibility.a / 9.0 );",
"( 1.0 - visibility.a / 9.0 );",
*/
"
vVisibility = ( 1.0 - visibility.a / 9.0 );
"
,
"
pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;
"
,
"
pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;
"
,
"
pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;
"
,
"
pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;
"
,
...
@@ -636,7 +638,7 @@ THREE.ShaderLib = {
...
@@ -636,7 +638,7 @@ THREE.ShaderLib = {
"
if( renderType == 0 ) {
"
,
"
if( renderType == 0 ) {
"
,
"
gl_FragColor = vec4(
1.0, 0.0, 1.0
, 0.0 );
"
,
"
gl_FragColor = vec4(
texture2D( map, vUV ).rgb
, 0.0 );
"
,
// restore
// restore
...
@@ -708,7 +710,7 @@ THREE.ShaderLib = {
...
@@ -708,7 +710,7 @@ THREE.ShaderLib = {
"
if( renderType == 0 ) {
"
,
"
if( renderType == 0 ) {
"
,
"
gl_FragColor = vec4(
1.0, 0.0, 1.0
, 0.0 );
"
,
"
gl_FragColor = vec4(
texture2D( map, vUV ).rgb
, 0.0 );
"
,
// restore
// restore
...
@@ -736,6 +738,54 @@ THREE.ShaderLib = {
...
@@ -736,6 +738,54 @@ THREE.ShaderLib = {
},
},
'
sprite
'
:
{
vertexShader
:
[
"
uniform vec3 screenPosition;
"
,
"
uniform vec2 scale;
"
,
"
uniform float rotation;
"
,
"
attribute vec2 position;
"
,
"
attribute vec2 UV;
"
,
"
varying vec2 vUV;
"
,
"
void main(void)
"
,
"
{
"
,
"
vUV = UV;
"
,
"
vec2 pos;
"
,
"
pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;
"
,
"
pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;
"
,
"
gl_Position = vec4(( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );
"
,
"
}
"
].
join
(
"
\n
"
),
fragmentShader
:
[
"
#ifdef GL_ES
"
,
"
precision highp float;
"
,
"
#endif
"
,
"
uniform sampler2D map;
"
,
"
uniform float opacity;
"
,
"
varying vec2 vUV;
"
,
"
void main( void )
"
,
"
{
"
,
"
vec4 color = texture2D( map, vUV );
"
,
"
color.a *= opacity;
"
,
"
gl_FragColor = color;
"
,
"
}
"
].
join
(
"
\n
"
)
},
'
shadowPost
'
:
{
'
shadowPost
'
:
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录