Привет, я хочу реализовать простую технику 2D-освещения в GLSL. Моя матрица проекций настроена таким образом, чтобы верхний левый угол окна был (0, 0), а нижний правый - (window.width, window.height). У меня есть одна равномерная переменная в фрагментном шейдере uniform vec2 lightPosition;
, которая в настоящее время установлена в положение мыши (опять же, в той же системе координат). Я также рассчитал расстояние от света до пикселя.
Я хочу осветить пиксель в соответствии с его расстоянием от источника света. Но вот в чем подвох, я не хочу освещать его больше, чем его первоначальный цвет. Например, если цвет пикселя (1, 0, 0 (красный)), независимо от того, насколько близко к нему подходит свет, он не изменится больше, чем тот, что добавляет раздражающая зеркальность . И чем дальше источник света отходит от пикселя, тем темнее я хочу его получить. Я действительно чувствую, что я близок к тому, чтобы получить то, что я хочу, , но я просто не могу получить это!
Я был бы очень признателен за помощь. Мне кажется, что это довольно простой для реализации код (и мне стыдно, что я его не знаю).