Самый простой правильный способ:
Тебе нужно брать из текстуры определенные пиксели(GetPixels), закрасить их нужный цвет, потом применить эти изменения на текстуре terrain-а(SetPixels, Flush). Какие пиксели брать можно определить через raycast. Недостатком данного способа являться, то что довольно сложно получить качественные, плавные изменения.
Качественный способ:
Кроме текстуры terrain-а нам нужна еще splat текстура и шейдер который будет с ней работать. Делаем вторую текстуру меньшего размера чем исходная и повторяем все так, как в первом способом, но с ней. Так как она меньшего размера при наложении она будет растянута и будет получаться плавный переход. Сам шейдер смотрит на вторую текстуру и где необходимо домешивает к текстуре terrain-а другую текстуру или цвет, это уже как захочется.
Теперь не правильный качественный и простой способ:
Берем кучу projector-оторов и размещаем их там где нужно на terrain-е.