Closed9

Compose Multiplatform で GLSL

maxfie1dmaxfie1d

もちろん Jetpack Compose にも対応している。ShaderBrushRuntimeShader を使用するのがポイント。

private const val COLOR_SHADER_SRC =
    """uniform float2 iResolution;
   half4 main(float2 fragCoord) {
   float2 scaled = fragCoord/iResolution.xy;
   return half4(scaled, 0, 1);
}"""
// created as top level constants
val colorShader = RuntimeShader(COLOR_SHADER_SRC)
val shaderBrush = ShaderBrush(colorShader)

Canvas(
   modifier = Modifier.fillMaxSize()
) {
   colorShader.setFloatUniform("iResolution",
   size.width, size.height)
   drawCircle(brush = shaderBrush)
}

Using RuntimeShader with Jetpack Compose

このスクラップは2024/03/23にクローズされました