本日はShader&AI枠です。
23年に入りChatGPTの普及が爆発的になっていますが、先日Unityのエディタ内でChatGPTを使用してシェーダーを作成するテストリポジトリが公開されました。
今回はこちらを試していきます。
〇ChatGPTとは?
ChatGPTはDALL・E2やStable Diffusionを開発、提供しているOpenAIが22年末にリリースしたAIです。
特徴として文章を入力することで自然な受け答えが行われます。
その特性としてMicrosoftではブラウザのBingにChatGPTを使用した機能を提供するなど

またChatGPTの特徴として人間の記述したテキストを読み解いてコードを記述してくれます

このような機能を応用して先日AIShaderと呼ばれるリポジトリがUnityの高橋啓次郎さんから公開されました。
今回はこちらを試していきます。
〇AIShader
AIShaderは前述の通りUnityの高橋啓次郎さんが作成しているツールです。
バージョンはUnity2022.2.9となっているためバージョンに注意が必要です。
今回はUnity2022.2.10f1で行っていきます。

ChatGPTをUnityで使用するためには開発者としてAPIキーを入手する必要があります。
①ChatGPTのアカウントを開きます。
②アカウントを持っている場合はログイン、持っていない場合はsign-upを行います。

現時点ではAPIキーは無料の場合数か月程度の利用制限がありますので注意が必要です。
③APIキーのタブを開きます。

④Create new secret keyを選択しAPIキーを作成します。

⑤AIShaderを開きます。
⑥ProjectSettingsを開きAIShaderのタブを開きます。

⑦APIKeyに作成したAPIキーを入力します。

⑧Testシェーダーを選択します。

⑨インスペクターウィンドウからPromptに作成したいシェーダーの特徴を記述してGenerateボタンを押します。

これによってCachedに作成されたシェーダーが表示されます。またTestシェーダー自体にも適応されます。
今回次のような指示を記述しました。
Random color change using Unity time(ランダムに時間経過で色が変わるシェーダー)
次のようなシェーダーが作成されました。

私が想定していたよりも切り替わりが激しく目に優しくないですがきちんとランダムに時間経過で色が変わっています。
生成されたコードは次のようになります。
Shader "Custom/Unlit_RandomColorChange" {
Properties {
_MainColor ("Color", Color) = (1,1,1,1)
}
SubShader {
Tags { "RenderType"="Opaque" }
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 _MainColor;
v2f vert (appdata v) {
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target {
float4 color = _MainColor;
color.r += sin(_Time.y * 20.0) * 0.5 + 0.5;
color.g += sin(_Time.z * 17.0) * 0.5 + 0.5;
color.b += sin(_Time.x * 25.0) * 0.5 + 0.5;
return color;
}
ENDCG
}
}
FallBack "Diffuse"
}
複雑な処理を与えると生成してくれなかったり細かい融通が利かないなど問題はあるもの使い方次第ではよいアイデアや勉強のツールとなるのではないかと思いました。
本日は以上です。