渋谷ほととぎす通信

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

シェーダ

Unity動的にメッシュを生成するシリーズ

1.Unityで三角形を1つ描画、テクスチャまで貼る この辺りでやっているような三角形1つ描画するということをUnityでもやってみたというプリミティブな記事。 生のWebGLで三角形を描画するショートコード - 渋谷ほととぎす通信 C#でDirectX11 SlimDXで三角形を…

シーンビューのAnimation Materialsチェックボックスの意味

いつのバージョンからかは忘れたのですが、シーンビューのプルダウンにAnimation Materialsという項目が追加されました。 コレなんだろう?って思ってて時が経ち、先程偶然知ることができました。 ↓↓コレです

UnityのシェーダLODを試す

今回は実は使ったことなかった機能シリーズ、「シェーダLOD」を試してみます。 Unityでシェーダを書いているとよく目にするLOD 200のような値。 これはシェーダ自身でLODを使用する際に使うLOD値です。 例えばLOD 200のサブシェーダが実装されているなら、Sh…

Unityちゃんシェーダを読んでまとめた

最近3Dキャラの肌の表現に興味が湧いていて、とりあえずちゃんと読んでいなかったUnityちゃんシェーダの肌部分を読んでみました。 以下、その備忘録となります。 読んだ部分というのは、Unityちゃんアセット同梱のCharaSkin.cgのfrag関数内です。ここに肌の…

生WebGLでUnityちゃんを表示させる

もう諦めないWebGL - 渋谷ほととぎす通信 続・もう諦めないWebGL進捗 - 渋谷ほととぎす通信 今回もWebGL周りの続きです。 本記事ではSD UnityちゃんをWebGLに表示させてみようと思います。

最初理解しづらい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 動的に生成したメッシュに対して頂点カラーを反映する

前回記事の続きにあたります。 スクリプト上から三角形ポリゴンを動的に生成し、テクスチャを貼るところまで来ました。 順番が逆かもしれませんが今回は頂点カラーを反映して三角形を描画してみます。 動的にメッシュを生成するシリーズの一貫です。 頂点カ…

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

仕事で実践することはほぼ無いですが、Unityでメッシュを動的に生成してみます。 色々調べてみるとUnityでもメッシュは作成できるという事が分かりました。 ということで「実際にやってみよう!」という、かなり初心者向けの記事です。 動的にメッシュを生成…

生のWebGLで三角形を描画するショートコード

three.jsなどの便利なライブラリを使えば一瞬でできることですが、本記事はそういったライブラリを一切使わずにWebGLを書いて、どのくらい大変なのかを理解します。 DirectXでも同様の三角形描画しました! 三角ポリゴン1個表示するまでの道のり 結構長いで…

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

少し前からコチラのスクールに通っておりまして、WebGLを勉強しています。 webgl.souhonzan.org メインはWebGLの基本的な内容 以下のような内容で全6回 5時間ぶっ通しでやります。 WebGLとはなにか? WebGLの基礎を知る テクスチャとライティング アルファブ…