Korender and Frame scopes

To insert Korender rendering viewport into your Compose Multiplatform UI, call the Korender function from the parent @Composable function:

@Composable
fun App() {
    Column {
        Text("Korender Viewport below !!!")        
        Korender {

        }
    }
}

Add initialization code into Korender scope, per-frame code and renderable objects into Frame scope:

Korender {
    // Code here will run once on Korender viewport initialization           
    Frame {
        // Code here will run on every frame
        // Place your renderable declaration functions here
    }
}

Node scope

Node creates a child scope for hierarchical scene composition. It can override resourceLoader, transform, retentionPolicy, and time for a sub-tree:

Frame {
    Node(transform = translate(5f, 0f, 0f), resourceLoader = { customLoad(it) }) {
        // All resources and transforms here are relative to this node
        Renderable(material = base { color = ColorRGBA.Red }, mesh = sphere())
    }
}

Node is useful for grouping objects, applying local transforms, or switching resource loaders for different asset packs.