<?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 NicoLabs</title>
		<link>http://blog.hellonico.info/tags/webgl/</link>
		<description>Recent content in Webgl on NicoLabs</description>
		<generator>Hugo</generator>
		<language>ja-JP</language>
		
		
		
		
			<lastBuildDate>Sun, 28 Jun 2026 11:30:00 +0900</lastBuildDate>
		
			<atom:link href="http://blog.hellonico.info/tags/webgl/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Hardcore Chaos Testing for Coni&#39;s Native Float32 Arrays</title>
				<link>http://blog.hellonico.info/posts/coni/float32-chaos-testing/</link>
				<pubDate>Sun, 28 Jun 2026 11:30:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/posts/coni/float32-chaos-testing/</guid>
				<description>&lt;p&gt;When you&amp;rsquo;re building high-performance applications in the browser, JavaScript&amp;rsquo;s generic &lt;code&gt;Number&lt;/code&gt; type often isn&amp;rsquo;t enough. You need raw, contiguous memory arrays. In Coni WASM, we rely heavily on native WebAssembly &lt;code&gt;float32&lt;/code&gt; arrays for our most mathematically intensive applications.&lt;/p&gt;&#xA;&lt;h3 id=&#34;where-is-float32-actually-used-in-coni&#34;&gt;Where is Float32 actually used in Coni?&lt;/h3&gt;&#xA;&lt;p&gt;Native &lt;code&gt;float32&lt;/code&gt; arrays (&lt;code&gt;make-float32-array&lt;/code&gt;, &lt;code&gt;f32-set!&lt;/code&gt;, &lt;code&gt;f32-get&lt;/code&gt;) are the absolute backbone of Coni&amp;rsquo;s performance layer. You&amp;rsquo;ll find them powering:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;WebGL Geometry:&lt;/strong&gt; In our &lt;code&gt;deep-focus-webgl&lt;/code&gt; app, we use &lt;code&gt;float32&lt;/code&gt; arrays to mathematically sculpt an 80,000-vertex brain matrix (240,000 floats!) natively, before shipping it to the GPU in a single shot via &lt;code&gt;js/float32-buffer&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Game Engine Particle Systems:&lt;/strong&gt; For games like &lt;code&gt;flappy-bird&lt;/code&gt; or &lt;code&gt;neon-boids&lt;/code&gt;, parallel &lt;code&gt;float32&lt;/code&gt; arrays keep track of thousands of X/Y coordinates, velocities, and lifetimes without garbage collection pauses.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Raw DSP Audio:&lt;/strong&gt; Our &lt;code&gt;sound-nodes&lt;/code&gt; synthesizer calculates complex impulse responses and noise waveforms natively using &lt;code&gt;float32&lt;/code&gt; arrays before mapping them into WebAudio channels.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;the-bug-type-coercion-and-f64reinterpret_i64&#34;&gt;The Bug: Type Coercion and &lt;code&gt;f64.reinterpret_i64&lt;/code&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Because of how critical these arrays are, any bug in them is catastrophic. Recently, we discovered an issue where passing an exact integer (like &lt;code&gt;150&lt;/code&gt;) into &lt;code&gt;f32-set!&lt;/code&gt; would mysteriously yield &lt;code&gt;0.0&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Building 40Hz Cognitive Focus Apps in Coni WASM</title>
				<link>http://blog.hellonico.info/posts/coni/brain-waves-wasm/</link>
				<pubDate>Sun, 28 Jun 2026 07:30:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/posts/coni/brain-waves-wasm/</guid>
				<description>&lt;p&gt;WebAssembly in the browser has always promised incredible performance, but bridging it smoothly with Web APIs like WebAudio and WebGL can sometimes feel like solving a puzzle. Today, we&amp;rsquo;re thrilled to showcase how the Coni ecosystem elegantly solves this by introducing two brand-new web apps designed for cognitive focus.&lt;/p&gt;&#xA;&lt;p&gt;These two applications generate a &lt;strong&gt;40Hz gamma frequency&lt;/strong&gt;—a specific brain wave frequency associated with deep focus, memory recall, and cognitive enhancement—using binaural beats. But the real magic lies under the hood: they are both written entirely in &lt;strong&gt;Coni WASM&lt;/strong&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Writing WebGL Shaders in Pure Coni Lisp!</title>
				<link>http://blog.hellonico.info/posts/coni/coni-webgl-shaders/</link>
				<pubDate>Sun, 28 Jun 2026 07:30:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/posts/coni/coni-webgl-shaders/</guid>
				<description>&lt;p&gt;In our previous post, we showcased the raw power of Coni WASM by orchestrating an 80,000 particle WebGL matrix. But there was always one lingering annoyance in the WebGL pipeline: &lt;strong&gt;the shaders themselves.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;ve ever written WebGL code, you know the drill. You end up writing your Vertex and Fragment shaders as massive, messy string literals concatenated across your codebase. You lose syntax highlighting, formatting, and—most tragically for Lisp hackers—you lose structural editing (Paredit/Slurp/Barf).&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
