Сейчас я это делаю через спарйт, который растянут на весь экран в канвасе.
Управляю яркостью зеленого в конкретном пикселе, заранее подготавливая этот параметр в массиве Mas[,]
Синтаксис:
Используется csharp
// Start ---
texture = new Texture2D(winW, winH);
sprite = Sprite.Create(texture, new Rect(0, 0, winW, winH), Vector2.zero);
Pole.GetComponent<Image>().sprite = sprite;
// Update ---
for (int x = 0; x < winW; x++)
for (int y = 0; y < winH; y++)
texture.SetPixel(x, y, new Color(0, Mas[x, y], 0, 1));
texture = new Texture2D(winW, winH);
sprite = Sprite.Create(texture, new Rect(0, 0, winW, winH), Vector2.zero);
Pole.GetComponent<Image>().sprite = sprite;
// Update ---
for (int x = 0; x < winW; x++)
for (int y = 0; y < winH; y++)
texture.SetPixel(x, y, new Color(0, Mas[x, y], 0, 1));
Жрет это хозяйство треть процессора.
Когда еще только искал возможность делать так, мне говорили, что лучше делать это через шейдер, потому что через спрайт будет очень ресурсоемко.
Но никто не знает как это сделать через шейдер.
Посмотрел неколько видео, полистал статейки, не нашел ничего к чему можно зацепиться, непонятно там ВСЁ.
Мне не нужно рисовать анимированный огонь и колышащуюся траву, полупрозрачные эффекты и свечения, нужно просто управлять цветом нескольких пикселей.
Памагити.