タグ

ブックマーク / yhara.jp (3)

  • WASMはじめの一歩 (wastを書いてブラウザで動かすところまで) - yhara.jp

    こんばんわ。今日はWebAssemblyにチャレンジしたいと思います。wasm用のプログラムを書いて、それをブラウザで動かすところまでやります。 用意するもの1:.wat まずはWebAssemblyで書かれたプログラムが必要です。拡張子は.wasmです。あいにくこれはバイナリファイルなので手書きするのは難しいです。一般的にはお好みの言語で書いたプログラムをLLVM経由で.wasmに変換するのだと思いますが、今回はWebAssemblyそのものの例としたいので、wasmのテキスト表現を使います。 以下の内容をsquare.watというファイルに保存します。.watというのはwasmのテキスト表現のための拡張子です。ツールによっては.wastという形式を受け付けるものがありますが、これは.watの非公式な上位互換拡張だそうです。 ;; square(i32 i) -> i32 (module

  • Rubyでレイトレーシングした - yhara.jp

    WebGL と GLSL で気軽にレイトレーシングに挑戦してみよう! - Qiita これをRubyに移植した。aobenchが自作言語のターゲットとしてまだちょっと大きいなと思ってより小さいサンプルを探していたのだけど、最後のステップまで移植したら結局aobenchとあんまり変わらないようなものになった。ただaobenchのコードはちゃんと理解していなかったので、少し理解が深まった気がして面白かった。あと画像が出るプログラムはやっぱり楽しい。 ソースはgistに上げた。ray5.rbまであり、それぞれ以下のようになっている。 画像を生成する 球を出す 陰影を付ける 床を出す 反射させる 上に貼ったのはray5.rbの出力結果だ。よく見ると元記事と微妙に球の位置が違うことが分かるが、オリジナルは時間tを受け取ってアニメーションするようになっていて、tの値が違うのが原因と思われる(最初、アル

  • BiwaSchemeのためにCPS(継続渡し形式)でマージソートを実装した話 - yhara.jp

    記事は言語実装 Advent Calendar 2016の最終日の記事です。話題が多岐に渡っていて楽しいアドベントカレンダーでしたね。前日はEgisonのリーマン幾何学用記法の話でした。 BiwaSchemeは筆者が作っているJavaScriptによるScheme実装です。先月の話ですが、list-sortという関数を修正し、比較に使うScheme関数を受け取れるように改善しました。BiwaSchemeは中間言語方式(VM方式)かつライブラリを全てJSで実装するという方針になっているため、実装に少し工夫が必要でした。稿ではそのことについて解説します。 中間言語方式 JavaScriptでScheme処理系を実装する場合、いくつかの方針が考えられます。 インタプリタ方式 (S式を一つずつ読み、評価する) コンパイラ方式 (プログラム全体を等価なJavaScriptに変換する 中間言語方式

  • 1