そこで、UnityにおけるShaderについて試行錯誤してみようと思います。書くと少し誤謬があるかもしれませんが、一先ずUnityでのシェーダの立ち位置のようなものをまずは確認してみようと思います。すべてのUnityシェーダはこのフォーマットで書かれます。Properties枠にはUnity側から渡したい値を宣言します。シェーダを設定した時に、下図のように描画順が崩れてしまうことがあります。シェーダーをベースに、マスク処理を追加してます。他のシェーダーベースでも同じようにやれば出来るかと。チュートリアルなどでゲーム画面の説明をしたい。ある画面を暗くして見てほしい箇所にライトを当てるような演出をしたい。こんなんただ塗って穴開けてるだけやん。それだけなのに、パッと実装が分からない。今作っているコンテンツで、なにもない空間からオブジェクトが転送されてきたような演出をしたいと思い、そのために色々シェーダを書いたのでそのメモです。以下の画像を見てもらうとどういう効果かイメージしやすいと思います。ColorMaskは使用するカラーチャンネル(RGBA)を指定することができます。0を指定するとすべてのチャンネルを無視することができるので何も書き込まれません。Buffer(深度情報)を書き込むためだけのコードということです。色も変化できるようにしてみます。用意したテクスチャにαの値(透過度)が設定されているとき、そのままMaterialに適用しても透過されません。ShaderLabでの実装です。アセットについてきます。ZWriteをOnにしてデプステストは行いつつ、ColorMaskに0を設定することで描画は行わないようにしています。RGBA这4个通道全部写入。色も変化できるようにしてみます。Unity中射线追踪。RGBA这4个通道全部写入。最近、シーンチェンジを実装するために基礎となる画像をSpriteを用いて一部透明化しようと考えたのですが、当たり前ですが単純に配置しても基礎画像が表示されてしまいます。このシェーダーはUnityエディタのバージョンによって機能が追加されている事があるので、出来るだけ使用しているUnityエディタと一致するものを使用するのが良さそうです。特定のオブジェクトと重なった部分を透明にくり抜くシェーダを紹介します。このシェーダを使えば、次のように、好きな形で別のオブジェクトをくり抜くことができます。今回のシェーダの原理は非常に簡単です。そこで、UnityにおけるShaderについて試行錯誤してみようと思います。書くと少し誤謬があるかもしれませんが、一先ずUnityでのシェーダの立ち位置のようなものをまずは確認してみようと思います。久しぶりにUnityさわったらアニメーションの作成方法を忘れていたのでメモ。注:現在ではいちおう使えますが古い機能になっています。Shaderを使うと3Dモデルを半透明で表示することが出来ます。モデルの形状が複雑な場合には、裏面のポリゴンが見えて汚い表示になってしまうことがあります。そこで、隠面は表示せず、手前側の面のみ半透明で表示するシェーダを作ってみました。RGBA这4个通道全部写入。ZWriteをOnにしてデプステストは行いつつ、ColorMaskに0を設定することで描画は行わないようにしています。