凹みTips

C++、JavaScript、Unity、ガジェット等の Tips について雑多に書いています。

Shader

uRaymarching の VR における影の問題の修正をした

はじめに 前回の記事で uRaymarching を使ったワールドを VRChat に公開することを初めてやってみました。 tips.hecomi.com ただ、この過程で以下のように右目のみ影が変に見えてしまうバグに遭遇しました: どうやら右目の影用のデプスの位置が実際の描画の…

uRaymarching を使った VRChat のワールドを作ってみた

はじめに こりんさん(@korinVR)が VRChat で行われる以下のようなイベントを企画してくれました。 8/2(日)13:00~15:00にVRChatで囲む会をやります。今回のスペシャルゲストは「凹みTips」 https://t.co/mZ2BmIxFST の凹さん @hecomi です! XRやUnityの…

SDF テクスチャを uRaymarching で描画してみる

はじめに uRaymarching 関連の話題になります、Twitter で SDFr と uRaymarching を試されている方から質問をもらいまして、調査をはじめました。前回の記事はこちら: tips.hecomi.com これまでは物体表面までの距離を距離関数で記述してレイマーチングする…

Unity でボリュームレンダリングをしてみる - vol.5 遮蔽とループの最適化

はじめに 前回はノイズ関数で作る雲についての話をしました。 tips.hecomi.com おわりに書いたように、今回はポリゴンオブジェクトによる遮蔽およびループの最適化についての話をしようと思います。 サンプル github.com 8. AABB Intersection 2 および 9. O…

Unity でボリュームレンダリングをしてみる - vol.4 プロシージャル

はじめに 本記事はボリュームレンダリングシリーズで以下の記事の続きです(2年ぶり)。 tips.hecomi.com 前回までは魚の 3D テクスチャを使いましたが、今回はノイズ関数を使って雲のようなものを作ってみたいと思います。前回同様キューブポリゴン内に生成…

Unity で Shader Graph の Custom Function Node を試してみた

はじめに 以下の公式エントリで Unityの Shader Graph における Custom Function Node の存在を知ったので試してみた記事です。 blogs.unity3d.com 環境 Unity 2019.3.1f1 Shader Graph 7.1.8 デモ github.com 従来の問題点 Shader Graph はグラフィカルにシ…

Unity で距離関数の記述だけでレイマーチングができる uRaymarching の UniversalRP 対応してみた

はじめに uRaymarching は Unity 上で簡単にレイマーチングするオブジェクトを生成することの出来るアセットです。詳細については以前の記事をご参照ください。 tips.hecomi.com tips.hecomi.com これまではレガシーなパイプライン(Forward / Deferred)の…

Unity の ShaderGraph の仕組みについて調べてみた

はじめに 本記事は Unity Advent Calendar 5 日目の記事です。 以前の記事で UniversalRP(URP) の調査を行いました。 tips.hecomi.com 今回は、その続きとして URP / HDRP の目玉機能の一つである ShaderGraph について調べてみます。私もノードグラフではな…

Unity の Universal Render Pipeline のレンダリング周りについて勉強してみた

はじめに 以前、Lightweight Render Pipeline(LWRP)と呼ばれていたパイプラインが 2019.3(SRP 7.0.0)から、Universal Render Pipeline(UniversalRP / URP)と改名されました。 blogs.unity3d.com 私は LWRP 含む SRP をあまり調べていなかったのですが…

Intel RealSense デプスカメラ D435 を Unity で遊んでみた

はじめに 以前、Intel® RealSense™ のトラッキングカメラである T265 の記事を書きましたが、今回はデプスカメラである D435 を手に入れましたので、まずはカメラの概要と Unity のサンプルの紹介をしようと思います。 tips.hecomi.com デモ 画像ストリーム …

Unity で距離関数の記述だけでレイマーチングができる uRaymarching を Forward / XR 対応した

はじめに uRaymarching を更新しました。以前の記事はこちら: tips.hecomi.com uRaymarching は以下のような機能を持つアセットです(太字が今回更新した内容です)。 エディタ上で距離関数の記述だけでレイマーチングができる フォワード / ディファード対…

Unity でオブジェクトスペースの Raymarching をフォワードレンダリングでやってみた

はじめに 以前、ディファードで Raymarching をやる記事を書きました。 tips.hecomi.com 上記記事では画面全体での Raymarching でしたが、これを個別のオブジェクトとして分解できるようにしたオブジェクトスペースのレイマーチングについて以下の記事で解…

Unity の XR 向けシングルパスステレオレンダリングについて調べてみた

はじめに Unity での XR Settings に含まれる Stereo Rendering Method ですが、みなさんは理解されていますか?ちなみに私は理解していませんでした。。 なんとなく マルチパス は遅くて シングルパス にすると速い、しかしながらシングルパスにするにはシ…

Unity でクロマキーシェーダを作ってみた

はじめに クロマキーに関してはもう既に色々なアセットがあるとは思うのですが、uWindowCapture で使えるクロマキーシェーダがほしいとの要望を受けたので作ってみました。 デモ 任意の色相・彩度・明度の範囲を抜くことが出来ます。下の例ではピンク色を背…

Unity で円形に曲がるスクリーンをシェーダで作成するアセットを作ってみた

はじめに uDesktopDuplication に用意されているカーブドスクリーンを uWindowCapture でも使いたいとの要望を頂いたので、単体のアセットとして作成してみました。 デモ ダウンロード github.com Release から最新の .unitypackage をダウンロードしてプロ…

Unity の GPU Instancing に対応するシェーダのコードを調べてみた

はじめに GPU Instancing を使うと同一メッシュ・マテリアルを使用したオブジェクトを一度に大量に描画することが出来ます。GPU Instancing そのものについてはテラシュールブログさんや公式ドキュメントをご参照ください。 tsubakit1.hateblo.jp docs.unity…

Unity のソフトパーティクルのシェーダについて調べてみた

はじめに 現在 Forward Rendering における Raymarching を試していて、その際にポリゴンとの交差判定でデプス情報を使う必要があるのですが、デプスを使ったシェーダが Unity ではどういう風に書かれているのか気になり、パッと思いつくソフトパーティクル…

Unity で Standard Surface Shader の変換後のコードを追ってみた (Forward)

はじめに サーフェスシェーダは Unity が提供してくれているライティングなどの処理を簡略化して書けるシェーダです。予め定義された SurfaceOutput や SurfaceOutputStandard といった構造体に必要な情報を詰め、影を使うかアルファを使うかといったオプシ…

Unity 2018.1 より提供される Scriptable Render Pipeline について調べてみた

はじめに Unity 2018.1b より Scriptable Render Pipeline (SRP) というレンダリングパイプラインをより細かくコントロールできる機能がリリースされました。SRP の登場により、従来の Forward / Deferred に加え、新たに Compute Shader を活用し SSS など…

Unity でボリュームレンダリングをしてみる - vol.3 色付け / シェーディング

はじめに 本記事はボリュームレンダリングシリーズで以下の記事の続きです。 tips.hecomi.com 今回はボリュームレンダリングの結果に色付けしたりシェーディングしたりするところをやります。 参考 以下のエントリを参考にしています。 graphicsrunner.blogs…

Unity でボリュームレンダリングをしてみる - vol.2 レイの衝突判定

はじめに 前回、Unity でのボリュームレンダリングの導入を行いました。 tips.hecomi.com 今回はレイの通過判定の改善を行います。 プロジェクト github.com 4 が今回の範囲になります。 環境 Unity 2017.3.0f3 MacBook Pro (15-inch, Late 2016) レイと AAB…

Unity でボリュームレンダリングをしてみる - vol.1 データ表示

はじめに 今回はボリュームレンダリングについて調べてみました。 ボリュームレンダリングは CT スキャンや MRI などで得られたデータや、雲やエフェクトなどの事前に用意またはリアルタイムに計算した 3 次元のデータを 2 次元の画面上に描画するための手法…

Unity のシェーダをテンプレートファイルから生成するエディタ拡張をつくってみた

はじめに Unity でシェーダをテンプレートファイルから生成できるアセットを作ったので、作った動機および使い方の紹介をしたいと思います。 以前 uRaymarching というアセットの一部の機能として作成したものを分離したものになります。 tips.hecomi.com ダ…

Unity で画面出力を変形するイメージエフェクトを作ってみた

はじめに Unity で作ったアプリをプロジェクタを使って投影したい際、以前は Syphon を使って MadMapper に送ったりしていましたが、単純に 1 枚の画を対象となる矩形の物体に映したいだけの時が多く、フレームの転送の遅延があったり、複数アプリを立ち上げ…

Unity 2017.1 の機能の CustomRenderTexture を使ってみた

はじめに keijiro さんの以下のつぶやきを見て Unity 2017.1 から CustomRenderTexture という新しいテクスチャが導入されたことを知りました。 Real time reaction-diffusion system with CustomRenderTexture (Unity 2017.01) https://t.co/NvZhkNTS1s pic…

HoloLens 用の Body-Locked な UI を作ってみた

はじめに ホーム画面の UI の用に、ある程度の遊びとディレイを持って視界に追従してくる Body-Locked な UI を実現したい時のために、HoloToolkit-Unity には Tagalong というコンポーネントが用意されているのですが、その挙動が自分のイメージとちょっと…

HoloLens で使える Near Clip 表現について解説してみた

はじめに 先日、Micorosoft さんのオフィスで Tokyo HoloLens ミートアップ vol.2 が行われ、そこで LT 枠で発表をしてきました。発表は「HoloLens x Graphics 入門」ということで、HoloLens に見られる幾つかの基本的な表現の紹介および解説を行いました。…

HoloLens で向こう側が見える窓を動的に追加してみる

はじめに 前回のブログで少しだけ穴あき表現について触れました。 tips.hecomi.com 本エントリでは動的に穴を開ける方法について解説したいと思います。 デモ 環境 Windows 10 Unity 5.5.1f1 ダウンロード github.com おさらい ドキュメント:Case study - L…

Unity で特定のモデルのみ Image Effect が効かないようにする

はじめに キャラクタの顔だけ SSAO が効かないようにしたいがどうしたら良いか、という相談を受けたので、いくつか方法を考えてみました。 顔のモデル描画時にステンシルを設定しておき、Image Effect のタイミングで特定の値がセットされている場所だけ無視…

Unity で Windows のデスクトップ画面をテクスチャとして表示するプラグインを作ってみた

はじめに 本エントリは Unity Advent Calendar 2016 4 日目の記事になります。先日は srndpty さんによる「uGUIのScrollViewを使いこなす7つのTips - Programming Serendipity」でした。スクロール系は私も昨年の Advent Calendar で書いた uREPL を作成した…