「AGSL」の版間の差分
ナビゲーションに移動
検索に移動
Administrator (トーク | 投稿記録) |
Administrator (トーク | 投稿記録) |
||
26行目: | 26行目: | ||
なお、AGSLはAndroid 13以降でしか使えないため、まったく普及していないようです。 | なお、AGSLはAndroid 13以降でしか使えないため、まったく普及していないようです。 | ||
+ | 個人的な[[Google Play]]の統計をみると未だに[[Android 11]]が最大勢力です。 | ||
== 外部リンク == | == 外部リンク == |
2023年11月6日 (月) 07:35時点における版
AGSL (語源:Android Graphcis Shading Language)とは、Android 13に搭載されたAndroid独自のシェーディング言語および実行環境です。
大雑把にいえばAGSLはRenderScriptの後続APIです。 RenderScriptはAndroid 12で廃止されて「Vulkan使え」となっていました。 しかしVulkanは前準備がDirect3DやMetalの比ではないくらい面倒だという致命的な問題を抱えていました。Vulkanを利用するためには初期化処理だけでNDKを利用して何百行ものソースコードを書かねばならないという頭のおかしさでした。そんなもの誰も使うはずないですね。
この問題を解決すべくAndroid 13で登場したのがAGSLです。 Android 12でどん底に落とされたプログラマーを救済すべく颯爽と登場したのがAGSLです。
AGSLはRuntimeShaderクラスにGLSLに似た(簡略化した)ソースコードを流し込むだけで利用できます。
private const val COLOR_SHADER_SRC =
"""layout(color) uniform half4 iColor;
half4 main(float2 fragCoord) {
return iColor;
}"""
たった1行で利用開始できます。Vulkanで問題になったデバイスの初期化のバカみたいな煩雑さは一切ありません。そもそもデバイスなどという概念すらありません。
val fixedColorShader = RuntimeShader(COLOR_SHADER_SRC)
ユニフォーム変数を流し込むのも簡単です。setColorUniform()やsetFloatUniform()を呼ぶだけです。RenderScriptの型指定の頭のおかしさが解消されています。
fixedColorShader.setColorUniform("iColor", Color.GREEN )
なお、AGSLはAndroid 13以降でしか使えないため、まったく普及していないようです。 個人的なGoogle Playの統計をみると未だにAndroid 11が最大勢力です。