サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
gam0022.net
これはレイトレ合宿8のアドベントカレンダーです。 レイマーチングはレイキャスティングと比べて遅いと感じていましたが、なるべく同じ条件で計測した場合に実際どのくらい差があるのか比較してみました。 検証内容の概要 メンガーのスポンジをレイマーチングとレイキャスティングでそれぞれ交差判定を実装し、フラクタルの深度を1~4に変化しながら計測しました。 次の画像はレイマーチングによる深度4のメンガーのスポンジです。 計測結果のサマリー 先に結果から発表すると、なんとレイマーチングはレイキャスティングの15~20倍くらい遅いようでした。 ここまで遅いなんてショック😨… 256サンプリング時のレンダリング時間(秒) フラクタルの深度 1 2 3 4 レイマーチング 8.85388秒 9.00077秒 9.14309秒 9.29724秒 レイキャスティング 0.445493秒 0.466056秒 0.5
これはKLab Engineer Advent Calendar 2021の20日目の記事です。 12月11日~12日にオンラインで開催されたTokyo Demo Fest 2021(以下、TDF)に参加しました。 TDFは、日本国内で唯一のデモパーティです。 リアルタイムに映像や音楽を生成するプログラムを「デモ」と言い、デモを鑑賞したり完成度を競ったりして楽しむイベントを「デモパーティ」と言います。 「デモシーン」はデモやデモパーティを中心としたコンピューターのサブカルチャーです。 今年のTDFでは、『Alien Spaceship』という作品を発表しました。 Released "Alien Spaceship" at GLSL Graphics compo, #TokyoDemoFest 2021 It's running on #GLSLSandbox Only 1Pass Shad
当サイト(gam0022.net)のドメイン管理の事業者をお名前.comからGoogleドメインに移管しました。 ドメイン移管は思ったよりもずっと簡単で待ち時間を含めても1時間以内に完了しました。 この程度の手間だったら、もっと早くやっておけば良かったです。 移管するとドメインの更新日が1年延長されて、Googleドメインに1年分のドメイン費用を支払う形になります。 つまり、お名前.comの更新日はずっと先の日付だろうと問題なく移管できます。 当サイトのドメインの更新日は2028年で7年後くらいでした。 移管手順 せっかくなので簡単に手順をメモしておきます。 お名前.comでドメインのロック解除 ドメイン設定 > その他の機能 > ドメイン移管ロック 移管したいドメインのステータスが「OFF」になっていたら問題ありません お名前.comでAuthコードを入手 ドメイン詳細からAuthコード
Windows Terminal 1.6から任意のHLSLのPixel Shadersを実行できるようになったので、Windows Terminalの背景でレイマーチングを実行してみました。 Raymarching in Windows Terminal Windows Terminal 1.6 から任意の Pixel Shaders を実行できるようになったので、Windows Terminal の背景でレイマーチングを実行してみた🎉 これは楽しすぎる🤣 pic.twitter.com/WX2JqUZtuL — がむ (@gam0022) February 16, 2021 2021-02-16のツイート時点では、Windows Terminal 1.6はまだPreview版なので、GitHubのReleasesページから入手する必要がありました。 https://github.co
改訂版の記事を書きました(2021-12-23) この記事の方法は古いので、改訂版を参考にしてください。 [Unity][URP] Y軸ビルボードシェーダー | gam0022.net こんな感じのY軸のビルボードをC#スクリプトを使わずに、シェーダーだけで実装しました(Unity 2018.3.12f1)。 GitHubリポジトリ: gam0022/unity-legacy-render-pipeline-experiments/blob/master/Assets/Experiments/Billboard この記事の要約 頂点シェーダーでView行列の回転(カメラに応じた回転)をスキップすれば、ビルボードができる Unityは左手系座標だが、 View空間では右手系座標 なので、View変換をスキップするときには自前でZの符号を反転する必要がある Y軸のビルボードが必要なら、View
GLSL Compoに役立つ!GLSL Sandbox互換のVSCode拡張『Shader Toy』の紹介 これはWebGL Advent Calendar 2018の24日目の記事です。 みなさんはGLSL Sandboxのシェーダーをローカルで編集したりgitで管理したいと思ったことはありませんか? VSCodeの拡張機能の『Shader Toy』をインストールすれば簡単に実現できます。 Shader Toy - Visual Studio Marketplace 本拡張はShadertoyとGLSL Sandboxの互換性を備えており、 どちらのコードも修正なしにそのまま動作できます! WindowsとMacの両方に対応しています。 次の画像はTraveler2 by kaneta(Tokyo Demo Fest 2018 GLSL Compo優勝作品)をVSCode上で動作させた様
これはKLab Engineer Advent Calendar 2018の12日目の記事です。 12月1日~12月2日に秋葉原で開催されたTokyo Demo Fest 2018(以下、TDF)に参加しました。 TDFは、日本国内で唯一のデモパーティです。 コンピュータを用いて作成された楽曲や映像作品をデモと呼び、 デモに関心のある人々が一堂に会してコンペティションを行ったり、技術を共有したりといったイベントをデモパーティと呼びます。 今年のTDFでは、さだきちさん(@sadakkey)とチームを組み、『WORMHOLE』(映像:gam0022 / サウンド:sadakkey)という作品を発表しました。 Windows実行ファイル形式のデモ作品のコンペティションであるCombined Demo Compoにて、本作品が1位に選ばれました! この記事では『WORMHOLE』の映像制作技術に
これはレイトレ合宿6の参加報告の記事の前編です。 記事が長くなったので、前編と後編の2つに分けました。 この記事では前編(準備編)ということで、自作レンダラーに実装した機能や手法の紹介を行います。 後編(当日編)はこちらです。 レイトレ合宿6 参加報告 Part2(当日編) | gam0022.net 9月1日(土)~9月2日(日)に神津島で開催されたレイトレ合宿6に参加しました。 レイトレ合宿は完全自作のレイトレーサーを走らせて画像の美しさを競うイベントです。 参加者の中には、Arnold RendererやRadeon ProRenderといった商用のレンダラーの開発者、 SIGGRAPH 2017で発表された研究者など、グラフィック分野の最先端で活躍されている方々もいらっしゃり、大変刺激を受けました。 私は今年で3回目の参加になります。過去の参加報告はこちらです。 レイトレ合宿5‽に
3/10(土)に開催されたメガデモ勉強会! 2018で発表しました。 発表タイトルは「もっと綺麗で写実的な絵作りをしたい!レイマーチング向けのシェーディング技術」です。 発表の概要はこんな感じです。 レイマーチングのおさらい レイマーチングでいい感じにシェーディングするための理論と実践 写実的なレンダリングに不可欠な 大域照明 を説明 大域照明を構成する間接照明を近似する AO を説明 レイマーチングによるAO計算の実装を図で解説 レイマーチングによるマテリアル実装のベストプラクティスを紹介 AOがどういう意味を持つのか、大域照明にどんな関係にあるのか、などを学んでいただけたら嬉しいです。 レイマーチングによるAO計算の動作原理を図で解説した日本語の資料は見たことが無いので、 この発表を聞いて「なるほどな」と思ってもらえれば幸いです。 本日の発表資料です😇 #メガデモ勉強会https:/
これは Unity #2 Advent Calendar 2017 21日目の記事です。 デモシーン界隈では、美しいCGアニメーションをリアルタイムに生成するプログラムを「デモ」と呼びます。 今回はUnityを使ったデモの制作に初挑戦しました。 13秒の短い無音の動画です。 作品の解説 「レイマーチングで動的に生成したモデル」と「ポリゴンメッシュのモデル」を混在させた作品です。 ロボットは通常の3Dモデルですが、床や柱のモデルはレイマーチングでプロシージャルに生成しました。 レイマーチングにはuRaymarchingというAssetを利用しました。 映像作品と相性が良さそうなので、Unity2017のTimelineも利用しました。 今回は試作という意味から、uRaymarchingとTimelineの他にも様々なアセットを試しました。 色々と試行錯誤をしたので、この記事ではそのノウハウを
これはKLab Advent Calendar 2017の11日目の記事です。 はじめに 先日、three.jsのexamples(公式サンプル集)で紹介されている「raymarching / reflect」に関して、2つのPRを送ってマージされました。 Improve raymarching example by gam0022 · Pull Request #12792 · mrdoob/three.js Improve raymarching example v2 by gam0022 · Pull Request #12801 · mrdoob/three.js 内部的なリファクタリングですので、目に見える変化はまったくありません。 レイトレーシングやレイマーチングでは、レイを生成する処理が必要です。 そのレイの生成処理を改良しました。 上記のPRでは、カメラ行列(モデル行列 +
9月9日(土)~9月10日(日)に諏訪湖で開催されたレイトレ合宿5‽に参加しました! レイトレ合宿は完全自作のレイトレーサーを走らせて画像の美しさを競うイベントです。 去年に初参加させていただき、今年で2回目の参加になります。去年の参加報告はこちらです。 私はRustでパストレーサ(Hanamaruレンダラー)を実装して、こんな感じの画像をレンダリングしました。 今年は16人中9位なので、去年の13人中10位よりは進歩しました! ↑リンクをクリックするとオリジナルの可逆圧縮の画像になります。 ソースコードはGitHubに公開しています(スターください)。 https://github.com/gam0022/hanamaru-renderer/ こちらは合宿当日のプレゼン資料です。 今年もレンダリング分野の最先端で活躍されている方々がたくさん参加されていました。 趣味でRedqueenレン
今夜はアニメ「正解するカド」の最終回ですね。 フラクタル図形(カド)や折り紙(ワム)が重要な要素になっていて、個人的にとても刺さるアニメでした。 最終回は楽しみですが、今日で終わってしまうと思うと寂しくも感じます。 さて、レイマーチング(スフィアトレーシング)は「カド」のようなフラクタル図形の描画がとても得意です。 そこで、WebGLによるレイマーチングでカドのレンダリングに挑戦しました!! レイマーチングでカド(MandelBox)を描画した結果です。 次のリンクからブラウザ上から動かすこともできます。 http://gam0022.net/webgl/#raymarching_kado PauseをOFFにすると、カドがアニメーションします(負荷注意)。 描画の負荷が重たすぎる場合には、Pixel Ratioを1/2xか1/4xにしてください。 解説 制作における工夫点や参考資料を紹介
4/9(日)にアキバ・スクエアで開催される技術書典2に参加します。 技術書典は技術書のみを扱うコミケようなイベントです。 去年に引き続き、技術サークルTechBoosterのWeb本の著者のひとりとして参加します。 今回は『Think Web』の『第6章 まるで実写!?GPUパストレーシングのWebGL実装』を担当しました。 Think Web | TechBooster in TBF02 技術書典2(2017/4/9) あ-01,02 パストレーシングとは? パストレーシングは3Dの描画手法のひとつで、現実世界に近い光の振る舞いをシミュレートすることで、大域照明を考慮した写実的なレンダリングを可能にします。 実際にハリウッド映画などの写実的なCGの多くには、パストレーシングやパストレーシングを発展した手法が採用されています。 写実的なレンダリングができる反面、処理時間が膨大にかかるという
レイマーチング(別名 Sphere Tracing)とは、距離関数と呼ばれる数式で定義したシーンに対して、レイの衝突判定を行って絵を出す手法です。 この距離関数に対し、fold(折りたたみ)の操作を行うと、万華鏡のような美しい形状や、フラクタルのような複雑な形状の設計が可能です。 先日のTokyoDemoFest2017でも、このfoldを用いた作品を投稿しました。 #TokyoDemoFest 2017 の GLSL Graphics Compo で3位入賞! | gam0022.net Fusioned Bismuth | gam0022.net Fusioned Bismuth | Shadertoy この記事では、距離関数のfoldについて、解説していきます。 2Dのfold 分かりやすさのために、まずは2Dの例から説明します。 2Dのfoldの分かりやすい例は「鏡文字」です。 ア
2017年2月18日(土)・19日(日)の2日間に開催されたTokyo Demo Fest 2017に参加しました。 去年に引き続き、2回目の参加でした。去年の記事はこちらです。 #TokyoDemoFest 2016 の GLSL Graphics Compo で3位入賞! Tokyo Demo Fest(TDF)とは、こんなイベントです(公式サイトからの引用)。 Tokyo Demo Fest は日本で唯一のデモパーティです。 デモパーティは、コンピュータを用いたプログラミングとアートに興味のある人々が日本中、世界中から一堂に会し、デモ作品のコンペティション(コンポ)やセミナーなどを行います。また、イベント開催中は集まった様々な人たちとの交流が深められます。 今年は、なんと私の勤め先であるKLab株式会社もTDFにパートナーという形で参加させていただきました! 去年の様子を紹介したこと
はじめに 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と握手してきました! 今回が初参加でしたが、本当に最高のイベントでした!楽しかったです。 オーガナイザーのみなさん
gam0022.net / webgl-sandbox x
What's this? Twitter ID から簡単に名刺を作成できる Web サービスです。 Features わずか2ステップで簡単作成! Twitter IDを入力。 デザインを選択。 ユーザ認証しなくても使用可能。 Canvas を用いた描画により、デザイン選択した瞬間に名刺が作れる! マルコフ連鎖で直近200件のツイートをカオスに要約。 完成した名刺は PNG 形式で保存、Twitterで共有できる!
Octopressの記事の生成が遅い Octopressを使ってから一年以上が経ちました。 記事の数に比例して、rake generate がアホみたいに遅くなって、耐えられないレベルになってきました。 今日は、rake isolate と rake integrate を使うことでOctopressの記事の生成を高速化するテクニックを紹介します。 rake isolate と rake integrate については、次の記事に詳しく紹介されています。 Tips for Speeding Up Octopress Site Generation rake isolate と rake integrate について簡単に説明 さっき紹介したリンクは英語なので、日本語でrake isolate と rake integrateをざっくり説明します。 rake isolate[filename
研究室が始まって、輪講用のスライドをヒイヒイ言いながら作っていた時のことです。 Keynote には、PowerPointの数式エディタ的な機能が無いらしいのです。 どうにかして数式を埋め込みたかったので、方法を調べました。 Keynote で数式を埋め込むまで 結論から言うと、LaTeXiT というアプリケーションを利用することにしました。 LaTeXiT を導入 LaTexiT の最新版をダウンロード + インストールする。 LaTeXiT の設定 whichコマンドを使って、各コマンドのパスを調べて設定します。 私の場合はこうしました。 LaTeXiT で数式を生成 LaTeXiT では、普通に LaTex と全く同じように数式が扱えます。 式を入力したら、右下のLaTex it!ボタンでコンパイル(画像化)してくれます。 Keynote に貼り付ける 様々な形式に出力(クリップボー
ImmutableList gem とは Immutable な LinkedList を Ruby で使うためのライブラリです。 C-Extension なので、Rubyで実装したものに比べて動作が高速です。 Ruby の Array は 配列で実装されているため、 長いリストでの先頭への要素を追加(cons)や連結(append)が とても遅いという問題を解決しようと思って作りました。 用途としては、Rubyで再帰を使って関数型言語風にプログラムを組むことを想定しています。 導入方法 RubyGems で公開したので、次のようにターミナルで入力するだけで導入できます。 $ gem install immutable_list 基本的な使い方 基本的には、Ocaml の List のような動作をします。メソッド名も Ocaml を意識しています。 require 'immutable_l
細田 翔 / Sho Hosoda @gam0022 ソフトウェアエンジニア / グラフィックスエンジニア KLab株式会社 略歴 / Biography 群馬県出身、東京在住。グラフィック特化型のUnityエンジニア。 中学生時代(2007年頃)にHSPと出会いゲームプログラミングに熱中する。 中学生ながら開発したゲームが2度もWindows100%に掲載される。 2011年に筑波大学情報学群情報科学類へ入学。 在学中にはTwinCalという筑波大学に特化した時間割のWebアプリケーションを開発する。TwinCalは在学生に広く利用され、学生のためのアプリ開発コンテストのファイナリストにも採択される(後輩に運用を引き継ぎ、現在も運用されている!)。計算幾何学とグラフィックス研究室に所属し紙模型に特化したCADに関する研究を行い、その業績を評価され筑波大学情報学群長表彰を受賞する。 さらに
はじめに 先日、immutable_list というgemを公開したのですが、 思っていたよりも簡単に rubygems.org に登録することができて感動しました。 gemを作るには、色々な方法があるようですが、最近だとBundler を使う方法が一番シンプルで良さそうです。 RubyGems に gem を登録するためには、gitのリモートリポジトリが必要ですが、ここでは GitHub を利用します。 あと、よく質問されるのですが、RubyGems に登録するために審査は一切ありません。 Tips: gemの命名方法 本題とはズレますが、gemの命名にはルールがあるので軽く紹介します。 gemname には、小文字のアルファベット、数字、ハイフン、アンダースコア、ドットが使用可能のようです。 ハイフンとアンダースコアは次のように使い分けることが推奨されています。 - (ハイフン) :
Rails4のアプリをHerokuで動かすまでにしたことをメモします。 1. Rails4 のプロジェクトを作る Getting Started with Railsを参考にして Rails4 のプロジェクトを作りました。 念の為にバージョンもメモしておきます。 ruby ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0] rails Rails 4.0.0 Mac OS X でやりました。 2. Heroku に登録 heroku.com に 登録して、Heroku のコマンドラインツールをインストールして、公開鍵を登録したような記憶があります。 (あまり記憶に無いので、たぶん指示に従っていけばいい感じだったと思います。) 3. production用のDB を sqlite3 → pg に変更 Heroku
追記 10⁄7 RubyGemsとして公開。クラス名はImmutableListに変更。 RubyGems.org README(GitHub) 10⁄22 クラス名が変わったり、この記事では説明不足の部分があったので、記事を書き直しました。 Rubyで関数型プログラミングをするための ImmutableList Gem を公開 はじめに RubyのC拡張として LinkedList (連結リスト) を実装しました。 Ruby の Array は 配列で実装されているため、長いリストでの先頭への要素を追加(cons)や連結(append)が非常に遅いのをなんとかしたいと思いました。 用途としては、Rubyで再帰を使って関数型言語風にプログラムを組むことを想定しています。 ソースコードはGitHubに置きました。 gam0022/linkedlist (GitHub) 車輪の再発明じゃないの
特に理由はなかったのですが、便利という噂を聞いてbashからzshに乗り換えました。 zshを試す Macでは標準でzshが入っているので、ターミナルで$ zshとすれば試せます。 飽きたら、$ exitで終了です。 ログインシェルを変更 シェルの一覧は/etc/shellsから確認できます。 $ cat /etc/shells # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh 確認したら、zshにログインシェルを変更しましょう。 $ chsh -s /bin/zsh zshの設定 zsh
久々の更新です。 早いもので大学2年の授業が終わって春休みになってしまいました。 3学期には、コンピュータグラフィックス基礎という授業を履修したのですが、 今学期で一番楽しい授業だったなーと思うので振り返ってみます。 基本的にはOpenGLを使って色々しました。 特に力を入れた課題などを紹介します。 ソースコードなどはすべてgithubにあるので、 気になる人はぜひ見てね! 課題3 ASTEROIDS OpenGLを使ってアニメーションを作るという課題があったので、 全方位シューティングゲームを作ってみました。 技術的な点だと、自機、隕石、弾の3つは、慣性移動、衝突判定、描画などは共通の処理でできるので、 この3つをobjectという構造体1つで管理して、同じような処理を何度も書かないようにしました。 課題4 立体の展開図 OpenGLの回転と平行移動を駆使して、立体の展開図のアニメーショ
数値シュミレーションという授業で波動関数をシュミレーションする課題がありました。 面白かったので忘れないように、MathJax.rbというプラグインのテストを兼ねてメモすることにしました。 MathJax.rbの導入 MathJax.rbの導入には、30分のチュートリアルでJekyllを理解するが非常に参考になりました。 MathJax.rbをダウンロードして、/plugins/にコピーする。 octopressの場合、_layouts/layout.htmlではなくて、source/_includes/custom/head.htmlに次の行を追加する。 # source/_includes/custom/head.html <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.
次のページ
このページを最初にブックマークしてみませんか?
『gam0022.net - gam0022.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く