三谷先生の鉄道模型コースシミュレータにパーマリンク機能を実装という記事をはてなブログに投稿しました。
三谷先生の鉄道模型コースシミュレータにパーマリンク機能を実装という記事をはてなブログに投稿しました。
Qiitaに「GPUをつかったリアルタイムなレイトレーシング」の記事を2つ投稿しました。
実際に動作するものはコチラです。WebGLなのでブラウザでそのまま動作します。
Three.jsからGPUをつかったリアルタイムなレイトレーシング!https://t.co/zu5v2NXXeq
— がむ (@gam0022) 2015年12月15日
WebGL Advent Calendar 15日目の記事です。 pic.twitter.com/mwFZrFjJdf
これがGPUの力!three.jsによるレイトレーシング 〜宝石編〜https://t.co/dU4bQOnpPg
— がむ (@gam0022) 2016年1月28日
屈折のあるレイトレーシングをGLSLのフラグメントシェーダで実装した話を書きました。 pic.twitter.com/HnEMg7mUwP
レイトレーシングは膨大な計算が必要で、一般的にはリアルタイムに行うことは困難です。
WebGLのフラグメントシェーダでレイトレーシングを実装することで、GPUの力を利用してリアルタイムに処理しようというものです。
記事で紹介している例は、iPhone6のような携帯端末でもリアルタイムに動作するくらい軽量です。
さらに面白い特徴として、ラスタライザでは難しい、相互の鏡面反射、2回以上の屈折、無限の繰り返しも実現しています。
ラスタライザで鏡面反射するためには、キューブ環境マッピングがよく用いられます。 環境マッピングとは、周囲の景色を立方体のテクスチャに入れておいて、それを参照して反射して写り込んだ景色をフェッチします。 しかし、環境マッピングだけでは、床も球体も鏡面反射するような、相互に鏡面反射するシーンは実現できません。
また屈折も環境マッピングで実現できるのですが、環境マッピングで2回以上の屈折させるのは難しい課題になります。
レイトレーシングではカメラからスクリーンの全ピクセルに対して光のシュミレーションをするため、 環境マッピングでは難しかった鏡面反射や屈折の問題を簡単に解決できるというわけです!
1つ目の記事ではレイトレーシングではなく、厳密にはレイマーチングを使っています。
レイマーチングはレイトレーシングの1種です。レイマーチングでは、シーンを距離関数で定義します。
シーンを距離関数で定義することで、mod
演算を利用した物体を無限に繰り返すことができます。
昔はレイトレーシングで1枚の絵を描画するために一晩のような長い時間が必要でした。 それが今やリアルタイムにWebブラウザ上で動作するなんて、すごい時代になりましたね。
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さんの記事がとても分かりやすいです。
WebGL 総本山を更新しました > 超ハイレベルな作品が入り乱れた Tokyo Demo Fest 2016! 大興奮の2日間をレポート! - WebGL 総本山 https://t.co/ZeYrYoLiz2 pic.twitter.com/e3XFwpIrCD
— h_doxas (@h_doxas) 2016, 2月 23
この記事では、GLSL Graphics Compoで発表した”Carbon”という作品の裏話と、個人的に印象に残った思い出などを話します。
Compo(コンポ)とは、一定の制約の中で映像や音楽の作品を製作し、投票によって順位をつけるイベントです。
今年のGLSL Graphics Compoでは、GLSL Sandbox上で動作する映像作品の順位を競いました。
GLSL Sandboxで動作させるためには、フラグメントシェーダだけで作品を実装する必要があります。 当然ですが、立体データや画像データは読み込めないので、コードだけでなんとかする必要があります。
私は”Carbon”というタイトルで作品を提出して3位入賞しました。 今年のGLSL Graphics Compoはレベルが高かったので、入賞できて嬉しかったです。
コチラから動くデモをご覧になれます!
GLSL Compo に 「Carbon」という作品を出しました!https://t.co/UOqE3FvFyWhttps://t.co/JxkH3LtI4t#TokyoDemoFest pic.twitter.com/yfkJBzQllD
— がむ@TDF最高だった (@gam0022) 2016, 2月 21
#TokyoDemoFest の "Carbon" の回路にglow効果をつけたのでスクショ撮り直した。Shadertoyにも反映。https://t.co/zeIZhsc8zT pic.twitter.com/Q4UKTCfAsP
— がむ@TDF最高だった (@gam0022) 2016年2月27日
私の「Carbon」が GLSL Compo で入賞しました👏
— がむ@TDF最高だった (@gam0022) 2016年2月21日
ありがとうございます! #TokyoDemoFesthttps://t.co/f7LoEYWzFq pic.twitter.com/SIel9DKA6n
今回もレイマーチングによる作品です。
距離関数(distance function)は、Mandelboxというフラクタル図形を mod でループさせただけなので、非常にお手軽です。
シェーダというニッチな分野にも関わらず、100人以上の参加者となる熱い勉強会でした。 無料なのに出席率が高く、参加者のモチベーションが高くて良いことだなと思いました。 WebGLの普及により、Web系のエンジニアもシェーダを触ることで、シェーダの注目度が上がってきたのを感じました!
当日の様子はtogetterまとめを参考にしてください。
私は「シェーダだけで世界を創る!three.jsによるレイマーチング」という発表をしました。
個人的なメモなので、どうでもいい内容が多いです!
あまり記憶が全然ないので、いろいろと抜けてる気がします!
ISUCON5の本戦に @methane さん、@koki_cheese さん、私(@gam0022)の3人で、チーム名 lily white として参加しました。 結果は fail (サーバの再起動のテストで失格しため、スコア無し)でした。
ISUCONとは、お題となるWebサービスを限界まで高速化を図るチューニングバトルです。 私は今回のISUCONに参加するまで、インフラもパフォーマンス・チューニングも経験のない全くの素人でした。 自分の実力では本戦出場は絶対に不可能でしたので、本戦まで連れていってくださったチームのみなさんには本当に感謝しています。
ISUCONの攻略に関する有益な情報は、既に他のブログに多くのエントリーがあると思いますので、 本記事では全くの素人がどんなふうにISUCONに参加したのかを振り返っていこうかと思います。 予選+本戦を振り返るため、長文になります。すみません。 チーム全体での参加の様子は、@methane さんのブログで紹介されています。
参加のきっかけは、会社の先輩でスーパーエンジニアの @methane さんがISUCONに興味のある新人を募集していたことでした。 インフラやパフォーマンス・チューニングを学習する良い機会になりそうだと考えて、参加を決意しました。 また、大学生の @koki_cheese さんが ISUCON メンバーを募集していたので、 @methane さんが自チームに引き入れ、チーム lily white が結成されました。
先日の夏コミ C88 に TechBooster というサークルとして参加しました。 これによって、コミケ初参加がサークル参加という実績を得ました。
私はJavaScriptoon という本の three.js(WebGL)の記事を書きました。 タイトルは「three.js でお手軽 3DCG 入門」です。
https://techbooster.github.io/c88/
去年の卒業研究で ブラウザ上で動作する ペーパークラフト用の CAD のようなものを three.js を使って開発していたので、その知識を集約させました。
内容的にはthree.jsのサンプルコードを実際に動かしながら、 3DCGが未経験の方でも分かるように基礎から解説するような感じになっております。
ちなみに、配置は8/16(3日目) 東地区A-39aでした。 コミケは初参加で知らなかったのですが、技術書で壁サークルというのはとても珍しいそうですね。
通販もしていますので、 ぜひよろしくおねがいします。(予想以上の注文により現在は売り切れの模様)
以前、Octopressのpreviewを高速化するという記事を書きました。
この記事では、rake isolate
と rake integrate
を使って特定の記事だけを generate
することによって、
rake generate
を高速化していました。
しかしながら、この方法は手順が複雑で使うコマンドが多く、面倒だし使い方を忘れるという問題がありました。
通常、最後に保存したファイルを generate することが多いので、これを利用してもっと便利な Rake の task を作ります。
今取り組んでいる研究を、以下の記事で紹介していただきました!
私は現在、三谷先生の指導の下、ペーパークラフトの設計に関する研究に取り組んでいるのですが、実験で作成した展開図を、なんと三谷先生に組み立てていただきました!
私も以前に同じ展開図で組み立てたのですが、その時に比べると、はるかに綺麗な仕上がりとなりました。
予選Bで3完しかできなかったので、 参加はムリだろうと思っていたのですが、なぜか本戦に出場できてしまいました。 3完でも行けなかった人がいるみたいなので、本当に運ですね。
順位的には残念な感じになってしまって悔しかったですが、豪華な企画が盛りだくさんで(リンク先のタイムテーブルを参照)、 chokudaiさんの生コーディングが見れたり、iwiwiさんのサインが貰えたり、美味しいご飯が食べれて良かったです。 また、本戦上位5人によるエキシビジョンマッチを観戦しましたが、実況が分かりやすくて私のような初心者でも十分に楽しむことができました。 あと、なぜかDDRや太鼓の達人の筐体が用意されていて、遊び放題でした。
良いイベントだと思うので、リクルートさんには来年以降もやって欲しいと思います。