Macro Update!
v3.0.0
@EMComputeShader
class MyCompute {
var tex: MTLTexture?
var intensity: Float = 0
var impl: String {
"float2 floatGid = float2(gid.x, gid.y);"
"float2 center = float2(tex.get_width() / 2, tex.get_height() / 2);"
"float dist = distance(center, floatGid);"
"float color = intensity / dist;"
"tex.write(float4(color, color, color, 1), gid);"
}
var customMetalCode: String { "" }
}
v2.2.1 (previous)
class MyCompute: EMMetalComputeFunction {
@EMArgument("tex") var tex: EMMetalTexture = .init(texture: nil, usage: .read_write)
@EMArgument("intensity") var intensity: Float = 0
@ShaderStringBuilder
override var impl: String {
"float2 floatGid = float2(gid.x, gid.y);"
"float2 center = float2(tex.get_width() / 2, tex.get_height() / 2);"
"float dist = distance(center, floatGid);"
"float color = intensity / dist;"
"tex.write(float4(color, color, color, 1), gid);"
}
}