{"id":1246,"date":"2014-08-28T23:17:00","date_gmt":"2014-08-28T22:17:00","guid":{"rendered":"http:\/\/mehm.net\/blog\/?p=1246"},"modified":"2014-09-09T22:13:39","modified_gmt":"2014-09-09T21:13:39","slug":"re-implementing-the-inner-workings-of-fortnites-shader-based-procedural-animations","status":"publish","type":"post","link":"https:\/\/mehm.net\/blog\/?p=1246","title":{"rendered":"Re-Implementing &#8220;The Inner Workings of Fortnite&#8217;s Shader Based Procedural Animations&#8221;"},"content":{"rendered":"<p>After attending GDC Europe last year, I was able to rummage through the treasure that is the <a href=\"http:\/\/www.gdcvault.com\/\">GDC Vault <\/a>for a while ;-) I came across a presentation by Jonathan Lindquist, technical artist at Epic games, who talked about how they did stylized animation for <a href=\"https:\/\/www.fortnite.com\/\">Fortnite<\/a> in the Unreal Engine. If (like me, I have to admit) you haven&#8217;t heard about Fortnite, have a look on the website I linked to :-)<\/p>\n<p>I&#8217;ve been interested in deepening my understanding of shaders in the last time, so the idea of implementing the shaders that were presented in Unity started to form. This turned out to be a good exercise in writing vertex shaders in Unity along with a small aside of writing scripts for Blender to boot!<br \/>\nLindquist\u00c2\u00a0talks about three shaders, they are:<\/p>\n<p><a title=\"Stylized Culling\" href=\"http:\/\/mehm.net\/blog\/?p=1247\"><strong>Stylized culling:<\/strong><\/a> Instead of fading out objects when they are about to be culled to reduce &#8220;popping&#8221;, they decided to go for a more cartoonish version which involves a &#8220;bouncy&#8221; scale animation.<\/p>\n<p><a title=\"Bounce Effect\" href=\"http:\/\/mehm.net\/blog\/?p=1265\"><strong>Bounce effect:<\/strong><\/a> An effect that is played on objects when they are hit by something (in the game, characters can walk around destroying objects like walls to collect the resources contained therein).<\/p>\n<p><a title=\"Self-building Structures\" href=\"http:\/\/mehm.net\/blog\/?p=1278\"><strong>Self-building structures:<\/strong><\/a>\u00c2\u00a0Definitely the coolest looking effect, it is used to visualize walls which appear to build themselves.<\/p>\n<p>The source code of the shaders is available on <a href=\"https:\/\/github.com\/SpookyFM\/Shaders\">github<\/a>.<\/p>\n<p>I will write about the shaders and show my implementation in the order from easy to hard. The simplest shader is definitely the stylized culling, so the first post in the series will be about this one.<\/p>\n<p>You can find the <a href=\"http:\/\/www.gdcvault.com\/play\/1018170\/The-Inner-Workings-of-Fortnite\">slides<\/a> for free on the GDC Vault.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After attending GDC Europe last year, I was able to rummage through the treasure that is the GDC Vault for a while ;-) I came across a presentation by Jonathan Lindquist, technical artist at Epic games, who talked about how they did stylized animation for Fortnite in the Unreal Engine. If (like me, I have [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1262,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,3],"tags":[33,106,107],"_links":{"self":[{"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1246"}],"collection":[{"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1246"}],"version-history":[{"count":6,"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1246\/revisions"}],"predecessor-version":[{"id":1299,"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1246\/revisions\/1299"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=\/wp\/v2\/media\/1262"}],"wp:attachment":[{"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mehm.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}