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