0 votes

I have got a plane mesh of size 2 by 2, subdivided 32 times as in: https://docs.godotengine.org/en/3.0/tutorials/3d/vertex_displacement_with_shaders.html
I am applying a heightmap texture on it as:

shader_type spatial;
uniform sampler2D htmap;
void vertex() {
    float height = texture(htmap, VERTEX.xz).x;
    VERTEX.y += height;
}

Since the x & z co-ordinates go from -1 to +1, my heightmap gets repeated in the 4 quadrants:
https://ibb.co/nz295sH

I can pass the mesh size to prevent this(2.0 in this case as its a square mesh). But whats the usual way to avoid this?

Godot version 3.3.3
in Engine by (15 points)
edited by

1 Answer

0 votes
Best answer

Hello,
You should use the UVs when sampling a texture:

float height = texture(htmap, UV);

In the case of a PlaneMesh the UVs are setup for you the way you expect them to be in this case.

by (728 points)
selected by
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.