<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Barth Cave</title><link>https://barthpaleologue.github.io/Blog/</link><description>Recent content on Barth Cave</description><generator>Hugo</generator><language>en</language><managingEditor>barth@paleologue.fr (Barthélemy Paléologue)</managingEditor><webMaster>barth@paleologue.fr (Barthélemy Paléologue)</webMaster><lastBuildDate>Wed, 20 May 2026 17:44:53 +0200</lastBuildDate><atom:link href="https://barthpaleologue.github.io/Blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Hiding secrets in open source games</title><link>https://barthpaleologue.github.io/Blog/posts/hiding-secrets-in-open-source-games/</link><pubDate>Wed, 20 May 2026 17:44:53 +0200</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/hiding-secrets-in-open-source-games/</guid><description>&lt;p&gt;Easter eggs and game secrets are among the most fascinating and powerful aspects of video games in my experience.&lt;/p&gt;
&lt;p&gt;Stumbling onto one feels like taking a step outside the intended path and seeing the game reward our curiosity. We know many people will simply miss it, and that makes it feel special.&lt;/p&gt;
&lt;p&gt;For a brief instant, there is a connection between the developer and the player, as we wonder: &amp;ldquo;what did it mean to you?&amp;rdquo;.&lt;/p&gt;</description></item><item><title>End-to-end testing for web games</title><link>https://barthpaleologue.github.io/Blog/posts/webgl-webgpu-playwright-setup/</link><pubDate>Wed, 30 Apr 2025 23:14:01 +0200</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/webgl-webgpu-playwright-setup/</guid><description>&lt;p&gt;Hello everyone!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s been a while since I last posted. I was busy getting a job among other things, but now I&amp;rsquo;m back, and I have been cooking!&lt;/p&gt;
&lt;h2 id="tldr"&gt;TLDR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Minimal setup on &lt;a href="https://github.com/BarthPaleologue/BabylonPlaywrightExample"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Simple &lt;a href="https://github.com/BarthPaleologue/BabylonPlaywrightExample/blob/master/Dockerfile"&gt;Dockerfile&lt;/a&gt; to run the tests&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BarthPaleologue/BabylonPlaywrightExample/blob/master/.github/workflows/e2e.yml"&gt;GitHub Actions CI&lt;/a&gt; to run the tests on PRs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In the past few months, my space exploration game, &lt;a href="https://cosmosjourneyer.com"&gt;Cosmos Journeyer&lt;/a&gt;, has been growing quite a lot, creating new challenges that some of you are probably familiar with if you are making any large project.&lt;/p&gt;</description></item><item><title>Procedural Space Stations #2</title><link>https://barthpaleologue.github.io/Blog/posts/procedural-space-stations-2/</link><pubDate>Fri, 14 Jun 2024 10:49:25 +0200</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/procedural-space-stations-2/</guid><description>&lt;p&gt;Hello again!&lt;/p&gt;
&lt;p&gt;This is the 2nd post of the procedural space station series aiming at creating realistic space station for &lt;a href="https://cosmosjourneyer.com"&gt;Cosmos Journeyer&lt;/a&gt; through the awesome power of science! The previous post about energy is not required to understand this one, but you can read it &lt;a href="https://barthpaleologue.github.io/Blog/posts/procedural-space-stations-1/"&gt;here&lt;/a&gt; if you are interested.&lt;/p&gt;
&lt;p&gt;In the previous article, we created a model for the surface of solar panels needed to power our space stations. But we also need to create habitable sections where people will live their life in comfort, just like you are doing right now I hope ^^ (make yourself at ease!)&lt;/p&gt;</description></item><item><title>Procedural Space Stations #1</title><link>https://barthpaleologue.github.io/Blog/posts/procedural-space-stations-1/</link><pubDate>Sun, 02 Jun 2024 22:12:14 +0200</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/procedural-space-stations-1/</guid><description>&lt;p&gt;How can we create realistic looking space stations? How to make them feel grounded and functional? That&amp;rsquo;s what I want to explore it this series of blog posts while developing the new space stations for &lt;a href="https://cosmosjourneyer.com"&gt;Cosmos Journeyer&lt;/a&gt;. Here is a sneak peak:&lt;/p&gt;

 
&lt;link rel="stylesheet" href="https://barthpaleologue.github.io/Blog/css/hugo-easy-gallery.css" /&gt;
&lt;div class="box fancy-figure caption-position-bottom" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img"&gt;
 &lt;img itemprop="thumbnail" src="https://barthpaleologue.github.io/Blog/posts/procedural-space-stations-1/cosmos.png" alt="View from Cosmos Journeyer&amp;#39;s space station"/&gt;
 &lt;/div&gt;
 &lt;a href="https://barthpaleologue.github.io/Blog/posts/procedural-space-stations-1/cosmos.png" itemprop="contentUrl" target="_blank"&gt;&lt;/a&gt;
 &lt;figcaption&gt;&lt;p&gt;View from Cosmos Journeyer&amp;#39;s space station&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;/div&gt;


&lt;p&gt;In this first one, we will talk about solar panels. They are an iconic part of the look of space stations: from Mir to the ISS, and Tiangong to the upcoming Lunar Gateway, they all have them! So it&amp;rsquo;s only natural that my procedural space stations will have them too.&lt;/p&gt;</description></item><item><title>Ocean Simulation with FFT and WebGPU</title><link>https://barthpaleologue.github.io/Blog/posts/ocean-simulation-webgpu/</link><pubDate>Wed, 20 Mar 2024 15:44:02 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/ocean-simulation-webgpu/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s been a few month since I started pondering making a better ocean for &lt;a href="https://cosmosjourneyer.com"&gt;Cosmos Journeyer&amp;rsquo;s procedural planets&lt;/a&gt;. To have actual waves moving around and not just a scrolling normal maps would make a significant difference in visual quality.&lt;/p&gt;
&lt;p&gt;Coincidentally, I was also taking a course on computer animation (INF585) at Ecole Polytechnique, and I had the opportunity to choose my final project. Long story short, I decided to implement &lt;a href="https://people.computing.clemson.edu/~jtessen/reports/papers_files/coursenotes2004.pdf"&gt;Jerry Tessendorf&amp;rsquo;s FFT-based ocean simulation&lt;/a&gt; on WebGPU, and this is my project report.&lt;/p&gt;</description></item><item><title>Add and customize Cusdis with Hugo</title><link>https://barthpaleologue.github.io/Blog/posts/add-and-customize-cusdis-hugo/</link><pubDate>Sun, 11 Feb 2024 16:28:03 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/add-and-customize-cusdis-hugo/</guid><description>&lt;p&gt;Alright, I was looking for an easy way to add comments to my blog. I found 2 popular solutions: Disqus and Cusdis (the names look interestingly similar!).&lt;/p&gt;


&lt;div class="gallery caption-position-bottom caption-effect-slide hover-effect-none hover-transition" itemscope itemtype="http://schema.org/ImageGallery"&gt;
	 

 
&lt;link rel="stylesheet" href="https://barthpaleologue.github.io/Blog/css/hugo-easy-gallery.css" /&gt;
&lt;div class="box fancy-figure caption-position-bottom" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img" style="background-image: url('/Blog/posts/add-and-customize-cusdis-hugo/image-1.png');"&gt;
 &lt;img itemprop="thumbnail" src="https://barthpaleologue.github.io/Blog/posts/add-and-customize-cusdis-hugo/image-1.png" alt="Cusdis"/&gt;
 &lt;/div&gt;
 &lt;a href="https://barthpaleologue.github.io/Blog/posts/add-and-customize-cusdis-hugo/image-1.png" itemprop="contentUrl" target="_blank"&gt;&lt;/a&gt;
 &lt;figcaption&gt;&lt;p&gt;Cusdis&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;/div&gt;



 

&lt;div class="box fancy-figure caption-position-bottom" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img" style="background-image: url('/Blog/posts/add-and-customize-cusdis-hugo/disqus.png');"&gt;
 &lt;img itemprop="thumbnail" src="https://barthpaleologue.github.io/Blog/posts/add-and-customize-cusdis-hugo/disqus.png" alt="Disqus"/&gt;
 &lt;/div&gt;
 &lt;a href="https://barthpaleologue.github.io/Blog/posts/add-and-customize-cusdis-hugo/disqus.png" itemprop="contentUrl" target="_blank"&gt;&lt;/a&gt;
 &lt;figcaption&gt;&lt;p&gt;Disqus&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;/div&gt;



&lt;/div&gt;

&lt;p&gt;On the one hand we have Disqus, a widely used comment system, but it&amp;rsquo;s not privacy-friendly and it&amp;rsquo;s not open-source. Bummer.&lt;/p&gt;
&lt;p&gt;On the other hand, we have Cusdis, a privacy-friendly free and open-source comment system that has a lot of potential. Comments do not need an account to be posted, it is lightweight and it&amp;rsquo;s easy to use with hugo&amp;hellip; at least in theory. You can even host it yourself if you want to!&lt;/p&gt;</description></item><item><title>Soft body simulation with HXPBD</title><link>https://barthpaleologue.github.io/Blog/posts/hxpbd/</link><pubDate>Sat, 10 Feb 2024 22:00:16 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/hxpbd/</guid><description>&lt;p&gt;I have been making a soft body simulation in C++ for my IMA904/IG3DA class at Telecom Paris, and I thought I could share my project report here! This one is quite light on the implementation details and is more focused on the high level ideas.&lt;/p&gt;
&lt;p&gt;I added many example videos from the original report to make it more interesting to read!&lt;/p&gt;
&lt;p&gt;Anyway, here is what you can expect from this article:&lt;/p&gt;</description></item><item><title>VR Fails</title><link>https://barthpaleologue.github.io/Blog/posts/vr-fails/</link><pubDate>Sat, 27 Jan 2024 14:15:33 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/vr-fails/</guid><description>&lt;p&gt;If you ever tried a VR headset at home, you probably know that full immersion can be dangerous for your surroundings. When I was setting up the IGD301 VR project in Unity, I punched my laptop screen very hard with one of the controllers (it survived no worries!).&lt;/p&gt;
&lt;p&gt;These moments are VR fails, when the immersion make you forget about reality. Here I will present 2 scenarios where immersion can be dangerous.&lt;/p&gt;</description></item><item><title>VR With Unity #7</title><link>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-7/</link><pubDate>Sat, 27 Jan 2024 13:16:11 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-7/</guid><description>&lt;p&gt;In the previous article, we developped a selection technique for a VR supermarket. Here is the result we achieved:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/--iDxQKy9V0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;You should probably read the previous article first: &lt;a href="https://barthpaleologue.github.io/Blog/posts/vr-with-unity-6/"&gt;https://barthpaleologue.github.io/Blog/posts/vr-with-unity-6/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Today&amp;rsquo;s blog post is all about evaluation. We will see how we can evaluate a selection technique, and how we can use the results to find ways to improve it.&lt;/p&gt;</description></item><item><title>VR With Unity #6</title><link>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-6/</link><pubDate>Sun, 21 Jan 2024 15:35:05 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-6/</guid><description>&lt;p&gt;Okay the course is coming to a close and now we have to make a final project. The task is quite straightforward: select grocery items in a supermarket.&lt;/p&gt;
&lt;p&gt;The idea is to implement one of the selection techniques of last time and evaluate it along a few metric such as accuracy, speed, user satisfaction, etc. This blog post will cover the implementation of the technique and the next one will cover the evaluation.&lt;/p&gt;</description></item><item><title>Non Euclidean Black holes</title><link>https://barthpaleologue.github.io/Blog/posts/non-euclidean-blackholes/</link><pubDate>Fri, 12 Jan 2024 09:03:04 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/non-euclidean-blackholes/</guid><description>&lt;p&gt;Okay, I know what you are thinking: &amp;ldquo;Non Euclidean Black holes? What is this guy talking about?&amp;rdquo;. I know, I told myself so at first, but bear with me, it is actually fun!&lt;/p&gt;
&lt;h2 id="what-is-a-black-hole"&gt;What is a black hole?&lt;/h2&gt;
&lt;p&gt;A black hole is a region of space where the gravitational field get so strong the bending of spacetime becomes very noticable (and deadly, mom&amp;rsquo;s spaghetti). It becomes so strong that scientists predict the bending becomes infinite at its center at what is called a singularity. This is where the laws of physics breaks down and we don&amp;rsquo;t know what happens.&lt;/p&gt;</description></item><item><title>Making Shaders Faster #1</title><link>https://barthpaleologue.github.io/Blog/posts/making-shaders-faster-1/</link><pubDate>Mon, 18 Dec 2023 18:48:24 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/making-shaders-faster-1/</guid><description>&lt;p&gt;Realtime shader programming is challenging. Although the GPU is very fast, when adding more and more shaders, you always reach a point where your GPU is no longer fast enough. This is where optimization comes into play.&lt;/p&gt;
&lt;p&gt;Shaders can be optimized in 2 ways: improve the shader code itself, which can give decent improvements, and precomputing data, which can make the difference between 20fps and 500fps.&lt;/p&gt;
&lt;p&gt;In this blog post series, I will be presenting how I optimized the shaders of &lt;a href="https://cosmosjourneyer.com"&gt;Cosmos Journeyer&lt;/a&gt;: a procedural universe running in the web browser.&lt;/p&gt;</description></item><item><title>VR with Unity #5</title><link>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-5/</link><pubDate>Mon, 18 Dec 2023 09:31:06 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-5/</guid><description>&lt;p&gt;Have you ever been in a supermarket and felt overwhelmed by the task of grabbing objects from the shelves? I know, i know.&lt;/p&gt;

 

&lt;div class="box fancy-figure caption-position-bottom" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img"&gt;
 &lt;img itemprop="thumbnail" src="https://barthpaleologue.github.io/Blog/posts/vr-with-unity-5/image.png" alt="The supermarket of dooooom"/&gt;
 &lt;/div&gt;
 &lt;a href="https://barthpaleologue.github.io/Blog/posts/vr-with-unity-5/image.png" itemprop="contentUrl" target="_blank"&gt;&lt;/a&gt;
 &lt;figcaption&gt;&lt;p&gt;The supermarket of dooooom&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;/div&gt;


&lt;p&gt;Of course you have! This feeling of frustration is not uncommon for people not using advanced VR selection techniques in real supermarkets.&lt;/p&gt;
&lt;p&gt;That is why we will explore some techniques that could be used to make your VR experience more enjoyable while shopping for groceries.&lt;/p&gt;</description></item><item><title>VR Selection Techniques</title><link>https://barthpaleologue.github.io/Blog/posts/vr-selection-techniques/</link><pubDate>Sun, 10 Dec 2023 18:22:38 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/vr-selection-techniques/</guid><description>&lt;h2 id="raycasting-from-the-eyes"&gt;Raycasting from the eyes&lt;/h2&gt;
&lt;p&gt;In mainstream VR, the most common selection technique is raycasting from the controller. It is simple and cheap to implement, but having to move the hands around can be tiring.&lt;/p&gt;

 
&lt;link rel="stylesheet" href="https://barthpaleologue.github.io/Blog/css/hugo-easy-gallery.css" /&gt;
&lt;div class="box fancy-figure caption-position-bottom" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img"&gt;
 &lt;img itemprop="thumbnail" src="https://barthpaleologue.github.io/Blog/posts/vr-selection-techniques/image.png" alt="https://journals.sagepub.com/doi/10.1177/21695067231192429"/&gt;
 &lt;/div&gt;
 &lt;a href="https://barthpaleologue.github.io/Blog/posts/vr-selection-techniques/image.png" itemprop="contentUrl" target="_blank"&gt;&lt;/a&gt;
 &lt;figcaption&gt;&lt;p&gt;https://journals.sagepub.com/doi/10.1177/21695067231192429&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;/div&gt;


&lt;p&gt;Using your gaze allows for a very natural way to select distant object (the reach is infinite). It is used in newer headsets such as the Apple Vision Pro that take advantage of cutting edge hardware.&lt;/p&gt;</description></item><item><title>The Cave System</title><link>https://barthpaleologue.github.io/Blog/posts/cave-system/</link><pubDate>Sun, 10 Dec 2023 18:02:26 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/cave-system/</guid><description>&lt;link rel="stylesheet" href="https://barthpaleologue.github.io/Blog/css/hugo-easy-gallery.css" /&gt;
&lt;div class="box fancy-figure caption-position-bottom" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img"&gt;
 &lt;img itemprop="thumbnail" src="https://barthpaleologue.github.io/Blog/posts/cave-system/image.png" alt="src: wikipedia"/&gt;
 &lt;/div&gt;
 &lt;a href="https://barthpaleologue.github.io/Blog/posts/cave-system/image.png" itemprop="contentUrl" target="_blank"&gt;&lt;/a&gt;
 &lt;figcaption&gt;&lt;p&gt;src: wikipedia&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;/div&gt;


&lt;p&gt;When talking about VR nowadays, we often think about headsets and controllers. But VR is far more diverse than you would think at first glance. In this post, I will present the CAVE system, an alternative to headsets that is still used today in many research labs.&lt;/p&gt;
&lt;h2 id="what-is-a-cave"&gt;What is a CAVE?&lt;/h2&gt;
&lt;p&gt;CAVE stands for Cave Automatic Virtual Environment. It is a room where the walls are screens and where you can walk around freely. It is usually achieved by using projectors and tracking systems. The first CAVE was built in 1992 at the University of Illinois at Chicago Electronic Visualization Laboratory.&lt;/p&gt;</description></item><item><title>VR with Unity #3</title><link>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-3/</link><pubDate>Sun, 10 Dec 2023 16:22:21 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-3/</guid><description>&lt;p&gt;Let&amp;rsquo;s do some real VR development! The school lent me an Oculus Quest, so I will be doing the next tutorials with it.&lt;/p&gt;
&lt;h2 id="what-are-we-doing-today"&gt;What are we doing today?&lt;/h2&gt;
&lt;p&gt;Okay so last week we created a simple game, following the &lt;code&gt;Roll a ball&lt;/code&gt; tutorial from Unity. The ball was controlled using the keyboard, but today we will control it by grabbing the game board with our hands, and moving it around to make the ball roll!&lt;/p&gt;</description></item><item><title>The Compute Shader Tutorial #2</title><link>https://barthpaleologue.github.io/Blog/posts/the-compute-shader-tutorlal-2/</link><pubDate>Sun, 03 Dec 2023 19:48:00 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/the-compute-shader-tutorlal-2/</guid><description>&lt;p&gt;Hello again! This is the second part of my compute shader series. If you haven&amp;rsquo;t read the first part yet, you can find it &lt;a href="https://barthpaleologue.github.io/Blog/posts/the-compute-shader-tutorial-1/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now that we know how to create simple compute shaders, we will see how to parameterize them with uniforms.&lt;/p&gt;

 
&lt;link rel="stylesheet" href="https://barthpaleologue.github.io/Blog/css/hugo-easy-gallery.css" /&gt;
&lt;div class="box fancy-figure caption-position-bottom" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img"&gt;
 &lt;img itemprop="thumbnail" src="https://barthpaleologue.github.io/Blog/posts/the-compute-shader-tutorlal-2/image.png" alt="Uniformity at its finest"/&gt;
 &lt;/div&gt;
 &lt;a href="https://barthpaleologue.github.io/Blog/posts/the-compute-shader-tutorlal-2/image.png" itemprop="contentUrl" target="_blank"&gt;&lt;/a&gt;
 &lt;figcaption&gt;&lt;p&gt;Uniformity at its finest&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;/div&gt;


&lt;p&gt;No, not that kind of uniform!&lt;/p&gt;
&lt;h2 id="what-are-shader-uniforms"&gt;What are &lt;em&gt;shader&lt;/em&gt; uniforms?&lt;/h2&gt;
&lt;p&gt;Last time we added 2 arrays on the GPU. What if we wanted to add the first one to twice the second one? We would have to change the underlying WGSL code to do so.&lt;/p&gt;</description></item><item><title>VR with Unity #2</title><link>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-2/</link><pubDate>Mon, 27 Nov 2023 10:38:00 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-2/</guid><description>&lt;p&gt;This blog post is the 2nd in the VR with Unity series.&lt;/p&gt;
&lt;p&gt;This week, we are setting a small scene in Unity to get familiar with the editor and have something to work with in VR next week. This is essentially the &lt;a href="https://learn.unity.com/project/roll-a-ball"&gt;Roll a Ball tutorial&lt;/a&gt; from Unity, but with a few changes.&lt;/p&gt;
&lt;p&gt;If you already know how to use Unity, you can go crazy and expend on &lt;code&gt;Roll a Ball&lt;/code&gt; as long as the core mechanic is the same (we will need it next week).&lt;/p&gt;</description></item><item><title>The Compute Shader Tutorial #1</title><link>https://barthpaleologue.github.io/Blog/posts/the-compute-shader-tutorial-1/</link><pubDate>Sun, 26 Nov 2023 20:59:27 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/the-compute-shader-tutorial-1/</guid><description>&lt;link rel="stylesheet" href="https://barthpaleologue.github.io/Blog/css/hugo-easy-gallery.css" /&gt;
&lt;div class="box fancy-figure caption-position-bottom" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img"&gt;
 &lt;img itemprop="thumbnail" src="https://barthpaleologue.github.io/Blog/posts/the-compute-shader-tutorial-1/cover.png" alt="Cover image"/&gt;
 &lt;/div&gt;
 &lt;a href="https://barthpaleologue.github.io/Blog/posts/the-compute-shader-tutorial-1/cover.png" itemprop="contentUrl" target="_blank"&gt;&lt;/a&gt;
 &lt;/figure&gt;
&lt;/div&gt;


&lt;p&gt;Welcome to my tutorial on compute shaders using WebGPU and BabylonJS! It is meant to be accessible to beginers and then to provide concrete use cases of compute shaders in the context of terrain generation and grass rendering.&lt;/p&gt;
&lt;h2 id="what-is-a-compute-shader"&gt;What is a compute shader?&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s say you have an array of numbers like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now if you want to add 1 to each number, you can do it like this:&lt;/p&gt;</description></item><item><title>VR With Unity #1</title><link>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-1/</link><pubDate>Mon, 20 Nov 2023 13:56:01 +0100</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/posts/vr-with-unity-1/</guid><description>&lt;p&gt;Hello, welcome to my blog! This is the first post of a series of posts about VR development with Unity. I am currently a student at Telecom Paris and writing this blog is part of our assignment. I will try to keep things as simple as possible so that everyone can follow along.&lt;/p&gt;
&lt;p&gt;For this first part, I will only cover the setup part of our development environment with Unity. If you already have Unity installed and know how to use it, you can skip this part.&lt;/p&gt;</description></item><item><title>About me</title><link>https://barthpaleologue.github.io/Blog/page/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>barth@paleologue.fr (Barthélemy Paléologue)</author><guid>https://barthpaleologue.github.io/Blog/page/about/</guid><description>&lt;p&gt;Hey there, welcome to my blog! I am Barthélemy Paléologue, a French computer graphics engineer. I love building stuff and sharing the fun with the world, so I hope you will have a good time reading my articles :)&lt;/p&gt;
&lt;p&gt;Oh, and I am making &lt;a href="https://cosmosjourneyer.com"&gt;Cosmos Journeyer&lt;/a&gt;, a space exploration game in my free time. Check it out, it&amp;rsquo;s quite cool and open-source!&lt;/p&gt;
&lt;p&gt;AI policy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All articles are written by me (a human).&lt;/li&gt;
&lt;li&gt;AI may be used for spelling and grammar.&lt;/li&gt;
&lt;li&gt;Every article is reviewed by another human before publishing.&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>