<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Alain Galvan · Ray Tracing Driver Engineer at AMD</title><link>https://alain.xyz</link><description>Alain Galvan · Ray Tracing Driver Engineer at AMD. Personal portfolio and blog with articles and projects focused on computer graphics engineering.</description><copyright>Copyright Alain Galvan All Rights Reserved</copyright><managingEditor>Alain Galvan</managingEditor><webMaster>Alain Galvan</webMaster><category>alain</category><category>galvan</category><category>remote</category><category>west palm beach</category><category>miami</category><category>florida</category><category>new york city</category><category>amd</category><category>marmoset</category><category>vulkan</category><category>opengl</category><category>directx</category><category>metal</category><category>webgpu</category><category>graphics</category><category>programmer</category><category>artist</category><category>indie</category><category>tutorial</category><category>mathematics</category><category>rendering</category><category>demo</category><category>3D</category><category>realtime</category><category>shader</category><category>raytracing</category><category>webgl</category><category>glsl</category><category>research</category><ttl>1200</ttl><image><url>/assets/cover.jpg</url><title>Alain Galvan · Ray Tracing Driver Engineer at AMD</title><link>https://alain.xyz</link><width>1920</width><height>1080</height><description>Alain Galvan · Ray Tracing Driver Engineer at AMD</description></image><item><title>GPGPU Compute Concepts</title><link>/blog/gpgpu-compute-concepts</link><description><![CDATA[A comprehensive overview of general purpose graphics processing unit (GPGPU) computing, how modern GPU hardware execute compute shaders, and best practices for applications and games.]]></description><author>Alain Galvan</author><category>blog</category><category>gpgpu</category><category>rdna2</category><category>gpu</category><category>shader</category><category>kernel</category><enclosure url="/blog/gpgpu-compute-concepts/assets/cover.jpg" length="138954" type="image/jpg"/><pubDate>2023-01-19 22:00:00.049 UTC</pubDate></item><item><title>Ray Tracing Acceleration Structures</title><link>/blog/ray-tracing-acceleration-structures</link><description><![CDATA[An overview of ray tracing acceleration structures, reviewing bounding volume hierarchies, KD-trees, morton codes, and recent papers on the subject.]]></description><author>Alain Galvan</author><category>blog</category><category>aabb</category><category>intersection</category><category>acceleration</category><category>ray tracing</category><category>bounding volume hierarchy</category><enclosure url="/blog/ray-tracing-acceleration-structures/assets/cover.jpg" length="53326" type="image/jpg"/><pubDate>2022-04-24 22:00:00.049 UTC</pubDate></item><item><title>A Review of Shader Languages</title><link>/blog/a-review-of-shader-languages</link><description><![CDATA[A review of the state of the art in real time graphics shading languages and compilers in both graphics and compute. What are some of the differences between HLSL, GLSL, MSL, and WGSL? What are some ways to transpile shaders?]]></description><author>Alain Galvan</author><category>blog</category><category>shader</category><category>hlsl</category><category>glsl</category><category>msl</category><category>vulkan</category><category>directx</category><category>opengl</category><category>spir-v</category><category>metal</category><enclosure url="/blog/a-review-of-shader-languages/assets/cover.jpg" length="120081" type="image/jpg"/><pubDate>2022-02-12 23:30:00 UTC</pubDate></item><item><title>Raw DirectX 12</title><link>/blog/raw-directx12</link><description><![CDATA[An introduction to writing a simple Hello Triangle DirectX 12 application. DirectX 12 is the latest low level graphics API for writing Windows applications, supporting ray tracing, compute, rasterization, and much more.]]></description><author>Alain Galvan</author><category>blog</category><category>opengl</category><category>triangle</category><category>hello</category><category>theory</category><category>diagrams</category><category>directx</category><category>vulkan</category><enclosure url="/blog/raw-directx12/assets/cover.jpg" length="131073" type="image/jpg"/><pubDate>2021-10-24 00:36:34.267 UTC</pubDate></item><item><title>Raw DirectX 11</title><link>/blog/raw-directx11</link><description><![CDATA[An introduction to writing a simple Hello Triangle DirectX 11 application. DirectX 11 is the previous version of the standard low level graphics API for writing Windows applications, supporting compute, rasterization, and much more.]]></description><author>Alain Galvan</author><category>blog</category><category>opengl</category><category>triangle</category><category>hello</category><category>theory</category><category>diagrams</category><category>directx</category><category>vulkan</category><enclosure url="/blog/raw-directx11/assets/cover.jpg" length="130218" type="image/jpg"/><pubDate>2021-10-23 00:36:34.267 UTC</pubDate></item><item><title>Frame Analysis - Control</title><link>/blog/frame-analysis-control</link><description><![CDATA[A review of the rendering architecture of Control, reviewing their ray tracer, rendering architecture, and technical art direction.]]></description><author>Alain Galvan</author><category>blog</category><category>game engine</category><category>frame</category><category>analysis</category><category>render</category><category>pbr</category><category>prepass</category><category>control</category><enclosure url="/blog/frame-analysis-control/assets/cover.jpg" length="1114338" type="image/jpg"/><pubDate>2021-06-11 19:00:34.267 UTC</pubDate></item><item><title>Intro to Toolbag Custom Shaders</title><link>/blog/intro-toolbag-custom-shaders</link><description><![CDATA[An introduction to writing your own custom shaders using Marmoset Toolbag. Create custom shaders for material behavior or screen space effects.]]></description><author>Alain Galvan</author><category>blog</category><category>marmoset</category><category>toolbag</category><category>shaders</category><category>custom</category><enclosure url="/blog/intro-toolbag-custom-shaders/assets/cover.jpg" length="165686" type="image/jpg"/><pubDate>2021-06-03 00:30:00 UTC</pubDate></item><item><title>Intro to Writing Toolbag Plugins</title><link>/blog/marmoset-toolbag-python-intro</link><description><![CDATA[A introduction to writing plugins with Marmoset Toolbag. Learn tips and tricks to configure your development setup as we go over examples of different use cases for writing a Toolbag Plugin.]]></description><author>Alain Galvan</author><category>blog</category><category>marmoset</category><category>toolbag</category><category>glsl</category><category>python</category><category>cpp</category><enclosure url="/blog/marmoset-toolbag-python-intro/assets/cover.jpg" length="367236" type="image/jpg"/><pubDate>2021-03-26 00:01:34.267 UTC</pubDate></item><item><title>A Comparison of Modern Graphics APIs</title><link>/blog/comparison-of-modern-graphics-apis</link><description><![CDATA[Low level Graphics APIs such as DirectX 12, Vulkan, Metal, and WebGPU are converging to a model similar to the way GPUs are currently built. In this article we'll review modern graphics APIs and how they compare with older graphics APIs such as OpenGL in their design and data structures.]]></description><author>Alain Galvan</author><category>blog</category><category>shader</category><category>vulkan</category><category>directx</category><category>directx12</category><category>ultimate</category><category>opengl</category><category>webgpu</category><category>metal</category><category>graphics</category><category>api</category><enclosure url="/blog/comparison-of-modern-graphics-apis/assets/cover.jpg" length="287796" type="image/jpg"/><pubDate>2021-01-31 01:54:43.049 UTC</pubDate></item><item><title>Ray Tracing Denoising</title><link>/blog/ray-tracing-denoising</link><description><![CDATA[An overview of ray tracing denoising, reviewing filtering, spatiotemporal, sampling and AI techniques to improve convergence and temporal coherency in real time ray traced applications.]]></description><author>Alain Galvan</author><category>blog</category><category>denoise</category><category>denosing</category><category>ray tracing</category><category>restir</category><category>filter</category><category>svgf</category><category>asvgf</category><category>a-trous</category><category>atrous</category><category>blue</category><category>noise</category><enclosure url="/blog/ray-tracing-denoising/assets/cover.jpg" length="343028" type="image/jpg"/><pubDate>2020-10-06 22:00:00.049 UTC</pubDate></item><item><title>Portfolio Design and Engineering</title><link>/blog/portfolio-design-engineering</link><description><![CDATA[Let's discuss what it means to design and engineer a portfolio, looking at case studies, engineering, and user experience design.]]></description><author>Alain Galvan</author><category>blog</category><category>portfolio</category><category>web</category><category>design</category><category>ux</category><category>diagrams</category><category>theory</category><category>vlog</category><enclosure url="/blog/portfolio-design-engineering/assets/cover.jpg" length="772772" type="image/jpg"/><pubDate>2020-07-12 16:00:00.267 UTC</pubDate></item><item><title>Frame Analysis - Minecraft RTX Beta</title><link>/blog/frame-analysis-minecraftrtx</link><description><![CDATA[A review of the rendering architecture of the new Minecraft RTX renderer, reviewing their implementation of SVGF, their path tracer, and their DLSS implementation.]]></description><author>Alain Galvan</author><category>blog</category><category>game engine</category><category>frame</category><category>analysis</category><category>render</category><category>pbr</category><category>prepass</category><category>minecraft</category><enclosure url="/blog/frame-analysis-minecraftrtx/assets/cover.jpg" length="483316" type="image/jpg"/><pubDate>2020-05-18 19:00:34.267 UTC</pubDate></item><item><title>Frame Analysis - Mortal Kombat 11</title><link>/blog/frame-analysis-mk11</link><description><![CDATA[Because of Mortal Kombat 11's impressive presentation, I just had to take a look at their renderer to see what's powering those awesome graphics, and I'm eager to share what's in it.]]></description><author>Alain Galvan</author><category>blog</category><category>graphics</category><category>api</category><category>debugging</category><enclosure url="/blog/frame-analysis-mk11/assets/cover.jpg" length="543051" type="image/jpg"/><pubDate>2020-04-27 16:00:00.267 UTC</pubDate></item><item><title>Frame Analysis - Overwatch 1</title><link>/blog/frame-analysis-overwatch</link><description><![CDATA[A review of the rendering architecture of the game Overwatch 1, from its depth shadow pass all the way to its UI pass and presenting to the screen.]]></description><author>Alain Galvan</author><category>blog</category><category>game engine</category><category>frame</category><category>analysis</category><category>render</category><category>pbr</category><category>prepass</category><category>overwatch</category><enclosure url="/blog/frame-analysis-overwatch/assets/cover.jpg" length="752748" type="image/jpg"/><pubDate>2020-04-13 00:36:34.277 UTC</pubDate></item><item><title>GUI Architecture with Graphics APIs</title><link>/blog/gui-architecture-with-graphics-apis</link><description><![CDATA[An overview of the state of the art in user interfaces and the underlying architecture that drives graphical user interfaces built on top of Graphics APIs.]]></description><author>Alain Galvan</author><category>blog</category><category>shader</category><category>glsl</category><category>hlsl</category><category>vulkan</category><category>directx</category><category>opengl</category><category>spir-v</category><category>metal</category><category>gl</category><category>gui</category><enclosure url="/blog/gui-architecture-with-graphics-apis/assets/cover.jpg" length="119256" type="image/jpg"/><pubDate>2020-03-02 19:00:00 UTC</pubDate></item><item><title>Raw WebGPU</title><link>/blog/raw-webgpu</link><description><![CDATA[An overview on how to write a WebGPU application. Learn what key data structures and types are needed to draw in WebGPU.]]></description><author>Alain Galvan</author><category>blog</category><category>webgpu</category><category>tutorial</category><category>github</category><category>ts</category><category>js</category><enclosure url="/blog/raw-webgpu/assets/cover.jpg" length="62790" type="image/jpg"/><pubDate>2019-12-27 00:30:00 UTC</pubDate></item><item><title>Machine Learning Denoising</title><link>/blog/machine-learning-denoising</link><description><![CDATA[A review of different techniques for denoising monte-carlo images with machine learning. Learn about autoencoders and currently available implementations such as OIDN and the Optix Autoencoder.]]></description><author>Alain Galvan</author><category>blog</category><category>draft</category><category>wip</category><category>machine learning</category><category>neural networks</category><category>autoencoder</category><category>theory</category><category>graphics</category><category>denoising</category><category>optix</category><category>odin</category><enclosure url="/blog/machine-learning-denoising/assets/cover.jpg" length="622134" type="image/jpg"/><pubDate>2019-09-11 00:36:34.267 UTC</pubDate></item><item><title>Raw Metal</title><link>/blog/raw-metal</link><description><![CDATA[An overview on how to write modern Apple Metal applications. Learn what key data structures are needed for it and how to draw objects.]]></description><author>Alain Galvan</author><category>blog</category><category>opengl</category><category>triangle</category><category>hello</category><category>theory</category><category>diagrams</category><enclosure url="/blog/raw-metal/assets/cover.jpg" length="230558" type="image/jpg"/><pubDate>2019-09-09 00:36:34.267 UTC</pubDate></item><item><title>Raw Vulkan</title><link>/blog/raw-vulkan</link><description><![CDATA[An overview on how to program a Hello Triangle Vulkan application from the ground up. Learn the core data structures and modern GPU execution model needed to render raster based graphics.]]></description><author>Alain Galvan</author><category>blog</category><category>vulkan</category><category>hello</category><category>world</category><category>triangle</category><category>introduction</category><category>beginner</category><category>opengl</category><enclosure url="/blog/raw-vulkan/assets/cover.jpg" length="266061" type="image/jpg"/><pubDate>2019-09-09 00:30:00 UTC</pubDate></item><item><title>Raw WebGL</title><link>/blog/raw-webgl</link><description><![CDATA[An overview on how to write a WebGL application. Learn what key data structures and types are needed to draw in WebGL.]]></description><author>Alain Galvan</author><category>webgl</category><category>tutorial</category><category>github</category><category>ts</category><category>js</category><enclosure url="/blog/raw-webgl/assets/cover.jpg" length="62064" type="image/jpg"/><pubDate>2019-09-05 00:30:00 UTC</pubDate></item><item><title>Raw OpenGL</title><link>/blog/raw-opengl</link><description><![CDATA[An overview on how to write modern OpenGL applications. Learn what key data structures are needed for it and how to draw objects.]]></description><author>Alain Galvan</author><category>blog</category><category>opengl</category><category>triangle</category><category>hello</category><category>theory</category><category>diagrams</category><enclosure url="/blog/raw-opengl/assets/cover.jpg" length="222859" type="image/jpg"/><pubDate>2019-08-17 00:36:34.267 UTC</pubDate></item><item><title>Noise Generation Survey</title><link>/blog/noise-generation-survey</link><description><![CDATA[A summary of different hashing functions, low-discrepancy sequences, turbulence, convolution, and artistic generation techniques.]]></description><author>Alain Galvan</author><category>blog</category><category>shader</category><category>noise</category><category>generation</category><enclosure url="/blog/noise-generation-survey/assets/cover.jpg" length="590164" type="image/jpg"/><pubDate>2019-07-01 12:30:00 UTC</pubDate></item><item><title>Ray Tracing Filtering</title><link>/blog/ray-tracing-filtering</link><description><![CDATA[An overview of image based ray tracing denoising, discussing blurring kernels and spatio-temporal reprojection techniques described in research papers and real time rendering engines.]]></description><author>Alain Galvan</author><category>blog</category><category>denoise</category><category>denoising</category><category>raytracing</category><category>filter</category><category>svgf</category><category>asvgf</category><category>a-trous</category><category>atrous</category><category>blue</category><category>noise</category><enclosure url="/blog/ray-tracing-filtering/assets/cover.jpg" length="2056333" type="image/jpg"/><pubDate>2019-06-28 01:54:43.049 UTC</pubDate></item><item><title>Real Time Renderer Architectures</title><link>/blog/realtime-renderer-architectures</link><description><![CDATA[A review of the state of the art in real time renderer architectures.]]></description><author>Alain Galvan</author><category>blog</category><category>shader</category><category>glsl</category><category>hlsl</category><category>vulkan</category><category>directx</category><category>opengl</category><category>spir-v</category><category>metal</category><enclosure url="/blog/realtime-renderer-architectures/assets/cover.jpg" length="94374" type="image/jpg"/><pubDate>2019-06-27 12:30:00 UTC</pubDate></item><item><title>Real Time Ray Tracing</title><link>/blog/real-time-ray-tracing</link><description><![CDATA[An overview of various ray operations, their similarities, differences, and how to implement each type of ray operation in real time rendering.]]></description><author>Alain Galvan</author><category>blog</category><category>shader</category><category>glsl</category><category>hlsl</category><category>vulkan</category><category>directx</category><category>opengl</category><category>spir-v</category><category>metal</category><enclosure url="/blog/real-time-ray-tracing/assets/cover.jpg" length="80063" type="image/jpg"/><pubDate>2019-06-20 12:30:00 UTC</pubDate></item><item><title>Graphics Debugging</title><link>/blog/graphics-debugging</link><description><![CDATA[Graphics API debuggers have grown in complexity over the years as they expose more tools to developers looking to optimize their applications. The following is an overview of new graphics API debuggers and how you could use them to optimize your graphical applications.]]></description><author>Alain Galvan</author><category>blog</category><category>graphics</category><category>api</category><category>debugging</category><enclosure url="/blog/graphics-debugging/assets/cover.jpg" length="197232" type="image/jpg"/><pubDate>2019-06-12 00:36:34.267 UTC</pubDate></item><item><title>Advances in Material Models</title><link>/blog/advances-in-material-models</link><description><![CDATA[A review of material models used in real-time renderers and ray tracing engines.]]></description><author>Alain Galvan</author><category>blog</category><category>shader</category><category>glsl</category><category>hlsl</category><category>vulkan</category><category>directx</category><category>opengl</category><category>spir-v</category><category>metal</category><enclosure url="/blog/advances-in-material-models/assets/cover.jpg" length="840652" type="image/jpg"/><pubDate>2019-06-05 11:30:00 UTC</pubDate></item><item><title>Image Editor Effects</title><link>/blog/image-editor-effects</link><description><![CDATA[A review of image adjustment / effects shader logic found in Photoshop and other image editors and game engines. We'll discuss layer effects, filters, color correction, and how to include these effects in your own applications.]]></description><author>Alain Galvan</author><category>blog</category><category>shader</category><category>glsl</category><category>hlsl</category><category>vulkan</category><category>directx</category><category>opengl</category><category>spir-v</category><category>metal</category><category>photoshop</category><category>layer</category><category>effects</category><category>logic</category><enclosure url="/blog/image-editor-effects/assets/cover.jpg" length="400396" type="image/jpg"/><pubDate>2018-11-11 11:30:00 UTC</pubDate></item><item><title>Game Engine Architecture</title><link>/blog/game-engine-architecture</link><description><![CDATA[A review of modern game engine architectures, discussing different approaches to modeling high and low level systems, actors, entity component systems, data oriented design, and current best practices.]]></description><author>Alain Galvan</author><category>blog</category><category>game engine</category><enclosure url="/blog/game-engine-architecture/assets/cover.jpg" length="676055" type="image/jpg"/><pubDate>2018-10-27 00:36:34.267 UTC</pubDate></item><item><title>Switching between JavaScript, C++, and Rust</title><link>/blog/switching-between-js-cpp-rust</link><description><![CDATA[A look into the similarities and differences between JavaScript, C++, and Rust.]]></description><author>Alain Galvan</author><category>blog</category><category>tutorial</category><category>c++</category><category>rust</category><category>js</category><category>javascript</category><category>vs</category><category>switch</category><category>similarities</category><category>differences</category><enclosure url="/blog/switching-between-js-cpp-rust/assets/cover.png" length="80173" type="image/png"/><pubDate>2017-04-20 01:54:43.049 UTC</pubDate></item><item><title>Unreal Engine Architecture</title><link>/blog/unreal-engine-architecture</link><description><![CDATA[A high level overview of Unreal Engine 4's Engine Architecture, reviewing the RHI and underlying design.]]></description><author>Alain Galvan</author><category>blog</category><category>unreal</category><category>engine</category><category>tutorial</category><category>RHI</category><category>rendering</category><category>hardware</category><category>interface</category><enclosure url="/blog/unreal-engine-architecture/assets/cover.jpg" length="50986" type="image/jpg"/><pubDate>2017-02-15 00:36:34.267 UTC</pubDate></item><item><title>Unity Engine Architecture</title><link>/blog/unity-engine-architecture</link><description><![CDATA[A high level overview of Unity 3D's Engine Architecture.]]></description><author>Alain Galvan</author><category>blog</category><category>unity</category><category>engine</category><category>tutorial</category><enclosure url="/blog/unity-engine-architecture/assets/cover.png" length="369601" type="image/png"/><pubDate>2017-02-10 00:36:34.267 UTC</pubDate></item><item><title>Intro to Sound Programming</title><link>/blog/intro-sound-programming</link><description><![CDATA[A tutorial on how to program your own synth with WebAudio.]]></description><author>Alain Galvan</author><category>blog</category><category>synth</category><category>audio</category><category>programming</category><category>tutorial</category><enclosure url="/blog/intro-sound-programming/assets/cover.gif" length="1078367" type="image/gif"/><pubDate>2017-02-05 00:30:00 UTC</pubDate></item><item><title>Unreal Engine 4 - Working with 3rd Party Libraries</title><link>/blog/ue4-working-with-3rd-party-libraries</link><description><![CDATA[A tutorial on how to use 3rd party libraries in Unreal Engine 4.]]></description><author>Alain Galvan</author><category>blog</category><category>unreal</category><category>engine</category><category>4</category><category>c++</category><category>boost</category><category>lib</category><category>tutorial</category><enclosure url="/blog/ue4-working-with-3rd-party-libraries/assets/cover.png" length="81941" type="image/png"/><pubDate>2016-11-12 01:56:19.318 UTC</pubDate></item><item><title>Designing a C++ Library</title><link>/blog/designing-a-cpp-library</link><description><![CDATA[What should you do to create an easy to consume C++ library?]]></description><author>Alain Galvan</author><category>blog</category><category>javascript</category><category>js</category><category>ecmascript</category><category>2017</category><category>ecma</category><category>node</category><category>node.js</category><enclosure url="/blog/designing-a-cpp-library/assets/cover.png" length="173272" type="image/png"/><pubDate>2016-10-01 00:30:00 UTC</pubDate></item><item><title>The Making of Excursion Funnel</title><link>/blog/the-making-of-excursion-funnel</link><description><![CDATA[The making of my Shadertoy Siggraph 2015 Entry 'Excursion Funnel'.]]></description><author>Alain Galvan</author><category>blog</category><category>shadertoy</category><category>raymarching</category><enclosure url="/blog/the-making-of-excursion-funnel/assets/cover.jpg" length="261888" type="image/jpg"/><pubDate>2016-09-05 00:30:00 UTC</pubDate></item><item><title>Designing a Web Application</title><link>/blog/designing-a-web-app</link><description><![CDATA[What does it take to develop modern web applications, what are the best practices and tools/languages you should use?]]></description><author>Alain Galvan</author><category>blog</category><category>javascript</category><category>js</category><category>ecmascript</category><category>2017</category><category>ecma</category><category>node</category><category>node.js</category><enclosure url="/blog/designing-a-web-app/assets/cover.jpg" length="169277" type="image/jpg"/><pubDate>2016-09-01 00:30:00 UTC</pubDate></item><item><title>Pixel Art Design for Game Development</title><link>/blog/pixel-art-design-for-game-dev</link><description><![CDATA[Everything you need to know to get started making pixel art for indie game development.]]></description><author>Alain Galvan</author><category>blog</category><category>pixel</category><category>art</category><category>game</category><category>development</category><category>sprite</category><category>sprites</category><category>gba</category><category>snes</category><category>nintendo</category><category>gameboy</category><category>design</category><enclosure url="/blog/pixel-art-design-for-game-dev/assets/cover.gif" length="91301" type="image/gif"/><pubDate>2016-08-28 02:34:20.509 UTC</pubDate></item><item><title>The Making of Alain.xyz</title><link>/blog/the-making-of-alain-xyz</link><description><![CDATA[The thoughts behind the design of Alain.xyz.]]></description><author>Alain Galvan</author><category>blog</category><category>alain</category><category>galvan</category><category>making</category><category>of</category><category>design</category><enclosure url="/blog/the-making-of-alain-xyz/assets/cover.jpg" length="57099" type="image/jpg"/><pubDate>2016-08-04 00:30:00 UTC</pubDate></item></channel></rss>