---
# System prepended metadata

title: Geometry Nodes Grease Pencil Integration Proposal

---

# Geometry Nodes Grease Pencil Integration Proposal

1. A grease pencil **layer** is represented as a **curve instance**.
    * Layer data is stored on the instance domain.
    * The output of the modifier is a `InstancesComponent` from which the (flat) list of layers is reconstructed. Some data like the visibility is important because it needs to be read for rendering. Others are not so important (like a layer being locked, which is only important for editing).

2. All the curve nodes like "Trim Curve" should still work for instances. So they could also work for the GP layers.

3. We can add a **subtype** for grease pencil layer (-group)s.
    * Internally it is an integer reffering to the instance ID.
    * Can be exposed as a dropdown list in the modifier UI.
    * That way it is easy to select a particular layer to run the nodes on.

4. Question: We might need a way to "merge" two grease pencil geometries. Could this be a new node?

5. Question: What about a `GreasePencilComponent` ? Could we "wrap" the `InstancesComponent` ?
    * It might be very confusing for users to make the connection between "curve instance" => "GP layer".
    * If we have a seperate geometry component, we can also have a clearer seperation in the UI. (e.g. a separate domain for the layers)
    * Internally we could still treat them as curve instances(?).