<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Laurent's research blog</title>
    <description></description>
    <link>https://belcour.github.io/blog/</link>
    <atom:link href="https://belcour.github.io/blog/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Mon, 17 Apr 2023 15:28:55 +0000</pubDate>
    <lastBuildDate>Mon, 17 Apr 2023 15:28:55 +0000</lastBuildDate>
    <generator>Jekyll v3.9.3</generator>
    
      <item>
        <title>Rendering Layered Materials with Diffuse Interfaces</title>
        <description>&lt;h2 id=&quot;abstract&quot;&gt;Abstract&lt;/h2&gt;

&lt;p&gt;In this work, we introduce a novel method to render, in real-time, Lambertian surfaces with a rough dieletric coating. We show that the appearance of such configurations is faithfully represented with two microfacet lobes accounting for direct and indirect interactions respectively. We numerically fit these lobes based on the first order directional statistics (energy, mean and variance) of light transport using 5D tables and narrow them down to 2D + 1D with analytical forms and dimension reduction. We demonstrate the quality of our method by efficiently rendering rough plastics and ceramics, closely matching ground truth. In addition, we improve a state-of-the-art layered material model to include Lambertian interfaces.&lt;/p&gt;

&lt;h2 id=&quot;teaser-video&quot;&gt;Teaser Video&lt;/h2&gt;
&lt;center&gt;
&lt;iframe width=&quot;720px&quot; height=&quot;500px&quot; src=&quot;https://www.youtube.com/embed/P-wRgPe8sDs?start=9255&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/center&gt;
</description>
        <pubDate>Wed, 13 Apr 2022 00:00:00 +0000</pubDate>
        <link>https://belcour.github.io/blog/research/publication/2022/04/13/brdf-layered-diffuse.html</link>
        <guid isPermaLink="true">https://belcour.github.io/blog/research/publication/2022/04/13/brdf-layered-diffuse.html</guid>
        
        <category>published</category>
        
        <category>Appearance Modeling and Rendering</category>
        
        
        <category>research</category>
        
        <category>publication</category>
        
      </item>
    
      <item>
        <title>Visually-Uniform Reparametrization of Material Appearance through Density Redistribution</title>
        <description>
</description>
        <pubDate>Mon, 04 Oct 2021 00:00:00 +0000</pubDate>
        <link>https://belcour.github.io/blog/research/publication/2021/10/04/brdf_linear_space.html</link>
        <guid isPermaLink="true">https://belcour.github.io/blog/research/publication/2021/10/04/brdf_linear_space.html</guid>
        
        <category>techreport</category>
        
        <category>Appearance Modeling and Rendering</category>
        
        
        <category>research</category>
        
        <category>publication</category>
        
      </item>
    
      <item>
        <title>Lessons Learned and Improvements when Building Screen-Space Samplers with Blue-Noise Error Distribution</title>
        <description>&lt;!-- With the `url_outside` tag, I can reference an outside blog / website --&gt;
</description>
        <pubDate>Thu, 24 Jun 2021 00:00:00 +0000</pubDate>
        <link>https://belcour.github.io/blog/research/publication/2021/06/24/sampling_bluenoise_sig21.html</link>
        <guid isPermaLink="true">https://belcour.github.io/blog/research/publication/2021/06/24/sampling_bluenoise_sig21.html</guid>
        
        <category>published</category>
        
        <category>(Quasi) Monte Carlo Rendering</category>
        
        
        <category>research</category>
        
        <category>publication</category>
        
      </item>
    
      <item>
        <title>Passing Multi-Channel Material Textures to a 3-Channel Loss</title>
        <description>
</description>
        <pubDate>Thu, 24 Jun 2021 00:00:00 +0000</pubDate>
        <link>https://belcour.github.io/blog/publication/2021/06/24/3channels_loss.html</link>
        <guid isPermaLink="true">https://belcour.github.io/blog/publication/2021/06/24/3channels_loss.html</guid>
        
        <category>published</category>
        
        <category>Texture Synthesis</category>
        
        
        <category>publication</category>
        
      </item>
    
      <item>
        <title>A Sliced Wasserstein Loss for Neural Texture Synthesis</title>
        <description>
</description>
        <pubDate>Mon, 25 Jan 2021 00:00:00 +0000</pubDate>
        <link>https://belcour.github.io/blog/publication/2021/01/25/sliced_wasserstein_loss.html</link>
        <guid isPermaLink="true">https://belcour.github.io/blog/publication/2021/01/25/sliced_wasserstein_loss.html</guid>
        
        <category>published</category>
        
        <category>Texture Synthesis</category>
        
        
        <category>publication</category>
        
      </item>
    
      <item>
        <title>Bringing an Accurate Fresnel to Real-Time Rendering: a Preintegrable Decomposition</title>
        <description>&lt;p&gt;&lt;img width=&quot;100%&quot; style=&quot;border:solid 1px black;&quot; src=&quot;https://belcour.github.io/blog/data/images/teaser_BrdfFresnelDecompo.svg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Fresnel_equations&quot;&gt;Fresnel equations&lt;/a&gt; describe the amount of light reflected by a planar surface and are basic components of microfacet models that drive physically based shading today. However, real-time constraints prevent us from using the accurate form of Fresnel equations in game engines and force us to use &lt;a href=&quot;https://en.wikipedia.org/wiki/Schlick%27s_approximation&quot;&gt;Schlick’s approximation&lt;/a&gt;. In this work, we provide a framework to build accurate Fresnel models that are compatible with real-time constraints. We show that our method permits to use parameterizations for Fresnel that are traditionally restricted to offline rendering engines in real-time game engines (such as &lt;a href=&quot;http://jcgt.org/published/0003/04/03/&quot;&gt;Ole Gulbrandsen’s parameterization&lt;/a&gt;). We further show that our framework can be used to rectify non-linearities in such parameterizations to produce better artist friendly Fresnel models.&lt;/p&gt;

&lt;p&gt;
Here is a comparison of how close we can get to Fresnel equations with our decomposition compared to Schlick's approximation:
&lt;center&gt;
&lt;img id=&quot;img1&quot; width=&quot;25%&quot; style=&quot;border:solid 1px black;&quot; src=&quot;https://belcour.github.io/blog/data/images/brdf-fresnel-decompo/ours_vs_ref.gif&quot; /&gt;
&lt;img id=&quot;img2&quot; width=&quot;25%&quot; style=&quot;border:solid 1px black;&quot; src=&quot;https://belcour.github.io/blog/data/images/brdf-fresnel-decompo/schlick_vs_ref.gif&quot; /&gt;
&lt;/center&gt;
&lt;script&gt;
document.getElementById('img1').src = &quot;https://belcour.github.io/blog/data/images/brdf-fresnel-decompo/ours_vs_ref.gif&quot;;
document.getElementById('img2').src = &quot;https://belcour.github.io/blog/data/images/brdf-fresnel-decompo/schlick_vs_ref.gif&quot;;
&lt;/script&gt;
&lt;/p&gt;

&lt;p&gt;
Our solution is quite easy to integrate in a modern game engine since it only requires to change the split-sum LUT (RG texture) that is tailored to Schlick Fresnel with a new RGBA LUT. Here are the different color channels of this LUT:
&lt;center&gt;
&lt;img width=&quot;15%&quot; style=&quot;border:solid 1px black;&quot; src=&quot;https://belcour.github.io/blog/slides/2020-brdf-fresnel-decompo/img/realtime/FGD_r.png&quot; /&gt;
&lt;img width=&quot;15%&quot; style=&quot;border:solid 1px black;&quot; src=&quot;https://belcour.github.io/blog/slides/2020-brdf-fresnel-decompo/img/realtime/FGD_ours_g.png&quot; /&gt;
&lt;img width=&quot;15%&quot; style=&quot;border:solid 1px black;&quot; src=&quot;https://belcour.github.io/blog/slides/2020-brdf-fresnel-decompo/img/realtime/FGD_ours_b.png&quot; /&gt;
&lt;img width=&quot;15%&quot; style=&quot;border:solid 1px black;&quot; src=&quot;https://belcour.github.io/blog/slides/2020-brdf-fresnel-decompo/img/realtime/FGD_ours_a.png&quot; /&gt;
&lt;/center&gt;
&lt;/p&gt;

&lt;p&gt;
We tested the integration of this new Fresnel model in &lt;a href=&quot;https://unity.com/srp/High-Definition-Render-Pipeline&quot;&gt;Unity HDRP&lt;/a&gt; with minimal changes to the Lit shader.
&lt;center&gt;
    &lt;video style=&quot;border:1px solid black; width:75%;&quot; controls=&quot;&quot; src=&quot;https://belcour.github.io/blog/slides/2020-brdf-fresnel-decompo/videos/editing_clip.mp4&quot; /&gt;
&lt;/center&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Thanks to:&lt;/strong&gt; &lt;a href=&quot;https://twitter.com/thomasdeliot&quot;&gt;Thomas Deliot&lt;/a&gt; for the Unity prototype. Eric Heitz, Jonathan Dupuy, and Kenneth Vanhoey for feedbacks. Naty Hoffman, Stephen Hill, Emmanuel Turquin, and Sebastien Lagarde for discussions on Fresnel. &lt;a href=&quot;https://www.blendswap.com/blend/11086&quot;&gt;Studio&lt;/a&gt; and &lt;a href=&quot;https://www.blendswap.com/blend/18023&quot;&gt;shader ball&lt;/a&gt; assets available at &lt;a href=&quot;https://www.blendswap.com/&quot;&gt;blendswap&lt;/a&gt;.
&lt;/p&gt;
</description>
        <pubDate>Wed, 26 Aug 2020 00:00:00 +0000</pubDate>
        <link>https://belcour.github.io/blog/research/publication/2020/08/26/brdf-fresnel-decompo.html</link>
        <guid isPermaLink="true">https://belcour.github.io/blog/research/publication/2020/08/26/brdf-fresnel-decompo.html</guid>
        
        <category>published</category>
        
        <category>Appearance Modeling and Rendering</category>
        
        
        <category>research</category>
        
        <category>publication</category>
        
      </item>
    
      <item>
        <title>Rendering Layered Materials with Anisotropic Interfaces</title>
        <description>&lt;!-- &lt;div style=&quot;position:relative;width:100%;&quot;&gt;
    &lt;span style=&quot;position:absolute;left: 7%;&quot;&gt;frame 1&lt;/span&gt;
    &lt;span style=&quot;position:absolute;left:24%;&quot;&gt;frame 72&lt;/span&gt;
    &lt;span style=&quot;position:absolute;left:40%;&quot;&gt;frame 144&lt;/span&gt;
    &lt;span style=&quot;position:absolute;left:57%;&quot;&gt;frame 216&lt;/span&gt;
    &lt;span style=&quot;position:absolute;left:73%;&quot;&gt;frame 288&lt;/span&gt;
    &lt;span style=&quot;position:absolute;left:90%;&quot;&gt;frame 360&lt;/span&gt;    
&lt;/div&gt;
&lt;object style=&quot;width:100%;&quot; data=&quot;https://belcour.github.io/blog/data/svg/animation_bluenoise.svg&quot; type=&quot;image/svg+xml&quot;&gt;&lt;/object&gt;
&lt;div style=&quot;position:relative;width:100%;&quot;&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left: 40px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:160px;&quot;&gt;FFT&lt;/span&gt;

    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:280px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:400px;&quot;&gt;FFT&lt;/span&gt;

    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:520px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:640px;&quot;&gt;FFT&lt;/span&gt;
    
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:760px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:880px;&quot;&gt;FFT&lt;/span&gt;        

    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:1000px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:1120px;&quot;&gt;FFT&lt;/span&gt;  

    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:1240px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:1360px;&quot;&gt;FFT&lt;/span&gt;  
&lt;/div&gt; --&gt;
&lt;center&gt;
&lt;img style=&quot;border:1px solid black;&quot; src=&quot;https://belcour.github.io/blog/data/images/teaser_BrdfAniso.jpg&quot; width=&quot;60%&quot; /&gt;
&lt;/center&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4&gt;Project Abstract&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Method.&lt;/strong&gt; We present a lightweight and efficient method to render layered materials with anisotropic interfaces. Our work extends our previously published statistical framework to handle anisotropic microfacet models. A key insight to our work is that when projected on the tangent plane, BRDF lobes from an anisotropic GGX distribution are well approximated by ellipsoidal distributions aligned with the tangent frame: its covariance matrix is diagonal in this space. We leverage this property and perform the isotropic layered algorithm on each anisotropy axis independently. We further update the mapping of roughness to directional variance and the evaluation of the average reflectance to account for anisotropy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validation&lt;/strong&gt; We validated that our model was visualy close to the ground truth. See our supplemental material for all our results (warning: the archive is &amp;gt; 4GB).&lt;/p&gt;
&lt;center&gt;
&lt;img src=&quot;https://belcour.github.io/blog/data/images/layered_aniso-validation.jpg&quot; width=&quot;60%&quot; /&gt;&lt;br /&gt;
&lt;div style=&quot;width:50%;&quot;&gt;
    &lt;em&gt;Example of the validation of our layered model with respect to the ground truth when changing the roughness to the top dielectric layer.&lt;/em&gt;
&lt;/div&gt;
&lt;/center&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 30 Jun 2020 00:00:00 +0000</pubDate>
        <link>https://belcour.github.io/blog/research/publication/2020/06/30/brdf-aniso-layered.html</link>
        <guid isPermaLink="true">https://belcour.github.io/blog/research/publication/2020/06/30/brdf-aniso-layered.html</guid>
        
        <category>published</category>
        
        <category>Appearance Modeling and Rendering</category>
        
        
        <category>research</category>
        
        <category>publication</category>
        
      </item>
    
      <item>
        <title>Distributing Monte Carlo Errors as a Blue Noise in Screen Space by Permuting Pixel Seeds Between Frames</title>
        <description>&lt;div style=&quot;position:relative;width:100%;&quot;&gt;
    &lt;span style=&quot;position:absolute;left: 7%;&quot;&gt;frame 1&lt;/span&gt;
    &lt;span style=&quot;position:absolute;left:24%;&quot;&gt;frame 72&lt;/span&gt;
    &lt;span style=&quot;position:absolute;left:40%;&quot;&gt;frame 144&lt;/span&gt;
    &lt;span style=&quot;position:absolute;left:57%;&quot;&gt;frame 216&lt;/span&gt;
    &lt;span style=&quot;position:absolute;left:73%;&quot;&gt;frame 288&lt;/span&gt;
    &lt;span style=&quot;position:absolute;left:90%;&quot;&gt;frame 360&lt;/span&gt;    
&lt;/div&gt;
&lt;object style=&quot;width:100%;&quot; data=&quot;https://belcour.github.io/blog/data/svg/animation_bluenoise.svg&quot; type=&quot;image/svg+xml&quot;&gt;&lt;/object&gt;
&lt;!--
&lt;div style=&quot;position:relative;width:100%;&quot;&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left: 40px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:160px;&quot;&gt;FFT&lt;/span&gt;

    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:280px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:400px;&quot;&gt;FFT&lt;/span&gt;

    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:520px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:640px;&quot;&gt;FFT&lt;/span&gt;
    
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:760px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:880px;&quot;&gt;FFT&lt;/span&gt;        

    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:1000px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:1120px;&quot;&gt;FFT&lt;/span&gt;  

    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:1240px;&quot;&gt;inset&lt;/span&gt;
    &lt;span style=&quot;position:absolute; font-size:0.8em; top:-25px; left:1360px;&quot;&gt;FFT&lt;/span&gt;  
&lt;/div&gt;
--&gt;

&lt;p&gt;&lt;strong&gt;Project Abstract&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recent work has shown that distributing Monte Carlo errors as a blue noise in screen space improves the perceptual quality of rendered images. However, obtaining such distributions remains an open problem with high sample counts and high-dimensional rendering integrals. In this paper, we introduce a temporal algorithm that aims at overcoming these limitations. Our algorithm is applicable whenever multiple frames are rendered, typically for animated sequences or interactive applications. Our algorithm locally permutes the pixel sequences (represented by their seeds) to improve the error distribution across frames. Our approach works regardless of the sample count or the dimensionality and significantly improves the images in low-varying screen-space regions under coherent motion. Furthermore, it adds negligible overhead compared to the rendering times. Note: our supplemental material provides more results with interactive comparisons against previous work.&lt;/p&gt;
</description>
        <pubDate>Tue, 18 Jun 2019 00:00:00 +0000</pubDate>
        <link>https://belcour.github.io/blog/research/publication/2019/06/18/animation-bluenoise.html</link>
        <guid isPermaLink="true">https://belcour.github.io/blog/research/publication/2019/06/18/animation-bluenoise.html</guid>
        
        <category>published</category>
        
        <category>(Quasi) Monte Carlo Rendering</category>
        
        
        <category>research</category>
        
        <category>publication</category>
        
      </item>
    
      <item>
        <title>A Low-Discrepancy Sampler that Distributes Monte Carlo Errors as a Blue Noise in Screen Space</title>
        <description>&lt;object style=&quot;width:100%;&quot; data=&quot;https://belcour.github.io/blog/data/svg/sampling_bluenoise.svg&quot; type=&quot;image/svg+xml&quot;&gt;&lt;/object&gt;

&lt;p&gt;&lt;strong&gt;Project Abstract&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We introduce a sampler that generates per-pixel samples achieving high visual quality thanks to two key properties related to the Monte Carlo errors that it produces. First, the sequence of each pixel is an Owen-scrambled Sobol sequence that has state-of-the-art convergence properties. The Monte Carlo errors have thus low magnitudes. Second, these errors are distributed as a blue noise in screen space. This makes them visually even more acceptable. Our sam-pler is lightweight and fast. We implement it with a small texture and two xor operations. Our supplemental material provides comparisons against previous work for different scenes and sample counts.&lt;/p&gt;
</description>
        <pubDate>Mon, 17 Jun 2019 00:00:00 +0000</pubDate>
        <link>https://belcour.github.io/blog/research/publication/2019/06/17/sampling-bluenoise.html</link>
        <guid isPermaLink="true">https://belcour.github.io/blog/research/publication/2019/06/17/sampling-bluenoise.html</guid>
        
        <category>published</category>
        
        <category>(Quasi) Monte Carlo Rendering</category>
        
        
        <category>research</category>
        
        <category>publication</category>
        
      </item>
    
      <item>
        <title>Efficient Rendering of Layered Materials using an Atomic Decomposition with Statistical Operators</title>
        <description>&lt;p&gt;&lt;img src=&quot;https://belcour.github.io/blog/data/svg/layered_teaser.svg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project Abstract&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We derive a novel framework for the efficient analysis and computation of light transport within layered materials. Our derivation consists in two steps. First, we decompose light transport into a set of atomic operators that act on its directional statistics. Specifically, our operators consist of reflection, refraction, scattering, and absorption, whose combinations are sufficient to describe the statistics of light scattering multiple times within layered structures. We show that the first three directional moments (energy, mean and variance) already provide an accurate summary. Second, we extend the adding-doubling method to support arbitrary combinations of such operators efficiently. During shading, we map the directional moments to BSDF lobes. We validate that the resulting BSDF closely matches the ground truth in a lightweight and efficient form. Unlike previous methods we support an arbitrary number of textured layers, and demonstrate a practical and accurate rendering of layered materials with both an offline and real-time implementation that are free from per-material precomputation.&lt;/p&gt;
</description>
        <pubDate>Sat, 05 May 2018 00:00:00 +0000</pubDate>
        <link>https://belcour.github.io/blog/research/publication/2018/05/05/brdf-realtime-layered.html</link>
        <guid isPermaLink="true">https://belcour.github.io/blog/research/publication/2018/05/05/brdf-realtime-layered.html</guid>
        
        <category>published</category>
        
        <category>Appearance Modeling and Rendering</category>
        
        
        <category>research</category>
        
        <category>publication</category>
        
      </item>
    
  </channel>
</rss>
