夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

熊本のコミュニティKumaMCNでShaderの勉強会を開きました。

本日はイベント枠の記事です。

〇ガチラボとは?

ガチラボとは熊本のコミュニティであるKumaMCNで開催されるガチ勢育成勉強会イベントです。

主に熊本のコミュニティで活躍されているがち本さんによる勉強会ですが、今回は私が(勝手に)担当させていただきました。

〇UnityにおけるShaderとは?

ShaderとはGPU上で動作する描画を行うプログラムです。

Unityでは[ShaderLab]と呼ばれる独自言語で記述しますが、その中身は[CG/HLSL]言語で記述します。

以下のように構成されています。

Shader "Shader"
{
    Properties
    {
        _MainColor("MainColor",color) = (1,1,1,1)
        
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        Pass{
        HLSLPROGRAM
        #pragma vertex vert
        #pragma  fragment frag
        #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
        #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
        #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl"

        struct appdata_t
        {
            
        };

        struct v2f
        {
            
        };

        v2f vert (appdata_t v)
        {
            v2f o;

            return  o;
        }
        float4 frag(v2f i):SV_TARGET
        {
          float4 col = (1,1,1,1);
           return col;
        }
        ENDHLSL
      }
        
    }
}

この中で

HLSLPROGRAM
...
ENDHLSL

の部分でcg/HLSLプログラムで記述します。

〇ShaderGraph

[ShaderGraph]はUnity内でShaderをコードを記述することなくノードベースに構築することができる機能です。

使用するためには[ScriptableRenderPipeline]の設定のUnityが必要です。

今回の勉強会では[CustomFunction]を使用してオリジナルのノードを作成しました。

 [CustomFunction]ノードはShaderGraphで提供していない処理をコードを記述、またはIncludeすることでオリジナルのノードとして作成することです。

 今回は昨日取り組んだライトを取得するノードを作成しました。

redhologerbera.hatenablog.com

 今回はライトを取得、ShaderGraphで使用するところまででしたが次回以降でもっと複雑な表現のShaderも作成していきます。

 イベントはKumaMCNのDiscordから参加できます。

  discord.gg