All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.dsl.functions.IntRImage3DFunctions.kt Maven / Gradle / Ivy

package org.openrndr.orsl.shadergenerator.dsl.functions

import org.openrndr.orsl.shadergenerator.dsl.*
import org.openrndr.math.IntVector3
import kotlin.jvm.JvmName

@Suppress("INAPPLICABLE_JVM_NAME")
interface IntRImage3DFunctions : Generator{
    @JvmName("loadSiri3Siv3")
    fun Symbol.load(uvw: Symbol): Symbol =
        functionSymbol(this, uvw, "imageLoad($0, $1).x")

    @JvmName("storeSiri3Siv3i")
    fun Symbol.store(uvw: Symbol, data: Symbol) {
        functionCall(this, uvw, data, "imageStore($0, $1, ivec4($2))")
    }

    @JvmName("sizeSiri3")
    fun Symbol.size(): Symbol =
        functionSymbol(this, "imageSize($0)")



    @JvmName("atomicExchangeSiri3Siv3Si")
    fun Symbol.atomicExchange(uv: Symbol, data: Symbol): Symbol =
        functionSymbol(this, uv,  data,"atomicExchange($0, $1, $2)")

    @JvmName("atomicCompSwapSiri3Siv3Si")
    fun Symbol.atomicCompSwap(uv: Symbol, compare: Symbol, data: Symbol): Symbol =
        functionSymbol(this, uv, compare,  data,"atomicExchange($0, $1, $2, $3)")

    @JvmName("atomicAddSiri3Siv3Si")
    fun Symbol.atomicAdd(uv: Symbol, data: Symbol): Symbol =
        functionSymbol(this, uv,  data,"atomicAdd($0, $1, $2)")

    @JvmName("atomicAddSiri3Siv3Vi")
    fun Symbol.atomicAdd(uv: Symbol, data: Int): Symbol =
        functionSymbolSSV(this, uv,  data, "imageAtomicAdd($0, $1, $2)")


    @JvmName("atomicSubSiri3Siv3Si")
    fun Symbol.atomicSub(uv: Symbol, data: Symbol): Symbol =
        functionSymbol(this, uv,  data,"atomicAdd($0, $1, -($2))")

    @JvmName("atomicAndSiri3Siv3Si")
    fun Symbol.atomicAnd(uv: Symbol, data: Symbol): Symbol =
        functionSymbol(this, uv,  data,"atomicAnd($0, $1, $2)")

    @JvmName("atomicOrSiri3Siv3Si")
    fun Symbol.atomicOr(uv: Symbol, data: Symbol): Symbol =
        functionSymbol(this, uv,  data,"atomicOr($0, $1, $2)")

    @JvmName("atomicXorSiri3Siv3Si")
    fun Symbol.atomicXor(uv: Symbol, data: Symbol): Symbol =
        functionSymbol(this, uv,  data,"atomicXor($0, $1, $2)")

    @JvmName("atomicMinSiri3Siv3Si")
    fun Symbol.atomicMin(uv: Symbol, data: Symbol): Symbol =
        functionSymbol(this, uv,  data,"atomicMin($0, $1, $2)")

    @JvmName("atomicMaxSiri3Siv3Si")
    fun Symbol.atomicMax(uv: Symbol, data: Symbol): Symbol =
        functionSymbol(this, uv,  data,"atomicMax($0, $1, $2)")

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy