final
6
assets/measurements.csv
Normal file
@@ -0,0 +1,6 @@
|
||||
# portals,0 portals,2 portals,4 portals,6 portals
|
||||
Frame Rate [fps],44.7,27.9,17.4,10.3
|
||||
Frame Time [ms],22,37,58,98
|
||||
Main Thread [ms],9,23,43,77
|
||||
Render Thread [ms],18,24,28,40
|
||||
GPU Frame [ms],0.3,14,44,78
|
||||
|
BIN
assets/measurements.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
assets/render-steps/1.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
assets/render-steps/2.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
assets/render-steps/3.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
assets/render-steps/4.png
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
assets/render-steps/combined.png
Normal file
|
After Width: | Height: | Size: 294 KiB |
BIN
assets/test-scenes/0-portals.png
Normal file
|
After Width: | Height: | Size: 438 KiB |
BIN
assets/test-scenes/2-portals.png
Normal file
|
After Width: | Height: | Size: 333 KiB |
BIN
assets/test-scenes/4-portals.png
Normal file
|
After Width: | Height: | Size: 321 KiB |
BIN
assets/test-scenes/6-portals.png
Normal file
|
After Width: | Height: | Size: 320 KiB |
BIN
assets/test-scenes/combined.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
73
paper.aux
@@ -1,39 +1,66 @@
|
||||
\relax
|
||||
\bibstyle{IEEEtran}
|
||||
\citation{lowe:2005}
|
||||
\citation{aliaga:1997}
|
||||
\citation{abrash:2013}
|
||||
\citation{boletsis:2017}
|
||||
\citation{lochner:2021}
|
||||
\citation{lochner:2021}
|
||||
\@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}}
|
||||
\citation{lochner:2021}
|
||||
\citation{lochner:2021}
|
||||
\citation{monoscopic-stereoscopic:2020}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Impossible Spaces}{2}{}\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}.\relax }}{2}{}\protected@file@percent }
|
||||
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
|
||||
\newlabel{fig:impossible-spaces}{{1}{2}}
|
||||
\@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}}
|
||||
\@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.\relax }}{2}{}\protected@file@percent }
|
||||
\newlabel{fig:obtrusive}{{2}{2}}
|
||||
\citation{back-face-culling:2007}
|
||||
\@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 simultaneously look out of the portal box back into space $A$.\relax }}{3}{}\protected@file@percent }
|
||||
\newlabel{fig:unobtrusive}{{3}{3}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3}Performance Impact}{3}{}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces The test scene with no portals enabled.\relax }}{3}{}\protected@file@percent }
|
||||
\newlabel{fig:test-scene-0}{{4}{3}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces The connected blue and green portals are enabled.\relax }}{3}{}\protected@file@percent }
|
||||
\newlabel{fig:test-scene-2}{{5}{3}}
|
||||
\citation{lod:2005}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces The test scene with four portals enabled.\relax }}{4}{}\protected@file@percent }
|
||||
\newlabel{fig:test-scene-4}{{6}{4}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces The test scene with all six portals enabled.\relax }}{4}{}\protected@file@percent }
|
||||
\newlabel{fig:test-scene-6}{{7}{4}}
|
||||
\newlabel{tab:measurements}{{3}{4}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces \relax }}{4}{}\protected@file@percent }
|
||||
\newlabel{fig:measurements}{{8}{4}}
|
||||
\citation{vlachos:2015}
|
||||
\citation{vlachos:2016}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces This figure shows how the left eye of our test scene is being rendered. It begins by rendering the view from the blue portal (top left), followed by the geometry of the blue platform (top right). Similarly, the rest of the portals are rendered first (bottom left) and the platform they are on second (bottom right).\relax }}{5}{}\protected@file@percent }
|
||||
\newlabel{fig:render-steps}{{9}{5}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}Optimisation Considerations}{5}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Stencil Buffer}{5}{}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {10}{\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.\relax }}{5}{}\protected@file@percent }
|
||||
\newlabel{fig:stencil-portals}{{10}{5}}
|
||||
\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}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Single-Pass Instanced Rendering}{6}{}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {11}{\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}.\relax }}{6}{}\protected@file@percent }
|
||||
\newlabel{fig:multi-pass}{{11}{6}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {12}{\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}.\relax }}{6}{}\protected@file@percent }
|
||||
\newlabel{fig:single-pass}{{12}{6}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5}Conclusion}{6}{}\protected@file@percent }
|
||||
\bibstyle{plain}
|
||||
\bibdata{refs}
|
||||
\bibcite{abrash:2013}{1}
|
||||
\bibcite{lowe:2005}{1}
|
||||
\bibcite{aliaga:1997}{2}
|
||||
\bibcite{boletsis:2017}{3}
|
||||
\bibcite{nvidia-sps}{4}
|
||||
\bibcite{abrash:2013}{3}
|
||||
\bibcite{boletsis:2017}{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}
|
||||
\bibcite{monoscopic-stereoscopic:2020}{6}
|
||||
\bibcite{back-face-culling:2007}{7}
|
||||
\bibcite{lod:2005}{8}
|
||||
\bibcite{vlachos:2015}{9}
|
||||
\bibcite{vlachos:2016}{10}
|
||||
\bibcite{nvidia-sps}{11}
|
||||
\gdef \@abspage@last{7}
|
||||
|
||||
117
paper.bbl
@@ -1,37 +1,88 @@
|
||||
\begin{thebibliography}{1}
|
||||
|
||||
\bibitem{abrash:2013}
|
||||
Michael Abrash.
|
||||
\newblock Why virtual reality is hard (and where it might be going).
|
||||
\newblock {\em Game Developers Conference 2013}, 2013.
|
||||
|
||||
\bibitem{aliaga:1997}
|
||||
Daniel~G Aliaga and Anselmo~A Lastra.
|
||||
\newblock Architectural walkthroughs using portal textures.
|
||||
\newblock In {\em Proceedings. Visualization '97 (Cat. No. 97CB36155)}, pages
|
||||
355--362. IEEE, 1997.
|
||||
|
||||
\bibitem{boletsis:2017}
|
||||
Costas Boletsis.
|
||||
\newblock The new era of virtual reality locomotion: A systematic literature
|
||||
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.
|
||||
\newblock {\em Motion, Interaction and Games (MIG '21)}, 2021.
|
||||
% Generated by IEEEtran.bst, version: 1.14 (2015/08/26)
|
||||
\begin{thebibliography}{10}
|
||||
\providecommand{\url}[1]{#1}
|
||||
\csname url@samestyle\endcsname
|
||||
\providecommand{\newblock}{\relax}
|
||||
\providecommand{\bibinfo}[2]{#2}
|
||||
\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}
|
||||
\providecommand{\BIBentryALTinterwordstretchfactor}{4}
|
||||
\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus
|
||||
\BIBentryALTinterwordstretchfactor\fontdimen3\font minus
|
||||
\fontdimen4\font\relax}
|
||||
\providecommand{\BIBforeignlanguage}[2]{{%
|
||||
\expandafter\ifx\csname l@#1\endcsname\relax
|
||||
\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%
|
||||
\typeout{** loaded for the language `#1'. Using the pattern for}%
|
||||
\typeout{** the default language instead.}%
|
||||
\else
|
||||
\language=\csname l@#1\endcsname
|
||||
\fi
|
||||
#2}}
|
||||
\providecommand{\BIBdecl}{\relax}
|
||||
\BIBdecl
|
||||
|
||||
\bibitem{lowe:2005}
|
||||
Nick Lowe and Amitava Datta.
|
||||
\newblock A new technique for rendering complex portals.
|
||||
\newblock {\em IEEE Transactions on Visualization and Computer Graphics},
|
||||
11(1):81--90, 2005.
|
||||
N.~Lowe and A.~Datta, ``A new technique for rendering complex portals,''
|
||||
\emph{IEEE Transactions on Visualization and Computer Graphics}, vol.~11,
|
||||
no.~1, pp. 81--90, 2005.
|
||||
|
||||
\bibitem{aliaga:1997}
|
||||
D.~G. Aliaga and A.~A. Lastra, ``Architectural walkthroughs using portal
|
||||
textures,'' in \emph{Proceedings. Visualization '97 (Cat. No.
|
||||
97CB36155)}.\hskip 1em plus 0.5em minus 0.4em\relax IEEE, 1997, pp. 355--362.
|
||||
|
||||
\bibitem{abrash:2013}
|
||||
\BIBentryALTinterwordspacing
|
||||
M.~Abrash, ``Why virtual reality is hard (and where it might be going),''
|
||||
\emph{Game Developers Conference 2013}, 2013. [Online]. Available:
|
||||
\url{https://www.valvesoftware.com/en/publications}
|
||||
\BIBentrySTDinterwordspacing
|
||||
|
||||
\bibitem{boletsis:2017}
|
||||
\BIBentryALTinterwordspacing
|
||||
C.~Boletsis, ``The new era of virtual reality locomotion: A systematic
|
||||
literature review of techniques and a proposed typology,'' \emph{Multimodal
|
||||
Technologies and Interaction}, vol.~1, no.~4, 2017. [Online]. Available:
|
||||
\url{https://www.mdpi.com/2414-4088/1/4/24}
|
||||
\BIBentrySTDinterwordspacing
|
||||
|
||||
\bibitem{lochner:2021}
|
||||
D.~Lochner, ``Vr natural walking in impossible spaces,'' \emph{Motion,
|
||||
Interaction and Games (MIG '21)}, 2021.
|
||||
|
||||
\bibitem{monoscopic-stereoscopic:2020}
|
||||
M.~B. Taştı and Ümmühan Avcı, ``Examination of using monoscopic
|
||||
three-dimensional (m3d) and stereoscopic three-dimensional (s3d) animation on
|
||||
students,'' \emph{Education and Information Technologies}, vol.~25, pp.
|
||||
2765--2790, 2020.
|
||||
|
||||
\bibitem{back-face-culling:2007}
|
||||
D.-B. Jeon, S.-Y. Kim, K.-Y. Lee, and J.-C. Kwak, ``A design of a 3d graphics
|
||||
rasterizer with a culling and clipping,'' in \emph{TENCON 2007 - 2007 IEEE
|
||||
Region 10 Conference}, 2007, pp. 1--4.
|
||||
|
||||
\bibitem{lod:2005}
|
||||
J.~Ji, E.~Wu, S.~Li, and X.~Liu, ``Dynamic lod on gpu,'' in \emph{Proceedings
|
||||
of the Computer Graphics International 2005}, ser. CGI '05.\hskip 1em plus
|
||||
0.5em minus 0.4em\relax USA: IEEE Computer Society, 2005, p. 108–114.
|
||||
|
||||
\bibitem{vlachos:2015}
|
||||
\BIBentryALTinterwordspacing
|
||||
A.~Vlachos, ``Advanced vr rendering,'' \emph{Game Developers Conference 2015},
|
||||
2015. [Online]. Available:
|
||||
\url{https://www.valvesoftware.com/en/publications}
|
||||
\BIBentrySTDinterwordspacing
|
||||
|
||||
\bibitem{vlachos:2016}
|
||||
\BIBentryALTinterwordspacing
|
||||
------, ``Advanced vr rendering performance,'' \emph{Game Developers Conference
|
||||
2016}, 2016. [Online]. Available:
|
||||
\url{https://www.valvesoftware.com/en/publications}
|
||||
\BIBentrySTDinterwordspacing
|
||||
|
||||
\bibitem{nvidia-sps}
|
||||
NVIDIA, ``Vrworks -- single pass stereo,''
|
||||
\url{https://developer.nvidia.com/vrworks/graphics/singlepassstereo},
|
||||
[accessed 1.11.2022].
|
||||
|
||||
\end{thebibliography}
|
||||
|
||||
89
paper.blg
@@ -1,46 +1,61 @@
|
||||
This is BibTeX, Version 0.99d (TeX Live 2022)
|
||||
Capacity: max_strings=200000, hash_size=200000, hash_prime=170003
|
||||
The top-level auxiliary file: paper.aux
|
||||
The style file: plain.bst
|
||||
The style file: IEEEtran.bst
|
||||
Illegal, another \bibstyle command---line 53 of file paper.aux
|
||||
: \bibstyle
|
||||
: {plain}
|
||||
I'm skipping whatever remains of this command
|
||||
Reallocated singl_function (elt_size=4) to 100 items from 50.
|
||||
Reallocated singl_function (elt_size=4) to 100 items from 50.
|
||||
Reallocated singl_function (elt_size=4) to 100 items from 50.
|
||||
Reallocated wiz_functions (elt_size=4) to 6000 items from 3000.
|
||||
Reallocated singl_function (elt_size=4) to 100 items from 50.
|
||||
Database file #1: refs.bib
|
||||
You've used 6 entries,
|
||||
2118 wiz_defined-function locations,
|
||||
532 strings with 4856 characters,
|
||||
and the built_in function-call counts, 1638 in all, are:
|
||||
= -- 167
|
||||
> -- 54
|
||||
< -- 1
|
||||
+ -- 24
|
||||
- -- 16
|
||||
* -- 84
|
||||
:= -- 280
|
||||
add.period$ -- 20
|
||||
call.type$ -- 6
|
||||
change.case$ -- 26
|
||||
chr.to.int$ -- 0
|
||||
cite$ -- 6
|
||||
duplicate$ -- 71
|
||||
empty$ -- 141
|
||||
format.name$ -- 16
|
||||
if$ -- 348
|
||||
-- IEEEtran.bst version 1.14 (2015/08/26) by Michael Shell.
|
||||
-- http://www.michaelshell.org/tex/ieeetran/bibtex/
|
||||
-- See the "IEEEtran_bst_HOWTO.pdf" manual for usage information.
|
||||
|
||||
Done.
|
||||
You've used 11 entries,
|
||||
4087 wiz_defined-function locations,
|
||||
888 strings with 9008 characters,
|
||||
and the built_in function-call counts, 6667 in all, are:
|
||||
= -- 561
|
||||
> -- 112
|
||||
< -- 37
|
||||
+ -- 60
|
||||
- -- 20
|
||||
* -- 310
|
||||
:= -- 1112
|
||||
add.period$ -- 24
|
||||
call.type$ -- 11
|
||||
change.case$ -- 12
|
||||
chr.to.int$ -- 81
|
||||
cite$ -- 11
|
||||
duplicate$ -- 514
|
||||
empty$ -- 568
|
||||
format.name$ -- 25
|
||||
if$ -- 1525
|
||||
int.to.chr$ -- 0
|
||||
int.to.str$ -- 6
|
||||
missing$ -- 5
|
||||
newline$ -- 34
|
||||
num.names$ -- 12
|
||||
pop$ -- 31
|
||||
int.to.str$ -- 11
|
||||
missing$ -- 85
|
||||
newline$ -- 64
|
||||
num.names$ -- 11
|
||||
pop$ -- 197
|
||||
preamble$ -- 1
|
||||
purify$ -- 20
|
||||
quote$ -- 0
|
||||
skip$ -- 54
|
||||
purify$ -- 0
|
||||
quote$ -- 2
|
||||
skip$ -- 529
|
||||
stack$ -- 0
|
||||
substring$ -- 83
|
||||
swap$ -- 16
|
||||
text.length$ -- 1
|
||||
substring$ -- 220
|
||||
swap$ -- 365
|
||||
text.length$ -- 10
|
||||
text.prefix$ -- 0
|
||||
top$ -- 0
|
||||
type$ -- 24
|
||||
top$ -- 5
|
||||
type$ -- 11
|
||||
warning$ -- 0
|
||||
while$ -- 17
|
||||
width$ -- 7
|
||||
write$ -- 67
|
||||
while$ -- 27
|
||||
width$ -- 13
|
||||
write$ -- 133
|
||||
(There was 1 error message)
|
||||
|
||||
@@ -1,20 +1,29 @@
|
||||
# Fdb version 3
|
||||
["bibtex paper"] 1667337462 "paper.aux" "paper.bbl" "paper" 1667337466
|
||||
["bibtex paper"] 1671659508 "paper.aux" "paper.bbl" "paper" 1671659513
|
||||
"d:/Program Files/texlive/2022/texmf-dist/bibtex/bst/base/plain.bst" 1665521580 20613 bd3fbfa9f64872b81ac57a0dd2ed855f ""
|
||||
"paper.aux" 1667337466 3127 1ec033b642bfe40a5655c3f15b48c3cd "pdflatex"
|
||||
"refs.bib" 1667337264 2115 a244d291be7f093fdf087abf76a0aebe ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/bibtex/bst/ieeetran/IEEEtran.bst" 1665522682 57748 7c8250ecf02814ce6ddc0cdbb63df1dd ""
|
||||
"paper.aux" 1671659512 5233 0862e96af1bfbad503a2fd5443bf85cc "pdflatex"
|
||||
"refs.bib" 1671659467 3230 e61648c88919bdb7704cf1d787ab4dee ""
|
||||
(generated)
|
||||
"paper.bbl"
|
||||
"paper.blg"
|
||||
["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 ""
|
||||
["pdflatex"] 1671659508 "D:/git/uni/scientific writing paper/paper.tex" "paper.pdf" "paper" 1671659513
|
||||
"D:/git/uni/scientific writing paper/paper.tex" 1671659195 18302 f352360d75ab5e085818ca228ba23aa6 ""
|
||||
"assets/backface-culling.png" 1667336567 118706 50165ebbd49e207759b336c826eeea47 ""
|
||||
"assets/head-clipping.png" 1667324621 71196 f87be7fc5c9ec21757508366157b65ad ""
|
||||
"assets/impossible-spaces.png" 1665541837 51071 6b2e4b20176fe191b09e1ce6597b505e ""
|
||||
"assets/measurements.csv" 1671659004 211 75c9114d0a254eb0171f4c6dd8474246 ""
|
||||
"assets/measurements.png" 1671655274 62263 7f3d68a230d1fc52d804174a2ce5a288 ""
|
||||
"assets/multi-pass.png" 1667321893 154119 d81577c795bee1e8af72c3f34e49ae43 ""
|
||||
"assets/render-steps/combined.png" 1671646091 300667 8497773e7d6a8e8cbfeabf7c6a66b85a ""
|
||||
"assets/single-pass.png" 1667321899 132892 d08e61b1447b84d54632e167617d92b7 ""
|
||||
"assets/test-scenes/0-portals.png" 1671645663 448624 4b4fc346aa8f0db902cc20182cfb560a ""
|
||||
"assets/test-scenes/2-portals.png" 1671645686 340553 f376c7cb1c8c85f2a69db571e142609e ""
|
||||
"assets/test-scenes/4-portals.png" 1671645701 328805 f7de751ba4ed39fa462f83d23c45473a ""
|
||||
"assets/test-scenes/6-portals.png" 1671645720 328215 c72c7c6d8698090726ecfc3c762147a7 ""
|
||||
"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/cmbx10.tfm" 1665521762 1328 c834bbb027764024c09d3d2bf908b5f0 ""
|
||||
"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 ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1665521762 1512 f21f83efb36853c0b70002322c1ab3ad ""
|
||||
@@ -27,9 +36,10 @@
|
||||
"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/cmbx10.pfb" 1665521353 34811 78b52f49e893bcba91bd7581cdc144c0 ""
|
||||
"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/cmmi8.pfb" 1665521353 35469 dcf3a5f2fc1862f5952e3ee5eb1d98c4 ""
|
||||
"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 ""
|
||||
@@ -37,12 +47,24 @@
|
||||
"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/generic/pgf/pgf.revision.tex" 1665523685 465 d68603f8b820ea4a08cce534944db581 ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1665523685 37060 797782f0eb50075c9bc952374d9a659a ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex" 1665523685 37431 9abe862035de1b29c7a677f3205e3d9f ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1665523685 4494 af17fb7efeafe423710479858e42fa7e ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex" 1665523685 7251 fb18c67117e09c64de82267e12cd8aa4 ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1665523685 29274 e15c5b7157d21523bd9c9f1dfa146b8e ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1665523685 6825 a2b0ea5b539dda0625e99dd15785ab59 ""
|
||||
"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/ifthen.sty" 1665522879 5319 48d7f3cfa322abd2788e3c09d624b922 ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/inputenc.sty" 1665522879 5048 84b05796b49b69e2d4257d537721c960 ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/size10.clo" 1665522879 8448 e0391042ca0932ede1098ae14ada60ba ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty" 1665521665 54291 b8e5c600d4aa37b48a740dd2a6c26163 ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty" 1665521665 71241 d2cd3a1c5acef9cb31f945b93c0bb6e3 ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty" 1665521909 25524 5ed58a091018746cc2346b2f0b92a01d ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty" 1665521909 1721 a62b97216feee27ddf8ff02b3449f84d ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1665522163 13886 d1306dcf79a944f6988e688c1785f9ce ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty" 1665522197 46845 3b58f70c6e861a13d927bff09d35ecbc ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1665522502 1224 978390e9c2234eab29404bc21b268d1e ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def" 1665522502 19448 1e988b341dda20961a6b931bcde55519 ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty" 1665522500 18387 8f900a490197ebaf93c02ae9476d4b09 ""
|
||||
@@ -55,14 +77,18 @@
|
||||
"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/pgf/utilities/pgfkeys.sty" 1665523685 274 5ae372b7df79135d240456a1c6f2cf9a ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1665523685 325 f9f16d12354225b7dd52a3321f085955 ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty" 1665524768 7358 95ac619994bd30d405a74f3eca431c84 ""
|
||||
"d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty" 1665524809 4118 0aa319c56935d7d217b6a8bf300b81b7 ""
|
||||
"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:/git/uni/scientific writing paper/paper.tex" 1667337368 11262 ef98982dad38ed437f69cf330b41a5a4 ""
|
||||
"paper.aux" 1667337466 3127 1ec033b642bfe40a5655c3f15b48c3cd "pdflatex"
|
||||
"paper.bbl" 1667337463 1224 1106bf3c7e0ab163eb2fa23c3f5992d3 "bibtex paper"
|
||||
"d:/git/uni/scientific writing paper/paper.tex" 1671659195 18302 f352360d75ab5e085818ca228ba23aa6 ""
|
||||
"paper.aux" 1671659512 5233 0862e96af1bfbad503a2fd5443bf85cc "pdflatex"
|
||||
"paper.bbl" 1671659508 3503 843307b46cbad73475c9740fcda15479 "bibtex paper"
|
||||
(generated)
|
||||
"paper.aux"
|
||||
"paper.log"
|
||||
|
||||
168
paper.fls
@@ -139,6 +139,132 @@ 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/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/pgf.revision.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/pgf.revision.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
INPUT ./paper.aux
|
||||
INPUT paper.aux
|
||||
INPUT paper.aux
|
||||
@@ -173,15 +299,17 @@ INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm
|
||||
OUTPUT paper.pdf
|
||||
INPUT d:/Program Files/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map
|
||||
INPUT ./assets/impossible-spaces.png
|
||||
INPUT ./assets/impossible-spaces.png
|
||||
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
|
||||
@@ -192,7 +320,37 @@ 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/test-scenes/0-portals.png
|
||||
INPUT ./assets/test-scenes/0-portals.png
|
||||
INPUT assets/test-scenes/0-portals.png
|
||||
INPUT ./assets/test-scenes/0-portals.png
|
||||
INPUT ./assets/test-scenes/0-portals.png
|
||||
INPUT ./assets/test-scenes/2-portals.png
|
||||
INPUT ./assets/test-scenes/2-portals.png
|
||||
INPUT assets/test-scenes/2-portals.png
|
||||
INPUT ./assets/test-scenes/2-portals.png
|
||||
INPUT ./assets/test-scenes/2-portals.png
|
||||
INPUT ./assets/test-scenes/4-portals.png
|
||||
INPUT ./assets/test-scenes/4-portals.png
|
||||
INPUT assets/test-scenes/4-portals.png
|
||||
INPUT ./assets/test-scenes/4-portals.png
|
||||
INPUT ./assets/test-scenes/4-portals.png
|
||||
INPUT ./assets/test-scenes/6-portals.png
|
||||
INPUT ./assets/test-scenes/6-portals.png
|
||||
INPUT assets/test-scenes/6-portals.png
|
||||
INPUT ./assets/test-scenes/6-portals.png
|
||||
INPUT ./assets/test-scenes/6-portals.png
|
||||
INPUT assets/measurements.csv
|
||||
INPUT ./assets/measurements.png
|
||||
INPUT ./assets/measurements.png
|
||||
INPUT assets/measurements.png
|
||||
INPUT ./assets/measurements.png
|
||||
INPUT ./assets/measurements.png
|
||||
INPUT ./assets/render-steps/combined.png
|
||||
INPUT ./assets/render-steps/combined.png
|
||||
INPUT assets/render-steps/combined.png
|
||||
INPUT ./assets/render-steps/combined.png
|
||||
INPUT ./assets/render-steps/combined.png
|
||||
INPUT ./assets/three-portals.png
|
||||
INPUT ./assets/three-portals.png
|
||||
INPUT assets/three-portals.png
|
||||
@@ -213,10 +371,11 @@ 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-dist/fonts/tfm/public/cm/cmtt10.tfm
|
||||
INPUT paper.aux
|
||||
INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
|
||||
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/cmmi8.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
|
||||
@@ -224,4 +383,3 @@ INPUT d:/Program Files/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cm
|
||||
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
|
||||
|
||||
327
paper.log
@@ -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 22:17
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.11) 21 DEC 2022 22:51
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
@@ -67,36 +67,104 @@ Package: lipsum 2021-09-20 v2.7 150 paragraphs of Lorem Ipsum dummy text
|
||||
/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.
|
||||
) (d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
Package: caption 2022/03/01 v3.6b Customizing captions (AR)
|
||||
(d:/Program Files/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
Package: caption3 2022/03/17 v2.3b caption3 kernel (AR)
|
||||
\caption@tempdima=\dimen143
|
||||
\captionmargin=\dimen144
|
||||
\caption@leftmargin=\dimen145
|
||||
\caption@rightmargin=\dimen146
|
||||
\caption@width=\dimen147
|
||||
\caption@indent=\dimen148
|
||||
\caption@parindent=\dimen149
|
||||
\caption@hangindent=\dimen150
|
||||
Package caption Info: Standard document class detected.
|
||||
)
|
||||
\c@caption@flags=\count197
|
||||
\c@continuedfloat=\count198
|
||||
) (d:/Program Files/texlive/2022/texmf-dist/tex/latex/titling/titling.sty
|
||||
Package: titling 2009/09/04 v2.1d maketitle typesetting
|
||||
\thanksmarkwidth=\skip49
|
||||
\thanksmargin=\skip50
|
||||
\droptitle=\skip51
|
||||
) (d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple.sty
|
||||
Package: csvsimple 2022/09/20 v2.3.2 LaTeX CSV file processing
|
||||
)
|
||||
(d:/Program Files/texlive/2022/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.
|
||||
sty
|
||||
Package: csvsimple-legacy 2022/09/20 version 2.3.2 LaTeX2e CSV file processing
|
||||
(d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
(d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-com
|
||||
mon.tex
|
||||
\pgfutil@everybye=\toks19
|
||||
\pgfutil@tempdima=\dimen151
|
||||
\pgfutil@tempdimb=\dimen152
|
||||
|
||||
(d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-com
|
||||
mon-lists.tex))
|
||||
(d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-lat
|
||||
ex.def
|
||||
\pgfutil@abb=\box52
|
||||
)
|
||||
(d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code
|
||||
.tex (d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/pgf.revision.tex
|
||||
)
|
||||
Package: pgfrcs 2021/05/15 v3.1.9a (3.1.9a)
|
||||
)) (d:/Program Files/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.st
|
||||
y
|
||||
(d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.cod
|
||||
e.tex
|
||||
\pgfkeys@pathtoks=\toks20
|
||||
\pgfkeys@temptoks=\toks21
|
||||
|
||||
(d:/Program Files/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeysfilt
|
||||
ered.code.tex
|
||||
\pgfkeys@tmptoks=\toks22
|
||||
))) (d:/Program Files/texlive/2022/texmf-dist/tex/latex/base/ifthen.sty
|
||||
Package: ifthen 2022/04/13 v1.1d Standard LaTeX ifthen package (DPC)
|
||||
) (d:/Program Files/texlive/2022/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW)
|
||||
\etb@tempcnta=\count199
|
||||
) (d:/Program Files/texlive/2022/texmf-dist/tex/latex/tools/shellesc.sty
|
||||
Package: shellesc 2019/11/08 v1.0c unified shell escape interface for LaTeX
|
||||
Package shellesc Info: Restricted shell escape enabled on input line 77.
|
||||
)
|
||||
\csv@file=\read2
|
||||
\c@csvinputline=\count266
|
||||
\c@csvrow=\count267
|
||||
\c@csvcol=\count268
|
||||
\csv@out=\write3
|
||||
) (./paper.aux)
|
||||
\openout1 = `paper.aux'.
|
||||
|
||||
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.
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 31.
|
||||
LaTeX Font Info: ... okay on input line 31.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 31.
|
||||
LaTeX Font Info: ... okay on input line 31.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 31.
|
||||
LaTeX Font Info: ... okay on input line 31.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 31.
|
||||
LaTeX Font Info: ... okay on input line 31.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 31.
|
||||
LaTeX Font Info: ... okay on input line 31.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 31.
|
||||
LaTeX Font Info: ... okay on input line 31.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 31.
|
||||
LaTeX Font Info: ... okay on input line 31.
|
||||
(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
|
||||
\scratchdimen=\dimen143
|
||||
\scratchbox=\box52
|
||||
\nofMPsegments=\count198
|
||||
\nofMParguments=\count199
|
||||
\everyMPshowfont=\toks19
|
||||
\MPscratchCnt=\count266
|
||||
\MPscratchDim=\dimen144
|
||||
\MPnumerator=\count267
|
||||
\makeMPintoPDFobject=\count268
|
||||
\everyMPtoPDFconversion=\toks20
|
||||
\scratchcounter=\count269
|
||||
\scratchdimen=\dimen153
|
||||
\scratchbox=\box53
|
||||
\nofMPsegments=\count270
|
||||
\nofMParguments=\count271
|
||||
\everyMPshowfont=\toks23
|
||||
\MPscratchCnt=\count272
|
||||
\MPscratchDim=\dimen154
|
||||
\MPnumerator=\count273
|
||||
\makeMPintoPDFobject=\count274
|
||||
\everyMPtoPDFconversion=\toks24
|
||||
)
|
||||
(d:/Program Files/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.
|
||||
sty
|
||||
@@ -109,103 +177,186 @@ g
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
|
||||
e
|
||||
))
|
||||
Package caption Info: Begin \AtBeginDocument code.
|
||||
Package caption Info: End \AtBeginDocument code.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <12> on input line 12.
|
||||
(Font) <12> on input line 33.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <8> on input line 12.
|
||||
(Font) <8> on input line 33.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <6> on input line 12.
|
||||
(Font) <6> on input line 33.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <7> on input line 33.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <5> on input line 33.
|
||||
|
||||
Underfull \hbox (badness 3769) in paragraph at lines 23--24
|
||||
Underfull \hbox (badness 3769) in paragraph at lines 38--39
|
||||
[]\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 30.
|
||||
(pdftex.def) Requested size: 229.5pt x 131.37552pt.
|
||||
|
||||
Underfull \vbox (badness 1681) has occurred while \output is active []
|
||||
Underfull \vbox (badness 10000) has occurred while \output is active []
|
||||
|
||||
[1{d:/Program Files/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}
|
||||
|
||||
|
||||
<./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>
|
||||
]
|
||||
<assets/impossible-spaces.png, id=11, 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 48.
|
||||
(pdftex.def) Requested size: 229.5pt x 131.37552pt.
|
||||
<assets/head-clipping.png, id=12, 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 51.
|
||||
Package pdftex.def Info: assets/head-clipping.png used on input line 69.
|
||||
(pdftex.def) Requested size: 229.5pt x 156.10547pt.
|
||||
<assets/backface-culling.png, id=13, 450.18187pt x 354.82562pt>
|
||||
[2 <./assets/impossible-spaces.png> <./assets/head-clipping.png>]
|
||||
<assets/backface-culling.png, id=22, 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.
|
||||
Package pdftex.def Info: assets/backface-culling.png used on input line 85.
|
||||
(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/test-scenes/0-portals.png, id=23, 1445.4pt x 813.0375pt>
|
||||
File: assets/test-scenes/0-portals.png Graphic file (type png)
|
||||
<use assets/test-scenes/0-portals.png>
|
||||
Package pdftex.def Info: assets/test-scenes/0-portals.png used on input line 9
|
||||
6.
|
||||
(pdftex.def) Requested size: 229.5pt x 129.08377pt.
|
||||
<assets/test-scenes/2-portals.png, id=24, 1445.4pt x 813.0375pt>
|
||||
File: assets/test-scenes/2-portals.png Graphic file (type png)
|
||||
<use assets/test-scenes/2-portals.png>
|
||||
Package pdftex.def Info: assets/test-scenes/2-portals.png used on input line 1
|
||||
02.
|
||||
(pdftex.def) Requested size: 229.5pt x 129.08377pt.
|
||||
<assets/test-scenes/4-portals.png, id=25, 1445.4pt x 813.0375pt>
|
||||
File: assets/test-scenes/4-portals.png Graphic file (type png)
|
||||
<use assets/test-scenes/4-portals.png>
|
||||
Package pdftex.def Info: assets/test-scenes/4-portals.png used on input line 1
|
||||
08.
|
||||
(pdftex.def) Requested size: 229.5pt x 129.08377pt.
|
||||
<assets/test-scenes/6-portals.png, id=26, 1445.4pt x 813.0375pt>
|
||||
File: assets/test-scenes/6-portals.png Graphic file (type png)
|
||||
<use assets/test-scenes/6-portals.png>
|
||||
Package pdftex.def Info: assets/test-scenes/6-portals.png used on input line 1
|
||||
14.
|
||||
(pdftex.def) Requested size: 229.5pt x 129.08377pt.
|
||||
[3 <./assets/backface-culling.png> <./assets/test-scenes/0-portals.png (PNG cop
|
||||
y)> <./assets/test-scenes/2-portals.png (PNG copy)>]
|
||||
! Illegal parameter number in definition of \csv@col@body.
|
||||
<to be read again>
|
||||
|
||||
<assets/three-portals.png, id=22, 7909.55pt x 2991.175pt>
|
||||
l.125 ...&\csvcolii&\csvcoliii&\csvcoliv&\csvcolv}
|
||||
|
||||
You meant to type ## instead of #, right?
|
||||
Or maybe a } was forgotten somewhere earlier, and things
|
||||
are all screwed up? I'm going to assume that you meant ##.
|
||||
|
||||
! Illegal parameter number in definition of \csv@col@body.
|
||||
<to be read again>
|
||||
|
||||
l.125 ...&\csvcolii&\csvcoliii&\csvcoliv&\csvcolv}
|
||||
|
||||
You meant to type ## instead of #, right?
|
||||
Or maybe a } was forgotten somewhere earlier, and things
|
||||
are all screwed up? I'm going to assume that you meant ##.
|
||||
|
||||
! Illegal parameter number in definition of \csv@temp.
|
||||
<to be read again>
|
||||
|
||||
l.125 ...&\csvcolii&\csvcoliii&\csvcoliv&\csvcolv}
|
||||
|
||||
You meant to type ## instead of #, right?
|
||||
Or maybe a } was forgotten somewhere earlier, and things
|
||||
are all screwed up? I'm going to assume that you meant ##.
|
||||
|
||||
|
||||
! Package caption Error: \caption outside float.
|
||||
|
||||
See the caption package documentation for explanation.
|
||||
Type H <return> for immediate help.
|
||||
...
|
||||
|
||||
l.126 \caption
|
||||
{}
|
||||
If you do not understand this error, please take a closer look
|
||||
at the documentation of the `caption' package, especially the
|
||||
section about errors.
|
||||
Try typing <return> to proceed.
|
||||
If that doesn't work, type X <return> to quit.
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 122--130
|
||||
[][]
|
||||
[]
|
||||
|
||||
<assets/measurements.png, id=32, 373.614pt x 296.745pt>
|
||||
File: assets/measurements.png Graphic file (type png)
|
||||
<use assets/measurements.png>
|
||||
Package pdftex.def Info: assets/measurements.png used on input line 137.
|
||||
(pdftex.def) Requested size: 172.125pt x 136.7081pt.
|
||||
<assets/render-steps/combined.png, id=33, 1376.14125pt x 1626.075pt>
|
||||
File: assets/render-steps/combined.png Graphic file (type png)
|
||||
<use assets/render-steps/combined.png>
|
||||
Package pdftex.def Info: assets/render-steps/combined.png used on input line 1
|
||||
50.
|
||||
(pdftex.def) Requested size: 229.5pt x 271.16898pt.
|
||||
|
||||
Underfull \vbox (badness 2293) has occurred while \output is active []
|
||||
|
||||
[4 <./assets/test-scenes/4-portals.png (PNG copy)> <./assets/test-scenes/6-port
|
||||
als.png (PNG copy)> <./assets/measurements.png>]
|
||||
<assets/three-portals.png, id=38, 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.
|
||||
Package pdftex.def Info: assets/three-portals.png used on input line 169.
|
||||
(pdftex.def) Requested size: 229.5pt x 86.76466pt.
|
||||
<assets/multi-pass.png, id=23, 654.19406pt x 388.45125pt>
|
||||
[5 <./assets/render-steps/combined.png> <./assets/three-portals.png>]
|
||||
<assets/multi-pass.png, id=44, 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.
|
||||
Package pdftex.def Info: assets/multi-pass.png used on input line 182.
|
||||
(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>
|
||||
<assets/single-pass.png, id=45, 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.
|
||||
Package pdftex.def Info: assets/single-pass.png used on input line 192.
|
||||
(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.
|
||||
[6 <./assets/multi-pass.png> <./assets/single-pass.png>] (./paper.bbl
|
||||
Underfull \hbox (badness 4713) in paragraph at lines 84--87
|
||||
[]\OT1/cmr/m/n/10 NVIDIA, ``Vr-works -- sin-gle pass stereo,''
|
||||
[]
|
||||
|
||||
|
||||
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 10000) in paragraph at lines 84--87
|
||||
\OT1/cmr/m/n/10 https : / / developer . nvidia . com / vrworks /
|
||||
[]
|
||||
|
||||
|
||||
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) )
|
||||
) [7] (./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
|
||||
5111 strings out of 475071
|
||||
104701 string characters out of 5775887
|
||||
530888 words of memory out of 5000000
|
||||
26448 multiletter control sequences out of 15000+600000
|
||||
473860 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).
|
||||
72i,9n,77p,799b,364s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
<d:/Program Files/texlive/2022/texmf-dist/fonts/type1/publ
|
||||
ic/amsfonts/cm/cmbx10.pfb><d:/Program 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/f
|
||||
onts/type1/public/amsfonts/cm/cmmi8.pfb><d:/Program Files/texlive/2022/texmf-di
|
||||
st/fonts/type1/public/amsfonts/cm/cmr10.pfb><d:/Program Files/texlive/2022/texm
|
||||
f-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb><d:/Program Files/texlive/2022/
|
||||
texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb><d:/Program Files/texlive/2
|
||||
022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb><d:/Program Files/texliv
|
||||
e/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb><d:/Program Files/tex
|
||||
live/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb><d:/Program Files/
|
||||
texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb>
|
||||
Output written on paper.pdf (7 pages, 2957393 bytes).
|
||||
PDF statistics:
|
||||
79 PDF objects out of 1000 (max. 8388607)
|
||||
41 compressed objects within 1 object stream
|
||||
103 PDF objects out of 1000 (max. 8388607)
|
||||
52 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)
|
||||
61 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
|
||||
BIN
paper.synctex.gz
176
paper.tex
@@ -3,38 +3,58 @@
|
||||
\usepackage{graphicx}
|
||||
\usepackage{lipsum}
|
||||
\usepackage{url}
|
||||
\usepackage{caption}
|
||||
\usepackage{titling}
|
||||
\usepackage{csvsimple}
|
||||
|
||||
\bibliographystyle{IEEEtran}
|
||||
|
||||
\newcommand \myabstract[2][.8]{
|
||||
\renewcommand\maketitlehookd{
|
||||
\mbox{}\medskip\par
|
||||
\centering
|
||||
\begin{minipage}{.5\textwidth}
|
||||
#2
|
||||
\end{minipage}}}
|
||||
|
||||
\title{Rendering Portals in Virtual Reality}
|
||||
\author{Milan van Zanten\\\normalsize{University of Basel}\\\normalsize{milan.vanzanten@unibas.ch}}
|
||||
\myabstract{
|
||||
\begin{center}
|
||||
\textbf{Abstract}
|
||||
\end{center}
|
||||
|
||||
Portals have many applications in the field of computer graphics. Recently, they have found use as a way of artificially increasing the available space in a virtual reality (VR) environment. In this paper, we will cover a technique for making the transition through a portal unnoticeable to the user. Additionally, we will measure the performance impact of rendering portals in a test scene and provide some insight into possible optimisations.}
|
||||
|
||||
\captionsetup{font=footnotesize}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
% \begin{center}
|
||||
% \textbf{Abstract}
|
||||
|
||||
% WIP
|
||||
% \end{center}
|
||||
|
||||
\section{Introduction}
|
||||
There are several uses for portals in computer graphics including determining the visibility of parts of a 3D scene\cite{lowe:2005}, dividing a scene up into separate areas, rendering a mirror surface, or as traversable portals that can be seen and moved through. These uses can be broadly categorised as either an optimisation technique or a rendering trick. The former two of the mentioned applications are used to determine geometry that can be ignored when rendering a scene and speed up the process. Mirror surfaces and traversable portals though are effects purposefully implemented in an application to benefit the experience.
|
||||
|
||||
There are already many implementations of traversable portals in media like video games or architectural visualisations\cite{aliaga:1997}. In this paper we will focus on an application of traversable portals concerning the space limitations in a virtual reality (VR) experience.
|
||||
There are already many implementations of traversable portals in media like video games or architectural visualisations\cite{aliaga:1997}. In this paper, we will focus on an application of traversable portals concerning the space limitations in a VR experience.
|
||||
|
||||
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.
|
||||
One of the main challenges when implementing VR applications is immersion, because 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. 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. The only limitation now is the available 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}.
|
||||
To move around virtual worlds larger than the available space, several different methods have been developed\cite{boletsis:2017}. Examples include head-directed locomotion and point \& teleport. Indisputably though, the technique that preserves immersion the most is actual walking inside the real space.
|
||||
|
||||
\begin{figure}
|
||||
\subsection{Impossible Spaces}
|
||||
A recent method to circumvent the space limitations of walking in 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{fig:impossible-spaces}.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[width=\linewidth]{assets/impossible-spaces.png}
|
||||
\caption{Four rooms with portals (in red) can all be accessed without leaving the smaller real space\cite{lochner:2021}.}
|
||||
\label{fig1}
|
||||
\label{fig:impossible-spaces}
|
||||
\end{figure}
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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:
|
||||
In virtual reality, implementing such a portal system poses some extra challenges.
|
||||
|
||||
The goal of this paper is to explore how classical portals from monoscopic\footnote{An application that only shows one viewpoint is called monoscopic, whereas a VR application that renders one viewpoint per eye is called stereoscopic. A detailed explanation of the terminology can be found in Taştı and Avcı\cite{monoscopic-stereoscopic:2020}.} applications can be implemented in stereoscopic VR. We will focus on two main objectives:
|
||||
|
||||
\begin{enumerate}
|
||||
\item How can portals be implemented in a way that the user can look and pass through them without noticing?
|
||||
@@ -43,66 +63,146 @@ The goal of this paper is to explore how classical portals from monoscopic appli
|
||||
|
||||
\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.
|
||||
Portals in computer graphics are generally just flat quads\footnote{A flat, rectangular object that can be used to show an image in a 3D environment.} 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 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}
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[width=\linewidth]{assets/head-clipping.png}
|
||||
\caption{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.}
|
||||
\label{fig2}
|
||||
\label{fig:obtrusive}
|
||||
\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.
|
||||
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 without the user noticing. 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{fig:obtrusive}.
|
||||
|
||||
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.}.
|
||||
At best, this results in a short flicker when the user passes through a portal. If the user stops inside the portal, however, it results in a completely wrong view on one eye.
|
||||
|
||||
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}.
|
||||
One way to solve this problem could be to transport 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.
|
||||
|
||||
\begin{figure}
|
||||
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. Jeon et al.\cite{back-face-culling:2007} show how 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 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.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\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}
|
||||
\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 simultaneously look out of the portal box back into space $A$.}
|
||||
\label{fig:unobtrusive}
|
||||
\end{figure}
|
||||
|
||||
The final problem is that if this eye 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 sees in this scenario can be found in Figure~\ref{fig:unobtrusive}.
|
||||
|
||||
\section{Performance Impact}
|
||||
To better understand the impact rendering multiple portals in VR has, we created a test application with three pairs of connected portals. With this test scene, we can measure the performance impact of rendering one, two or three pairs of portals and compare it to the baseline of no portals. An illustration of this test scene can be found in Figures \ref{fig:test-scene-0} through \ref{fig:test-scene-6}.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[width=\linewidth]{assets/test-scenes/0-portals.png}
|
||||
\caption{The test scene with no portals enabled.}
|
||||
\label{fig:test-scene-0}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[width=\linewidth]{assets/test-scenes/2-portals.png}
|
||||
\caption{The connected blue and green portals are enabled.}
|
||||
\label{fig:test-scene-2}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[width=\linewidth]{assets/test-scenes/4-portals.png}
|
||||
\caption{The test scene with four portals enabled.}
|
||||
\label{fig:test-scene-4}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[width=\linewidth]{assets/test-scenes/6-portals.png}
|
||||
\caption{The test scene with all six portals enabled.}
|
||||
\label{fig:test-scene-6}
|
||||
\end{figure}
|
||||
|
||||
We measured the rendering performance of this test scene four times, each time with a different number of active portal pairs. The tests were all performed on an Nvidia GeForce GTX 1070 with the only changes between the tests being the number of active portals. The results of our tests can be found in the following table:
|
||||
|
||||
\vspace{5mm}
|
||||
\begin{tabular}{l|l|l|l|l}
|
||||
\textbf{Portals} & \textbf{0} & \textbf{2} & \textbf{4} & \textbf{6}
|
||||
\csvreader{assets/measurements.csv}{}
|
||||
{\\\hline\csvcoli&\csvcolii&\csvcoliii&\csvcoliv&\csvcolv}
|
||||
\caption{}
|
||||
\label{tab:measurements}
|
||||
\end{tabular}
|
||||
\vspace{5mm}
|
||||
|
||||
The measured values were the average frame rate of the application in frames per second, the average time taken for the whole frame and the individual times in the main and render threads on the CPU and the GPU render thread.
|
||||
|
||||
Since our focus is on the performance impact of rendering the portals, we focus on the frame rate and the GPU frame time. Those two measurements are visualised in Figure \ref{fig:measurements}.
|
||||
|
||||
\begin{center}
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[width=.75\linewidth]{assets/measurements.png}
|
||||
\caption{}
|
||||
\label{fig:measurements}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
We note that rendering only a single pair of portals already incurs a large cost, as seen in the decrease of the frame rate by approximately $37\%$ from $44.7$ fps down to $27.9$ fps. The almost $50$ fold increase in GPU frame time suggests that this performance loss happens mostly on the GPU. The baseline test without any portals does not use any textures. Ji et al.\cite{lod:2005} mention the performance cost of pushing texture data to the GPU, which explains the increased frame time when using textures to render the portals.
|
||||
|
||||
Drawing the scene without portals can be done in two render passes, one for each eye. Every added portal requires drawing the scene again from each eye, thus a single portal pair increases the number of passes from two to six. With three pairs of portals, the scene requires a total of 14 render passes. The graph in Figure \ref{fig:measurements} shows this growth of the frame time.
|
||||
|
||||
\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.
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[width=\linewidth]{assets/render-steps/combined.png}
|
||||
\caption{This figure shows how the left eye of our test scene is being rendered. It begins by rendering the view from the blue portal (top left), followed by the geometry of the blue platform (top right). Similarly, the rest of the portals are rendered first (bottom left) and the platform they are on second (bottom right).}
|
||||
\label{fig:render-steps}
|
||||
\end{figure}
|
||||
|
||||
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.
|
||||
Rendering each portal portal requires an additional viewpoint. In VR, where each eye is rendered by its own camera, there are now two additional viewpoints to render from per portal. In the naïve case, where each viewpoint is rendered the same, we produce quadruple the amount of work compared to a monoscopic scene without portals.
|
||||
|
||||
Rendering the whole view from a portal can lead to a lot of wasted performance. For example, the further away a portal is, the fewer pixels on the screen it occupies. Rendering the view from the portal in full resolution can be wasteful if the portal is far from the camera or completely redundant if the user is not looking at the portal.
|
||||
|
||||
Furthermore, the portal itself might be blocked by other geometry in front of it. Figure \ref{fig:render-steps} shows how the two portals rendered in the bottom left image are subsequently being blocked by the green bowl and the yellow cubes in the final image.
|
||||
|
||||
We will present two optimisations that can reduce the rendering time and analyse their impact.
|
||||
|
||||
\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}.
|
||||
The first optimisation we consider uses the so-called stencil buffer to only render what is seen through the portal. This can improve the rendering time of portals in general.
|
||||
|
||||
\begin{figure}
|
||||
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{fig:stencil-portals}.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\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}
|
||||
\label{fig:stencil-portals}
|
||||
\end{figure}
|
||||
|
||||
As mentioned by Vlachos\cite{vlachos:2015}\cite{vlachos:2016}, the stencil buffer is also used to cull the pixels not visible in the VR headset. This is apparent in Figure \ref{fig:render-steps}, where a rounded off part at the bottom of the blue platform would never be visible to the user and is left out.
|
||||
|
||||
\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.
|
||||
In contrast to the stencil buffer, 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.
|
||||
|
||||
\begin{figure}
|
||||
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{fig:multi-pass}. 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}[ht]
|
||||
\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}
|
||||
\label{fig:multi-pass}
|
||||
\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.
|
||||
This method comes with a large performance downside. In the worst case, the amount of rendering work is 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.
|
||||
The second method described in Figure~\ref{fig:single-pass} --- 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}
|
||||
\begin{figure}[ht]
|
||||
\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}
|
||||
\label{fig:single-pass}
|
||||
\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}
|
||||
\section{Conclusion}
|
||||
|
||||
We have shown how to implement portals in VR that allow for an unobtrusive transition through them. This can help immersion in an impossible space of artificially increased size.
|
||||
|
||||
The tests with our implementation of portals shows that it is very expensive to render each pair of portals. Currently, a scene should be limited to having as few portals visible as possible. In an experience where the user progresses through a series of rooms in a linear fashion, the amount of portals could be limited by disabling portals of previously visited rooms as soon as the next one is entered.
|
||||
|
||||
The mentioned performance optimisations might help making a VR experience that has many portals visible at the same time possible. Using the stencil buffer to render only the necessary parts of each portal could in theory allow for an unlimited amount of portals shown at the same time. We showed that the amount of pixels rendered in this case stays practically constant.
|
||||
|
||||
\bibliographystyle{plain}
|
||||
\bibliography{refs}
|
||||
|
||||
47
refs.bib
@@ -46,12 +46,37 @@
|
||||
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{monoscopic-stereoscopic:2020,
|
||||
author = {Mehmet Burak Taştı and Ümmühan Avcı},
|
||||
title = {Examination of using monoscopic three-dimensional (M3D) and stereoscopic three-dimensional (S3D) animation on students},
|
||||
journal = {Education and Information Technologies},
|
||||
volume = {25},
|
||||
year = {2020},
|
||||
pages = {2765--2790},
|
||||
publisher = {Springer},
|
||||
doi = {10.1007/s10639-019-10095-1}
|
||||
}
|
||||
|
||||
@INPROCEEDINGS{back-face-culling:2007,
|
||||
author={Dool-Bong Jeon and Sang-Yeon Kim and Kwang-Youb Lee and Jae-Chang Kwak},
|
||||
booktitle={TENCON 2007 - 2007 IEEE Region 10 Conference},
|
||||
title={A design of a 3D graphics rasterizer with a culling and clipping},
|
||||
year={2007},
|
||||
pages={1-4},
|
||||
doi={10.1109/TENCON.2007.4428836}
|
||||
}
|
||||
|
||||
@inproceedings{lod:2005,
|
||||
author = {Ji, Junfeng and Wu, Enhua and Li, Sheng and Liu, Xuehui},
|
||||
title = {Dynamic LOD on GPU},
|
||||
year = {2005},
|
||||
isbn = {0780393309},
|
||||
publisher = {IEEE Computer Society},
|
||||
address = {USA},
|
||||
booktitle = {Proceedings of the Computer Graphics International 2005},
|
||||
pages = {108–114},
|
||||
numpages = {7},
|
||||
series = {CGI '05}
|
||||
}
|
||||
|
||||
@ARTICLE{vlachos:2015,
|
||||
@@ -62,8 +87,16 @@
|
||||
year = {2015}
|
||||
}
|
||||
|
||||
@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}
|
||||
}
|
||||
|
||||
@MISC{nvidia-sps,
|
||||
author = {NVIDIA Corporation},
|
||||
author = {NVIDIA},
|
||||
title = {VRWorks -- Single Pass Stereo},
|
||||
howpublished = "\url{https://developer.nvidia.com/vrworks/graphics/singlepassstereo}",
|
||||
note = "[accessed 1.11.2022]"
|
||||
|
||||