<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog Posts on Fern Solutions</title><link>https://fern.solutions/dev-logs/</link><description>Recent content in Blog Posts on Fern Solutions</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 15 Apr 2026 10:00:00 +0200</lastBuildDate><atom:link href="https://fern.solutions/dev-logs/index.xml" rel="self" type="application/rss+xml"/><item><title>Foveated rendering and MSAA in PlayCanvas</title><link>https://fern.solutions/dev-logs/2026-playcanvas-webxr/</link><pubDate>Wed, 15 Apr 2026 10:00:00 +0200</pubDate><guid>https://fern.solutions/dev-logs/2026-playcanvas-webxr/</guid><description>&lt;p&gt;&lt;a href="playcanvas.com"



 


&gt;PlayCanvas&lt;/a&gt; is a 3D game engine that comes with an online editor and WebXR support. It&amp;rsquo;s great for authoring web based XR experiences. Creating graphically intensive WebXR applications on devices like the Meta Quest 3, while maintaining 90 FPS is real challenge. Techniques like fixed foveated rendering (FFR) and multisample anti-aliasing (MSAA) are essential for visual quality and performance, but PlayCanvas does not support both at the same time. Let&amp;rsquo;s dive in.&lt;/p&gt;</description></item><item><title>Optimizing wLipSync even further</title><link>https://fern.solutions/dev-logs/2025-wlipsync-2/</link><pubDate>Sun, 13 Apr 2025 10:00:00 +0200</pubDate><guid>https://fern.solutions/dev-logs/2025-wlipsync-2/</guid><description>&lt;p&gt;This post continues where we left of after the previous part: &lt;a href="https://fern.solutions/dev-logs/2025-wlipsync/"



 


&gt;Optimizing wLipSync&lt;/a&gt;. While it seemed there wouldn&amp;rsquo;t be much performance left to squeeze out after the initial improvements, that turned out to be false.&lt;/p&gt;
&lt;p&gt;As is often the case in software development, letting a problem rest for a while leads to fresh ideas and new insights.&lt;/p&gt;</description></item><item><title>Optimizing wLipSync</title><link>https://fern.solutions/dev-logs/2025-wlipsync/</link><pubDate>Wed, 22 Jan 2025 10:00:00 +0200</pubDate><guid>https://fern.solutions/dev-logs/2025-wlipsync/</guid><description>&lt;p&gt;When porting &lt;a href="https://github.com/hecomi/uLipSync"




 target="_blank"
 


&gt;uLipSync&lt;/a&gt; for the web, the choice for WASM was quickly made. Performance is paramount for audio processing. Especially since the lip sync should run in realtime on mobile devices. However, just using WASM does not automatically mean performance. After porting the C# code to C++, it was time to look for possible optimizations.&lt;/p&gt;</description></item><item><title>A-Frame Adventures 03 - Projecting textures</title><link>https://fern.solutions/dev-logs/aframe-adventures-03/</link><pubDate>Mon, 23 May 2022 09:00:00 +0200</pubDate><guid>https://fern.solutions/dev-logs/aframe-adventures-03/</guid><description>&lt;p&gt;Lighting is an important aspect of any 3D scene. When using dynamic lights, there are typically a handful of light types that can be used. In the spotlights today is&amp;hellip; the spotlight. With a little bit of effort it can not only illuminate the scene with a solid colour, but project an actual image onto the scene. This allows it to be used as a projector or to give texture to light from a flash light and more. &lt;a href="https://aframe-adventures.fern.solutions/03-projection/"




 target="_blank"
 


&gt;Check out the online demo&lt;/a&gt;&lt;/p&gt;</description></item><item><title>A-Frame Adventures 02 - Fixing Fog</title><link>https://fern.solutions/dev-logs/aframe-adventures-02/</link><pubDate>Tue, 10 May 2022 14:00:00 +0200</pubDate><guid>https://fern.solutions/dev-logs/aframe-adventures-02/</guid><description>&lt;p&gt;There are many reasons to add fog to a scene. It gives a scene more depth and can be used to create various aesthetics, like a spooky swamp or a morning fog. It also conveniently covers up the far edges of the scene. Luckily A-Frame has built-in support for fog. However there is something wrong with it&amp;hellip; In this post we&amp;rsquo;ll look into the problem and create a fix for it.&lt;/p&gt;</description></item><item><title>A-Frame Adventures 01 - Locomotion</title><link>https://fern.solutions/dev-logs/aframe-adventures-01/</link><pubDate>Mon, 02 May 2022 10:00:00 +0200</pubDate><guid>https://fern.solutions/dev-logs/aframe-adventures-01/</guid><description>&lt;p&gt;In VR one can move around by physically moving through the play space. However, virtual worlds easily span a size many times larger than the play space.
In those cases an additional mode of locomotion is needed. Common approaches include teleportation and smooth locomotion. In this post we&amp;rsquo;ll be exploring implementing smooth locomotion in &lt;a href="https://aframe.io/"




 target="_blank"
 


&gt;A-Frame&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Devlog 01 - Warming up</title><link>https://fern.solutions/dev-logs/devlog-01/</link><pubDate>Wed, 23 Feb 2022 18:16:05 +0100</pubDate><guid>https://fern.solutions/dev-logs/devlog-01/</guid><description>&lt;p&gt;In this series of Dev Logs, I&amp;rsquo;ll be going over the developments going on within Fern Solutions. This is the very first installment and as the title &amp;lsquo;Warming up&amp;rsquo; implies, preparations are in full swing to get started on the first project.&lt;/p&gt;</description></item></channel></rss>