Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
6421e6d4
T
three.js
项目概览
车家大少爷
/
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,发现更多精彩内容 >>
提交
6421e6d4
编写于
11月 25, 2013
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'gpgpu' of
https://github.com/zz85/three.js
into dev
上级
b340e4df
f60e4ab8
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
1022 addition
and
0 deletion
+1022
-0
examples/js/SimulatorRenderer.js
examples/js/SimulatorRenderer.js
+131
-0
examples/webgl_gpgpu_birds.html
examples/webgl_gpgpu_birds.html
+891
-0
未找到文件。
examples/js/SimulatorRenderer.js
0 → 100644
浏览文件 @
6421e6d4
/**
* @author zz85 https://github.com/zz85 / http://www.lab4games.net/zz85/blog
*
* Bird Simulation Render
*
* A simple scene rendering a quad of the following shaders
* 1. Pass-thru Shader,
* 2. Bird Position Update Shader,
* 3. Bird Velocity Update Shader
*
*/
function
SimulatorRenderer
(
WIDTH
,
renderer
)
{
WIDTH
=
WIDTH
||
4
;
var
camera
=
new
THREE
.
Camera
();
camera
.
position
.
z
=
1
;
// Init RTT stuff
gl
=
renderer
.
getContext
();
if
(
!
gl
.
getExtension
(
"
OES_texture_float
"
))
{
alert
(
"
No OES_texture_float support for float textures!
"
);
return
;
}
if
(
gl
.
getParameter
(
gl
.
MAX_VERTEX_TEXTURE_IMAGE_UNITS
)
==
0
)
{
alert
(
"
No support for vertex shader textures!
"
);
return
;
}
var
scene
=
new
THREE
.
Scene
();
var
uniforms
=
{
time
:
{
type
:
"
f
"
,
value
:
1.0
},
resolution
:
{
type
:
"
v2
"
,
value
:
new
THREE
.
Vector2
(
WIDTH
,
WIDTH
)
},
texture
:
{
type
:
"
t
"
,
value
:
null
}
};
var
passThruShader
=
new
THREE
.
ShaderMaterial
(
{
uniforms
:
uniforms
,
vertexShader
:
document
.
getElementById
(
'
vertexShader
'
).
textContent
,
fragmentShader
:
document
.
getElementById
(
'
fragmentShader
'
).
textContent
}
);
var
mesh
=
new
THREE
.
Mesh
(
new
THREE
.
PlaneGeometry
(
2
,
2
),
passThruShader
);
var
positionShader
=
new
THREE
.
ShaderMaterial
(
{
uniforms
:
{
time
:
{
type
:
"
f
"
,
value
:
1.0
},
delta
:
{
type
:
"
f
"
,
value
:
0.0
},
resolution
:
{
type
:
"
v2
"
,
value
:
new
THREE
.
Vector2
(
WIDTH
,
WIDTH
)
},
texturePosition
:
{
type
:
"
t
"
,
value
:
null
},
textureVelocity
:
{
type
:
"
t
"
,
value
:
null
},
},
vertexShader
:
document
.
getElementById
(
'
vertexShader
'
).
textContent
,
fragmentShader
:
document
.
getElementById
(
'
fragmentShaderPosition
'
).
textContent
}
);
this
.
positionShader
=
positionShader
;
var
velocityShader
=
new
THREE
.
ShaderMaterial
(
{
uniforms
:
{
time
:
{
type
:
"
f
"
,
value
:
1.0
},
delta
:
{
type
:
"
f
"
,
value
:
0.0
},
resolution
:
{
type
:
"
v2
"
,
value
:
new
THREE
.
Vector2
(
WIDTH
,
WIDTH
)
},
texturePosition
:
{
type
:
"
t
"
,
value
:
null
},
textureVelocity
:
{
type
:
"
t
"
,
value
:
null
},
testing
:
{
type
:
"
f
"
,
value
:
1.0
},
seperationDistance
:
{
type
:
"
f
"
,
value
:
1.0
},
alignmentDistance
:
{
type
:
"
f
"
,
value
:
1.0
},
cohesionDistance
:
{
type
:
"
f
"
,
value
:
1.0
},
freedomFactor
:
{
type
:
"
f
"
,
value
:
1.0
},
predator
:
{
type
:
"
v3
"
,
value
:
new
THREE
.
Vector3
()
}
},
defines
:
{
WIDTH
:
WIDTH
.
toFixed
(
2
)
},
vertexShader
:
document
.
getElementById
(
'
vertexShader
'
).
textContent
,
fragmentShader
:
document
.
getElementById
(
'
fragmentShaderVelocity
'
).
textContent
}
);
this
.
velocityUniforms
=
velocityShader
.
uniforms
;
scene
.
add
(
mesh
);
this
.
getRenderTarget
=
function
()
{
var
renderTarget
=
new
THREE
.
WebGLRenderTarget
(
WIDTH
,
WIDTH
,
{
wrapS
:
THREE
.
RepeatWrapping
,
wrapT
:
THREE
.
RepeatWrapping
,
minFilter
:
THREE
.
NearestFilter
,
magFilter
:
THREE
.
NearestFilter
,
format
:
THREE
.
RGBAFormat
,
type
:
THREE
.
FloatType
,
stencilBuffer
:
false
});
return
renderTarget
;
}
// Takes a texture, and render out as another texture
this
.
renderTexture
=
function
(
input
,
output
)
{
mesh
.
material
=
passThruShader
;
uniforms
.
texture
.
value
=
input
;
renderer
.
render
(
scene
,
camera
,
output
);
}
this
.
renderPosition
=
function
(
position
,
velocity
,
output
,
delta
)
{
mesh
.
material
=
positionShader
;
positionShader
.
uniforms
.
texturePosition
.
value
=
position
;
positionShader
.
uniforms
.
textureVelocity
.
value
=
velocity
;
positionShader
.
uniforms
.
time
.
value
=
performance
.
now
();
positionShader
.
uniforms
.
delta
.
value
=
delta
;
renderer
.
render
(
scene
,
camera
,
output
);
}
this
.
renderVelocity
=
function
(
position
,
velocity
,
output
,
delta
)
{
mesh
.
material
=
velocityShader
;
velocityShader
.
uniforms
.
texturePosition
.
value
=
position
;
velocityShader
.
uniforms
.
textureVelocity
.
value
=
velocity
;
velocityShader
.
uniforms
.
time
.
value
=
performance
.
now
();
velocityShader
.
uniforms
.
delta
.
value
=
delta
;
renderer
.
render
(
scene
,
camera
,
output
);
}
}
\ No newline at end of file
examples/webgl_gpgpu_birds.html
0 → 100644
浏览文件 @
6421e6d4
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录