赤兎ラボ

コーディングからバージョン管理、業務効率化までをまとめます。

Unity Shader 入門

記事の目的

本記事はUnity shaderを扱う上で概要を説明するものであり、入門の足掛かりとすることを目的とします。具体的な実装を記載するものではありません。

はじめに。シェーダってどんなもの?

画像処理に使うもの。C#とは別の記述方法で扱う。

シェーダの種類

Unityにはcreate>shaderから作ることができるものが4種類あります。

standard,unlit,image effect,computeの4つです。

standard,unlit,image

シェーダの種類のうち上記3つらUnity上で動くものを想定しているようで、

頂点処理やフラグメント処理に関するテンプレートがついてきます。

これらに対して、決められた値が引数として入ってくるため、変更したい値を選択して使用します。

大体の場合、マテリアルに紐付くためオブジェクトにアタッチして使うことになるでしょう。

一方でcompute shaderにはテンプレートがほぼ用意されておらず、使い方が記載されているサイトが少ないです。

そこで、compute shaderの使い方についてざっくり記述します。

compute shaderの使い方

compute shaderには計算してほしい値を渡して使う。C#から呼び出しを行う形で実装することが多い。

映像テクスチャを渡したいのであれば、C#側にset textureが用意されています。

これに対してRGB値をいじったりすればエフェクトがかけられるでしょう。

ここで勘違いを一つ解いておきます。

compute shaderは必ずしも画像処理に使うとは限りません。

先述の通り、渡したい値が指定できるため、キャラクター座標を渡して計算してもらう等の実装を行うこともできます。

ただ、その際にはgpuとcpuで値が行き来することになるためオススメできません。膨大なキャラクターを動かしたい時など使うタイミングは限定されるでしょう。

終わりに

以上の内容を踏まえた上でshaderについての勉強わ、始めることで抵抗が減ると思い、記述しました。

具体的な実装については専門ではないため当サイトでは取り扱う予定はありません。

参考になりそうなリンクは貼っておくので頑張ってね!

LIGHT11

http://light11.hatenadiary.com/

セマンティクス

https://qiita.com/sune2/items/fa5d50d9ea9bd48761b2