{"id":1210,"date":"2010-03-31T17:21:59","date_gmt":"2010-03-31T23:21:59","guid":{"rendered":"http:\/\/www.realtimerendering.com\/blog\/?p=1210"},"modified":"2010-03-31T17:21:59","modified_gmt":"2010-03-31T23:21:59","slug":"morphological-antialiasing-in-god-of-war-iii","status":"publish","type":"post","link":"https:\/\/www.realtimerendering.com\/blog\/morphological-antialiasing-in-god-of-war-iii\/","title":{"rendered":"Morphological Antialiasing in God of War III"},"content":{"rendered":"<p>Eric wrote <a href=\"http:\/\/www.realtimerendering.com\/blog\/morphological-antialiasing\/\">a post back in July<\/a> about <a href=\"http:\/\/visual-computing.intel-research.net\/publications\/mlaa.pdf\">a paper called <em>Morphological Antialiasing<\/em><\/a> which had been presented at <a href=\"http:\/\/www.highperformancegraphics.org\/previous\/www_2009\/\">HPG 2009<\/a> (source code for the paper is available <a href=\"http:\/\/visual-computing.intel-research.net\/publications\/testMLAA.zip\">here<\/a>).\u00a0 The paper described a post-processing algorithm which could smooth out edges as if by magic.\u00a0 Although the screenshots were impressive, the technique seemed too expensive to be practical for games on current hardware; also there were reportedly bad artifacts when applied to moving images.\u00a0 For these reasons I didn&#8217;t pay too much attention to the technique.\u00a0 It was reported (<a href=\"http:\/\/www.realtimerendering.com\/blog\/7-things-for-december-23\/\">including by us<\/a>) that the game <a href=\"http:\/\/www.pandemicstudios.com\/thesaboteur\/\"><em>The Saboteur<\/em><\/a> was using this technique on the PS3 but this <a href=\"http:\/\/www.eurogamer.net\/articles\/digitalfoundry-saboteur-aa-blog-entry\">turned out to be a false alarm<\/a>.<\/p>\n<p>However, <a href=\"http:\/\/www.godofwar.com\/\">God of War III<\/a> is actually <a href=\"http:\/\/forums.godofwar.com\/t5\/God-of-War-III-Discussion\/Developers-on-Forums-Right-Here\/m-p\/30866#M19074\">using Morphological Antialiasing<\/a>.\u00a0 I&#8217;ve looked closely at the game and the technique they use appears not to exhibit significant motion artifacts; it definitely looks better than the MSAA2X technique it replaced (which was used in the E3 2009 demo).\u00a0 <a href=\"http:\/\/forums.godofwar.com\/t5\/God-of-War-III-Discussion\/Developers-on-Forums-Right-Here\/m-p\/31188#M19355\">According to the game&#8217;s art director<\/a>, the technique used &#8220;goes beyond&#8221; the original paper; this may mean that they improved it in ways that reduce the motion artifacts.<\/p>\n<p>My initial impression that the technique is too expensive did not take into account the impressive horsepower of the PS3&#8217;s Cell chip.\u00a0 After optimization, the technique runs in <a href=\"http:\/\/twitter.com\/TDMoss\/status\/9934979098\">20 milliseconds on a single SPU<\/a>; running it on 5 SPUs in parallel enables it to complete execution in 4 milliseconds.\u00a0 Most importantly, turning off MSAA saved them 5 milliseconds of GPU time, which on the PS3 is a significant gain (the GPU is most often the bottleneck on PS3 games).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eric wrote a post back in July about a paper called Morphological Antialiasing which had been presented at HPG 2009 (source code for the paper is available here).\u00a0 The paper described a post-processing algorithm which could smooth out edges as if by magic.\u00a0 Although the screenshots were impressive, the technique seemed too expensive to be [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[376,375],"class_list":["post-1210","post","type-post","status-publish","format-standard","hentry","category-reports","tag-god-of-war-iii","tag-morphological-antialiasing"],"_links":{"self":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/1210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/comments?post=1210"}],"version-history":[{"count":3,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/1210\/revisions"}],"predecessor-version":[{"id":1213,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/1210\/revisions\/1213"}],"wp:attachment":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/media?parent=1210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/categories?post=1210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/tags?post=1210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}