メインメニューを開く

差分

AGSL

945 バイト追加, 2023年11月6日 (月) 07:39
編集の要約なし
大雑把にいえばAGSLは[[RenderScript]]の後続[[API]]です。
RenderScriptは[[Android 12]]で廃止されて「[[Vulkan]]使え」となっていました。
しかし[[Vulkan]]は前準備が[[Direct3D]]や[[Metal]]の比ではないくらい面倒だという致命的な問題を抱えていました。Vulkanを利用するためには初期化処理だけで何百行ものの比ではないくらい面倒だという致命的な問題を抱えていました。Vulkanを利用するためには初期化処理だけで[[NDK]]を利用して何百行もの[[ソースコード]]を書かねばならないという頭のおかしさでした。そんなもの誰も使うはずないですね。
この問題を解決すべく[[Android 13]]で登場したのがAGSLです。
Android 12でどん底に落とされた[[プログラマー]]を救済すべく颯爽と登場したのがAGSLです。
 
AGSLはRuntimeShaderクラスに[[GLSL]]に似た(簡略化した)[[ソースコード]]を流し込むだけで利用できます。
たった1行です。<source lang="kotlin"> private const val shader COLOR_SHADER_SRC = RuntimeShader"""layout(color) uniform half4 iColor; half4 main(float2 fragCoord) { return iColor; }""AGSLのソースコード"</source>たった1行で利用開始できます。Vulkanで問題になったデバイスの初期化のバカみたいな煩雑さは一切ありません。そもそもデバイスなどという概念すらありません。<source lang="kotlin">val fixedColorShader = RuntimeShader(COLOR_SHADER_SRC)Vulkanで問題になったデバイスの初期化のバカみたいな煩雑さは一切ありません。</source>そもそもデバイスなどという概念すらありません。[[ユニフォーム変数]]を流し込むのも簡単です。setColorUniform()やsetFloatUniform()を呼ぶだけです。[[RenderScript]]の型指定の頭のおかしさが解消されています。<source lang="kotlin">fixedColorShader.setColorUniform("iColor", Color.GREEN ) </source>
なお、Android なお、AGSLはAndroid 13以降でしか使えないため、まったく普及していないようです。個人的な[[Google Play]]の統計をみると2023年11月時点で[[Android 11]]と[[Android 12]]は共に20%前後のシェアとなっています。Android 13は40%近くなっていますが、これが80〜90%前後になるのはかなり先だと思われます。
== 外部リンク ==