X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fsam.git;a=blobdiff_plain;f=presentation%2Fpresentation.tex;h=d98b820187f7c704d34e2c47debdacf82e641265;hp=8b4108cebdd398803dfe57ad4af5cb705bcfd2f4;hb=ae8d5f837db032eb4d9e9666f5026fab7e3e8e4a;hpb=253d241eb8279be539ad72a0283d3f1575b537ab diff --git a/presentation/presentation.tex b/presentation/presentation.tex index 8b4108c..d98b820 100644 --- a/presentation/presentation.tex +++ b/presentation/presentation.tex @@ -35,7 +35,7 @@ % affiliation. \institute[UWA]% (optional) {Universities of Western Australia} -{Supervisors: Tim French, Rowan Davies} +{Supervisors: Tim French, Rowan Davies \\ Colleagues: David Gow} \date[CSS 2009]{\today} % change the actual date %\titlegraphic{\includegraphics[width=3cm]{./Logos/WAMSI.png}} @@ -95,6 +95,15 @@ \end{frame} +\begin{frame} +\begin{itemize} + \item Vector graphics scale better than raster graphics +\end{itemize} + \centering + \includegraphics[scale=0.7528125, viewport=210 85 280 150,clip, width=0.45\textwidth]{../figures/fox-vector.pdf} + \includegraphics[scale=0.7528125, viewport=0 85 70 150,clip, width=0.45\textwidth]{../figures/fox-raster.png} +\end{frame} + @@ -102,7 +111,7 @@ \begin{frame} \frametitle{Is there a zoom limit?} \centering -\includegraphics{../figures/koch1.pdf} +\includegraphics{../figures/koch.pdf} \end{frame} \section{Floating Point} @@ -112,6 +121,13 @@ \begin{itemize} \item SVG, PostScript, PDF specify IEEE-754 \emph{single} floating point number representations \item Range of values: $\approx 3 \times 10^{-38} \to 3 \times 10^{+38}$ + \item Bigger than size of Universe? +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{Floating Point Definition} +\begin{itemize} \item Rough Floating Point Definition\footnote{IEEE-754 is more complicated}: \begin{align} @@ -119,7 +135,6 @@ \end{align} \item $m$ and $E$ are encoded in a \emph{fixed length} string of bits \item Floating Point $\approx$ Scientific Notation for computers - \end{itemize} \end{frame} @@ -137,6 +152,7 @@ \frametitle{Visualisation of Floats II} \begin{itemize} \item Difference between successive floats + \item Further from origin $\implies$ less precision \end{itemize} \centering \includegraphics[width=0.8\textwidth]{../figures/floats_diff.pdf} @@ -144,10 +160,15 @@ \begin{frame} \frametitle{Precision is limited} + \begin{itemize} + \item Eg: Fox scaled to width of $\approx 10^{-6}$ viewed at zoom of $\approx 10^{8}$ + \item (Outline should look like images in first slide) + \end{itemize} \centering \includegraphics[width=0.8\textwidth]{../figures/fox-vector_highzoom1.png} \end{frame} + \begin{frame} \frametitle{Structure of Vector Graphics} \begin{itemize} @@ -171,6 +192,18 @@ \includegraphics[width=0.5\textwidth]{../figures/fox-vector_face_with_bezbounds.png} \end{frame} +\begin{frame} +\frametitle{Vector Graphics Viewer Features} +\begin{itemize} + \item GPU (OpenGL) or CPU (custom) rendering + \item Import SVG into current View location + \item Control through scripts (Python) or Qt4 GUI +\end{itemize} +\centering +\includegraphics[width=0.4\textwidth]{../figures/controlpanel_screenshot.png} + +\end{frame} + \begin{frame} \frametitle{Viewing Vector Graphics} @@ -253,6 +286,16 @@ \end{frame} +\begin{frame} + \frametitle{Quantitative Results} + \begin{itemize} + \item Invariance of grid of lines after scaling + \end{itemize} + \centering + \includegraphics[width=0.8\textwidth]{../figures/cumulative_error_grid.pdf} +\end{frame} + + \section{Demonstration} @@ -282,17 +325,26 @@ \begin{itemize} \item Implement more of the SVG standard \item Trial alternative number representations - \item Allow for saving and loading SVGs with arbitrary precision + \item Allow for saving and loading + \item Optimisations, eg: clip objects that are not visible + \item Compile for Windows (MinGW) \end{itemize} \end{frame} -%\section{References} + \begin{frame} - \frametitle{References \& More information} + \frametitle{Acknowledgements} \begin{itemize} \item Work on SVG viewer collaborative with David Gow \begin{itemize} \item See David Gow's presentation about Quadtrees \end{itemize} + \item Supervisors: Tim French and Rowan Davies + \end{itemize} +\end{frame} +%\section{References} +\begin{frame} + \frametitle{References \& More information} + \begin{itemize} \item Muller et al, \emph{Handbook of Floating Point Arithmetic}, \item Hearn, Baker \emph{Computer Graphics} \item Kahan et al, \emph{IEEE-754} (1985 and 2008 revision) @@ -303,24 +355,26 @@ \end{frame} %\section{Questions} - - \begin{frame} -\frametitle{Q: Why not just increase \\ floating point precision?} -\begin{itemize} - \item Any fixed precision format will still give inexact results - \item Eg: Accuracy of rendering a grid -\end{itemize} +\frametitle{Q: Why not just increase float precision?} + \begin{itemize} + \item GPU uses singles anyway + \item Can use CPU for bounds transforms + \item But eventually lose precision for any \emph{fixed} precision float + \end{itemize} + \centering + \includegraphics[width=0.8\textwidth]{{../figures/loss_of_precision_grid_0.5}.pdf} \end{frame} \begin{frame} + \frametitle{Q: Arbitrary precision floats?} \begin{align} X &= m \times 2^{E} \end{align} \begin{itemize} \item $m$ and $E$ are of arbitrary size - \item Implemented by MPFR or GMP + \item Implemented by MPFR (based on GMP) \item Difficulties: \begin{itemize} \item Need to manually set precision (size) of $m$ @@ -329,6 +383,7 @@ \frac{1}{3} &= 0.3333333333333333333333 \text{ ... } \times 10^0 \end{align} \item How do you choose when to increase precision? + \item GMP Rational implementation automatically increases size, but MPFR floats do not \end{itemize} \end{itemize} \end{frame} @@ -345,5 +400,36 @@ \end{frame} +\begin{frame} + \frametitle{Quantitative?} +% \begin{figure}[H] + \centering + \includegraphics[width=0.4\textwidth]{../figures/grid_0_1e-6.png} + \includegraphics[width=0.4\textwidth]{../figures/{grid_0.5_1e-6}.png} \\ + \includegraphics[width=0.4\textwidth]{../figures/grid_1_1e-6.png} + \includegraphics[width=0.4\textwidth]{../figures/grid_2_1e-6.png} + %\caption{Effect of applying \eqref{view-transformation} to a grid of lines seperated by 1 pixel \\ + %a) Near origin (denormals) b), c), d) Increasing the exponent of $(v_x,v_y)$ by 1}\label{grid-precision} +%\end{figure} + + +\end{frame} + +\begin{frame} + \frametitle{Bresenham and Wu} + \centering + \includegraphics[width=0.5\textwidth]{../figures/line1.pdf} + \includegraphics[width=0.5\textwidth]{../figures/line2.pdf} +\end{frame} + +\begin{frame} + \frametitle{Bonus: IEEE-754 on GPUs} + \begin{itemize} + \item Inconsistent behaviour of calculations on different GPUs + \item {\small Eg: $x^2 + y^2 < 1$ (shading a circle) zoomed in on the edge.} + \end{itemize} + \centering + \includegraphics[width=0.4\textwidth]{../figures/gpufloats.pdf} +\end{frame} \end{document}