レイマーチング(別名 Sphere Tracing)とは、距離関数と呼ばれる数式で定義したシーンに対して、レイの衝突判定を行って絵を出す手法です。

この距離関数に対し、fold(折りたたみ)の操作を行うと、万華鏡のような美しい形状や、フラクタルのような複雑な形状の設計が可能です。

先日のTokyoDemoFest2017でも、このfoldを用いた作品を投稿しました。

この記事では、距離関数のfoldについて、解説していきます。

Read more


2017年2月18日(土)・19日(日)の2日間に開催されたTokyo Demo Fest 2017に参加しました。

去年に引き続き、2回目の参加でした。去年の記事はこちらです。

Tokyo Demo Fest(TDF)とは、こんなイベントです(公式サイトからの引用)。

Tokyo Demo Fest は日本で唯一のデモパーティです。 デモパーティは、コンピュータを用いたプログラミングとアートに興味のある人々が日本中、世界中から一堂に会し、デモ作品のコンペティション(コンポ)やセミナーなどを行います。また、イベント開催中は集まった様々な人たちとの交流が深められます。

今年は、なんと私の勤め先であるKLab株式会社もTDFにパートナーという形で参加させていただきました! 去年の様子を紹介したことをきっかけに、弊社内でデモシーンへの関心が高まりつつあり非常に嬉しいです。

また、個人としては「Fusioned Bismuth」という作品でGLSL Graphics Compoで3位を頂くことができました! 自分の作品を多くの方に評価していただけて、大変嬉しいです!!ありがとうございました!

Read more


12/21に開催されたemscripten night !! #2という勉強会に参加して、 「Emscriptenを使ってブラウザ上でレイトレーシングする」というタイトルで10分間のLT発表を行いました。

こちらが発表資料です。

Read more


OctopressからHugoへ移行

当サイトはOctopressを使って生成していたのですが、このたびHugoに移行することにしました。 この記事ではHugoに移行した経緯と、Hugoへの移行手順についてまとめます。 なおローカル環境はMac OS Xです。

Octopressを辞めた理由

Octopressを辞めた理由は、記事数の増加に伴い、サイトの生成に時間がかかるようになってしまったからです。

HugoではOctopressに比べてサイトの生成時間が短いことから、Hugoに移行することにしました。

現在の記事数でのサイトの生成時間は、Octpress(rake generateコマンド)で 20.39秒、Hugo(hugoコマンド)では 2.66秒でした!

他にも、Octpressは直近のコミットが半年前のもので、活発にメンテナンスされていないと感じたことも、Hugoへ移行した理由の1つです。

Hugoのインストール

Macの場合はHomebrewからインストールするのが良いでしょう。

brew update
brew install hugo

Mac以外の方は、公式ページを参考にして、ソースコードからインストールしましょう。

Read more


三谷先生の鉄道模型コースシミュレータにパーマリンク機能を実装という記事をはてなブログに投稿しました。

Read more


Qiitaに「GPUをつかったリアルタイムなレイトレーシング」の記事を2つ投稿しました。

実際に動作するものはコチラです。WebGLなのでブラウザでそのまま動作します。

レイトレーシングは膨大な計算が必要で、一般的にはリアルタイムに行うことは困難です。

WebGLのフラグメントシェーダでレイトレーシングを実装することで、GPUの力を利用してリアルタイムに処理しようというものです。

記事で紹介している例は、iPhone6のような携帯端末でもリアルタイムに動作するくらい軽量です。

さらに面白い特徴として、ラスタライザでは難しい、相互の鏡面反射、2回以上の屈折、無限の繰り返しも実現しています。

ラスタライザで鏡面反射するためには、キューブ環境マッピングがよく用いられます。 環境マッピングとは、周囲の景色を立方体のテクスチャに入れておいて、それを参照して反射して写り込んだ景色をフェッチします。 しかし、環境マッピングだけでは、床も球体も鏡面反射するような、相互に鏡面反射するシーンは実現できません。

また屈折も環境マッピングで実現できるのですが、環境マッピングで2回以上の屈折させるのは難しい課題になります。

レイトレーシングではカメラからスクリーンの全ピクセルに対して光のシュミレーションをするため、 環境マッピングでは難しかった鏡面反射や屈折の問題を簡単に解決できるというわけです!

1つ目の記事ではレイトレーシングではなく、厳密にはレイマーチングを使っています。 レイマーチングはレイトレーシングの1種です。レイマーチングでは、シーンを距離関数で定義します。 シーンを距離関数で定義することで、mod 演算を利用した物体を無限に繰り返すことができます。

昔はレイトレーシングで1枚の絵を描画するために一晩のような長い時間が必要でした。 それが今やリアルタイムにWebブラウザ上で動作するなんて、すごい時代になりましたね。

Read more


はじめに

2016-02-20〜21に開催されたTokyo Demo Fest 2016に参加しました。

Tokyo Demo Festとは、このようなイベントです(公式ページからの引用)。

Tokyo Demo Fest は日本で唯一のデモパーティです。 デモパーティは、コンピュータを用いたプログラミングとアートに 興味のある人々が日本中、世界中から一堂に会し、 デモ作品のコンペティションやセミナーなどを行います。 また、イベント開催中は集まった様々な人たちとの交流が深められます。

私は”Carbon”という作品をGLSL Graphics Compoに提出して、3位入賞してきました!

さらに、three.jsの作者であり、GLSL Sandboxの作者でもあるMr.Doobと握手してきました!

今回が初参加でしたが、本当に最高のイベントでした!楽しかったです。 オーガナイザーのみなさん、参加者のみなさん、ありがとうございました!

全体のレポートについては、@h_doxasさんの記事がとても分かりやすいです。

この記事では、GLSL Graphics Compoで発表した”Carbon”という作品の裏話と、個人的に印象に残った思い出などを話します。

Carbon 製作秘話

Compo(コンポ)とは、一定の制約の中で映像や音楽の作品を製作し、投票によって順位をつけるイベントです。

今年のGLSL Graphics Compoでは、GLSL Sandbox上で動作する映像作品の順位を競いました。

GLSL Sandboxで動作させるためには、フラグメントシェーダだけで作品を実装する必要があります。 当然ですが、立体データや画像データは読み込めないので、コードだけでなんとかする必要があります。

私は”Carbon”というタイトルで作品を提出して3位入賞しました。 今年のGLSL Graphics Compoはレベルが高かったので、入賞できて嬉しかったです。

コチラから動くデモをご覧になれます!

Carbon - Blue Carbon - Green Carbon - Red Carbon - Violet

今回もレイマーチングによる作品です。

距離関数(distance function)は、Mandelboxというフラクタル図形を mod でループさせただけなので、非常にお手軽です。

Read more


バレンタインデー(2016/02/14)にGPU の熱でチョコも溶けちゃう!? GLSL シェーダテクニック勉強会でレイマーチングについて発表してきました。

シェーダというニッチな分野にも関わらず、100人以上の参加者となる熱い勉強会でした。 無料なのに出席率が高く、参加者のモチベーションが高くて良いことだなと思いました。 WebGLの普及により、Web系のエンジニアもシェーダを触ることで、シェーダの注目度が上がってきたのを感じました!

当日の様子はtogetterまとめを参考にしてください。

私は「シェーダだけで世界を創る!three.jsによるレイマーチング」という発表をしました。

シェーダだけで世界を創る!three.jsによるレイマーチング from Sho Hosoda

Read more


久しぶりの更新です。今年一年を振り返り返ってみます!

個人的なメモなので、どうでもいい内容が多いです!

あまり記憶が全然ないので、いろいろと抜けてる気がします!

Read more


はじめに

ISUCON5の本戦に @methane さん、@koki_cheese さん、私(@gam0022)の3人で、チーム名 lily white として参加しました。 結果は fail (サーバの再起動のテストで失格しため、スコア無し)でした。

ISUCONとは、お題となるWebサービスを限界まで高速化を図るチューニングバトルです。 私は今回のISUCONに参加するまで、インフラもパフォーマンス・チューニングも経験のない全くの素人でした。 自分の実力では本戦出場は絶対に不可能でしたので、本戦まで連れていってくださったチームのみなさんには本当に感謝しています。

ISUCONの攻略に関する有益な情報は、既に他のブログに多くのエントリーがあると思いますので、 本記事では全くの素人がどんなふうにISUCONに参加したのかを振り返っていこうかと思います。 予選+本戦を振り返るため、長文になります。すみません。 チーム全体での参加の様子は、@methane さんのブログで紹介されています。

参加のきっかけは、会社の先輩でスーパーエンジニアの @methane さんがISUCONに興味のある新人を募集していたことでした。 インフラやパフォーマンス・チューニングを学習する良い機会になりそうだと考えて、参加を決意しました。 また、大学生の @koki_cheese さんが ISUCON メンバーを募集していたので、 @methane さんが自チームに引き入れ、チーム lily white が結成されました。

Read more