Нет, это невозможно.
Единственная координата, которую вы можете изменить в фрагментном шейдере, это Z, входящая в Z-буфер. И даже это влияет на производительность, так как побеждает некоторые оптимизации (например, иерархическая Z).
позиции X и Y устанавливаются еще до того, как фрагментный шейдер будет выполнен (в Rasterizer ). Типичные растеризаторы на самом деле генерируют как минимум 2x2 фрагмента пикселей, а аппаратное обеспечение не обрабатывает пиксели по отдельности вплоть до стадии смешивания.
То, что некоторые люди склонны делать, чтобы имитировать этот тип функции, - это генерировать больше пикселей, чем необходимо, и отбрасывать посторонние пиксели.
Функция, о которой вы слышали, может быть тесселяцией. Это не часть шейдерного фрагмента, а отдельная часть конвейера, позволяющая генерировать дополнительную геометрию.
В конечном счете, какую технику вы можете использовать, зависит от того, чего вы пытаетесь достичь. Но полная модификация X и Y никогда не поддерживалась различными API, будь то Cg, OpenGL или DirectX, потому что аппаратное обеспечение не может этого сделать.