<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Webgl on Vijay Kodam</title><link>https://vijay.eu/tags/webgl/</link><description>Recent content in Webgl on Vijay Kodam</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Wed, 10 Jun 2026 12:00:00 +0300</lastBuildDate><atom:link href="https://vijay.eu/tags/webgl/index.xml" rel="self" type="application/rss+xml"/><item><title>Retro Racer</title><link>https://vijay.eu/projects/retro-racer/</link><pubDate>Wed, 10 Jun 2026 12:00:00 +0300</pubDate><guid>https://vijay.eu/projects/retro-racer/</guid><description>&lt;div class="retro-racer"&gt;
&lt;h1 class="racer-title"&gt;Retro Racer&lt;/h1&gt;
&lt;p class="racer-subtitle"&gt;A 3D arcade racer. One lap, against the clock.&lt;/p&gt;
&lt;div class="racer-frame"&gt;
&lt;canvas id="racerCanvas"&gt;&lt;/canvas&gt;
&lt;div class="racer-banner hidden" id="racerBanner" aria-live="polite"&gt;&lt;/div&gt;
&lt;div class="racer-hud" aria-live="off"&gt;
&lt;div class="hud-item"&gt;
&lt;span class="hud-label"&gt;Time&lt;/span&gt;
&lt;span class="hud-value" id="hudTime"&gt;0:00.0&lt;/span&gt;
&lt;/div&gt;
&lt;div class="hud-item hud-item--speed"&gt;
&lt;span class="hud-label"&gt;Speed&lt;/span&gt;
&lt;span class="hud-value" id="hudSpeed"&gt;0 km/h&lt;/span&gt;
&lt;/div&gt;
&lt;div class="hud-item"&gt;
&lt;span class="hud-label"&gt;Progress&lt;/span&gt;
&lt;span class="hud-value" id="hudProgress"&gt;0%&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="racer-overlay" id="racerStart"&gt;
&lt;h2&gt;Retro Racer&lt;/h2&gt;
&lt;p&gt;Complete one lap as fast as you can. Dodge traffic and stay on the road - grass and crashes will slow you down.&lt;/p&gt;
&lt;p&gt;Arrow keys or WASD to drive. On touch devices, hold gas/brake with your left thumb and steer with your right.&lt;/p&gt;
&lt;button class="racer-btn" id="racerStartBtn" type="button" disabled&gt;Start Race&lt;/button&gt;
&lt;p class="racer-loading" id="racerLoading"&gt;Loading 3D assets...&lt;/p&gt;
&lt;p class="racer-best" id="racerStartBest"&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="racer-overlay hidden" id="racerResults"&gt;
&lt;h2&gt;Finish!&lt;/h2&gt;
&lt;p class="racer-result-time" id="racerResultTime"&gt;&lt;/p&gt;
&lt;p class="racer-best" id="racerResultBest"&gt;&lt;/p&gt;
&lt;button class="racer-btn" id="racerAgainBtn" type="button"&gt;Race Again&lt;/button&gt;
&lt;/div&gt;
&lt;div class="racer-cinematic hidden" id="racerCinematic" aria-hidden="true"&gt;
&lt;div class="racer-letterbox racer-letterbox--top"&gt;&lt;/div&gt;
&lt;div class="racer-letterbox racer-letterbox--bottom"&gt;&lt;/div&gt;
&lt;div class="racer-flyby-label"&gt;
&lt;span class="racer-flyby-name"&gt;Mazda Miata&lt;/span&gt;
&lt;span class="racer-flyby-sub"&gt;MX-5 NA&lt;/span&gt;
&lt;/div&gt;
&lt;button class="racer-skip-btn" id="racerSkipBtn" type="button"&gt;Skip &amp;rsaquo;&amp;rsaquo;&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="racer-touch"&gt;
&lt;div class="touch-cluster touch-cluster--drive" aria-label="Speed controls (left thumb)"&gt;
&lt;button class="touch-btn touch-btn--gas" id="racerBtnGas" type="button" aria-label="Accelerate"&gt;GAS&lt;/button&gt;
&lt;button class="touch-btn touch-btn--brake" id="racerBtnBrake" type="button" aria-label="Brake"&gt;BRAKE&lt;/button&gt;
&lt;/div&gt;
&lt;div class="touch-cluster touch-cluster--steer" aria-label="Steering controls (right thumb)"&gt;
&lt;button class="touch-btn touch-btn--arrow" id="racerBtnLeft" type="button" aria-label="Steer left"&gt;&amp;larr;&lt;/button&gt;
&lt;button class="touch-btn touch-btn--arrow" id="racerBtnRight" type="button" aria-label="Steer right"&gt;&amp;rarr;&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p class="racer-note"&gt;Built with vanilla JavaScript and &lt;a href="https://threejs.org/" rel="noopener"&gt;three.js&lt;/a&gt;. Car models "&lt;a href="https://sketchfab.com/3d-models/mazda-miata-mx-5-na-d51fcd44b74f4daf8012c41e0400c041" rel="noopener"&gt;Mazda Miata MX-5 NA&lt;/a&gt;" and "&lt;a href="https://sketchfab.com/3d-models/toyota-ae86-trueno-fe02fba6302e450ea8424591493341ea" rel="noopener"&gt;Toyota AE86 Trueno&lt;/a&gt;" by Lexyc16 on Sketchfab (CC-BY 4.0). Textures and lighting from &lt;a href="https://polyhaven.com/" rel="noopener"&gt;Poly Haven&lt;/a&gt; (CC0). Your best lap time is stored locally in your browser.&lt;/p&gt;
&lt;/div&gt;</description></item></channel></rss>