{"id":478,"date":"2011-09-02T15:59:40","date_gmt":"2011-09-02T22:59:40","guid":{"rendered":"http:\/\/mattfife.net\/wordpress\/?p=478"},"modified":"2012-12-18T15:28:49","modified_gmt":"2012-12-18T22:28:49","slug":"siggraph-2011-trip-report-vancouver-bc","status":"publish","type":"post","link":"https:\/\/mattfife.com\/?p=478","title":{"rendered":"Siggraph 2011 Trip Report &#8211; Vancouver, BC"},"content":{"rendered":"<p><!--[if gte mso 9]><xml>  <w:WordDocument>   <w:View>Normal<\/w:View>   <w:Zoom>0<\/w:Zoom>   <w:TrackMoves\/>   <w:TrackFormatting\/>   <w:PunctuationKerning\/>   <w:ValidateAgainstSchemas\/>   <w:SaveIfXMLInvalid>false<\/w:SaveIfXMLInvalid>   <w:IgnoreMixedContent>false<\/w:IgnoreMixedContent>   <w:AlwaysShowPlaceholderText>false<\/w:AlwaysShowPlaceholderText>   <w:DoNotPromoteQF\/>   <w:LidThemeOther>EN-US<\/w:LidThemeOther>   <w:LidThemeAsian>X-NONE<\/w:LidThemeAsian>   <w:LidThemeComplexScript>X-NONE<\/w:LidThemeComplexScript>   <w:Compatibility>    <w:BreakWrappedTables\/>    <w:SnapToGridInCell\/>    <w:WrapTextWithPunct\/>    <w:UseAsianBreakRules\/>    <w:DontGrowAutofit\/>    <w:SplitPgBreakAndParaMark\/>    <w:DontVertAlignCellWithSp\/>    <w:DontBreakConstrainedForcedTables\/>    <w:DontVertAlignInTxbx\/>    <w:Word11KerningPairs\/>    <w:CachedColBalance\/>   <\/w:Compatibility>   <m:mathPr>    <m:mathFont m:val=\"Cambria Math\"\/>    <m:brkBin m:val=\"before\"\/>    <m:brkBinSub m:val=\"&#45;-\"\/>    <m:smallFrac m:val=\"off\"\/>    <m:dispDef\/>    <m:lMargin m:val=\"0\"\/>    <m:rMargin m:val=\"0\"\/>    <m:defJc m:val=\"centerGroup\"\/>    <m:wrapIndent m:val=\"1440\"\/>    <m:intLim m:val=\"subSup\"\/>    <m:naryLim m:val=\"undOvr\"\/>   <\/m:mathPr><\/w:WordDocument> <\/xml><![endif]--><!--[if gte mso 9]><xml>  <w:LatentStyles DefLockedState=\"false\" DefUnhideWhenUsed=\"true\"   DefSemiHidden=\"true\" DefQFormat=\"false\" DefPriority=\"99\"   LatentStyleCount=\"267\">   <w:LsdException Locked=\"false\" Priority=\"0\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Normal\"\/>   <w:LsdException Locked=\"false\" Priority=\"9\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"heading 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"9\" QFormat=\"true\" Name=\"heading 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"9\" QFormat=\"true\" Name=\"heading 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"9\" QFormat=\"true\" Name=\"heading 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"9\" QFormat=\"true\" Name=\"heading 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"9\" QFormat=\"true\" Name=\"heading 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"9\" QFormat=\"true\" Name=\"heading 7\"\/>   <w:LsdException Locked=\"false\" Priority=\"9\" QFormat=\"true\" Name=\"heading 8\"\/>   <w:LsdException Locked=\"false\" Priority=\"9\" QFormat=\"true\" Name=\"heading 9\"\/>   <w:LsdException Locked=\"false\" Priority=\"39\" Name=\"toc 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"39\" Name=\"toc 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"39\" Name=\"toc 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"39\" Name=\"toc 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"39\" Name=\"toc 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"39\" Name=\"toc 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"39\" Name=\"toc 7\"\/>   <w:LsdException Locked=\"false\" Priority=\"39\" Name=\"toc 8\"\/>   <w:LsdException Locked=\"false\" Priority=\"39\" Name=\"toc 9\"\/>   <w:LsdException Locked=\"false\" Priority=\"35\" QFormat=\"true\" Name=\"caption\"\/>   <w:LsdException Locked=\"false\" Priority=\"10\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Title\"\/>   <w:LsdException Locked=\"false\" Priority=\"1\" Name=\"Default Paragraph Font\"\/>   <w:LsdException Locked=\"false\" Priority=\"11\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Subtitle\"\/>   <w:LsdException Locked=\"false\" Priority=\"22\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Strong\"\/>   <w:LsdException Locked=\"false\" Priority=\"20\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Emphasis\"\/>   <w:LsdException Locked=\"false\" Priority=\"59\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Table Grid\"\/>   <w:LsdException Locked=\"false\" UnhideWhenUsed=\"false\" Name=\"Placeholder Text\"\/>   <w:LsdException Locked=\"false\" Priority=\"1\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"No Spacing\"\/>   <w:LsdException Locked=\"false\" Priority=\"60\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Shading\"\/>   <w:LsdException Locked=\"false\" Priority=\"61\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light List\"\/>   <w:LsdException Locked=\"false\" Priority=\"62\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Grid\"\/>   <w:LsdException Locked=\"false\" Priority=\"63\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"64\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"65\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"66\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"67\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"68\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"69\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"70\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Dark List\"\/>   <w:LsdException Locked=\"false\" Priority=\"71\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Shading\"\/>   <w:LsdException Locked=\"false\" Priority=\"72\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful List\"\/>   <w:LsdException Locked=\"false\" Priority=\"73\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Grid\"\/>   <w:LsdException Locked=\"false\" Priority=\"60\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Shading Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"61\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light List Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"62\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Grid Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"63\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 1 Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"64\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 2 Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"65\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 1 Accent 1\"\/>   <w:LsdException Locked=\"false\" UnhideWhenUsed=\"false\" Name=\"Revision\"\/>   <w:LsdException Locked=\"false\" Priority=\"34\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"List Paragraph\"\/>   <w:LsdException Locked=\"false\" Priority=\"29\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Quote\"\/>   <w:LsdException Locked=\"false\" Priority=\"30\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Intense Quote\"\/>   <w:LsdException Locked=\"false\" Priority=\"66\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 2 Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"67\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 1 Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"68\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 2 Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"69\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 3 Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"70\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Dark List Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"71\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Shading Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"72\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful List Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"73\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Grid Accent 1\"\/>   <w:LsdException Locked=\"false\" Priority=\"60\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Shading Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"61\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light List Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"62\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Grid Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"63\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 1 Accent 2\"\/>   <w:LsdExc\neption Locked=\"false\" Priority=\"64\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 2 Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"65\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 1 Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"66\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 2 Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"67\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 1 Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"68\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 2 Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"69\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 3 Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"70\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Dark List Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"71\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Shading Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"72\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful List Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"73\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Grid Accent 2\"\/>   <w:LsdException Locked=\"false\" Priority=\"60\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Shading Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"61\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light List Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"62\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Grid Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"63\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 1 Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"64\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 2 Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"65\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 1 Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"66\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 2 Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"67\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 1 Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"68\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 2 Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"69\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 3 Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"70\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Dark List Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"71\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Shading Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"72\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful List Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"73\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Grid Accent 3\"\/>   <w:LsdException Locked=\"false\" Priority=\"60\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Shading Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"61\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light List Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"62\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Grid Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"63\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 1 Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"64\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 2 Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"65\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 1 Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"66\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 2 Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"67\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 1 Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"68\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 2 Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"69\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 3 Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"70\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Dark List Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"71\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Shading Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"72\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful List Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"73\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Grid Accent 4\"\/>   <w:LsdException Locked=\"false\" Priority=\"60\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Shading Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"61\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light List Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"62\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Grid Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"63\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 1 Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"64\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 2 Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"65\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 1 Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"66\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 2 Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"67\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 1 Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"68\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 2 Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"69\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 3 Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"70\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Dark List Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"71\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Shading Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"72\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful List Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"73\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Grid Accent 5\"\/>   <w:LsdException Locked=\"false\" Priority=\"60\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Shading Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"61\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light List Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"62\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Light Grid Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"63\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 1 Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"64\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Shading 2 Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"65\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 1 Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"66\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium List 2 Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"67\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 1 Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"68\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 2 Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"69\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Medium Grid 3 Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"70\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Dark List Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"71\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Shading Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"72\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful List Accent 6\"\/>   <w:LsdException Locked=\"false\" Priority=\"73\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" Name=\"Colorful Grid Accent 6\"\/>   <w:LsdException Lo\ncked=\"false\" Priority=\"19\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Subtle Emphasis\"\/>   <w:LsdException Locked=\"false\" Priority=\"21\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Intense Emphasis\"\/>   <w:LsdException Locked=\"false\" Priority=\"31\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Subtle Reference\"\/>   <w:LsdException Locked=\"false\" Priority=\"32\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Intense Reference\"\/>   <w:LsdException Locked=\"false\" Priority=\"33\" SemiHidden=\"false\"    UnhideWhenUsed=\"false\" QFormat=\"true\" Name=\"Book Title\"\/>   <w:LsdException Locked=\"false\" Priority=\"37\" Name=\"Bibliography\"\/>   <w:LsdException Locked=\"false\" Priority=\"39\" QFormat=\"true\" Name=\"TOC Heading\"\/>  <\/w:LatentStyles> <\/xml><![endif]--><!--[if gte mso 10]> \n\n<style>  \/* Style Definitions *\/  table.MsoNormalTable \t{mso-style-name:\"Table Normal\"; \tmso-tstyle-rowband-size:0; \tmso-tstyle-colband-size:0; \tmso-style-noshow:yes; \tmso-style-priority:99; \tmso-style-qformat:yes; \tmso-style-parent:\"\"; \tmso-padding-alt:0in 5.4pt 0in 5.4pt; \tmso-para-margin-top:0in; \tmso-para-margin-right:0in; \tmso-para-margin-bottom:10.0pt; \tmso-para-margin-left:0in; \tline-height:115%; \tmso-pagination:widow-orphan; \tfont-size:11.0pt; \tfont-family:\"Calibri\",\"sans-serif\"; \tmso-ascii-font-family:Calibri; \tmso-ascii-theme-font:minor-latin; \tmso-hansi-font-family:Calibri; \tmso-hansi-theme-font:minor-latin; \tmso-bidi-font-family:\"Times New Roman\"; \tmso-bidi-theme-font:minor-bidi;} <\/style>\n\n <![endif]--><\/p>\n<p class=\"MsoNormal\"><strong>Summary:<span>\u00a0 <\/span><br \/>\n<\/strong>Very good trip, but not a huge \u2018groundbreaking\u2019 year of new technologies.<\/p>\n<ul>\n<li><span><span><\/span><\/span>Courses were really good and had a lot of good information from top-notch game developers\/houses.\u00a0 Most of the courses included a review\/update on \u2018what is the current state of the art\u2019 which is good for those who aren\u2019t following those niches closely on a regular basis.<\/li>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>Voxels and voxel methods are kind of back in rage again \u2013 but for things like visibility, ambient occlusion, and AI pathfinding.<\/li>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>Lots of industry leaders questioning direction and disparate energies trying to figure out where the market and graphics are going.\u00a0 API developers and HW vendors desperately trying to find out what the next platform of choice will be (laptop\/mobile phone\/pad\/etc) so they can be positioned to capitalize on it when it becomes clear.\u00a0 Nobody seems to know.<\/li>\n<li>MLAA was the star tech of the show as far as people showing up with implementations and praise of it.<\/li>\n<li><span><span><\/span><\/span>Many talks stressed that fact fast content creation and rapid artist pipelines are *the* driver of technologies and tools; and most coding\/engine requirements are subservient to the needs of the content pipeline.<\/li>\n<li><span><span><\/span><\/span>While the show floor was very much smaller than the California years, 3D printing and 3D capture was big.\u00a0\u00a0 You could get your face scanned at one booth and 3D print it at another one in just an hour or so.<\/li>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>Intel\u2019s booth was really well attended with lots of interest in onloading techniques.\u00a0 I had a number of good talks with developers \u2013 some of which wanted to know if we\u2019d be bringing Larrabee back. <span style=\"font-family: Wingdings\">J<\/span><\/li>\n<\/ul>\n<p class=\"MsoNormal\"><strong>\u00a0<\/strong><\/p>\n<p class=\"MsoNormal\"><strong>Sunday:<br \/>\nCourse<\/strong><strong> &#8211; <span style=\"color: black\">Destruction and Dynamics for Film and Game Production<\/span><\/strong><br \/>\n<span style=\"color: black\">This all afternoon session started with a great overview of current destruction techniques.\u00a0 There was a great and thorough overview of the current ways to break up a mesh (Voronoi, Boolean, FEM convex decomposition, and tetrahedral creation), the methods and problems of collision detection after the breakup, and constraint solving.\u00a0 The focus now is not so much on the math of the constraint solvers, but on how to use them in intuitive and fast ways for the artists.<\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"color: black\">Takeaways:<\/span><\/p>\n<ul>\n<li><span style=\"color: black\"><span><\/span><\/span><span style=\"color: black\">Use the best freely\/commercially already available solver for your purpose out there.\u00a0 Constraint solvers are now very clever and (all things considered) computationally cheap.\u00a0 <\/span><\/li>\n<li>Don&#8217;t futz with the solvers to get what you want &#8211; u<span style=\"color: black\">se tons of constraints to get the effects you want.\u00a0 Many movie models (like the earthquake scenes of the movie 2012) used literally thousands of constraints per building.\u00a0 By using constraints, you can scale the effect up and get nearly the same look\/feel as when you did it on the low-poly version.\u00a0 Fiddling with the solver just gets you more and more headaches as low-poly pre-vis ones will collapse very different than high-poly versions and vice-versa. <\/span><\/li>\n<li><span style=\"color: black\"><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span><span style=\"color: black\">Treat the solvers as black boxes and use different <em>activation systems<\/em> to achieve desired effects. It is easy and intuitive for artists to use these below methods and nobody needs to experiment with the super-fiddly parameters of the constraint solvers for each kind of breaking they want<\/span><span style=\"color: black\"><\/span>\n<ul>\n<li><span style=\"color: black\">Dynamic activation = when you break an impulse threshold, you break the constraint holding it in place<\/span><span style=\"font-family: 'Courier New'; color: black\"><span><\/span><\/span><\/li>\n<li><span style=\"font-family: 'Courier New'; color: black\"><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span><span style=\"color: black\">&#8216;Glue objects&#8217; that simply hold sets of other constraints together to get \u2018clumping\u2019 effects. When the set has a higher impulse than the individual pieces<\/span><span style=\"font-family: 'Courier New'; color: black\"><span><\/span><\/span><\/li>\n<li><span style=\"font-family: 'Courier New'; color: black\"><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span><span style=\"color: black\">Cascaded activation = you don\u2019t even consider objects as breakable until it becomes an edge piece or is touching an edge piece.\u00a0\u00a0 Gives nice \u2018collapsing wall\u2019 effects.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p class=\"MsoNormal\"><strong><span style=\"color: black\">Monday:<br \/>\n<\/span><\/strong>Course &#8211; Advances in Real-Time Rendering \u2013 Parts I &amp; II<br \/>\n<a href=\"http:\/\/advances.realtimerendering.com\/\">http:\/\/advances.realtimerendering.com\/<\/a><\/p>\n<ul>\n<li>Went to an all-day course with presentations of new real-time techniques by such big-wigs as CryEngine3, Halo R&amp;D team, Little Big Planet, Disney and many others.\u00a0 It appears that voxel techniques are making a comeback for Halo and Little Big Planet guys.<\/li>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>Upcoming Halo title had a fascinating technique for occlusion via voxels.\u00a0\u00a0 They collaborated with Umbru software to develop a new kind of voxel-based visibility and portal system when their existing watershed algorithm started breaking down with the new outdoor content\n<ul>\n<li><span style=\"font-family: 'Courier New'\"><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>Use a BSP tree of voxel areas to descritize the scene into a hierarchy of voxels and connect the polygon geometry with voxels.\u00a0 Then use that unique structure to generate portals automatically, do fast runtime visibility, and AI pathfinding<\/li>\n<li><span style=\"font-family: 'Courier New'\"><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>They also changed their engine\u2019s threading system to be job based instead of a more manual load-balancing that didn\u2019t scale.\u00a0 They found novel ways to avoid synchronizing the game engine between threads and dramatically reduce memory copies.<\/li>\n<\/ul>\n<\/li>\n<li><span><span><\/span><\/span>For their new Cars 2 game, Disney used a unique uniform-grid system to lay out light probes for their spherical harmonic lighting system. Lead to some great optimizations and easy authoring.<\/li>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\">\u00a0<\/span><\/span><\/span>Little Big Planet was using voxels for spherical harmonics and ambient occlusion lighting.\u00a0 They also used a single particle system with really clever screen-space blending in Little Big Planet 2 to generate all their special water\/explosion\/fire effects.<\/li>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>Cryengine 3 guys talked about how they used previous frames with re-projection to get fast occlusion culling and local reflection.\u00a0 They also used a lazy technique of updating cascaded shadow maps with further out maps getting updated much less often.<\/li>\n<li><span><span><\/span><\/span>Frostbite used a rhombus shaped boken technique which has more passes, but is separable and therefore runable on multiple threads.\u00a0 They also used cascaded maps for culling, not just shadowing.<\/li>\n<li><span><span><\/span><\/span>Treyarch talked about techniques they used on Call of Duty Black ops.\u00a0 They only allowed one dynamic light per surface, but unlimited lightmaps\/lightgrids and environment probles per object to always maintain a 60fps goal but with great lighting effects.<\/li>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\">\u00a0<\/span><\/span><\/span>A talk by a new developer in \u2018stealth mode\u2019 who talked about Real-Time Image Quilting \u2013 which allowed realtime texture quilting without seams for expansive environments.<\/li>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\">\u00a0<\/span><\/span><\/span>The Gears of War 3 guys talked about overcoming lighting constraints on the PS3 by combining the light vectors into a single combined vector and doing tricks to extract it in the shader<\/li>\n<li><span><span><\/span><\/span>Final talk was by a fellow who did super-accurate, highly realistic facial rendering with subsurface scattering.\u00a0 His technique was an improvement on the nVidia one in many ways (speed\/quality), but still not realitime.\u00a0 Still, was interesting conversation about the difficulties of rendering realistic skin.<\/li>\n<\/ul>\n<p class=\"MsoListParagraph\" style=\"text-indent: -0.25in\"><span><span>&#8211;<span style=\"font: 7pt 'Times New Roman'\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><strong>Tuesday<br \/>\n<\/strong>Course- Beyond Programmable Shading I + II<\/p>\n<p>All day course that talked about the direction and emerging graphics trends.\u00a0 I alternated between this and looking at posters during the day.<\/p>\n<ul>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>Raja Koduri from Apple did a great talk on how power is managed in current devices.\u00a0 He basically echoed what Intel has been saying: power isn\u2019t scaling with Moore\u2019s law \u2013 and how simple programming mistakes can save or kill a battery.\u00a0 He talked about the need for dialog between hardware and software folks to develop API\u2019s for power usage feedback and for current API\u2019s that might need to be re-worked for low-power futures.<\/li>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>There was talk about allowing the actual scheduling methods used internally to graphics processors might need to be exposed in the future for greater programmability and what possibilities that might open.<\/li>\n<li><span><span><\/span><\/span>There was a talk about how nVidia Optix SIMD-izes it\u2019s ray tracing pipeline<\/li>\n<li><span><span><\/span><\/span>Decent talk on current state of the art on bokeh, motion blur and DOF effects.<\/li>\n<li><span><span><\/span><\/span>There was a good talk by Intel\u2019s Marco Salvi on their OIT methodology along with other recent efforts.<\/li>\n<li><span><span><\/span><\/span>At the end, there was a SUPER open-panel discussion with speakers about where DirectX\/OpenGL\/OpenCL were going.\u00a0 The consensus is that there is no consensus.\u00a0 Things are in a real flux right now with radically competing demands. Console devs want absolute control (open the gfx api command buffer to us!), mobile developers that want low-power\/long life, desktop devs still wanting the best quality, and the uncertainty of the \u2018platform of the future\u2019 being really unknown (will we all be on iPads\/consoles\/laptops\/etc).\u00a0 The only thing they seem to agree on is that DirectX\/OpenGL are basically still the best solutions we have unless we want to really bifurcate the API landscape \u2013 and it\u2019s unclear whether we want to do that.\u00a0 There\u2019s a lot of opportunity for new technologies and new movers to make a big impact.<\/li>\n<\/ul>\n<p>Poster sessions was pretty good with lots of entrants.\u00a0 Nothing ground breaking, but there were several topics that I now want to look up. (don\u2019t have notes with me today).<\/p>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p class=\"MsoNormal\"><strong>Wednesday:<\/strong><\/p>\n<ul>\n<li>Spent good part of the morning wandering the show floor, checking out some of the art and book displays, and seeing the show reels in the digital theater.\u00a0 The afternoon was my turn in booth duty.<\/li>\n<li>Show floor and hiring area was noticeably smaller than the California venue.\u00a0 Big things this year: 3D printers were really big with lots of people doing super-cool live demos.\u00a0 3D image capture was also big with some great facial\/body capture systems.\u00a0 Lots of 2-3 year computer art degree programs and schools were really pushing their schools.\u00a0 I worry that there is going to be a glut of artists in about 3-4 years when these masses of graduates get out.<\/li>\n<\/ul>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p class=\"MsoNormal\"><strong>Thursday:<\/strong><\/p>\n<p class=\"MsoNormal\">A grab bag day of talks as the all-day courses were mostly over.<\/p>\n<p>Hiding Complexity (occlusion culling):<\/p>\n<ul>\n<li><span><span><\/span><\/span>For Allen Wake\u2019s almost all outdoor scenes, he used a method of culling shadows that looked from objects to their visible lights.\u00a0 He\u2019d then use scissor rects for each cascaded shadow layer to avoid filling pixels where they weren\u2019t needed and not even render certain cascades if they were empty.\u00a0 He also used temporal cues\/temporal bounding boxes to avoid recalculating cascades if they didn\u2019t change much<\/li>\n<li><span><span><\/span><\/span>Latest Need for Speed \u2013 the classic SIMD tale.\u00a0 They realized a 40x speedup by just throwing out their fancy data structures and simply SIMD-izing their culling system and arranging the data by the track layout.<\/li>\n<li><span><span><\/span><\/span>Killzone 3 culling \u2013 many details, but basically they use a quick sw rasterizer distributed on many PS3 SPU\u2019s to determine list of objects to draw on a 640x360p depth buffer in 16 pixel high strips.\u00a0 In the visibility step, the assume all objects visible last frame are still visible, then test individual objects against the depth buffer in parallel.\u00a0 Do simple sphere reject first, then bounding box test if sphere test passes.\u00a0 For determining good occluders automatically, they use the low-poly physics mesh of the object.\u00a0 They pick objects that have a fairly large bounding box, and who\u2019s coverage area is near it\u2019s bounding box area.\u00a0 (actual coverage area is stored in meta-data).<\/li>\n<\/ul>\n<p>Smokin\u2019 Fluids:<span><span><\/span><\/span><\/p>\n<ul>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>Mostly non-realtime smoke simulation talks.\u00a0 Best talk was on capturing thin features in smoke simulations. They used a moderately low voxel field with particles to simulate.\u00a0 Then they did a clever pass over the data to \u2018condition\u2019 the voxel data to maintain superb fine details.\u00a0 Turned out to be almost 10x faster than traditional method and didn\u2019t suffer from the problems of simulations looking very different at higher and higher simulation densities.<\/li>\n<\/ul>\n<p class=\"MsoNormal\">Discrete differential geometry<\/p>\n<ul>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\"> <\/span><\/span><\/span>Some pretty heady talks on discrete laplacians and circular arc structures.\u00a0 Most of it was above my head \u2013 but was an interesting talk about how they could identify whether a curvy building could be made up of manufacturable, uniform pieces (like a geodesic dome)<\/li>\n<\/ul>\n<p class=\"MsoNormal\">Filtering Techniques for AA<\/p>\n<ul>\n<li><span><span><\/span><\/span>Great talk on AA techniques which really turned into the \u2018Why you should convert your game to MLAA today\u201d cheering session.\u00a0 Presentations started with different presentations on how people implemented MLAA in God of War III, on Xbox, and on PS3 for various games.<\/li>\n<li><span><span><\/span><\/span>Good talk on FXAA and SRAA as alternatives from nVidia \u2013 but over half the room left by this point.<\/li>\n<li><span><span><span style=\"font: 7pt 'Times New Roman'\"><\/span><\/span><\/span>One guy from nVidia got up and said if they could give you MSAA or the like for nearly free if they\u2019d convert back.\u00a0 The speaker said, \u201cNo, I\u2019d still keep MLAA on the CPU and then use the GPU for something else\u201d.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Summary:\u00a0 Very good trip, but not a huge \u2018groundbreaking\u2019 year of new technologies. Courses were really good and had a lot of good information from top-notch game developers\/houses.\u00a0 Most of the courses included a review\/update on \u2018what is the current state of the art\u2019 which is good for those who aren\u2019t following those niches closely on a regular basis. Voxels and voxel methods are kind of back in rage again \u2013 but for things like visibility, ambient occlusion, and AI&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/mattfife.com\/?p=478\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[5,8],"tags":[],"class_list":["post-478","post","type-post","status-publish","format-standard","hentry","category-technical","category-travel"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4WECr-7I","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts\/478","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=478"}],"version-history":[{"count":1,"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts\/478\/revisions"}],"predecessor-version":[{"id":778,"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts\/478\/revisions\/778"}],"wp:attachment":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}