methods draft

This commit is contained in:
2022-11-01 22:19:18 +01:00
parent db35ba89ac
commit 49343ab3eb
22 changed files with 2053 additions and 99 deletions

BIN
assets/backface-culling.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 70 KiB

BIN
assets/multi-pass.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

BIN
assets/single-pass.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
assets/three-portals.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 KiB

Binary file not shown.

View File

@@ -8,13 +8,32 @@
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Four rooms with portals (in red) can all be accessed without leaving the smaller real space\cite {lochner:2021}.}}{1}{}\protected@file@percent }
\newlabel{fig1}{{1}{1}}
\@writefile{toc}{\contentsline {section}{\numberline {2}Unobtrusive Transitions}{2}{}\protected@file@percent }
\newlabel{unobtrusive-transitions}{{2}{2}}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces What should the right-eye camera render if it is inside the portal wall (in grey), but the centre of the head (in red) has not crossed the portal plane? If nothing is done, the blue part of the user's field of view would not render the next room, but whatever is inside or behind the portal wall.}}{2}{}\protected@file@percent }
\newlabel{fig2}{{2}{2}}
\citation{nvidia-sps}
\citation{nvidia-sps}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces The sides of the portal box are only visible from the side with a solid red line. Therefore, the right eye can see space $B$ on the inner wall and at the same look out from the portal box back into space $A$.}}{3}{}\protected@file@percent }
\newlabel{fig3}{{3}{3}}
\@writefile{toc}{\contentsline {section}{\numberline {3}Optimisation Considerations}{3}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces The user is standing in a green room looking at two portals to a yellow and a magenta room. The amount of rendering can in this case be divided by three if the pairs of cameras only render a masked out area of their room instead of the whole picture.}}{3}{}\protected@file@percent }
\newlabel{fig4}{{4}{3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Stencil Buffer}{3}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Single-Pass Instanced Rendering}{3}{}\protected@file@percent }
\citation{nvidia-sps}
\citation{nvidia-sps}
\bibstyle{plain}
\bibdata{refs}
\bibcite{abrash:2013}{1}
\bibcite{aliaga:1997}{2}
\bibcite{boletsis:2017}{3}
\bibcite{lochner:2021}{4}
\bibcite{lowe:2005}{5}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces What should the right-eye camera render if it is inside the portal wall (in grey), but the centre of the head (in red) has not crossed the portal plane? If nothing is done, the blue part of the user's field of view would not render the next room, but whatever is inside or behind the portal wall.}}{2}{}\protected@file@percent }
\newlabel{fig2}{{2}{2}}
\gdef \@abspage@last{2}
\bibcite{nvidia-sps}{4}
\bibcite{lochner:2021}{5}
\bibcite{lowe:2005}{6}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces When rendering in multiple passes, all work is doubled. This illustration shows how basically the three objects are treated as though they were separate objects\cite {nvidia-sps}.}}{4}{}\protected@file@percent }
\newlabel{fig5}{{5}{4}}
\@writefile{toc}{\contentsline {section}{\numberline {4}Performance Comparison}{4}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces When rendering in an instanced single pass, the whole geometry of the scene is processed only once, which significantly reduces the amount of work\cite {nvidia-sps}.}}{4}{}\protected@file@percent }
\newlabel{fig6}{{6}{4}}
\gdef \@abspage@last{4}

View File

@@ -17,6 +17,12 @@ Costas Boletsis.
review of techniques and a proposed typology.
\newblock {\em Multimodal Technologies and Interaction}, 1(4), 2017.
\bibitem{nvidia-sps}
NVIDIA Corporation.
\newblock Vrworks -- single pass stereo.
\newblock \url{https://developer.nvidia.com/vrworks/graphics/singlepassstereo}.
\newblock [accessed 1.11.2022].
\bibitem{lochner:2021}
Daniel Lochner.
\newblock Vr natural walking in impossible spaces.

View File

@@ -3,44 +3,44 @@ Capacity: max_strings=200000, hash_size=200000, hash_prime=170003
The top-level auxiliary file: paper.aux
The style file: plain.bst
Database file #1: refs.bib
You've used 5 entries,
You've used 6 entries,
2118 wiz_defined-function locations,
527 strings with 4711 characters,
and the built_in function-call counts, 1425 in all, are:
= -- 146
> -- 47
532 strings with 4856 characters,
and the built_in function-call counts, 1638 in all, are:
= -- 167
> -- 54
< -- 1
+ -- 21
- -- 14
* -- 79
:= -- 244
add.period$ -- 16
call.type$ -- 5
change.case$ -- 22
+ -- 24
- -- 16
* -- 84
:= -- 280
add.period$ -- 20
call.type$ -- 6
change.case$ -- 26
chr.to.int$ -- 0
cite$ -- 5
duplicate$ -- 64
empty$ -- 119
format.name$ -- 14
if$ -- 301
cite$ -- 6
duplicate$ -- 71
empty$ -- 141
format.name$ -- 16
if$ -- 348
int.to.chr$ -- 0
int.to.str$ -- 5
int.to.str$ -- 6
missing$ -- 5
newline$ -- 28
num.names$ -- 10
pop$ -- 21
newline$ -- 34
num.names$ -- 12
pop$ -- 31
preamble$ -- 1
purify$ -- 17
purify$ -- 20
quote$ -- 0
skip$ -- 49
skip$ -- 54
stack$ -- 0
substring$ -- 78
swap$ -- 15
substring$ -- 83
swap$ -- 16
text.length$ -- 1
text.prefix$ -- 0
top$ -- 0
type$ -- 20
type$ -- 24
warning$ -- 0
while$ -- 15
width$ -- 6
write$ -- 56
while$ -- 17
width$ -- 7
write$ -- 67

View File

@@ -1,14 +1,19 @@
# Fdb version 3
["bibtex paper"] 1665541970 "paper.aux" "paper.bbl" "paper" 1665542107
["bibtex paper"] 1667337462 "paper.aux" "paper.bbl" "paper" 1667337466
"d:/Program Files/texlive/2022/texmf-dist/bibtex/bst/base/plain.bst" 1665521580 20613 bd3fbfa9f64872b81ac57a0dd2ed855f ""
"paper.aux" 1665542106 670 4b41499782b9a514984ed9414ba5bc39 "pdflatex"
"refs.bib" 1665542104 1388 e28ef553b566de5c5d5731f49ce4ab46 ""
"paper.aux" 1667337466 3127 1ec033b642bfe40a5655c3f15b48c3cd "pdflatex"
"refs.bib" 1667337264 2115 a244d291be7f093fdf087abf76a0aebe ""
(generated)
"paper.bbl"
"paper.blg"
["pdflatex"] 1665542105 "D:/wolke7/-Uni/Scientific Writing/paper/paper.tex" "paper.pdf" "paper" 1665542107
"D:/wolke7/-Uni/Scientific Writing/paper/paper.tex" 1665542104 3134 fb14c93d34fad6623bf59114997c938f ""
["pdflatex"] 1667337463 "D:/git/uni/scientific writing paper/paper.tex" "paper.pdf" "paper" 1667337466
"D:/git/uni/scientific writing paper/paper.tex" 1667337368 11262 ef98982dad38ed437f69cf330b41a5a4 ""
"assets/backface-culling.png" 1667336567 118706 50165ebbd49e207759b336c826eeea47 ""
"assets/head-clipping.png" 1667324621 71196 f87be7fc5c9ec21757508366157b65ad ""
"assets/impossible-spaces.png" 1665541837 51071 6b2e4b20176fe191b09e1ce6597b505e ""
"assets/multi-pass.png" 1667321893 154119 d81577c795bee1e8af72c3f34e49ae43 ""
"assets/single-pass.png" 1667321899 132892 d08e61b1447b84d54632e167617d92b7 ""
"assets/three-portals.png" 1667327858 453507 7ad5ba24cab55948bedaf6f84b2c01fb ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/map/fontname/texfonts.map" 1665522354 3524 cb3e574dea2d1052e39280babc910dc8 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm" 1665521762 1324 c910af8c371558dc20f2d7822f66fe64 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1665521762 1524 4414a8315f39513458b80dfc63bff03a ""
@@ -22,11 +27,17 @@
"d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1665521762 1116 933a60c408fc0a863a92debe84b2d294 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1665521762 1120 8b7d695260f3cff42e636090a8002094 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmti10.tfm" 1665521762 1480 aa8e34af0eb6a2941b776984cf1dfdc4 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm" 1665521762 768 1321e9409b4137d6fb428ac9dc956269 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb" 1665521353 32080 340ef9bf63678554ee606688e7b5339d ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1665521353 36299 5f9df58c2139e7edcf37c8fca4bd384d ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1665521353 35752 024fb6c41858982481f6968b5fc26508 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb" 1665521353 32722 d7379af29a190c3f453aba36302ff5a9 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb" 1665521353 32362 bc3f3eec7ab7d65fe700963d4017d32c ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb" 1665521353 32734 69e00a6b65cedb993666e42eedb3d48f ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb" 1665521353 32762 7fee39e011c23b3589931effd97b9702 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb" 1665521353 32726 39f0f9e62e84beb801509898a605dbd5 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb" 1665521353 37944 359e864bd06cde3b1cf57bb20757fb06 ""
"d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb" 1665521353 31099 342ef5a582aacbd3346f3cf4579679fa ""
"d:/Program Files/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1665523356 71627 94eb9990bed73c364d7f53f960cc8c5b ""
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/article.cls" 1665522879 20144 7555b7429d80bef287ebb82117811acc ""
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/inputenc.sty" 1665522879 5048 84b05796b49b69e2d4257d537721c960 ""
@@ -44,13 +55,14 @@
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1665522928 678 4792914a8f45be57bb98413425e4c7af ""
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/lipsum/lipsum.ltd.tex" 1665523006 95525 6fd0552101a6b1f9b7a84b402ec435ba ""
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/lipsum/lipsum.sty" 1665523006 14690 c2c754218a7108db7823a4839c1bc3cd ""
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty" 1665524999 12796 8edb7d69a20b857904dd0ea757c14ec9 ""
"d:/Program Files/texlive/2022/texmf-dist/web2c/texmf.cnf" 1665521288 40171 cdab547de63d26590bebb3baff566530 ""
"d:/Program Files/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1665525326 4635169 7c18c8697c43a68126e63b6eed95e4ca ""
"d:/Program Files/texlive/2022/texmf-var/web2c/pdftex/pdflatex.fmt" 1665525503 3058770 dbc0ede3453e058f63a60acc5f51d593 ""
"d:/Program Files/texlive/2022/texmf.cnf" 1665525306 713 e69b156964470283e0530f5060668171 ""
"d:/wolke7/-Uni/Scientific Writing/paper/paper.tex" 1665542104 3134 fb14c93d34fad6623bf59114997c938f ""
"paper.aux" 1665542106 670 4b41499782b9a514984ed9414ba5bc39 "pdflatex"
"paper.bbl" 1665541970 1029 9336801dc77040e2b91ad5818c15441e "bibtex paper"
"d:/git/uni/scientific writing paper/paper.tex" 1667337368 11262 ef98982dad38ed437f69cf330b41a5a4 ""
"paper.aux" 1667337466 3127 1ec033b642bfe40a5655c3f15b48c3cd "pdflatex"
"paper.bbl" 1667337463 1224 1106bf3c7e0ab163eb2fa23c3f5992d3 "bibtex paper"
(generated)
"paper.aux"
"paper.log"

View File

@@ -1,8 +1,8 @@
PWD D:/wolke7/-Uni/Scientific Writing/paper
PWD D:/git/uni/scientific writing paper
INPUT d:/Program Files/texlive/2022/texmf.cnf
INPUT d:/Program Files/texlive/2022/texmf-dist/web2c/texmf.cnf
INPUT d:/Program Files/texlive/2022/texmf-var/web2c/pdftex/pdflatex.fmt
INPUT d:/wolke7/-Uni/Scientific Writing/paper/paper.tex
INPUT d:/git/uni/scientific writing paper/paper.tex
OUTPUT paper.log
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/article.cls
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/article.cls
@@ -128,6 +128,17 @@ INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdf
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/lipsum/lipsum.ltd.tex
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/lipsum/lipsum.ltd.tex
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
INPUT ./paper.aux
INPUT paper.aux
INPUT paper.aux
@@ -170,15 +181,47 @@ INPUT assets/impossible-spaces.png
INPUT ./assets/impossible-spaces.png
OUTPUT paper.pdf
INPUT ./assets/impossible-spaces.png
INPUT d:/Program Files/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map
INPUT ./assets/head-clipping.png
INPUT ./assets/head-clipping.png
INPUT assets/head-clipping.png
INPUT ./assets/head-clipping.png
INPUT ./assets/head-clipping.png
INPUT ./assets/backface-culling.png
INPUT ./assets/backface-culling.png
INPUT assets/backface-culling.png
INPUT ./assets/backface-culling.png
INPUT ./assets/backface-culling.png
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm
INPUT ./assets/three-portals.png
INPUT ./assets/three-portals.png
INPUT assets/three-portals.png
INPUT ./assets/three-portals.png
INPUT ./assets/three-portals.png
INPUT ./assets/multi-pass.png
INPUT ./assets/multi-pass.png
INPUT assets/multi-pass.png
INPUT ./assets/multi-pass.png
INPUT ./assets/multi-pass.png
INPUT ./assets/single-pass.png
INPUT ./assets/single-pass.png
INPUT assets/single-pass.png
INPUT ./assets/single-pass.png
INPUT ./assets/single-pass.png
INPUT ./paper.bbl
INPUT paper.bbl
INPUT ./paper.bbl
INPUT paper.bbl
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmti10.tfm
INPUT d:/Program Files/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm
INPUT paper.aux
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb

145
paper.log
View File

@@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.11) 1 NOV 2022 13:00
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.11) 1 NOV 2022 22:17
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@@ -63,24 +63,27 @@ Package: lipsum 2021-09-20 v2.7 150 paragraphs of Lorem Ipsum dummy text
\g__lipsum_par_int=\count194
\l__lipsum_a_int=\count195
\l__lipsum_b_int=\count196
(d:/Program Files/texlive/2022/texmf-dist/tex/latex/lipsum/lipsum.ltd.tex)) (D:
\git\uni\scientific writing paper/paper.aux)
(d:/Program Files/texlive/2022/texmf-dist/tex/latex/lipsum/lipsum.ltd.tex)) (d:
/Program Files/texlive/2022/texmf-dist/tex/latex/url/url.sty
\Urlmuskip=\muskip16
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
) (./paper.aux)
\openout1 = `paper.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 9.
LaTeX Font Info: ... okay on input line 9.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 9.
LaTeX Font Info: ... okay on input line 9.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 9.
LaTeX Font Info: ... okay on input line 9.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 9.
LaTeX Font Info: ... okay on input line 9.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 9.
LaTeX Font Info: ... okay on input line 9.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 9.
LaTeX Font Info: ... okay on input line 9.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 9.
LaTeX Font Info: ... okay on input line 9.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 10.
LaTeX Font Info: ... okay on input line 10.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 10.
LaTeX Font Info: ... okay on input line 10.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 10.
LaTeX Font Info: ... okay on input line 10.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 10.
LaTeX Font Info: ... okay on input line 10.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 10.
LaTeX Font Info: ... okay on input line 10.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 10.
LaTeX Font Info: ... okay on input line 10.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 10.
LaTeX Font Info: ... okay on input line 10.
(d:/Program Files/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count197
@@ -107,20 +110,20 @@ File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <12> on input line 11.
(Font) <12> on input line 12.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <8> on input line 11.
(Font) <8> on input line 12.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <6> on input line 11.
(Font) <6> on input line 12.
Underfull \hbox (badness 3769) in paragraph at lines 22--23
Underfull \hbox (badness 3769) in paragraph at lines 23--24
[]\OT1/cmr/m/n/10 There are al-ready many im-ple-men-ta-tions of
[]
<assets/impossible-spaces.png, id=1, 1142.76938pt x 654.19406pt>
File: assets/impossible-spaces.png Graphic file (type png)
<use assets/impossible-spaces.png>
Package pdftex.def Info: assets/impossible-spaces.png used on input line 29.
Package pdftex.def Info: assets/impossible-spaces.png used on input line 30.
(pdftex.def) Requested size: 229.5pt x 131.37552pt.
Underfull \vbox (badness 1681) has occurred while \output is active []
@@ -128,39 +131,81 @@ Underfull \vbox (badness 1681) has occurred while \output is active []
[1{d:/Program Files/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}
<D:\git\uni\scientific writing paper/assets/impossible-spaces.png>]
<assets/head-clipping.png, id=11, 548.0475pt x 399.4925pt>
<./assets/impossible-spaces.png>]
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <7> on input line 46.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <5> on input line 46.
<assets/head-clipping.png, id=11, 506.89375pt x 344.78813pt>
File: assets/head-clipping.png Graphic file (type png)
<use assets/head-clipping.png>
Package pdftex.def Info: assets/head-clipping.png used on input line 41.
(pdftex.def) Requested size: 229.5pt x 167.29195pt.
(D:\git\uni\scientific writing paper/paper.bbl
Package pdftex.def Info: assets/head-clipping.png used on input line 51.
(pdftex.def) Requested size: 229.5pt x 156.10547pt.
<assets/backface-culling.png, id=13, 450.18187pt x 354.82562pt>
File: assets/backface-culling.png Graphic file (type png)
<use assets/backface-culling.png>
Package pdftex.def Info: assets/backface-culling.png used on input line 63.
(pdftex.def) Requested size: 229.5pt x 180.88828pt.
[2 <./assets/head-clipping.png>]
Underfull \vbox (badness 10000) has occurred while \output is active []
<assets/three-portals.png, id=22, 7909.55pt x 2991.175pt>
File: assets/three-portals.png Graphic file (type png)
<use assets/three-portals.png>
Package pdftex.def Info: assets/three-portals.png used on input line 79.
(pdftex.def) Requested size: 229.5pt x 86.76466pt.
<assets/multi-pass.png, id=23, 654.19406pt x 388.45125pt>
File: assets/multi-pass.png Graphic file (type png)
<use assets/multi-pass.png>
Package pdftex.def Info: assets/multi-pass.png used on input line 88.
(pdftex.def) Requested size: 229.5pt x 136.27411pt.
[3 <./assets/backface-culling.png> <./assets/three-portals.png>]
<assets/single-pass.png, id=29, 448.67625pt x 341.02406pt>
File: assets/single-pass.png Graphic file (type png)
<use assets/single-pass.png>
Package pdftex.def Info: assets/single-pass.png used on input line 98.
(pdftex.def) Requested size: 229.5pt x 174.43512pt.
(./paper.bbl
Underfull \hbox (badness 3514) in paragraph at lines 9--13
\OT1/cmr/m/n/10 In \OT1/cmr/m/it/10 Pro-ceed-ings. Vi-su-al-iza-tion '97 (Cat.
No.
[]
) [2 <D:\git\uni\scientific writing paper/assets/head-clipping.png>] (D:\git\un
i\scientific writing paper/paper.aux) )
Here is how much of TeX's memory you used:
1805 strings out of 475071
34534 string characters out of 5775887
466594 words of memory out of 5000000
23217 multiletter control sequences out of 15000+600000
473245 words of font info for 41 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
72i,9n,77p,1120b,263s stack positions out of 10000i,1000n,20000p,200000b,200000s
<d:/Program Files/texlive/2022/texmf-dis
t/fonts/type1/public/amsfonts/cm/cmbx12.pfb><d:/Program Files/texlive/2022/texm
f-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb><d:/Program Files/texlive/2022/
texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb><d:/Program Files/texlive/2
022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb><d:/Program Files/texli
ve/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb>
Output written on "D:\git\uni\scientific writing paper/paper.pdf" (2 pages, 192
001 bytes).
PDF statistics:
40 PDF objects out of 1000 (max. 8388607)
22 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
11 words of extra memory for PDF output out of 10000 (max. 10000000)
Underfull \hbox (badness 6995) in paragraph at lines 21--25
[]\OT1/cmr/m/n/10 NVIDIA Cor-po-ra-tion. Vr-works -- sin-gle
[]
Underfull \hbox (badness 4699) in paragraph at lines 21--25
\OT1/cmtt/m/n/10 vrworks / graphics / singlepassstereo$\OT1/cmr/m/n/10 . [ac-
[]
) [4 <./assets/multi-pass.png> <./assets/single-pass.png>] (./paper.aux) )
Here is how much of TeX's memory you used:
1933 strings out of 475071
36427 string characters out of 5775887
470784 words of memory out of 5000000
23337 multiletter control sequences out of 15000+600000
473720 words of font info for 43 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
72i,9n,77p,1120b,280s stack positions out of 10000i,1000n,20000p,200000b,200000s
<d:/P
rogram Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb>
<d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10
.pfb><d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/c
mr10.pfb><d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/
cm/cmr12.pfb><d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfo
nts/cm/cmr17.pfb><d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/a
msfonts/cm/cmr6.pfb><d:/Program Files/texlive/2022/texmf-dist/fonts/type1/publi
c/amsfonts/cm/cmr7.pfb><d:/Program Files/texlive/2022/texmf-dist/fonts/type1/pu
blic/amsfonts/cm/cmr8.pfb><d:/Program Files/texlive/2022/texmf-dist/fonts/type1
/public/amsfonts/cm/cmti10.pfb><d:/Program Files/texlive/2022/texmf-dist/fonts/
type1/public/amsfonts/cm/cmtt10.pfb>
Output written on paper.pdf (4 pages, 1139417 bytes).
PDF statistics:
79 PDF objects out of 1000 (max. 8388607)
41 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
31 words of extra memory for PDF output out of 10000 (max. 10000000)

BIN
paper.pdf

Binary file not shown.

Binary file not shown.

View File

@@ -2,8 +2,9 @@
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{url}
\title{Performance Optimisations for Rendering Portals in Virtual Reality}
\title{Rendering Portals in Virtual Reality}
\author{Milan van Zanten\\\normalsize{University of Basel}\\\normalsize{milan.vanzanten@unibas.ch}}
\begin{document}
@@ -23,7 +24,7 @@ There are already many implementations of traversable portals in media like vide
One of the main challenges when implementing VR applications is immersion, since errors in tracking and latency are noticed particularly strong\cite{abrash:2013}. In an effort to maximise immersion, most of VR has moved from seated experiences with movement limited to three degrees of freedom (just rotation) to ``room-scale'' tracking. Here, in addition to the rotation of the VR headset, the user's position is tracked either via external devices with fixed positions or by cameras that analyse the surroundings and use computer vision algorithms to determine the position. With the added positional tracking, the six degrees of freedom allow the user to move around the room freely. Thus, the only limitation now is the available space. To move around virtual worlds larger than the available space, several different methods have been developed\cite{boletsis:2017}. Examples include head-directed locomotion, point \& teleport and more. Indisputably though, the technique that preserves immersion the most is actual walking inside the real space.
A recent method to circumvent the space limitations of walking inside a real space is the concept of impossible spaces. Overlapping rooms are connected through portals into a single space many times larger than the initial rooms themselves. If such an arrangement is made while factoring in the real available space, the whole virtual space can be accessed by passing through the portals. An example layout can be seen in Figure \ref{fig1}.
A recent method to circumvent the space limitations of walking inside a real space is the concept of impossible spaces. Overlapping rooms are connected through portals into a single space many times larger than the initial rooms themselves. If such an arrangement is made while factoring in the real available space, the whole virtual space can be accessed by passing through the portals. An example layout can be seen in Figure~\ref{fig1}.
\begin{figure}
\includegraphics[width=\linewidth]{assets/impossible-spaces.png}
@@ -33,9 +34,18 @@ A recent method to circumvent the space limitations of walking inside a real spa
To allow for such impossible spaces to exist, the aforementioned portals are necessary. When viewed, they show what the user would be seeing through the portal in the other room, and if a user crosses the plane of a portal, they are transported to the connecting one. In virtual reality, implementing such a portal system poses some extra challenges.
Each portal requires rendering an additional viewpoint. When rendering the portals in VR, where each eye is rendered by its own camera, there are now two additional viewpoints to render from. In the naive case where each viewpoint is rendered the same, we produce quadruple the amount of work compared to a basic non-VR scene without portals. We will present two optimisations that can reduce the rendering time and analyse their impact. The first optimisation --- using the stencil buffer to only render what is seen through the portal --- is concerned with improving the rendering time of portals in general. In contrast, the second optimisation improves the overall performance of rendering VR by not pushing the whole scene to the GPU twice and rendering a texture for each eye, but rather rendering both eyes onto a single texture.
The goal of this paper is to explore how classical portals from monoscopic applications can be implemented in stereoscopic VR. We will focus on two main objectives:
The way a VR scene is rendered also raises the question of how to handle the teleportation of the user. For example, consider the centre point between the eyes that could be used to decide when the portal plane has been crossed. If the user view the portal from an angle, they could clip through the portal with one eye when they enter it\ref{fig2}. This could be solved by transporting each eye separately whenever it passes through the portal, but that idea conflicts with one of the performance optimisations we will discuss in the first part.
\begin{enumerate}
\item How can portals be implemented in a way that the user can look and pass through them without noticing?
\item What performance pitfalls should be considered when rendering portals in VR and what optimisations can be applied to alleviate them?
\end{enumerate}
\section{Unobtrusive Transitions}
\label{unobtrusive-transitions}
Portals in computer graphics are generally just flat quads onto which the view from within another portal is drawn. In monoscopic applications, a single camera moving from space $A$ through a portal into space $B$ will see a flat image of what is on the other side of it as long as it is still in space $A$. As soon as it crosses the portal plane, it is being transported to space $B$ and will from that point on render that space directly.
The way a VR scene is rendered though raises the question of how to handle the teleportation of the two separate cameras rendering each eye. For example, consider the centre point between the eyes that could be used to decide when the portal plane has been crossed. If the user views the portal from an angle they could clip through the portal with one eye when they enter it before being transported, as shown in Figure~\ref{fig2}. This results in a short flicker when the user passes through a portal at best and a completely wrong view on one eye if the user stops inside the portal.
\begin{figure}
\includegraphics[width=\linewidth]{assets/head-clipping.png}
@@ -43,6 +53,57 @@ The way a VR scene is rendered also raises the question of how to handle the tel
\label{fig2}
\end{figure}
One way to solve this problem could be transporting each eye separately whenever it passes through the portal, but that idea conflicts with one of the performance optimisations we will discuss in the next section.
If we want to keep the optimisations we introduce, a different method of making sure the transition through a portal is unnoticeable by the user, no matter how slowly they move or where they look. This method takes advantage of back-face culling\footnote{A triangle in computer graphics is generally considered to have a front side and a backside, determined by whether the points of the triangle appear in clockwise or counter-clockwise order from where they are viewed. Back-face culling reduces the amount of drawn triangles by only drawing the triangles that are facing the camera.}.
Instead of the portal being a plane, we will have it be a box. Every surface of the box is shaded with the view from the other room. If one eye now clips inside the portal box, it will still see the other sides of the box that show the next room, instead of what was behind the portal originally. The last problem now is that if this eye now wants to look back out from the portal box into the old room, it should not see the portal plane. This is where we use back-face culling to make sure the front side of the portal box is only visible from the outside. A visualisation of what each eye now sees in this scenario can be found in Figure~\ref{fig3}.
\begin{figure}
\includegraphics[width=\linewidth]{assets/backface-culling.png}
\caption{The sides of the portal box are only visible from the side with a solid red line. Therefore, the right eye can see space $B$ on the inner wall and at the same look out from the portal box back into space $A$.}
\label{fig3}
\end{figure}
\section{Optimisation Considerations}
Each portal requires rendering an additional viewpoint. When rendering the portals in VR, where each eye is rendered by its own camera, there are now two additional viewpoints to render from. In the naive case where each viewpoint is rendered the same, we produce quadruple the amount of work compared to a basic non-VR scene without portals. We will present two optimisations that can reduce the rendering time and analyse their impact.
The first optimisation --- using the stencil buffer to only render what is seen through the portal --- is concerned with improving the rendering time of portals in general.
In contrast, the second optimisation improves the overall performance of rendering VR by not pushing the whole scene to the GPU twice and rendering a texture for each eye, but rather rendering both eyes onto a single texture while only keeping a single copy of each rendered object in memory.
\subsection{Stencil Buffer}
The stencil buffer on graphics cards is used to mask out an area on the screen that will not be drawn to. If the portals are first rendered with a shader that simply marks the stencil buffer and nothing else, in a second pass, the virtual cameras behind those portals can then fill the remaining area with the view from the other side of the portals. This way, no redundant pixels are drawn and the amount of pixels that need to be drawn stays practically constant no matter how many portals are visible on the screen. An example demonstrating how a scene with two portals is split up by a stencil buffer can be found in Figure~\ref{fig4}.
\begin{figure}
\includegraphics[width=\linewidth]{assets/three-portals.png}
\caption{The user is standing in a green room looking at two portals to a yellow and a magenta room. The amount of rendering can in this case be divided by three if the pairs of cameras only render a masked out area of their room instead of the whole picture.}
\label{fig4}
\end{figure}
\subsection{Single-Pass Instanced Rendering}
The naïve way of rendering a stereoscopic image is to simply render it two times, once from the perspective of each eye. This is called multi-pass rendering and is illustrated in Figure~\ref{fig5}. The advantage of this technique is its simplicity in implementing it. Shader code from monoscopic applications can be used in multi-pass rendering without any changes since we are essentially just rendering two images per frame.
\begin{figure}
\includegraphics[width=\linewidth]{assets/multi-pass.png}
\caption{When rendering in multiple passes, all work is doubled. This illustration shows how basically the three objects are treated as though they were separate objects\cite{nvidia-sps}.}
\label{fig5}
\end{figure}
This method comes with a large performance downside though. When rendering portals, the amount of work might in the worst case be multiplied by the number of portals. Thus, the rendering overhead caused by multi-pass rendering is in this case not acceptable.
The second method described in Figure~\ref{fig6} --- single-pass instanced rendering --- improves upon this by rendering both the left and right eyes onto the same texture. Additionally, the geometry only exists on the GPU once, as well as any shadow maps and other view-independent data. The objects are rendered twice as different instances from the two perspectives of the eyes.
\begin{figure}
\includegraphics[width=\linewidth]{assets/single-pass.png}
\caption{When rendering in an instanced single pass, the whole geometry of the scene is processed only once, which significantly reduces the amount of work\cite{nvidia-sps}.}
\label{fig6}
\end{figure}
Single-pass instanced rendering should greatly improve the performance, but as mentioned in Section~\ref{unobtrusive-transitions} rendering both eyes in one pass eliminates the possibility of transporting them through the portal separately from each other.
\section{Performance Comparison}
\bibliographystyle{plain}
\bibliography{refs}

Binary file not shown.

View File

@@ -22,6 +22,7 @@
author = {Michael Abrash},
title = {Why Virtual Reality Is Hard (And Where It Might Be Going)},
journal = {Game Developers Conference 2013},
url = {https://www.valvesoftware.com/en/publications},
year = {2013}
}
@@ -44,3 +45,26 @@
year = {2021},
organization = {ACM}
}
@ARTICLE{vlachos:2016,
author = {Alex Vlachos},
title = {Advanced VR Rendering Performance},
journal = {Game Developers Conference 2016},
url = {https://www.valvesoftware.com/en/publications},
year = {2016}
}
@ARTICLE{vlachos:2015,
author = {Alex Vlachos},
title = {Advanced VR Rendering},
journal = {Game Developers Conference 2015},
url = {https://www.valvesoftware.com/en/publications},
year = {2015}
}
@MISC{nvidia-sps,
author = {NVIDIA Corporation},
title = {VRWorks -- Single Pass Stereo},
howpublished = "\url{https://developer.nvidia.com/vrworks/graphics/singlepassstereo}",
note = "[accessed 1.11.2022]"
}

1744
refs.log Normal file

File diff suppressed because it is too large Load Diff