読者です 読者をやめる 読者になる 読者になる

凹みTips

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

Shader

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 を作成した…

Unity で距離に応じたテッセレーションを行ってみた

はじめに テッセレーションを行うと、ポリゴンの分割数を増やしてより滑らかな曲面を作成できたり、分割された頂点をテクスチャを参照して直接盛り上げたり(ディスプレースメントマッピング)出来ます。ただ、分割数を増やすにはそれなりのコストがかかるの…

Unity でレイマーチングするシェーダを簡単に作成できるツールを作ってみた

はじめに レイマーチングとはポリゴンではなく、距離関数(distance function)と呼ばれる数式を元にオブジェクトをレンダリングする方法です。ポリゴンを使わないのでモーフィングや複雑な図形もシンプルな数式で記述することが可能で、GPU のコストが高い…

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

はじめに 過去幾つかの記事でディファードシェーディングのレンダリングパスで G-Buffer を色々いじることをやってきました。その際、G-Buffer に与える出力は適当な値を与えてきましたが、実際はもう少し真面目にやらなければなりません。というのも本来は…

Unity でオブジェクトスペースのレイマーチをやってみた

はじめに 以前、Unity の Command Buffer を使ってレイマーチを行う方法を紹介しました。 Unity で Command Buffer を使って Raymarching をしてみた - 凹みTips しかしながらこの手法では異なる多数の立体を同時に描画したり、それらのオブジェクトを自由に…

Unity でスクリーンスペースのブーリアン演算をやってみた

はじめに ブーリアン演算とは様々な形状を集合演算(足し合わせる(和)、一方から他方を引く(差)、一致する部分を抜き出す(積)など)によって作成する手法です。 ブーリアン演算 - Wikipedia Constructive Solid Geometry - Wikipedia いくつかの実装方…

デプスセンサの値を Deferred Rendering の G-Buffer に書き込んでみた

はじめに Deferred Rendering では G-Buffer にデプスや法線、拡散色などの情報を予め描きこんでおき、その情報を使ってシェーディングやライティングの処理が行われます。 遅延シェーディング - Wikipedia これを利用してあげると距離関数でレイトレースし…

Unity の DX11 向け機能のサンプルを読んでみた

はじめに 以下のスレッドに Unity の中の Aras 氏による DX11 機能を利用したサンプルが上がっています。 Error | Unity Community この中には 8 つのシーンにそれぞれ異なるサンプルが格納されていて、どれもあまり(日本語の)情報がなく且つ面白いものな…

Unity で Compute Shader を使ったスクリーンスペース衝突有りの GPU パーティクルを作ってみた

はじめに コンピュートシェーダを使った GPU パーティクルを試してみます。GPU パーティクルを出す方法はいくつかあるのですが、任意のメッシュを利用したかったため、コンピュートシェーダを使った擬似インスタンシングによる方法を利用してみました。 参考…

Unity で Screen Space Reflection の実装をしてみた

はじめに Screen Space Reflection はカメラから見た画のみを利用してレイトレした結果を使い、擬似的な反射画をそこそこのコストで作り出すテクニックです。Reflection Probe と異なり、動的なものにも効きますし、それなりに正しい反射した画が得られます…

Unity でカスタムライトを使ったスクリーンスペースシャドウを試してみた

はじめに 前回に引き続き Raymarching 関連記事です。 G-Buffer に Raymarching して描画したオブジェクトではポリゴンのオブジェクトから影を受けることは出来るのですが、Raymarching したオブジェクトから自身とポリゴンのオブジェクトへの影を作ることが…

Unity で Raymarching で描画したオブジェクトとのコリジョンを作ってみた

はじめに 前回の記事では G-Buffer を利用して Raymarching で数式から図形を描画する方法を紹介しました。 Unity で Command Buffer を使って Raymarching をしてみた - 凹みTips G-Buffer を利用して Raymarching して描画した図形はコライダが無いため、…

Unity で Command Buffer を使って Raymarching をしてみた

はじめに id:i-saint さんのこちらの記事(rendering fractals in Unity5 - primitive: blog)に触発されて勉強中です。Raymarching はポリゴンベースでなく、距離関数(distance function)と呼ばれる数式を元にオブジェクトをレンダリングする方法で、工夫…

Unity 5 の CommandBuffer を利用したレンダリングパイプラインの拡張について調べてみた

はじめに Unity 5 より利用できるようになった CommandBuffer を利用するとレンダリングパイプラインを拡張して色々な表現が可能となります。公式ブログにこの詳細が書いてあり、サンプルもブログ中またはドキュメント上で配布されています。 (English) Exte…

発売前に RICOH THETA S のライブビューを Unity でリアルタイムに全天球で見るやつ作ってみた

はじめに GOROman さん(@GOROman)が、以下の様なつぶやきをされているのを見かけたので、その日のうちにやってみたお話です。 これVRストリーム中継楽勝で出来るんじゃないのかなー。ステッチどうするかだけど。。。とりあえず球体をざっくりUVテクスチャ…

現実の手を直接 VR 内に持ち込めるようになった Leap Motion Core Asset v2.3.0 を詳しく調べてみた

はじめに VR 向け Leap Motion アセットに再び神アップデートがきました。 Unity Core Assets 2.3.0 + ImageHands - Leap Motion Community Gallery | Leap Motion Developers いくつかアップデートがある中で目玉は「Image Hand」という機能で、従来は 3D …

Unity のトゥーンシェーダについて調べてみた

はじめに 自前のトゥーンシェーダを作りたくて、まずは Unity 付属のトゥーンシェーダについて調べてみました。Unity のシェーダについては以前の記事をサラッと読んでいただけると理解しやすいと思います。 Unity のシェーダの基礎を勉強してみたのでやる気…

VR の世界に手を持ち込める Leap Motion VR の仕組みを調べてみた

はじめに 8月末に Leap Motion が公式でステレオの赤外画の取得の API の公開と、VR 用のソフトウェア群、および Oculus Rift DK2 マウンタを公開しました。 Image API Now Available for v2 Tracking Beta Leap Motion Sets a Course for VR サンプルも幾つ…

ノードベースのエディタで Shader をリアルタイムに編集して色々な質感を簡単に作れる Shdaer Forge を使ってみた

はじめに 本記事は「Unity アセット真夏のアドベントカレンダー 2014 Summer!」の 9 日目の記事になります。前回は id:baba_s さんによる 【Unity】Editor Console Pro でゲーム開発効率化 - コガネブログ でした。 Unity では、シェーダによって様々な質感…

クロマキー合成 + 立体視が可能な Ovrvision SDK v0.6 を試してみた

はじめに 2014/5/3 に Ovrvision SDK v0.6 がリリースされました。 downloads - Ovrvision Developer Document 今回のアップデートは以下の様な形です。 To improved precision of AR markers(Aruco) ArUco の AR マーカの精度の向上 Add chroma key functio…

Unity でシェーダを使って 20,000 人が音楽に合わせてサイリウム振ってる様子を作ってみた

はじめに 以前、Unity のシェーダのエントリ(Unity のシェーダの基礎を勉強してみたのでやる気出してまとめてみた - 凹みTips)を書いた際に @yuujii さんからこんなご提案を頂きました!@hecomi 武道館とかで使えるような、会場全体で観客がサイリウム振っ…

Unity のシェーダの基礎を勉強してみたのでやる気出してまとめてみた

はじめに 近年の GPU の進化に伴い 3D 周りの表現力がとても豊かになりました。そしてこの多彩な表現を可能としているのはシェーダによるところが大きく、シェーダを理解して書くことが出来ると、表現できることの幅がとても広がります。Unity では素晴らし…

Unity で Transparent/Diffuse で描画順が崩れてしまう際の対処法

はじめに Unity で Plane やポリゴンに対して Transparent なシェーダを設定した時に、下図のように描画順が崩れてしまうことがあります。 Transparent/Diffuse なシェーダで alpha = 1 な時と、Diffuse が一致して欲しかったのですが、何故かこういった現象…

QML で表示した WebView をシェーダでいじって遊んでみた

はじめに QML では ShaderEffect という要素を利用して、表示している要素をソースにシェーダでいじることが出来ます。 http://qt-project.org/doc/qt-5.0/qtquick/qml-qtquick2-shadereffect.html そこで WebView で表示した Web ページをソースに色々と遊…

Unity で GLSL によるカスタムシェーダを利用する方法

はじめに Unity ではビルトインシェーダの他に自分でカスタムシェーダを作成することができます。シェーダの言語は Cg / HLSL に加えて GLSL も使えるとのことです。 参考: Unity - Manual: GLSL Shader Programs しかしながら、テスト用かターゲットが Mac …

GLSL で光の点をぐるぐるアニメーションさせるやつ書いてみた

はじめに 最近 OpenGL ES 2.0 触っていてシェーダに興味を持ったのでやってみました。 参考 以下のサイトで勉強させて頂きました。 GLSLで簡単2Dエフェクト « demoscene.jp ここで紹介されている GLSL Sandbox で WebGL ベースでリアルタイムにシェーダの結…