{"id":524,"date":"2012-11-29T10:01:30","date_gmt":"2012-11-29T10:01:30","guid":{"rendered":"http:\/\/lousodrome.net\/blog\/light\/?p=524"},"modified":"2012-11-29T10:01:30","modified_gmt":"2012-11-29T10:01:30","slug":"maximizing-depth-buffer-range-and-precision","status":"publish","type":"post","link":"https:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/","title":{"rendered":"Maximizing depth buffer range and precision"},"content":{"rendered":"<blockquote><p>Half of the available range is packed into tiny distance from the near plane to twice the near plane distance.<\/p><\/blockquote>\n<p>This quote from <a href=\"http:\/\/outerra.blogspot.com\/2012\/11\/maximizing-depth-buffer-range-and.html\">this article of the Outerra blog<\/a> is more or less its punch line. The author explains the precision issues with typical depth buffer use, and explores ways to get better results. Since Outerra is a planet engine, no wonder depth precision must be critical.<\/p>\n<p>I discovered <a href=\"http:\/\/www.outerra.com\/\">Outerra <\/a>and <a href=\"http:\/\/outerra.blogspot.com\/\">its blog<\/a> fairly recently, through a couple of mentions in the Flipcode&#8217;s Daily Flip, and was impressed by its rendering. The amount of work that went into it must be insane. See these captures demonstrating the space to ground transition or the grass rendering for instance:<\/p>\n<p><iframe loading=\"lazy\" width=\"500\" height=\"281\" src=\"http:\/\/www.youtube.com\/embed\/XGMs7Iem3Vg?rel=0\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p><iframe loading=\"lazy\" width=\"500\" height=\"281\" src=\"http:\/\/www.youtube.com\/embed\/pdMaFWGLxKE?rel=0\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Half of the available range is packed into tiny distance from the near plane to twice the near plane distance. This quote from this article of the Outerra blog is more or less its punch line. The author explains the &hellip; <a href=\"https:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/\">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":[],"categories":[17],"tags":[287,291,289,290,288,153,286],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Maximizing depth buffer range and precision &ndash; Light is beautiful<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Maximizing depth buffer range and precision &ndash; Light is beautiful\" \/>\n<meta property=\"og:description\" content=\"Half of the available range is packed into tiny distance from the near plane to twice the near plane distance. This quote from this article of the Outerra blog is more or less its punch line. The author explains the &hellip; Continue reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/\" \/>\n<meta property=\"og:site_name\" content=\"Light is beautiful\" \/>\n<meta property=\"article:published_time\" content=\"2012-11-29T10:01:30+00:00\" \/>\n<meta name=\"author\" content=\"Julien Guertault\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Zavie\" \/>\n<meta name=\"twitter:site\" content=\"@Zavie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Julien Guertault\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/\"},\"author\":{\"name\":\"Julien Guertault\",\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f\"},\"headline\":\"Maximizing depth buffer range and precision\",\"datePublished\":\"2012-11-29T10:01:30+00:00\",\"dateModified\":\"2012-11-29T10:01:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/\"},\"wordCount\":123,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f\"},\"keywords\":[\"depth buffer\",\"grass rendering\",\"optimi\",\"Outerra\",\"precision\",\"tech demo\",\"terrain rendering\"],\"articleSection\":[\"Rendering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/\",\"url\":\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/\",\"name\":\"Maximizing depth buffer range and precision &ndash; Light is beautiful\",\"isPartOf\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/#website\"},\"datePublished\":\"2012-11-29T10:01:30+00:00\",\"dateModified\":\"2012-11-29T10:01:30+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/lousodrome.net\/blog\/light\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Maximizing depth buffer range and precision\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/#website\",\"url\":\"http:\/\/lousodrome.net\/blog\/light\/\",\"name\":\"Light is beautiful\",\"description\":\"Thoughts of a graphics programmer, demoscener and spare time photographer\",\"publisher\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/lousodrome.net\/blog\/light\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f\",\"name\":\"Julien Guertault\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g\",\"caption\":\"Julien Guertault\"},\"logo\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/image\/\"},\"url\":\"https:\/\/lousodrome.net\/blog\/light\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Maximizing depth buffer range and precision &ndash; Light is beautiful","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":"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/","og_locale":"en_US","og_type":"article","og_title":"Maximizing depth buffer range and precision &ndash; Light is beautiful","og_description":"Half of the available range is packed into tiny distance from the near plane to twice the near plane distance. This quote from this article of the Outerra blog is more or less its punch line. The author explains the &hellip; Continue reading &rarr;","og_url":"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/","og_site_name":"Light is beautiful","article_published_time":"2012-11-29T10:01:30+00:00","author":"Julien Guertault","twitter_card":"summary_large_image","twitter_creator":"@Zavie","twitter_site":"@Zavie","twitter_misc":{"Written by":"Julien Guertault","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/#article","isPartOf":{"@id":"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/"},"author":{"name":"Julien Guertault","@id":"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f"},"headline":"Maximizing depth buffer range and precision","datePublished":"2012-11-29T10:01:30+00:00","dateModified":"2012-11-29T10:01:30+00:00","mainEntityOfPage":{"@id":"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/"},"wordCount":123,"commentCount":0,"publisher":{"@id":"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f"},"keywords":["depth buffer","grass rendering","optimi","Outerra","precision","tech demo","terrain rendering"],"articleSection":["Rendering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/","url":"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/","name":"Maximizing depth buffer range and precision &ndash; Light is beautiful","isPartOf":{"@id":"http:\/\/lousodrome.net\/blog\/light\/#website"},"datePublished":"2012-11-29T10:01:30+00:00","dateModified":"2012-11-29T10:01:30+00:00","breadcrumb":{"@id":"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/lousodrome.net\/blog\/light\/2012\/11\/29\/maximizing-depth-buffer-range-and-precision\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/lousodrome.net\/blog\/light\/"},{"@type":"ListItem","position":2,"name":"Maximizing depth buffer range and precision"}]},{"@type":"WebSite","@id":"http:\/\/lousodrome.net\/blog\/light\/#website","url":"http:\/\/lousodrome.net\/blog\/light\/","name":"Light is beautiful","description":"Thoughts of a graphics programmer, demoscener and spare time photographer","publisher":{"@id":"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/lousodrome.net\/blog\/light\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f","name":"Julien Guertault","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g","caption":"Julien Guertault"},"logo":{"@id":"http:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/image\/"},"url":"https:\/\/lousodrome.net\/blog\/light\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/posts\/524"}],"collection":[{"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/comments?post=524"}],"version-history":[{"count":0,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/posts\/524\/revisions"}],"wp:attachment":[{"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/media?parent=524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/categories?post=524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/tags?post=524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}