渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

シェーダ

最初理解しづらいReplaced Shadersの仕組み

Unityには結構前からReplaced Shadersという機能が提供されています。 これは特定のシェーダを置き換えてくれる便利機能です。 Unity - マニュアル: Replaced Shaders でのレンダリング 私自身結構前からこの機能の存在は知っていたのですが、リファレンスを…

Unity任意のテクスチャを使ったステンシルマスク

以前Unityでステンシルテストをやってみた記事の続きです。 前回はキューブ(メッシュの形)をマスクにしましたが、今回は任意のテクスチャを使ってマスク表現をしてみます。

Unityステンシルを使ったマスク表現

ステンシルはアルファテストやデプステストと違い、ユーザーの都合でピクセルの描画可否を決めることが出来る機能です。各ピクセル毎に8ビット整数値をバッファ (ステンシルバッファ) に保持し、その値を活用して実装します。 例) マスクする側 マスクされる…

Unityのアルファテストがレガシーなものになっていた件

アルファテストとは、ピクセルのアルファ値で判定して描画可否を決めるコマンドで描画される直前で行われます。 AlphaTest "比較文字列" "比較するアルファ値" という構文で比較文字列は以下の8種類あります。 Greater : ピクセルのアルファ値が AlphaValue …

SubShaderとPassの中で使用できるTagリスト

Unityのシェーダ ShaderLabのSubShaderセクション、Passセクションには、どちらもTagを設定することができます。 ただ、どちらも専用Tagです。 目次 SubShaderの中でしか使えないTag DisableBatching CanUseSpriteAtlas PreviewType Passの中でしか使えないT…

Unityで輝度を考慮しないBloom

前回に引き続きイメージエフェクトやります。 今回はBloom(ブルーム)です。 Blooming (ブルーム)とは明るい光源(例えば、閃光のような)からの光が周囲の物体に漏れるように見える光学効果である。 Unity公式より 個人的にはBloomは画作りには欠かせない…

横にずれるノイズ風イメージエフェクト

前回からの続きで、今回はノイズのイメージエフェクトを作ってみます。 ノイズと言っても様々なものがありますが、今回はこのようなノイズを作ってみました。 ※名前が分かりません 画面トランジションや、キャラの登場などで使えなくもない気がしています。

Unity デプスシャドウ技法を自前で書いて影を落としてみる

オブジェクトの影を落とす時、ShadowCasterを設定する、または、設定されているシェーダ(Standardシェーダ、Diffuseシェーダなど)を使うことがUnityでは最もお手軽な方法だと思います。 影の描画って実際どうなっているかを調べました。 デプスシャドウ技法 …

なぜドローコールバッチングされないか、理由を知る方法

Unity5.6からフレームデバッガに現在の描画と1つ前の描画が、ドローコールバッチングされない場合にヒントが表示されるようになりました。 ちなみにドローコールバッチングとは、複数のメッシュまとめて、1回のドローコールで描画することを指します。 ※全て…

Unityシェーダのマクロとマルチコンパイル

シェーダ内で#define マクロ名(引数) 処理という文法でマクロを書くことが出来ます。 マクロとはCやC++でよく出てくるインラインで展開されるアレです。 UnityCG.cgincの中身を眺めているとよく出てきます。 眺めることはあっても書いたことはなかったので、…

スクロールをアルファブレンドしたイメージエフェクト

環境 Unity5.5.2p2 前回に続いてイメージエフェクト記事です。 今回は前回のスクロール処理にアルファブレンドを加えたら面白い表現になりましたという内容です。 まずは成果物から

無限スクロールイメージエフェクト

環境 Unity5.5.2p2 以前にもGLSL Sandboxを移植してイメージエフェクトを書いて遊んでいたのですが、あまり深く理解せず、とりあえず触っていただけでしたので、今年はじっくりと理解しながら書いていく年にしていきたいと今は思っています。 今回は私が尊敬…

シェーダプロパティアクセスが2.5倍早くなるPropertyToID関数

Materialの任意のプロパティを操作をする際に、 SetFloat SetTexture SetInt SetColor… などの関数を使用します。 文法的には material.SetFloat("_Prop", 100f); のように、第一引数にプロパティ名をString型、第2引数に値を渡します。また、オーバーロード…

GLSL SandboxをUnityに移植して遊ぶ_その3

私は3歳の頃からテレビゲームと呼ばれるものを必ず毎日30分は少なくともやってました。(当時はファミコンです) 大学に入って少し頻度が下がりましたが、iPhoneが世に出回りスマホゲームを作るようになってからは、加速するようにゲームをしてするようになり…

GLSL SandboxをUnityに移植する方法その2

環境 Unity5.5.0p1 前回に引き続きGLSL Sandbox作品をUnityに移植して遊んでみる記事です。 www.shibuya24.info 前回はGLSL Sandbox初期シェーダコードでしたが、今回は色々と変更が入った作品を例に遊んでみます。 今回参考にした、煙がゆっくり流れるよう…

GLSL SandboxをUnityに移植する方法その1

GLSL Sandboxとは、言わずと知れた有名なWebサービスです。 GLSLで書かれたシェーダを即時実行して全世界にブラウザベースで共有できます。 ソースも公開されているためシェーダ教材としても非常に重宝します。 実際にUnityで試してみたい表現が見つかったり…

Unity uGUIで綺麗なマスク表現

uGUIにはテクスチャをマスクするためのMaskコンポーネントご実装されていますが、まあこいつが使えない。 元画像 マスク画像 結果 なんか思ったのと違うものが出来上がります。 縁が汚い アンチエイリアスが効かないので、カーブを持つマスク画像だと結構ジ…

Unity ImageSequencerがイイ感じに面白い

Unity5.5に実装予定のImageSequenerを触ってみたメモ。

Unity UIデザイナー向けuGUIで色の加算合成をする

環境 Unity5.4.2f1 uGUIでテクスチャ(画像)を表示させるためには Imageまたは RawImage コンポーネントを使用します。これらのクラスにはテクスチャの色を変更する color プロパティが実装されています。 加算、乗算、除算、減算、覆い焼き、焼き込みなど様…

「シェーダとは何なのか」を自分の言葉でまとめてみる

今回ふわっとしているシェーダを分からないなりに調べて自分の言葉でまとめてみます。 一言で「シェーダとは何なのか」 Unityにおけるシェーダの処理 これらを順番にまとめていきます。調べていく中で発生した副産物は別途記事にしていく予定です。 ※間違っ…

Unity 動的にメッシュを生成してゴニョゴニョする : 超基本編その2

esakun.hateblo.jp 前回スクリプト上から三角形ポリゴンを生成し、テクスチャを貼るところまで来ました。 順番が逆かもしれませんが今回は頂点カラーを設定して描画してみます。 頂点カラーとは 前回のおさらいですが、メッシュを形成する頂点には、 頂点座…

Unity 動的にメッシュを生成してゴニョゴニョする : 超基本編

仕事で実践することはほぼ無いのですが、無性にUnityでメッシュを動的に生成したくなりました。 色々調べてみるとUnityでもメッシュは作成できるという事が分かりました。 ということで「実際にやってみよう!」という記事です。 とりえず三角ポリゴンを1つ…

最小のソースコードで生WebGLのHelloWorldをやってみる

「ライブラリを一切使わずにWebGLを書いてみよう」 という記事です。 WebGLのHelloWorldとは? WebGLは三角ポリゴンの描画しか対応していません。(多角形ポリゴンは非対応) まずは三角ポリゴン一個を表示させることがWebGLのHelloWorldではないかと考えます。…

何事も基礎大事!!ほぼ生で書くWebGL スクールに通ってます。

少し前からコチラのスクールに通っておりまして、WebGLを勉強しています。 WebGL スクール第2期の募集を開始します! 2015年5月開講! - WebGL 総本山webgl.souhonzan.org メインはWebGLの基本的な内容 以下のような内容で全6回 5時間ぶっ通しでやります。 …