<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Irradiance Blog</title><link>https://irradiance.ca/</link><description>Recent content on Irradiance Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 05 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://irradiance.ca/index.xml" rel="self" type="application/rss+xml"/><item><title>Improving Direct Lighting Material Occlusion - Part 2</title><link>https://irradiance.ca/posts/microshadowing-part2/</link><pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate><guid>https://irradiance.ca/posts/microshadowing-part2/</guid><description>&lt;table class="imagecomment"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: center"&gt;&lt;img src="https://irradiance.ca/images/microshadowing-part2/TopImage.jpg" alt=""&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;em&gt;Skin with micro-occlusion at the top, and micro-shadowing below. Both are using the same micro-occlusion data and were taken with the exact same exposure.&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href="../microshadowing-part1/"&gt;Last time&lt;/a&gt; I went over &lt;a href="../microshadowing-part1/#micro-occlusion"&gt;micro-occlusion&lt;/a&gt;, existing &lt;a href="../microshadowing-part1/#micro-shadowing"&gt;micro-shadowing&lt;/a&gt; approaches, and provided an &lt;a href="../microshadowing-part1/#analytical-alternative"&gt;analytical alternative&lt;/a&gt; approach. But &lt;a href="../microshadowing-part1/#next-time"&gt;at the end of that post&lt;/a&gt; I went over the fact that none of the results of those approaches depended on the definition of the microsurface.&lt;/p&gt;
&lt;p&gt;The microsurface is not only relevant to the specular component, but it is also becoming relevant to the diffuse component. While some engines still rely on a Lambert diffuse bidirectional reflectance distribution function (BRDF), many transitioned to diffuse BRDFs that have other characteristics such as being roughness-aware. Some diffuse BRDFs like &lt;a href="https://cave.cs.columbia.edu/Statics/publications/pdfs/Oren_SIGGRAPH94.pdf" target="_blank" rel="nofollow noopener noreferrer" &gt;Oren-Nayar&amp;rsquo;s&lt;/a&gt; need a custom roughness parameter, but other ones leverage a shared definition of a microsurface for the specular and diffuse component. That allows them to converge to the same diffuse and specular roughness parameter as they have the same underlaying microsurface.&lt;/p&gt;</description></item><item><title>Improving Direct Lighting Material Occlusion - Part 1</title><link>https://irradiance.ca/posts/microshadowing-part1/</link><pubDate>Sat, 20 Dec 2025 00:00:00 +0000</pubDate><guid>https://irradiance.ca/posts/microshadowing-part1/</guid><description>&lt;table class="imagecomment"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: center"&gt;&lt;img src="https://irradiance.ca/images/microshadowing-part1/TopImage.jpg" alt=""&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;&lt;em&gt;Piqué fabric with micro-occlusion on the top, and micro-shadowing at the bottom. Both are using the same micro-occlusion map.&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Geometry virtualization and displacement systems like &lt;a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/nanite-virtualized-geometry-in-unreal-engine" target="_blank" rel="nofollow noopener noreferrer" &gt;Nanite&lt;/a&gt; has allowed us to substantially increase the geometry resolution. But when it comes to representing small details like cavities, cracks, and creases, those types of solutions are too expensive to be used systemically in a game for a current generation console. As long as we have to rely on normal maps to encode geometric detail there will be a need to handle direct lighting occlusion at the mesoscopic scale. To do that most engines have relied on baking micro-occlusion onto textures or buffers. While that workaround is better than nothing, it results in a flat representation of those small details. In this series of posts I&amp;rsquo;ll touch on the issues with micro-occlusion and look at micro-shadowing as an improvement.&lt;/p&gt;</description></item><item><title>About</title><link>https://irradiance.ca/about/</link><pubDate>Mon, 13 Oct 2025 00:00:00 +0000</pubDate><guid>https://irradiance.ca/about/</guid><description>&lt;p&gt;I&amp;rsquo;m Pablo Zurita, a Principal Rendering Engineer. Most of my experience is in the games industry working as a rendering engineer. I have worked as an individual contributor or as a lead on multiple game companies with my longest stint being at &lt;a href="https://www.ea.com" target="_blank" rel="nofollow noopener noreferrer" &gt;Electronic Arts&lt;/a&gt;. I have also worked on companies outside the gaming industry such as &lt;a href="https://www.autodesk.com" target="_blank" rel="nofollow noopener noreferrer" &gt;Autodesk&lt;/a&gt;, &lt;a href="https://web.archive.org/web/20241007115529/https://research.dreamworks.com/" target="_blank" rel="nofollow noopener noreferrer" &gt;DreamWorks R&amp;amp;D&lt;/a&gt;, etc.&lt;/p&gt;</description></item><item><title>Physically Based Content</title><link>https://irradiance.ca/posts/pbr/</link><pubDate>Mon, 13 Oct 2025 00:00:00 +0000</pubDate><guid>https://irradiance.ca/posts/pbr/</guid><description>&lt;p&gt;While it has been over a decade since the sea-change towards physically based rendering (PBR) started, it isn&amp;rsquo;t rare to find that artists and engineers still have certain challenges when it comes to PBR. Some concepts are hard to grasp, and the trade-offs being made to fulfill artistic objectives are usually misunderstood. Over the years I have had the chance to work on the implementation of PBR on multiple engines used in AAA games, as well as working on games that used PBR engines. That meant that I had the responsibility of helping artists and engineers understand how to work within that context, so I thought it would be a good idea to share some of that experience.&lt;/p&gt;</description></item><item><title>Resume</title><link>https://irradiance.ca/resume/</link><pubDate>Mon, 13 Oct 2025 00:00:00 +0000</pubDate><guid>https://irradiance.ca/resume/</guid><description>&lt;div class="anchorfix" id="pablo-zurita"&gt;&lt;/div&gt; 
&lt;h2 id="pablo-zurita"&gt;&lt;strong&gt;Pablo Zurita&lt;/strong&gt;&lt;a href="#pablo-zurita" class="anchor" aria-hidden="true"&gt;&lt;/a&gt;&lt;/h2&gt;


&lt;p&gt;Vancouver, BC, Canada.&lt;br&gt;
Argentine Canadian citizen.&lt;/p&gt;
&lt;div class="anchorfix" id="overview"&gt;&lt;/div&gt; 
&lt;h3 id="overview"&gt;Overview&lt;a href="#overview" class="anchor" aria-hidden="true"&gt;&lt;/a&gt;&lt;/h3&gt;


&lt;p&gt;Principal rendering engineer with multiple years of experience writing rendering technology for AAA games, visualization, DCC applications, and CG animation under different technology stacks and engines such as Unreal Engine, Unity, and Frostbite. Experienced working on-site and remotely, as both individual contributor and as a team leader.&lt;/p&gt;
&lt;p&gt;Product-focused engineer interested in all aspects of producing fully featured, high-performance software that empowers artists and game designers. Specialized in design and optimization of lighting technology, shading models, and related infrastructure.&lt;/p&gt;</description></item><item><title>Game Development Principles</title><link>https://irradiance.ca/posts/principles/</link><pubDate>Fri, 12 Sep 2025 00:00:00 +0000</pubDate><guid>https://irradiance.ca/posts/principles/</guid><description>&lt;p&gt;I joined the industry quite some time ago, and that time has given me the chance to work in studios that were on different stages. Most of my experience has been at big AAA studios or large companies, and the only experience I missed was the indie experience. I have worked on very established studios with multiple decades of history, as well as studios that didn&amp;rsquo;t have much more than a year (but established to do development at the AAA level).&lt;/p&gt;</description></item><item><title>Memory Stomp Allocator</title><link>https://irradiance.ca/posts/stomp/</link><pubDate>Mon, 29 Jun 2015 00:00:00 +0000</pubDate><guid>https://irradiance.ca/posts/stomp/</guid><description>&lt;p&gt;A decade ago a wrote a stomp allocator for Unreal Engine 4. I wrote it out of necessity when I was working on one of the cancelled iterations of &lt;a href="https://www.youtube.com/watch?v=AWFaj4IQ4ro" target="_blank" rel="nofollow noopener noreferrer" &gt;Dead Island 2&lt;/a&gt;. To avoid introducing engine divergences (a topic I will probably write about at some point) I made the change public and provided a pull request for it. The pull request was accepted, and it was useful enough that Epic wrote about it in &lt;a href="https://www.unrealengine.com/en-US/blog/memory-corruption-finding-and-fixing-elusive-crashes" target="_blank" rel="nofollow noopener noreferrer" &gt;blog post&lt;/a&gt; and even &lt;a href="#video"&gt;talked about it on a stream&lt;/a&gt;. Being one of those tools that I have always relied on for more than two decades I decided to bring back the old post about it with some modifications.&lt;/p&gt;</description></item></channel></rss>