Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
0c4eb0f6
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,发现更多精彩内容 >>
提交
0c4eb0f6
编写于
6月 04, 2013
作者:
L
Luca Siciliano
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added chroma aberration parameters to OculusRiftEffect.js
上级
36b82b05
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
12 deletion
+22
-12
examples/js/effects/OculusRiftEffect.js
examples/js/effects/OculusRiftEffect.js
+22
-12
未找到文件。
examples/js/effects/OculusRiftEffect.js
浏览文件 @
0c4eb0f6
...
...
@@ -20,7 +20,8 @@ THREE.OculusRiftEffect = function ( renderer, options ) {
interpupillaryDistance
:
0.064
,
lensSeparationDistance
:
0.064
,
eyeToScreenDistance
:
0.041
,
distortionK
:
[
1.0
,
0.22
,
0.24
,
0.0
]
distortionK
:
[
1.0
,
0.22
,
0.24
,
0.0
],
chromaAbParameter
:
[
0.996
,
-
0.004
,
1.014
,
0.0
]
};
// Perspective camera
...
...
@@ -48,7 +49,8 @@ THREE.OculusRiftEffect = function ( renderer, options ) {
"
scale
"
:
{
type
:
"
v2
"
,
value
:
new
THREE
.
Vector2
(
1.0
,
1.0
)
},
"
scaleIn
"
:
{
type
:
"
v2
"
,
value
:
new
THREE
.
Vector2
(
1.0
,
1.0
)
},
"
lensCenter
"
:
{
type
:
"
v2
"
,
value
:
new
THREE
.
Vector2
(
0.0
,
0.0
)
},
"
hmdWarpParam
"
:
{
type
:
"
v4
"
,
value
:
new
THREE
.
Vector4
(
1.0
,
0.0
,
0.0
,
0.0
)
}
"
hmdWarpParam
"
:
{
type
:
"
v4
"
,
value
:
new
THREE
.
Vector4
(
1.0
,
0.0
,
0.0
,
0.0
)
},
"
chromAbParam
"
:
{
type
:
"
v4
"
,
value
:
new
THREE
.
Vector4
(
1.0
,
0.0
,
0.0
,
0.0
)
}
},
vertexShader
:
[
"
varying vec2 vUv;
"
,
...
...
@@ -59,10 +61,11 @@ THREE.OculusRiftEffect = function ( renderer, options ) {
].
join
(
"
\n
"
),
fragmentShader
:
[
"
uniform vec2 scale;
"
,
"
uniform vec2 scaleIn;
"
,
"
uniform vec2 lensCenter;
"
,
"
uniform vec4 hmdWarpParam;
"
,
"
uniform vec2 scale;
"
,
"
uniform vec2 scaleIn;
"
,
"
uniform vec2 lensCenter;
"
,
"
uniform vec4 hmdWarpParam;
"
,
'
uniform vec4 chromAbParam;
'
,
"
uniform sampler2D texid;
"
,
"
varying vec2 vUv;
"
,
"
void main()
"
,
...
...
@@ -71,12 +74,18 @@ THREE.OculusRiftEffect = function ( renderer, options ) {
"
vec2 theta = (uv-lensCenter)*scaleIn;
"
,
"
float rSq = theta.x*theta.x + theta.y*theta.y;
"
,
"
vec2 rvector = theta*(hmdWarpParam.x + hmdWarpParam.y*rSq + hmdWarpParam.z*rSq*rSq + hmdWarpParam.w*rSq*rSq*rSq);
"
,
"
vec2 tc = (lensCenter + scale * rvector);
"
,
"
tc = (tc+1.0)/2.0;
"
,
// range from [-1,1] to [0,1]
"
if (any(bvec2(clamp(tc, vec2(0.0,0.0), vec2(1.0,1.0))-tc)))
"
,
'
vec2 rBlue = rvector * (chromAbParam.z + chromAbParam.w * rSq);
'
,
"
vec2 tcBlue = (lensCenter + scale * rBlue);
"
,
"
tcBlue = (tcBlue+1.0)/2.0;
"
,
// range from [-1,1] to [0,1]
"
if (any(bvec2(clamp(tcBlue, vec2(0.0,0.0), vec2(1.0,1.0))-tcBlue))) {
"
,
"
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
"
,
"
else
"
,
"
gl_FragColor = texture2D(texid, tc);
"
,
"
return;}
"
,
"
vec2 tcGreen = lensCenter + scale * rvector;
"
,
"
tcGreen = (tcGreen+1.0)/2.0;
"
,
// range from [-1,1] to [0,1]
"
vec2 rRed = rvector * (chromAbParam.x + chromAbParam.y * rSq);
"
,
"
vec2 tcRed = lensCenter + scale * rRed;
"
,
"
tcRed = (tcRed+1.0)/2.0;
"
,
// range from [-1,1] to [0,1]
"
gl_FragColor = vec4(texture2D(texid, tcRed).r, texture2D(texid, tcGreen).g, texture2D(texid, tcBlue).b, 1);
"
,
"
}
"
].
join
(
"
\n
"
)
}
);
...
...
@@ -119,9 +128,10 @@ THREE.OculusRiftEffect = function ( renderer, options ) {
// Distortion shader parameters
var
lensShift
=
4
*
(
HMD
.
hScreenSize
/
4
-
HMD
.
lensSeparationDistance
/
2
)
/
HMD
.
hScreenSize
;
left
.
lensCenter
=
new
THREE
.
Vector2
(
lensShift
,
0.0
);
right
.
lensCenter
=
new
THREE
.
Vector2
(
-
lensShift
,
0.0
);
right
.
lensCenter
=
new
THREE
.
Vector2
(
-
lensShift
,
0.0
);
RTMaterial
.
uniforms
[
'
hmdWarpParam
'
].
value
=
new
THREE
.
Vector4
(
HMD
.
distortionK
[
0
],
HMD
.
distortionK
[
1
],
HMD
.
distortionK
[
2
],
HMD
.
distortionK
[
3
]);
RTMaterial
.
uniforms
[
'
chromAbParam
'
].
value
=
new
THREE
.
Vector4
(
HMD
.
chromaAbParameter
[
0
],
HMD
.
chromaAbParameter
[
1
],
HMD
.
chromaAbParameter
[
2
],
HMD
.
chromaAbParameter
[
3
]);
RTMaterial
.
uniforms
[
'
scaleIn
'
].
value
=
new
THREE
.
Vector2
(
1.0
,
1.0
/
aspect
);
RTMaterial
.
uniforms
[
'
scale
'
].
value
=
new
THREE
.
Vector2
(
1.0
/
distScale
,
1.0
*
aspect
/
distScale
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录