Created
April 17, 2013 14:45
-
-
Save tcsavage/5404883 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
\begin{landscape} | |
\begin{longtable}{|l|p{120pt}|p{120pt}|p{120pt}|p{120pt}|} | |
\caption{Functional Requirements} \\ | |
\hline | |
\textbf{ID} & \textbf{What} & \textbf{How} & \textbf{Test} & \textbf{Expected Result} \\ \hline | |
\endfirsthead | |
\multicolumn{4}{c}% | |
{\tablename\ \thetable\ -- \textit{Continued from previous page}} \\ | |
\hline | |
\textbf{ID} & \textbf{What} & \textbf{How} & \textbf{Test} & \textbf{Expected Result} \\ \hline | |
\endhead | |
\multicolumn{4}{r}{\textit{Continued on next page}} \\ | |
\endfoot | |
\endlastfoot | |
1 & \multicolumn{4}{|l|}{World (input) and processing} \\ \hline | |
1.1 & \multicolumn{4}{|l|}{Objects} \\ \hline | |
1.1.1 & \multicolumn{4}{|l|}{Shapes} \\ \hline | |
1.1.1.1 & Sphere shape supported & Ray-sphere intersection function & Test render with a sphere & \\ \hline | |
1.1.1.2 & Infinite plane shape supported & Ray-plane intersection function & Test render with infinite plane & \\ \hline | |
1.1.1.3 & Triangle shape supported & Ray-plane intersection with triangle bounds checking & Test render with triangle & \\ \hline | |
1.1.1.4 & Polygon mesh supported & Triangle-ray intersection mapped over list of triangles & Test render with simple output from Blender & \\ \hline | |
1.1.1.5 & Polygon meshes poses local coordinate system translation & Map vector translation over each vertex & Repeat test render with two different origins & Shape moved to new position without changing general appearance \\ \hline | |
1.1.2 & \multicolumn{4}{|l|}{Materials} \\ \hline | |
1.1.2.1.1 & Diffuse materials can have flat colour & Simple value assignment & & \\ \hline | |
1.1.2.1.2 & Diffuse materials can be textured & Calculate UV coordinates from intersection point and sample texel & & \\ \hline | |
1.1.2.1.3 & Diffuse materials are shaded and receive shadows & Shadow ray occlusion testing for each emissive material & & \\ \hline | |
1.1.2.1.4 & Diffuse materials receive indirect illumination from light bouncing off other surfaces & Additional diffuse reflection sample factored into surface colour & & \\ \hline | |
1.1.2.2 & Reflective materials & Re-sample with new ray with intersection as new origin and reflected normal as new direction & & \\ \hline | |
1.1.2.3 & Transmissive materials & Calculate refraction amount and re-sample with new ray & & \\ \hline | |
1.1.2.4 & Emissive materials illuminate scene & A shadow ray is created from each diffuse sample for every emissive surface & A test scene with at least one diffuse surface visible to the camera and zero emissive surfaces & Black image - no illumination \\ \hline | |
1.2.1 & Camera has position & & & \\ \hline | |
1.2.2 & Camera has a focal “look-at” point & & & \\ \hline | |
1.2.3 & Camera has up vector & & & \\ \hline | |
1.2.4 & Camera has adjustable field of view & Size of image plane is scaled up and down & Render same scene twice only changing FOV & One image is zoomed in on the center \\ \hline | |
2.1.1 & Output width and height (in pixels) is specified by user & Number of elements in image plane directly tied to width/height input & & \\ \hline | |
2.1.2 & Different aspect ratios supported correctly & Aspect ratio passed onto image plane correctly & Test with common resolutions at 1:1, 3:2, 4:3, 16:10, 16:9 in both portrait and landscape orientations & Image shows no signs of stretching (particularly at center of frame) \\ \hline | |
\multicolumn{1}{|r|}{2.2} & Output is saved to location specified by user & Option read from input, passed to image saving function & Render image to file & Output is saved to correct directory with specified file name \\ \hline | |
\multicolumn{1}{|r|}{2.3} & Number of samples per pixel is specified by user & Input passed to random sample distribution generator function & Render with one sample and again with 10 samples. Compare & Output image is of better quality when rendered with higher samples \\ \hline | |
\multicolumn{1}{|r|}{3.1} & Renderer is purely functional & No uncontrolled side effects inside renderer function & Render multiple times with exactly the same input and options & All output images are identical \\ \hline | |
\multicolumn{1}{|r|}{3.2} & Properties of 2D and 3D vectors and operations hold & & Run quickcheck properties & All tests pass \\ \hline | |
\multicolumn{1}{|r|}{3.3} & Any type class instance respects the laws of the typeclass & & Run quickcheck properties or prove by equational reasoning & All tests pass \\ \hline | |
\end{longtable} | |
\end{landscape} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment