Shader
Unityにて、 UniversalRP ShaderGraph この2つを使った描画の検証をしています。 ShaderGraphで書いたシェーダに外からテクスチャをスクリプトで渡す際に軽くつまづいたので共有します。 作っているもの カラーテクスチャとマスクテクスチャを渡したマスクシ…
Unityでキーワードを追加して処理を分岐させながらシェーダを書いていくと、知らず知らずのうちにシェーダバリアントが大量に増えることがあります。シェーダバリアントを作成するためには#prgama multi_compileまたは#pragma shader_featureを追加だけなの…
ノードを繋げてシェーダを作成することができる、Unity純正のShader Graphを始めてみました。 環境セットアップ(Unity2019.1.10f1の場合) 新規プロジェクトで始める場合、Unity HubからLightWeight RPを選んだ状態でプロジェクトを作成するとスムーズにShade…
先日始めたコンピュートシェーダにおけるトラブル備忘録です。
コンピュードシェーダのUnity公式マニュアルを見ながら、Mac環境で始めてみたいと思います。 ちなみに、筆者は全くコンピュートシェーダを書いたことがないので、初心者目線で行きます。 前提としてコンピュートシェーダとは、頂点シェーダやフラグメントシ…
Unityでシェーダを書く場合、とりあえず開発者が必要そうな変数やら関数はUnity側で用意されていることが多いので "UnityCG.cginc"、"AutoLight.cginc"、"Lighting.cginc"この辺りのファイルたちを眺めると良い感じです。 このようなライト方向とカラーを適…
1.Unityで三角形を1つ描画、テクスチャまで貼る この辺りでやっているような三角形1つ描画するということをUnityでもやってみたというプリミティブな記事。 生のWebGLで三角形を描画するショートコード - 渋谷ほととぎす通信 C#でDirectX11 SlimDXで三角形を…
いつのバージョンからかは忘れたのですが、シーンビューのプルダウンにAnimation Materialsという項目が追加されました。 コレなんだろう?って思ってて時が経ち、先程偶然知ることができました。 ↓↓コレです
今回は実は使ったことなかった機能シリーズ、「シェーダLOD」を試してみます。 Unityでシェーダを書いているとよく目にするLOD 200のような値。 これはシェーダ自身でLODを使用する際に使うLOD値です。 例えばLOD 200のサブシェーダが実装されているなら、Sh…
最近3Dキャラの肌の表現に興味が湧いていて、とりあえずちゃんと読んでいなかったUnityちゃんシェーダの肌部分を読んでみました。 以下、その備忘録となります。 読んだ部分というのは、Unityちゃんアセット同梱のCharaSkin.cgのfrag関数内です。ここに肌の…
もう諦めないWebGL - 渋谷ほととぎす通信 続・もう諦めないWebGL進捗 - 渋谷ほととぎす通信 今回もWebGL周りの続きです。 本記事ではSD UnityちゃんをWebGLに表示させてみようと思います。
Unityには結構前からReplaced Shadersという機能が提供されています。 これは特定のシェーダを置き換えてくれる便利機能です。 Unity - マニュアル: Replaced Shaders でのレンダリング 私自身結構前からこの機能の存在は知っていたのですが、リファレンスを…
以前Unityでステンシルテストをやってみた記事の続きです。 前回はキューブ(メッシュの形)をマスクにしましたが、今回は任意のテクスチャを使ってマスク表現をしてみます。
ステンシルはアルファテストやデプステストと違い、ユーザーの都合でピクセルの描画可否を決めることが出来る機能です。各ピクセル毎に8ビット整数値をバッファ (ステンシルバッファ) に保持し、その値を活用して実装します。 例) マスクする側 マスクされる…
アルファテストとは、ピクセルのアルファ値で判定して描画可否を決めるコマンドで描画される直前で行われます。 AlphaTest "比較文字列" "比較するアルファ値" という構文で比較文字列は以下の8種類あります。 Greater : ピクセルのアルファ値が AlphaValue …
Unityのシェーダ ShaderLabのSubShaderセクション、Passセクションには、どちらもTagを設定することができます。 ただ、どちらも専用Tagです。 目次 SubShaderの中でしか使えないTag DisableBatching CanUseSpriteAtlas PreviewType Passの中でしか使えないT…
前回に引き続きイメージエフェクトやります。 今回はBloom(ブルーム)です。 Blooming (ブルーム)とは明るい光源(例えば、閃光のような)からの光が周囲の物体に漏れるように見える光学効果である。 Unity公式より 個人的にはBloomは画作りには欠かせない…
前回からの続きで、今回はノイズのイメージエフェクトを作ってみます。 ノイズと言っても様々なものがありますが、今回はこのようなノイズを作ってみました。 ※名前が分かりません 画面トランジションや、キャラの登場などで使えなくもない気がしています。 …
オブジェクトの影を落とす時、ShadowCasterを設定する、または、設定されているシェーダ(Standardシェーダ、Diffuseシェーダなど)を使うことがUnityでは最もお手軽な方法だと思います。 影の描画って実際どうなっているかを調べました。 デプスシャドウ技法 …
Unity5.6からフレームデバッガに現在の描画と1つ前の描画が、ドローコールバッチングされない場合にヒントが表示されるようになりました。 ちなみにドローコールバッチングとは、複数のメッシュまとめて、1回のドローコールで描画することを指します。 ※全て…
シェーダ内で#define マクロ名(引数) 処理という文法でマクロを書くことが出来ます。 マクロとはCやC++でよく出てくるインラインで展開されるアレです。 UnityCG.cgincの中身を眺めているとよく出てきます。 眺めることはあっても書いたことはなかったので、…
環境 Unity5.5.2p2 前回に続いてイメージエフェクト記事です。 今回は前回のスクロール処理にアルファブレンドを加えたら面白い表現になりましたという内容です。 まずは成果物から
環境 Unity5.5.2p2 以前にもGLSL Sandboxを移植してイメージエフェクトを書いて遊んでいたのですが、あまり深く理解せず、とりあえず触っていただけでしたので、今年はじっくりと理解しながら書いていく年にしていきたいと今は思っています。 あわせて読みた…
Materialの任意のプロパティを操作をする際に、 SetFloat SetTexture SetInt SetColor... などの関数を使用します。 文法的には material.SetFloat("_Prop", 100f); のように、第一引数にプロパティ名をString型、第2引数に値を渡します。また、オーバーロー…
私は3歳の頃からテレビゲームと呼ばれるものを必ず毎日30分は少なくともやってました。(当時はファミコンです) 大学に入って少し頻度が下がりましたが、iPhoneが世に出回りスマホゲームを作るようになってからは、加速するようにゲームをしてするようになり…
環境 Unity5.5.0p1 前回に引き続きGLSL Sandbox作品をUnityに移植して遊んでみる記事です。 前回はGLSL Sandbox初期シェーダコードでしたが、今回は色々と変更が入った作品を例に遊んでみます。 今回参考にした、煙がゆっくり流れるようなGLSL Sandboxの作品…
GLSL Sandboxとは、言わずと知れた有名なWebサービスです。 GLSLで書かれたシェーダを即時実行して全世界にブラウザベースで共有できます。 ソースも公開されているためシェーダ教材としても非常に重宝します。 実際にUnityで試してみたい表現が見つかったり…
uGUIにはテクスチャをマスクするためのMaskコンポーネントご実装されていますが、まあこいつが使えない。 元画像 マスク画像 結果 なんか思ったのと違うものが出来上がります。 縁が汚い アンチエイリアスが効かないので、カーブを持つマスク画像だと結構ジ…
Unity5.5に実装予定のImageSequenerを触ってみたメモ。
環境 Unity5.4.2f1 uGUIでテクスチャ(画像)を表示させるためには Imageまたは RawImage コンポーネントを使用します。これらのクラスにはテクスチャの色を変更する color プロパティが実装されています。 加算、乗算、除算、減算、覆い焼き、焼き込みなど様…