<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Js on NicoLabs</title>
		<link>http://blog.hellonico.info/ja/tags/js/</link>
		<description>Recent content in Js on NicoLabs</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Thu, 02 Jul 2026 12:00:00 +0900</lastBuildDate>
		
			<atom:link href="http://blog.hellonico.info/ja/tags/js/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Coniにおけるプロシージャル・オーディオとWebGL WebAssemblyのエクスペリエンス</title>
				<link>http://blog.hellonico.info/ja/posts/coni/procedural-audiovisual-wasm/</link>
				<pubDate>Thu, 02 Jul 2026 12:00:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/ja/posts/coni/procedural-audiovisual-wasm/</guid>
				<description>&lt;p&gt;過去24時間だけで、私たちは&lt;strong&gt;Coni WebAssembly&lt;/strong&gt;エコシステムの限界を押し広げ、プロシージャル・オーディオビジュアルのウェブ体験スイート全体を作成しました。Coniのマクロシステムと生のWebGL、そしてWebAudio APIを組み合わせることで、複雑なグラフィックスと音楽システムを外部アセットへの依存を一切持たずに、ブラウザ上でネイティブに構築、コンパイル、展開することに成功しました。&lt;/p&gt;&#xA;&lt;p&gt;今回構築した5つの新しいアプリケーションを見てみましょう。これらはすべて&lt;a href=&#34;https://coni-lang.org/wasm-apps/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreffer &#34;&gt;Coni WASM Gallery&lt;/a&gt;で、ブラウザ上でネイティブに体験できます。&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-minimal-techno-visualizer&#34;&gt;1. Minimal Techno Visualizer&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;テーマ:&lt;/strong&gt; ダークでドライビングなアルゴリズミック・クラブエナジー。&#xA;&lt;em&gt;リンク:&lt;/em&gt; &lt;a href=&#34;https://coni-lang.org/wasm-apps/apps/minimal-techno/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreffer &#34;&gt;Minimal Techno App&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Coniがリアルタイムのプロシージャル音楽生成をオーケストレーションし、それを重い3Dジオメトリのレンダリングと完璧に同期できることを証明したかったのです。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;オーディオエンジン:&lt;/strong&gt; カスタムの140 BPMタイムラインエンジンが、16分音符の裏拍でアナログスタイルのノコギリ波ベースラインをトリガーし、808スタイルの合成キックと組み合わせ、ドロップ部分ではクリスピーなノイズベースのスネア/クラップを導入します。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;WebGLの繊細さ:&lt;/strong&gt; 16小節の「ブレイクダウン」中に重力を逆転させる5,000個の雨のパーティクルと、キックの打撃ごとにアグレッシブに広がる高密度の脈動する3Dジオメトリコアをマッピングしました。シーケンサーの状態に基づいて冷たいシアンから燃えるようなオレンジ色へと変化します。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-divine-infinity-999hz&#34;&gt;2. Divine Infinity 999Hz&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;テーマ:&lt;/strong&gt; エーテル的で数学的なヒーリング。&#xA;&lt;em&gt;リンク:&lt;/em&gt; &lt;a href=&#34;https://coni-lang.org/wasm-apps/apps/infinity-999hz/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreffer &#34;&gt;Divine Infinity 999Hz&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;神聖な周波数ヒーリングのコンセプトを中心に据えたこのアプリケーションは、純粋な数学とアンビエントオーディオの融合です。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;オーディオエンジン:&lt;/strong&gt; 深いリラクゼーションを誘発するために、微細な8Hzのシータ波バイノーラルビートで補完された999Hzの「エンジェル周波数」のサイン波を生成します。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;WebGLの繊細さ:&lt;/strong&gt; GLSLの頂点シェーダー内の純粋な三角関数を使用して、500,000個のパーティクルを「ベルヌーイのレムニスケート」（無限大の記号）上にマッピングしました。繊細なアンビエントグローと深度に基づいた不透明度のフェードにより、3D空間で完璧にレンダリングされます。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;3-clear-brain-fog-40hz&#34;&gt;3. Clear Brain Fog 40Hz&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;テーマ:&lt;/strong&gt; 幾何学的な明晰さと集中。&#xA;&lt;em&gt;リンク:&lt;/em&gt; &lt;a href=&#34;https://coni-lang.org/wasm-apps/apps/brain-fog-40hz/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreffer &#34;&gt;Clear Brain Fog 40Hz&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;精神的な混乱を払拭することを目的としたこのアプリは、魅惑的な幾何学とグラウンディング周波数を組み合わせています。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;オーディオエンジン:&lt;/strong&gt; 2つのオシレーター（左耳に432Hz、右耳に472Hz）をデチューンして作成された純粋な40Hzのバイノーラルビート。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;WebGLの繊細さ:&lt;/strong&gt; 頂点シェーダーに5枚の花びらが回転する3Dスピログラフをプログラムしました。複雑に重なり合う曲線が、カメラを全く動かすことなく前進し続ける錯覚を生み出し、目をフロー状態に引き込みます。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;4-webgl-guided-breathing-app&#34;&gt;4. WebGL Guided Breathing App&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;テーマ:&lt;/strong&gt; 制御されたリズミカルな瞑想。&#xA;&lt;em&gt;リンク:&lt;/em&gt; &lt;a href=&#34;https://coni-lang.org/wasm-apps/apps/breathing-app/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreffer &#34;&gt;Breathing App&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>WebGLによるガイド付き呼吸法: 6-2-6のインタラクティブ体験</title>
				<link>http://blog.hellonico.info/ja/posts/coni/breathing-app-webgl/</link>
				<pubDate>Mon, 29 Jun 2026 23:35:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/ja/posts/coni/breathing-app-webgl/</guid>
				<description>&lt;p&gt;ペースの速い今日のデジタル世界において、メンタルヘルスと集中力は非常に重要です。脳波同調（ブレインウェーブ・エントレインメント）アプリケーションの成功に続き、私たちはウェルビーイングのもう一つの側面である「&lt;strong&gt;意識的な呼吸&lt;/strong&gt;」に取り組むことにしました。&lt;/p&gt;&#xA;&lt;p&gt;私たちの最新のConi WASMアプリケーション、&lt;strong&gt;WebGL Breathing App&lt;/strong&gt;を発表できることを嬉しく思います。これは、落ち着きをもたらす6-2-6の呼吸エクササイズ（6秒吸って、2秒止め、6秒吐く）をガイドするためにゼロから構築された、視覚的および聴覚的な体験です。&lt;/p&gt;&#xA;&lt;h3 id=&#34;生きたuiを作成する&#34;&gt;生きたUIを作成する&lt;/h3&gt;&#xA;&lt;p&gt;単に拡大する円を表示する従来の呼吸タイマーとは異なり、私たちは「生きている」と感じられるものを作りたいと考えました。そこで、&lt;em&gt;Calm&lt;/em&gt;（シアン）、&lt;em&gt;Warm&lt;/em&gt;（オレンジ）、&lt;em&gt;Focus&lt;/em&gt;（パープル）から&lt;strong&gt;ムード&lt;/strong&gt;を設定できるインタラクティブなメニューを設計しました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;http://blog.hellonico.info/svg/loading.min.svg&#34;&#xA;        data-src=&#34;../breathe_in_01.png&#34;&#xA;        data-srcset=&#34;../breathe_in_01.png, ../breathe_in_01.png 1.5x, ../breathe_in_01.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;../breathe_in_01.png&#34;&#xA;        title=&#34;Breathing App Interface - Calm&#34; /&gt;&lt;/p&gt;&#xA;&lt;p&gt;エクササイズを開始すると、バックグラウンドの環境ノイズとプロシージャルに生成されたチャイムが再生され始めます。これらのサウンドはWeb Audio APIのみによって駆動され、ネイティブのConi関数によってシームレスにスケジューリングされます。ロジックを標準的なJSランタイムの遅延（ヒカップ）から分離することで、オーディオは完全に一貫性を保ち、ジッター（乱れ）のない状態を維持します。&lt;/p&gt;&#xA;&lt;h3 id=&#34;gpuのパワー&#34;&gt;GPUのパワー&lt;/h3&gt;&#xA;&lt;p&gt;内部では、アプリケーションはネイティブに計算され、WebAssemblyにキャッシュされた&lt;strong&gt;30,000個の幾何学的なパーティクル&lt;/strong&gt;のクラスターを生成します。これらのポイントは、選択したムードカラーと連続的な &lt;code&gt;u_breath_factor&lt;/code&gt; とともにWebGLシェーダーに渡されます。&lt;/p&gt;&#xA;&lt;p&gt;息を吸うと、球体は拡大し、頂点シェーダーで直接適用される三角関数のサインとコサインの操作によって頂点が緩やかに波打ちながら、半径が動的に拡大します。色の強さも増し、エネルギーの膨張を模倣します。&lt;/p&gt;&#xA;&lt;p&gt;息を吐くと、球体はタイトなコアへと収縮します。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;http://blog.hellonico.info/svg/loading.min.svg&#34;&#xA;        data-src=&#34;../breathe_in_02.png&#34;&#xA;        data-srcset=&#34;../breathe_in_02.png, ../breathe_in_02.png 1.5x, ../breathe_in_02.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;../breathe_in_02.png&#34;&#xA;        title=&#34;Breathing App WebGL Particle Sphere&#34; /&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;; フェーズを完全にWASM内で計算します&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;defn &lt;/span&gt;update-phase [t phase-text]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#66d9ef&#34;&gt;let &lt;/span&gt;[cycle-time (&lt;span style=&#34;color:#a6e22e&#34;&gt;fmod&lt;/span&gt; t &lt;span style=&#34;color:#ae81ff&#34;&gt;14000.0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        inhale-time &lt;span style=&#34;color:#ae81ff&#34;&gt;6000.0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        hold-time &lt;span style=&#34;color:#ae81ff&#34;&gt;2000.0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        exhale-time &lt;span style=&#34;color:#ae81ff&#34;&gt;6000.0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#66d9ef&#34;&gt;if &lt;/span&gt;(&amp;lt; cycle-time inhale-time)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;;; ... 拡張をスムーズに緩和するための数学ロジック&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;視覚的な変換をGPUにオフロードし、厳格な状態の同期をネイティブにWASM内で維持することで、ロボット的ではなく有機的に感じられる、シルクのように滑らかな60fpsの体験を実現しました。&lt;/p&gt;&#xA;&lt;h3 id=&#34;今すぐ試す&#34;&gt;今すぐ試す&lt;/h3&gt;&#xA;&lt;p&gt;新しいアプリケーションを私たちのWASMアプリ環境にデプロイしました。こちらから直接アクセスできます：&lt;/p&gt;</description>
			</item>
			<item>
				<title>Coni WASMによる40Hzの認知的集中アプリの構築</title>
				<link>http://blog.hellonico.info/ja/posts/coni/brain-waves-wasm/</link>
				<pubDate>Sun, 28 Jun 2026 07:30:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/ja/posts/coni/brain-waves-wasm/</guid>
				<description>&lt;p&gt;ブラウザ上のWebAssemblyは常に信じられないほどのパフォーマンスを約束してきましたが、WebAudioやWebGLといったWeb APIとスムーズに連携させることは、時にパズルを解くような感覚になることがあります。本日は、Coniエコシステムがこれをいかにエレガントに解決するかを、認知的集中のために設計された2つの新しいWebアプリを通じて紹介できることを嬉しく思います。&lt;/p&gt;&#xA;&lt;p&gt;これら2つのアプリケーションは、バイノーラルビートを使用して、深い集中力、記憶の想起、認知機能の向上に関連する特定の脳波周波数である&lt;strong&gt;40Hzのガンマ波&lt;/strong&gt;を生成します。しかし、本当の魔法はその裏側にあります。これらはすべて完全に&lt;strong&gt;Coni WASM&lt;/strong&gt;で書かれているのです。&lt;/p&gt;&#xA;&lt;h3 id=&#34;40hzガンマ波の科学&#34;&gt;40Hzガンマ波の科学&lt;/h3&gt;&#xA;&lt;p&gt;技術的な話に入る前に、なぜ40Hzなのでしょうか？ガンマ波は脳波の中で最も速い周波数です。研究によると、脳が40Hzの範囲で活動している時、それは知覚の高まり、問題解決、そしてピーク時の集中力と相関しています。&lt;/p&gt;&#xA;&lt;p&gt;左耳に60Hz、右耳に100Hzのサイン波を流すことで、脳は正確に40Hzの周波数差（ビート）を知覚します。このプロセスは脳波の同調（ブレインウェーブ・エントレインメント）として知られ、あなたの認知状態を優しくガンマ波へと導きます。&lt;/p&gt;&#xA;&lt;p&gt;この体験を提供する上でのConiアーキテクチャの柔軟性を実証するために、2つの異なるバージョンのアプリを構築しました。&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-canvasエディション-deep-focus-40hz&#34;&gt;1. Canvasエディション: &lt;a href=&#34;https://coni-lang.org/wasm-apps/apps/deep-focus-40hz/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreffer &#34;&gt;&lt;code&gt;deep-focus-40hz&lt;/code&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;http://blog.hellonico.info/svg/loading.min.svg&#34;&#xA;        data-src=&#34;../deepfocus.png&#34;&#xA;        data-srcset=&#34;../deepfocus.png, ../deepfocus.png 1.5x, ../deepfocus.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;../deepfocus.png&#34;&#xA;        title=&#34;Deep Focus 40Hz Screenshot&#34; /&gt;&lt;/p&gt;&#xA;&lt;p&gt;最初のアプリケーションは、従来の2D CanvasとDOM APIに依存しています。私たちは独自の&lt;code&gt;reframe_wasm&lt;/code&gt;ライブラリを活用し、WebAssemblyから直接HiccupスタイルのDOM生成を行うことでUIの状態とレンダリングを処理しました。&lt;/p&gt;&#xA;&lt;p&gt;オーディオエンジンは、オシレーターをネイティブに近い速度で完全に管理しています。さらに、その場でエンベロープを変調する自動ジェネレーティブ・チャイムシステムを構築し、JSのオーバーヘッドを完全に回避しました。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;; JSバインディング不要の表現力豊かなWebAudioエンベロープ！&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(doto (&lt;span style=&#34;color:#a6e22e&#34;&gt;.-gain&lt;/span&gt; gain)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#a6e22e&#34;&gt;.linearRampToValueAtTime&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.15&lt;/span&gt; (+ now &lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#a6e22e&#34;&gt;.exponentialRampToValueAtTime&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.001&lt;/span&gt; (+ now &lt;span style=&#34;color:#ae81ff&#34;&gt;8.0&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これは、純粋なConiでリアクティブで高性能なオーディオエンジンを構築する完璧な例です。&lt;/p&gt;&#xA;&lt;h3 id=&#34;2-webglパワーハウス-deep-focus-webgl&#34;&gt;2. WebGLパワーハウス: &lt;a href=&#34;https://coni-lang.org/wasm-apps/apps/deep-focus-webgl/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreffer &#34;&gt;&lt;code&gt;deep-focus-webgl&lt;/code&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;http://blog.hellonico.info/svg/loading.min.svg&#34;&#xA;        data-src=&#34;../deepfocus-webgl.png&#34;&#xA;        data-srcset=&#34;../deepfocus-webgl.png, ../deepfocus-webgl.png 1.5x, ../deepfocus-webgl.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;../deepfocus-webgl.png&#34;&#xA;        title=&#34;Deep Focus WebGL Screenshot&#34; /&gt;&lt;/p&gt;&#xA;&lt;p&gt;Canvasバージョンも素晴らしいですが、Coniのネイティブ処理能力をどこまで押し上げることができるか試してみたくなりました。そこで登場したのが&lt;code&gt;deep-focus-webgl&lt;/code&gt;（社内呼称：Amplifocus）です。&lt;/p&gt;&#xA;&lt;p&gt;2D Canvasに依存するのではなく、このバージョンは純粋なWebGLを使用して&lt;strong&gt;80,000パーティクルのブレイン・マトリックス&lt;/strong&gt;をレンダリングします。&#xA;何がそんなにエキサイティングなのでしょうか？&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;100%純粋なConi:&lt;/strong&gt; GPUで加速される頂点変換と大規模なパーティクル配列のロジックは、Coni WASM内でネイティブに処理されます。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;数学計算のJSオーバーヘッド・ゼロ:&lt;/strong&gt; Coniの数学ライブラリ（&lt;code&gt;libs/math&lt;/code&gt;）を使用することで、高価なJS-WASMブリッジを渡ることなく、数万の頂点に対する複雑な三角関数の変換を計算します。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;ネイティブのFloatバッファで3Dジオメトリを形成し、それをGPUに送るのがいかに簡単かをご覧ください。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;; WASMメモリ内で80kの頂点を計算し、一気にGPUへ送信！&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;f32-set!&lt;/span&gt; *base-points* idx final-x)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;f32-set!&lt;/span&gt; *base-points* (+ idx &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) final-sy)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;f32-set!&lt;/span&gt; *base-points* (+ idx &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;) (* z &lt;span style=&#34;color:#ae81ff&#34;&gt;1.1&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;; 静的ジオメトリを一度だけアップロード&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;gl/upload-static-data&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;*gl-state* (&lt;span style=&#34;color:#a6e22e&#34;&gt;js/float32-buffer&lt;/span&gt; *base-points*))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Float配列を一度割り当て、ネイティブにジオメトリを計算し、バッファリングされた一撃でGPUに転送します。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
