Как мне получить значение Light's Range в шейдере?
Я пытаюсь написать простой фрагментный / вертовой шейдер, который, в зависимости от того, находится ли он в диапазоне освещения, будет рисовать соответствующий цвет либо из "освещенной" текстуры, либо из "неосвещенной" текстуры.
Поэтому мне нужно сравнить расстояние между светом и дальностью света. Я гуглял все виды вещей, но я не могу найти способ получить доступ к значению диапазона света. Есть ли способ сделать это? Если нет, есть ли какие-то производные данные, которые я мог бы использовать в качестве альтернативы?
Обновить
Я смог найти этот метод здесь, который кажется наиболее перспективным на данный момент, однако, поиграв немного, я все еще не могу получить то, что мне нужно. Есть некоторые разговоры о _LightMatrix0
не заселен. Кто-нибудь может подтвердить?
Обновление 2
Я нашел переменную unity_LightAtten
в документации по переменным шейдера Unity. Однако это используется только для затенения Vertex Lit, что не совсем идеально, особенно если учесть отсутствие поддержки консоли. Может ли быть способ передать эту переменную в прямой рендеринг?
1 ответ
Вы можете передать Light.range в шейдер, используя Material.SetFloat. Вы должны приложить скрипт, чтобы сделать это.