凹みTips

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

Shader

uRaymarching の URP 向け機能更新をしてみた(Deferred / SSAO / Decal / Clear Coat)

はじめに 前回の記事で、Deferred を始めとする URP の新機能の調査を行いました。 tips.hecomi.com 本記事ではこの調査をもとに更新した uRaymarching の各機能やどういう処理が内部的にされているか、また注意事項などを紹介します。いくつか前回の記事と…

URP に新しく追加された Deferred レンダリングなどについてざっくりと調べてみた

はじめに 先日 Unity 2021 LTS が発表されましたね。 blog.unity.com Unity 2021 には数多くの機能追加がありますが、このうちの一つが URP への Deferred Rendering の正式サポートです(実験的に以前から追加はされていたようです)。 docs.unity3d.com ド…

Unity で DICOM 画像をレンダリングしてみる

はじめに 先日、Twitter で手持ちの DICOM 画像を以前書いたボリュームレンダリングの記事のように描画したい、というご相談をいただき試してみましたので内容を共有します。 tips.hecomi.com DICOM(ダイコム)とは「Digital Imaging and COmmunications in…

Unity で URP 向けのファーシェーダを書いてみた(動き・アニメーション連携)

はじめに 毛の連載も 4 回目になりました。これまでの記事は以下になります。 tips.hecomi.com tips.hecomi.com tips.hecomi.com これまでは風による動きを Sin 関数でそれっぽくしてましたが、今回は実際に頂点毎の動きを見て動かしてみることをやってみま…

Unity で URP 向けのファーシェーダを書いてみた(毛ポリゴン生成)

はじめに URP でのファーシェーダの実装について、シェル法とフィン法について見てきました。 tips.hecomi.com tips.hecomi.com 最後は直接ジオメトリシェーダで毛ポリゴンを生成する方法を試してみます。 デモ ライティング 3 手法の比較 左から順に、シェ…

Unity で URP 向けのファーシェーダを書いてみた(フィン法)

はじめに 前回の記事ではポリゴンを何層も重ねて毛を表現するシェル法を URP 向けに実装するのを試しました。 tips.hecomi.com 今回はフィン法を試してみようと思います。色々実験しながら書くのでちょっと煩雑になるかもしれませんがご了承ください。 デモ …

Unity で URP 向けのファーシェーダを書いてみた(シェル法)

はじめに 今回は書いたことのなかったファーシェーダを試してみます。コードも書きやすいのでこれからはレガシーパイプラインではなく Universal Render Pipeline(URP)メインで書いていこうかな、と思っています(HDRP は直書きが大変すぎて趣味としては辛…

Unity 向けに HLSL Tools for Visual Studio を便利にするアセットを作ってみた

はじめに 本記事は Unity Advent Calendar 2020 の 20 日目の記事です。 qiita.com Windows 上の Unity でシェーダを書く(読む)際は Visual Studio を使うことが多いかもしれません(VSCode の人も多いと思いますが...)。しかしながらそのままでは補完も…

HDRP の Lit シェーダを読んでみた

はじめに 前回、前々回と Unlit シェーダを読んでみましたので今回は Lit シェーダを読んでみます。 tips.hecomi.com tips.hecomi.com モチベーションとしては、HDRP の理解に加え、HDRP でのシェーダは基本的にはシェーダグラフで構築するのですが、uRaymar…

HDRP の Unlit シェーダを読んでみた(後半)

はじめに 前回の前半の記事では HDRP の Unlit シェーダのパスの中で、SceneSelectionPass、DepthForwardOnly、MotionVectors を読んでみました。 tips.hecomi.com 今回は後半ということで残りの ForwardOnly、Meta、ShadowCaster、DistortionVectors を見て…

HDRP の Unlit シェーダを読んでみた(前半)

はじめに HDRP は 7.2.0 からプレビューではないパッケージになりました(DXR は現状プレビュー機能のようです)。Unity のバージョン的には 2019.3 から含まれるようになります。 blogs.unity3d.com blogs.unity3d.com blogs.unity3d.com HDRP の機能は膨大…

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 など…