{"id":223,"date":"2013-04-03T09:09:22","date_gmt":"2013-04-03T16:09:22","guid":{"rendered":"http:\/\/martinecker.com\/martincodes\/?p=223"},"modified":"2013-11-17T19:12:50","modified_gmt":"2013-11-18T03:12:50","slug":"cool-link-stash-march-2013","status":"publish","type":"post","link":"http:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/","title":{"rendered":"Cool Link Stash, March 2013"},"content":{"rendered":"<h4>Graphics<\/h4>\n<p>Fabian Giesen finished his <a href=\"http:\/\/fgiesen.wordpress.com\/2013\/02\/17\/optimizing-sw-occlusion-culling-index\/\" target=\"_blank\">excellent series on low-level optimization of an Intel software occlusion culling sample<\/a>. The whole series is an excellent read. Highly recommended.<\/p>\n<p>Unity 4.1 has a new, useful feature called Property Drawers, which allow you to more easily draw some of your component properties in the inspector in a custom way. There's a <a href=\"http:\/\/blogs.unity3d.com\/2012\/09\/07\/property-drawers-in-unity-4\/\" target=\"_blank\">good blog post that describes how to use them<\/a>. Another new feature is <a href=\"http:\/\/blogs.unity3d.com\/2013\/03\/15\/4-1-graphics-features\/\" target=\"_blank\">support for shader replacement<\/a>, not just for post processing as it used to be, but also for the whole scene (including lighting).<\/p>\n<p><a href=\"http:\/\/kristianduske.com\/trenchbroom\/\" target=\"_blank\">TrenchBroom<\/a> is a pretty fantastic open source project with excellent documentation. It's a cross-platform level editor for Quake, but with a modern twist. Instead of working in multiple 2D viewports you work completely in a 3D viewport. <\/p>\n<p>Given that the new Playstation 4 is powered by an AMD GPU with the Graphics Corex Next (GCN) architecture, <a href=\"http:\/\/www.amd.com\/us\/Documents\/GCN_Architecture_whitepaper.pdf\" target=\"_blank\">this AMD whitepaper on the GCN architecture<\/a> is a good introduction to how the hardware looks like.<\/p>\n<p>On that note, <a href=\"http:\/\/distantsoulsdev.blogspot.com\/2013\/03\/gcns-25-performance-tips-from-nick.html\" target=\"_blank\">here's a nice collection of performance tips for the AMD GCN architecture<\/a>, originally posted on Twitter by AMD's Nick Thibieroz.<\/p>\n<p>While not immediately relevant for real-time rendering, but nevertheless interesting (as the technique can achieve interactive framerates on current high-end GPUs), is a paper by Jose Esteve et al called <a href=\"http:\/\/www.joesfer.com\/?p=154\" target=\"_blank\">Bringing Transmittance Function Maps to the Screen<\/a>. The paper describes an adaptive variation of the algorithm presented in the paper <a href=\"http:\/\/jmarvie.free.fr\/Publis\/2011_I3D\/transmittanceFunctionMapping.pdf\" target=\"_blank\">Transmittance Function Mapping<\/a> by Cyril Delalandre et al to render single scattering in participating media. Essentially, the idea is to render a shadow map from the point of view of the light source and projecting the transmittance function using a decomposition into the Fourier cosine series as basis functions. The resulting coefficients are stored in a texture map called the transmittance function map. When rendering from the camera each view ray that enters the participating media volume is ray-marched. For each step along the ray, if the light is visible from that point, the transmittance function map is sampled and evaluated. This new paper now adds adaptive ray marching to the algorithm, where thresholding is used to find out if the transmittance function has sharp falloffs. If it does, a second ray marching is performed to finely sample the transmittance function in just that region. This gives better results if the participating volume is not uniformly dense, i.e. it has regions of higher density where the transmittance decays rapidly and wispy regions where the transmittance changes slowly.<\/p>\n<p><\/p>\n<h4>C++<\/h4>\n<p>The <a href=\"https:\/\/code.google.com\/p\/zopfli\/\" target=\"_blank\">Zopflic Compression Algorithm<\/a> is a new zlib-compatible compressor. It takes more time (a _lot_ more time, about 100x) but compression is about 5% better than zlib.<\/p>\n<p><\/p>\n<h4>Other<\/h4>\n<p><a href=\"http:\/\/pytools.codeplex.com\/\" target=\"_blank\">Python Tools for Visual Studio<\/a> is a pretty nifty plugin for full Python integration into Visual Studio. It supports editing, browsing, debugging, profiling, CPython, IronPython, Intellisense, and a <\/p>\n<p><a href=\"http:\/\/www.iguanademos.com\/Jare\/wp\/?p=2663\" target=\"_blank\">Jare's blog has a great post<\/a> collecting links to slides from talks of this year's GDC.<\/p>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Graphics Fabian Giesen finished his excellent series on low-level optimization of an Intel software occlusion culling sample. The whole series is an excellent read. Highly recommended. Unity 4.1 has a new, useful feature called Property Drawers, which allow you to &hellip; <a href=\"http:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[9],"tags":[],"class_list":["post-223","post","type-post","status-publish","format-standard","hentry","category-cool-link-stash"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.12 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cool Link Stash, March 2013 - Martin Codes<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cool Link Stash, March 2013 - Martin Codes\" \/>\n<meta property=\"og:description\" content=\"Graphics Fabian Giesen finished his excellent series on low-level optimization of an Intel software occlusion culling sample. The whole series is an excellent read. Highly recommended. Unity 4.1 has a new, useful feature called Property Drawers, which allow you to &hellip; Continue reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/\" \/>\n<meta property=\"og:site_name\" content=\"Martin Codes\" \/>\n<meta property=\"article:published_time\" content=\"2013-04-03T16:09:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-11-18T03:12:50+00:00\" \/>\n<meta name=\"author\" content=\"Martin Ecker\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Martin Ecker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/\",\"url\":\"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/\",\"name\":\"Cool Link Stash, March 2013 - Martin Codes\",\"isPartOf\":{\"@id\":\"http:\/\/martinecker.com\/martincodes\/#website\"},\"datePublished\":\"2013-04-03T16:09:22+00:00\",\"dateModified\":\"2013-11-18T03:12:50+00:00\",\"author\":{\"@id\":\"http:\/\/martinecker.com\/martincodes\/#\/schema\/person\/2ad254c988c5aaef13e54a1cadde5816\"},\"breadcrumb\":{\"@id\":\"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/martinecker.com\/martincodes\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cool Link Stash, March 2013\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/martinecker.com\/martincodes\/#website\",\"url\":\"http:\/\/martinecker.com\/martincodes\/\",\"name\":\"Martin Codes\",\"description\":\"Ramblings from a video game\/graphics programmer on anything coding- or graphics-related\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/martinecker.com\/martincodes\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/martinecker.com\/martincodes\/#\/schema\/person\/2ad254c988c5aaef13e54a1cadde5816\",\"name\":\"Martin Ecker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/martinecker.com\/martincodes\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7dfd53e699c35d22210a3c63e4b3e2cfae66f49029b0cde5f3c9d86847471d7a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7dfd53e699c35d22210a3c63e4b3e2cfae66f49029b0cde5f3c9d86847471d7a?s=96&d=mm&r=g\",\"caption\":\"Martin Ecker\"},\"url\":\"http:\/\/martinecker.com\/martincodes\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cool Link Stash, March 2013 - Martin Codes","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/","og_locale":"en_US","og_type":"article","og_title":"Cool Link Stash, March 2013 - Martin Codes","og_description":"Graphics Fabian Giesen finished his excellent series on low-level optimization of an Intel software occlusion culling sample. The whole series is an excellent read. Highly recommended. Unity 4.1 has a new, useful feature called Property Drawers, which allow you to &hellip; Continue reading &rarr;","og_url":"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/","og_site_name":"Martin Codes","article_published_time":"2013-04-03T16:09:22+00:00","article_modified_time":"2013-11-18T03:12:50+00:00","author":"Martin Ecker","twitter_misc":{"Written by":"Martin Ecker","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/","url":"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/","name":"Cool Link Stash, March 2013 - Martin Codes","isPartOf":{"@id":"http:\/\/martinecker.com\/martincodes\/#website"},"datePublished":"2013-04-03T16:09:22+00:00","dateModified":"2013-11-18T03:12:50+00:00","author":{"@id":"http:\/\/martinecker.com\/martincodes\/#\/schema\/person\/2ad254c988c5aaef13e54a1cadde5816"},"breadcrumb":{"@id":"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/martinecker.com\/martincodes\/cool-link-stash-march-2013\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/martinecker.com\/martincodes\/"},{"@type":"ListItem","position":2,"name":"Cool Link Stash, March 2013"}]},{"@type":"WebSite","@id":"http:\/\/martinecker.com\/martincodes\/#website","url":"http:\/\/martinecker.com\/martincodes\/","name":"Martin Codes","description":"Ramblings from a video game\/graphics programmer on anything coding- or graphics-related","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/martinecker.com\/martincodes\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/martinecker.com\/martincodes\/#\/schema\/person\/2ad254c988c5aaef13e54a1cadde5816","name":"Martin Ecker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/martinecker.com\/martincodes\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7dfd53e699c35d22210a3c63e4b3e2cfae66f49029b0cde5f3c9d86847471d7a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7dfd53e699c35d22210a3c63e4b3e2cfae66f49029b0cde5f3c9d86847471d7a?s=96&d=mm&r=g","caption":"Martin Ecker"},"url":"http:\/\/martinecker.com\/martincodes\/author\/admin\/"}]}},"_links":{"self":[{"href":"http:\/\/martinecker.com\/martincodes\/wp-json\/wp\/v2\/posts\/223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/martinecker.com\/martincodes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/martinecker.com\/martincodes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/martinecker.com\/martincodes\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/martinecker.com\/martincodes\/wp-json\/wp\/v2\/comments?post=223"}],"version-history":[{"count":11,"href":"http:\/\/martinecker.com\/martincodes\/wp-json\/wp\/v2\/posts\/223\/revisions"}],"predecessor-version":[{"id":278,"href":"http:\/\/martinecker.com\/martincodes\/wp-json\/wp\/v2\/posts\/223\/revisions\/278"}],"wp:attachment":[{"href":"http:\/\/martinecker.com\/martincodes\/wp-json\/wp\/v2\/media?parent=223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/martinecker.com\/martincodes\/wp-json\/wp\/v2\/categories?post=223"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/martinecker.com\/martincodes\/wp-json\/wp\/v2\/tags?post=223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}