「AGSL」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「'''AGSL''' (語源:Android Graphcis Shading Language)とは、Android 13に搭載されたAndroid独自のシェーディング言語および実行環境…」)
 
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
 
'''AGSL''' (語源:Android Graphcis Shading Language)とは、[[Android 13]]に搭載された[[Android]]独自の[[シェーディング言語]]および実行環境です。
 
'''AGSL''' (語源:Android Graphcis Shading Language)とは、[[Android 13]]に搭載された[[Android]]独自の[[シェーディング言語]]および実行環境です。
  
大雑把にいえばAGSLは[[RenderScript]]の後続APIです。
+
大雑把にいえばAGSLは[[RenderScript]]の後続[[API]]です。
 
RenderScriptは[[Android 12]]で廃止されて「[[Vulkan]]使え」となっていました。
 
RenderScriptは[[Android 12]]で廃止されて「[[Vulkan]]使え」となっていました。
しかし[[Vulkan]]は前準備が[[Direct3D]]や[[Metal]]の比ではないくらい面倒だという致命的な問題を抱えていました。Vulkanを利用するためには初期化処理だけで何百行もの[[ソースコード]]を書かねばならないという頭のおかしさでした。そんなもの誰も使うはずないですね。
+
しかし[[Vulkan]]は前準備が[[Direct3D]]や[[Metal]]の比ではないくらい面倒だという致命的な問題を抱えていました。Vulkanを利用するためには初期化処理だけで[[NDK]]を利用して何百行もの[[ソースコード]]を書かねばならないという頭のおかしさでした。そんなもの誰も使うはずないですね。
  
 
この問題を解決すべく[[Android 13]]で登場したのがAGSLです。
 
この問題を解決すべく[[Android 13]]で登場したのがAGSLです。
 +
Android 12でどん底に落とされた[[プログラマー]]を救済すべく颯爽と登場したのがAGSLです。
 +
 
AGSLはRuntimeShaderクラスに[[GLSL]]に似た(簡略化した)[[ソースコード]]を流し込むだけで利用できます。
 
AGSLはRuntimeShaderクラスに[[GLSL]]に似た(簡略化した)[[ソースコード]]を流し込むだけで利用できます。
たった1行です。
+
<source lang="kotlin">
val shader = RuntimeShader("AGSLのソースコード")
+
private const val COLOR_SHADER_SRC =
Vulkanで問題になったデバイスの初期化のバカみたいな煩雑さは一切ありません。
+
"""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>
 
   
 
   
なお、Android 13以降でしか使えないため、まったく普及していないようです。
+
なお、AGSLはAndroid 13以降でしか使えないため、まったく普及していないようです。
 +
個人的な[[Google Play]]の統計をみると2023年11月時点で[[Android 11]]と[[Android 12]]は共に20%前後のシェアとなっています。Android 13は40%近くなっていますが、これが80〜90%前後になるのはかなり先だと思われます。
  
 
== 外部リンク ==
 
== 外部リンク ==

2023年11月6日 (月) 07:39時点における最新版

AGSL (語源:Android Graphcis Shading Language)とは、Android 13に搭載されたAndroid独自のシェーディング言語および実行環境です。

大雑把にいえばAGSLはRenderScriptの後続APIです。 RenderScriptはAndroid 12で廃止されて「Vulkan使え」となっていました。 しかしVulkanは前準備がDirect3DMetalの比ではないくらい面倒だという致命的な問題を抱えていました。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の統計をみると2023年11月時点でAndroid 11Android 12は共に20%前後のシェアとなっています。Android 13は40%近くなっていますが、これが80〜90%前後になるのはかなり先だと思われます。

外部リンク[編集 | ソースを編集]