UnityでUnlit Shaderを作成して半透明なオブジェクトを描画してみよう!
はじめに
前回までにスクリプトファイルから色んな形のオブジェクトを青色や黄色などの色付きで描画しました。
madai21.hatenablog.com
madai21.hatenablog.com
では半透明のオブジェクトを描画させたい場合、MaterialのAlbedoのA(アルファ)値を255から変えるだけで実現できるでしょうか?
確認してみましょう^^
MaterialのAlbedoのA値を変えてみる
前回までに作ったCreateMesh(Material)のA値だけをまずは変えてみましょう。
下のProject画面でCreateMesh(Material)を選択して、右のInspector画面でAlbedoの部分をクリックします。
A値を80に変更します。
実行しても・・・変わらないですね。
アルファ値を考慮したUnlit Shaderを作成する
透明なオブジェクトを描画するためにUnlit Shaderを作って、CreateMesh(Material)のShaderに設定してあげましょう。
Project画面で右クリックしてCreate > Shader > Unlit Shaderを選択しましょう。
Shader名はTransparentMeshとしておきます。
TransparentMesh.shaderをクリックして編集しましょう。
以下の内容に編集します。
Shader "Unlit/TransparentMesh" { Properties { _Color("Color", Color) = (1,1,1,1) } SubShader { Tags { "RenderType"="Transparent" "Queue" = "Transparent"} Blend SrcAlpha OneMinusSrcAlpha LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; }; struct v2f { float4 vertex : SV_POSITION; float4 color : COLOR; }; fixed4 _Color; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.color = _Color; return o; } fixed4 frag (v2f i) : SV_Target { return i.color; } ENDCG } } }
CreateMesh(Material)のShaderを作ったUnlit/TransparentMeshに変更してみましょう。
右のInspector画面でShaderを選択します。
検索にtranと入力するとTransparentMeshが出てきますので、選択します。
実行してみましょう。
半透明で描画されるようになりましたね^^
おわりに
ShaderはDefaultで用意されていますが、今回のようにShaderを自分で用意することによってさまざまな描画を実現することができます。
Shaderは奥が深そうですが、使いこなせたら楽しそうですね^^