Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

勉強会レポ : Unity Shader 勉強会

 

勉強会のレポート(メモ)です。

参加したのはこちら、「Unity Shader 勉強会」

 

connpass.com#UnityShader勉強会

 

 

 

タイムスケジュール

開始時間 終了時間 内容
19:00   受付開始
19:20 19:35 オープニング(諸注意等)
19:35 19:50 Image Based Shader Programming(@Es_Program)
19:50 20:05 Visual Effects Graph入門(@notargs )
20:05 20:15 休憩
20:15 20:30 Unityを使ったVJでよく使うイメージエフェクト集(@kaiware007)
20:30 20:45 頂点シェーダーアニメーション入門(@TEST_H_ )
20:45 21:00 Shaderを運用する(@___shanon)
21:00 22:00 懇親会
22:00   撤収

 

 

 

 

 

 

 

 

スポンサー様紹介

 

会場提供はドリコムさん

懇親会の提供はGroovesさん、Unity部さんです

 

Grooves

Forkwellではエンジニアの転職サービスやってます。
成長しつづけるエンジニアを応援しています。
勉強会のスポンサー費用として800万円ほどやってきました、
瓶ビール79年分です。それくらい応援したいのです。

 

また出たなForkwell!
ポートフォリオサイトをリニューアルしました。
自己紹介などにお使いください。

 

皆様にプレゼントがあります。
github連携して新規でご登録くださった方にプレゼント。
今日から三日間のサービスです。

 

 

Unity部

不定期に勉強会やもくもく会をやってます。

年末LT大会やります。
ページはもうすぐ公開します。

UNIBOOKの執筆者募集してます。

 

 

 

 

 

 

 

1. Image Based Shader Programming

esprog.hatenablog.com

目標 Image Based Shader Programming

入出力をイメージできるようにするのが目標です。
シェーダーの基礎について話します。

諸注意
数年前のコードなので注意してね。

 

内積について

式などが多いのでスライドを見てね

 

古典的ライティングモデル

物体固有の色が見える反射をDiffuse反射、
ハイライトの反射をSpecular反射といいます

 

Lamvert反射(ランバート)
受けた光を受けた分同じく反射する

 

Specular反射(スペキュラー)
法線とライトの角度が小さいほど光の色がでて、
大きいほどでないというのを数式につっこんだもの

 

おまけ
マイクロファセットを考慮すると物理的な意味をこめた反射ができます

 

 

まとめ

内積さえわかれば単純
順を追って紐解けば難しくない数学です

 

 

 

 

2. Visual Effects Graph

notargs.hateblo.jp

 

 VFX Graphの使い方が画像付きで詳しく解説されています。

スライドを見てください。

 

 注意
正式リリース前なので注意、いろいろ変わる可能性があります

 

 

Visual Effects Graph

GPUベースで動くノードベースのパーティクルシステム
シュリケンより自由度が高い
速くて安くてうまい

 

使う場合
Unity最新版を使いましょう

 

セットアップ

 スライドを見てね

 

 

基本ノード

Spawn:エミッター

Initialize:初期化処理

Update:毎フレーム行う処理

Output:どんな見た目で表示するかを設定

 

 大量にだす場合

・Capacityを適当に増やす
・Spawnrateを増やす

 

まとめ

・正式前なのでいろいろ不安定
・とても自由度が高い

 

 

 

 

 

 

3. Unityを使ったVJでよく使うイメージエフェクト集

 

UnityでVJしてますか?

VJ?

クラブやコンサートで音楽に映像を合わせる人
プリレンダ系とジェネ系にわかれます
私はジェネ系です

 

・音声入力とスペクトラム解析

・イメージエフェクト
最近はPostProcessingStackを使うのが主流

 

 

よく使うエフェクト

・Edge Detection
曲の雰囲気が変わるときに使うとよい

 

Mosaic
ドットドットさせる
音量や曲のリズムに合わせて使う

 

Distortion
音量に合わせて使う


・Invert & Random Invert
サビや激しい場面で使う
乱発しないで


・Radietion Blur
激しい音に合わせる

 

・Reflection
ちょっとした時に使う

 

・RGB Shift
音量に合わせてずらして使う


・Glitch
位置とか色をランダムな位置に飛ばす


まとめ

シンプルでも音に合わせてかけると気持ちい
シェーダー駆使して作ろう

 

 

 

 

 

 

4. 頂点シェーダアニメーション入門

 図やコードが豊富に載っています。スライドを見てみてね。

メモ程度だけ置いておきます

 

話す内容

頂点シェーダーでオブジェクトを動かすにはどうやるのか

 

 

頂点の動かし方

ローカル座標に値を代入するだけ

拡大させたり回転させたいときは変換行列で簡単に実装できます

 

 

行列と頂点をかけることで動かせます

順番は大事

 

行優先、列優先についてはこのリンクをぜひ読んでください

tech.drecom.co.jp

 

おまけは資料でね

 

 

 

 

 

 

5. Shaderを運用する

スライドは後日完全版が上がります完全版商法

@___shanon

 

今日の話題 Shaderは爆発する

最強のShaderを作る。
→デザイナーさんの意見にそってどんどん拡張
→するとどんどん増えて、シェーダーが組み合わせ爆発します

 

・ブレンディングモード
・Culling
・Vertex オンオフ
・Lightingの方式 選べるように
・Rimlight.....

どんどん増える

 

単純な機能 on offが10機能あると1024ファイルできます

ところが
実際には10ではたりない


ではどうする

 

1.ブレンドやカリングはシェーダーにわける必要はなくプロパティにする

インスペクタから指定できるようにします
Enumをつけると、ドロップダウンリストで表示されます

 

実はこれでも使いづらい
この組み合わせはデザイナーにやさしくない

プロパティにさらにもうひとつ追加
シェーダーGUIを継承したやつでOnGUIで表示させてあげる
Unityのスタンダードシェーダーは公開されているのでダウンロードしましょう

 

2.機能のon offはShader Variantで表示する

on offはifで表現したい...
しかしifは重いから使ってはならない?
ifは実行しない分もクロックされるため重いのです

この辺りはGPUのいい感じの本を読んでね

 


shader_featureとmulti_compileが用意されています

プリプロセッサ的に指定できます。
もっと使いやすくするには、トグルを使う。
onにするとこれ以降のキーワードが有効になる~などの処理ができます。

 

スライドはここで終わっている・・・・

 

 


2つの違いについて

featureは実際には使われない組み合わせのシェーダーをビルドから除外してくれます。
それに対して強制的に全部の分岐を含めるのがmulti。


ただfeatureはランタイムにキーワードのonoffをした時、ビルド時に表示されなくなる。
そういうときはmultiで事前に生成してやるとよい。

 

 

 

 

 

タイムライン

 

 

感想

 ピザの写真撮り忘れた

 

シェーダーは初歩的なことしか知りませんでしたがとてもためになりました。

Visual Effects GraphとかもTwitterで見ると面白そうだけど実際に触ったことはないので、そろそろ触っておこう。

デモのキューブをたくさん出すやつがととさんのバナーのやつっぽくて最高にエモい。

qiita.com

Twitterのタイムラインを見てても、if文がなぜ重いかの解説が好評だった模様。

 

 

 

トレンドにのりました定期

f:id:Raspberly:20181109011254p:plain