{"id":353,"date":"2014-05-14T16:37:51","date_gmt":"2014-05-14T23:37:51","guid":{"rendered":"http:\/\/www.teamfizzgames.com\/Matt\/?p=353"},"modified":"2014-05-25T20:19:09","modified_gmt":"2014-05-26T03:19:09","slug":"how-i-spent-my-summer-vacation","status":"publish","type":"post","link":"https:\/\/www.teamfizzgames.com\/Matt\/how-i-spent-my-summer-vacation\/","title":{"rendered":"How I Spent My Summer Vacation"},"content":{"rendered":"<p>Last summer I got the opportunity to intern at Blizzard and while it&#8217;s something that I&#8217;ve mentioned, I haven&#8217;t really delved into the experience or what I worked on at all. \u00a0That is, until now! \u00a0Because features I worked on are now shipping and I am super stoked to see them and to share them.<\/p>\n<p>Before I get started, I will say that in the interest of not violating anything I signed with Blizzard, I won&#8217;t be talking too deeply about technical implementation. \u00a0On the other hand, while I&#8217;m very proud of what I did during my internship, none of it is anything I would say is cutting edge and therefore it&#8217;s probably pretty easy to replicate without me walking you through it.<\/p>\n<p>So, my internship was as an engine programmer on Team 1 (Starcraft 2\/Heroes of the Storm), and my work was primarily in graphics. \u00a0I did a wide range of things; working on the core renderer, writing some HLSL, working new features into the art pipeline, and doing a lot of bug fixing. \u00a0It was a very rewarding experience, and an amazing time in my life. \u00a0One of the bigger features I implemented was occlusion based unit outlining, and it&#8217;s something that&#8217;s seeing pretty widespread usage in the Heroes technical alpha right now.<\/p>\n<p><a href=\"http:\/\/www.teamfizzgames.com\/Matt\/wp-content\/uploads\/2014\/05\/HeroesOutlines.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-354\" alt=\"HeroesOutlines\" src=\"http:\/\/www.teamfizzgames.com\/Matt\/wp-content\/uploads\/2014\/05\/HeroesOutlines-1024x576.png\" width=\"800\" height=\"450\" srcset=\"https:\/\/www.teamfizzgames.com\/Matt\/wp-content\/uploads\/2014\/05\/HeroesOutlines-1024x576.png 1024w, https:\/\/www.teamfizzgames.com\/Matt\/wp-content\/uploads\/2014\/05\/HeroesOutlines-300x168.png 300w, https:\/\/www.teamfizzgames.com\/Matt\/wp-content\/uploads\/2014\/05\/HeroesOutlines-250x140.png 250w, https:\/\/www.teamfizzgames.com\/Matt\/wp-content\/uploads\/2014\/05\/HeroesOutlines-150x84.png 150w, https:\/\/www.teamfizzgames.com\/Matt\/wp-content\/uploads\/2014\/05\/HeroesOutlines.png 1920w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>The concept here is pretty straight forward. \u00a0Designers wanted to be able to tag objects as occluders or occludees (or neither), and then have any portion of an occludee that&#8217;s occluded by an occluder be outlined. \u00a0And they wanted it done in team color. \u00a0Up to this point I hadn&#8217;t ever used the stencil buffer in my work, but I was familiar enough with it to see it as a logical choice to handle this. \u00a0Occluders and occludees were each masked with different bits of the stencil buffer, the blur would then mask a third stencil bit, and the final copy\/resolve would only operate where there was an overlap of the occluder\/blur bits and no overlap with the occludee bit. \u00a0That made the effect work, but there were a lot of additional considerations in regards to performance and how much it actually helped players that I won&#8217;t really be talking about. \u00a0And that may or may not be that interesting anyway.<\/p>\n<p>Here&#8217;s a video where you can see my effect in action!<\/p>\n<p>http:\/\/youtu.be\/652N8sOQb4M<\/p>\n<p>While I worked on a lot of other things during my internship, that was by far the biggest feature, and the one I can most readily point at and say, &#8220;I did that!&#8221;. \u00a0And it&#8217;s shipped. \u00a0I cannot stress enough how rad it is to see something I did be so prevalent in an amazing game like Heroes of the Storm.<\/p>\n<p>So, that&#8217;s it for Blizzard work. \u00a0I have a number of posts to make about work on my own renderer, and those should be coming soon. \u00a0I made a lot of fixes, tweaks, and updates to shaders and general math that improved things a lot in the final month or so of the semester and I&#8217;m pretty excited to share them as well. \u00a0But, I&#8217;m also just getting started with summer classes to finish out my degree, so it might be a little while before I get them written up. \u00a0We&#8217;ll see!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last summer I got the opportunity to intern at Blizzard and while it&#8217;s something that I&#8217;ve mentioned, I haven&#8217;t really delved into the experience or what I worked on at all. \u00a0That is, until now! \u00a0Because features I worked on are now shipping and I am super stoked to see \u2026 <a class=\"continue-reading-link\" href=\"https:\/\/www.teamfizzgames.com\/Matt\/how-i-spent-my-summer-vacation\/\"> Continue reading <span class=\"meta-nav\">&rarr; <\/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":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[2],"tags":[24,26,25],"class_list":["post-353","post","type-post","status-publish","format-standard","hentry","category-graphicsdev","tag-blizzard","tag-blur","tag-heroes-of-the-storm"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p39ImV-5H","_links":{"self":[{"href":"https:\/\/www.teamfizzgames.com\/Matt\/wp-json\/wp\/v2\/posts\/353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.teamfizzgames.com\/Matt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.teamfizzgames.com\/Matt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.teamfizzgames.com\/Matt\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.teamfizzgames.com\/Matt\/wp-json\/wp\/v2\/comments?post=353"}],"version-history":[{"count":3,"href":"https:\/\/www.teamfizzgames.com\/Matt\/wp-json\/wp\/v2\/posts\/353\/revisions"}],"predecessor-version":[{"id":360,"href":"https:\/\/www.teamfizzgames.com\/Matt\/wp-json\/wp\/v2\/posts\/353\/revisions\/360"}],"wp:attachment":[{"href":"https:\/\/www.teamfizzgames.com\/Matt\/wp-json\/wp\/v2\/media?parent=353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.teamfizzgames.com\/Matt\/wp-json\/wp\/v2\/categories?post=353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.teamfizzgames.com\/Matt\/wp-json\/wp\/v2\/tags?post=353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}