Sample texture in vertex shader

I’m trying to do some displacement in the vertex shader by sampling a perlin noise texture.
However it seems like the value of the sampled texture is always (0,0,0,1).

Vertex Shader Excerpt:

// ...

uniform sampler2D uPerlinNoise;

// ...

void main(void)
    // ...

    float noise = texture(uPerlinNoise, aUv0).r * 2.0 - 1.0;
    vPosition += vec3(noise, 0.0, 0.0) * k * uDisplacementStrength;

    // ...


What am I doing wrong? Or is it not possible to sample a texture in the vertex shader?

Desired outcome would be a bend of the grass, which I can achieve by setting noise directly to 0.5 instead of sampling the texture.

After thinking a bit more about this, I came to the conclusion that the texture lookup probably works fine.
I absolutely ignored the fact that I’m in the vertex shader and I can only move vertices.
In the case of a plane (2 triangles), I can only move 6 vertices. So the effect I want to achieve (changing the direction of a single grass blade) isn’t possible with the method I’m using.
The only solution I could think of would be to up the vertex resolution of the plane mesh, which would allow for finer control.