Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
60eaccc6
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,体验更适合开发者的 AI 搜索 >>
提交
60eaccc6
编写于
5月 02, 2019
作者:
F
Fernando Serrano
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Switch from camera.bounds to viewport
上级
f076edcc
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
35 addition
and
35 deletion
+35
-35
examples/webgl_multiple_views_multiview.html
examples/webgl_multiple_views_multiview.html
+22
-8
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+1
-16
src/renderers/webgl/WebGLMultiview.js
src/renderers/webgl/WebGLMultiview.js
+12
-11
未找到文件。
examples/webgl_multiple_views_multiview.html
浏览文件 @
60eaccc6
...
...
@@ -51,6 +51,7 @@
var
container
,
clock
,
stats
;
var
camera
,
scene
,
renderer
,
panel
,
balls
;
var
radius
=
0.08
;
var
AMOUNT
=
2
;
var
mixers
=
[];
var
cameras
=
[];
...
...
@@ -79,7 +80,6 @@
var
ASPECT_RATIO
=
window
.
innerWidth
/
window
.
innerHeight
;
var
AMOUNT
=
2
;
var
SIZE
=
1
/
AMOUNT
;
var
WIDTH
=
(
window
.
innerWidth
/
AMOUNT
)
*
window
.
devicePixelRatio
;
var
HEIGHT
=
(
window
.
innerHeight
/
AMOUNT
)
*
window
.
devicePixelRatio
;
...
...
@@ -89,7 +89,7 @@
for
(
var
x
=
0
;
x
<
AMOUNT
;
x
++
)
{
var
subcamera
=
new
THREE
.
PerspectiveCamera
(
40
+
(
x
+
y
)
*
20
,
ASPECT_RATIO
,
0.25
,
100
);
subcamera
.
bounds
=
new
THREE
.
Vector4
(
x
/
AMOUNT
,
y
/
AMOUNT
,
SIZE
,
SIZE
);
subcamera
.
viewport
=
new
THREE
.
Vector4
(
Math
.
floor
(
x
*
WIDTH
),
Math
.
floor
(
y
*
HEIGHT
),
Math
.
ceil
(
WIDTH
),
Math
.
ceil
(
HEIGHT
)
);
subcamera
.
position
.
x
=
(
x
/
AMOUNT
)
*
5
-
0.5
;
subcamera
.
position
.
y
=
(
y
/
AMOUNT
)
*
5
+
1
;
...
...
@@ -147,7 +147,7 @@
var
geometry
=
new
THREE
.
IcosahedronBufferGeometry
(
radius
,
2
);
var
numObjects
=
urlParams
.
get
(
'
num
'
)
||
1000
;
var
numObjects
=
urlParams
.
get
(
'
num
'
)
||
1000
;
for
(
var
i
=
0
;
i
<
numObjects
;
i
++
)
{
...
...
@@ -212,13 +212,27 @@
function
onWindowResize
()
{
camera
.
aspect
=
window
.
innerWidth
/
window
.
innerHeight
;
var
ASPECT_RATIO
=
window
.
innerWidth
/
window
.
innerHeight
;
var
WIDTH
=
(
window
.
innerWidth
/
AMOUNT
)
*
window
.
devicePixelRatio
;
var
HEIGHT
=
(
window
.
innerHeight
/
AMOUNT
)
*
window
.
devicePixelRatio
;
camera
.
aspect
=
ASPECT_RATIO
;
camera
.
updateProjectionMatrix
();
for
(
var
i
=
0
;
i
<
cameras
.
length
;
i
++
)
{
for
(
var
y
=
0
;
y
<
AMOUNT
;
y
++
)
{
for
(
var
x
=
0
;
x
<
AMOUNT
;
x
++
)
{
cameras
[
i
].
aspect
=
camera
.
aspect
;
cameras
[
i
].
updateProjectionMatrix
();
var
subcamera
=
camera
.
cameras
[
AMOUNT
*
y
+
x
];
subcamera
.
viewport
.
set
(
Math
.
floor
(
x
*
WIDTH
),
Math
.
floor
(
y
*
HEIGHT
),
Math
.
ceil
(
WIDTH
),
Math
.
ceil
(
HEIGHT
)
);
subcamera
.
aspect
=
ASPECT_RATIO
;
subcamera
.
updateProjectionMatrix
();
}
}
...
...
@@ -291,4 +305,4 @@
</script>
</body>
</html>
</html>
\ No newline at end of file
src/renderers/WebGLRenderer.js
浏览文件 @
60eaccc6
...
...
@@ -1408,22 +1408,7 @@ function WebGLRenderer( parameters ) {
if
(
object
.
layers
.
test
(
camera2
.
layers
)
)
{
if
(
'
viewport
'
in
camera2
)
{
// XR
state
.
viewport
(
_currentViewport
.
copy
(
camera2
.
viewport
)
);
}
else
{
var
bounds
=
camera2
.
bounds
;
var
x
=
bounds
.
x
*
_width
;
var
y
=
bounds
.
y
*
_height
;
var
width
=
bounds
.
z
*
_width
;
var
height
=
bounds
.
w
*
_height
;
state
.
viewport
(
_currentViewport
.
set
(
x
,
y
,
width
,
height
).
multiplyScalar
(
_pixelRatio
)
);
}
state
.
viewport
(
_currentViewport
.
copy
(
camera2
.
viewport
)
);
currentRenderState
.
setupLights
(
camera2
);
...
...
src/renderers/webgl/WebGLMultiview.js
浏览文件 @
60eaccc6
...
...
@@ -15,11 +15,11 @@ function WebGLMultiview( renderer, requested, options ) {
var
DEFAULT_NUMVIEWS
=
2
;
var
gl
=
renderer
.
context
;
var
maxNumViews
=
capabilities
.
maxMultiviewViews
;
var
capabilities
=
renderer
.
capabilities
;
var
properties
=
renderer
.
properties
;
var
maxNumViews
=
capabilities
.
maxMultiviewViews
;
var
renderTarget
,
currentRenderTarget
;
var
mat3
,
mat4
,
cameraArray
,
renderSize
;
...
...
@@ -133,8 +133,8 @@ function WebGLMultiview( renderer, requested, options ) {
for
(
var
i
=
1
,
il
=
cameras
.
length
;
i
<
il
;
i
++
)
{
if
(
cameras
[
0
].
bounds
.
z
!==
cameras
[
i
].
bounds
.
z
||
cameras
[
0
].
bounds
.
w
!==
cameras
[
i
].
bounds
.
w
)
return
false
;
if
(
cameras
[
0
].
viewport
.
z
!==
cameras
[
i
].
viewport
.
z
||
cameras
[
0
].
viewport
.
w
!==
cameras
[
i
].
viewport
.
w
)
return
false
;
}
...
...
@@ -156,9 +156,10 @@ function WebGLMultiview( renderer, requested, options ) {
if
(
camera
.
isArrayCamera
)
{
var
bounds
=
camera
.
cameras
[
0
].
bounds
;
var
viewport
=
camera
.
cameras
[
0
].
viewport
;
renderTarget
.
setSize
(
viewport
.
z
,
viewport
.
w
);
renderTarget
.
setSize
(
bounds
.
z
*
renderSize
.
x
,
bounds
.
w
*
renderSize
.
y
);
renderTarget
.
setNumViews
(
camera
.
cameras
.
length
);
}
else
{
...
...
@@ -203,12 +204,12 @@ function WebGLMultiview( renderer, requested, options ) {
for
(
var
i
=
0
;
i
<
numViews
;
i
++
)
{
var
bounds
=
camera
.
cameras
[
i
].
bounds
;
var
viewport
=
camera
.
cameras
[
i
].
viewport
;
var
x1
=
bounds
.
x
*
renderSize
.
x
;
var
y1
=
bounds
.
y
*
renderSize
.
y
;
var
x2
=
x1
+
bounds
.
z
*
renderSize
.
x
;
var
y2
=
y1
+
bounds
.
w
*
renderSize
.
y
;
var
x1
=
viewport
.
x
;
var
y1
=
viewport
.
y
;
var
x2
=
x1
+
viewport
.
z
;
var
y2
=
y1
+
viewport
.
w
;
gl
.
bindFramebuffer
(
gl
.
READ_FRAMEBUFFER
,
srcFramebuffers
[
i
]
);
gl
.
blitFramebuffer
(
0
,
0
,
viewWidth
,
viewHeight
,
x1
,
y1
,
x2
,
y2
,
gl
.
COLOR_BUFFER_BIT
,
gl
.
NEAREST
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录