• Godot HelpShaders
  • How to get world coordinates in vertex shader of a tile within a TileMap?

I've tried using WORLD_MATRIX, but that appears to actually give me screen coordinates (unless I'm doing it wrong, which is possible -- I'm pretty new at this). I'm using 2.1.4.

Thanks in advance!

Not sure if this applies as I use 3.0, however I set the following in the vertex shader.

world_pos = (WORLD_MATRIX * vec4(VERTEX, 1.0)).xyz;

Hmm, I'm still missing something. Do I need to do something extra to account for the camera?

I set my vertex shader on the tiles to just this: VAR1 = WORLD_MATRIX * vec4(VERTEX, 1.0, 1.0); // I was using SRC_VERTEX before, but the result appears the same

and my fragment shader is: COLOR.rgb = VAR1.xyz / 192.0;

I've got a platformer type of 2D game, with the camera attached to the player as he moves around. Specifically the player is a scene with the top node is a KinematicBody2D and he has a child Camera2D node with anchor mode = drag center. Now when I move around the map, the top left corner of the screen is always black (r=g=0), the left edge is green (r=x=0 and g=y=1), the top is red (r=x=1 and g=y=0), fading to yellow on most of the screen (r=1, g=1) -- and the colors are constant on the screen, not on the tiles as they move around the screen.

12 days later

Note that multiplication order matters when dealing with matrices.

5 years later