Как мне получить значение Light's Range в шейдере?

Я пытаюсь написать простой фрагментный / вертовой шейдер, который, в зависимости от того, находится ли он в диапазоне освещения, будет рисовать соответствующий цвет либо из "освещенной" текстуры, либо из "неосвещенной" текстуры.

Поэтому мне нужно сравнить расстояние между светом и дальностью света. Я гуглял все виды вещей, но я не могу найти способ получить доступ к значению диапазона света. Есть ли способ сделать это? Если нет, есть ли какие-то производные данные, которые я мог бы использовать в качестве альтернативы?

Обновить

Я смог найти этот метод здесь, который кажется наиболее перспективным на данный момент, однако, поиграв немного, я все еще не могу получить то, что мне нужно. Есть некоторые разговоры о _LightMatrix0 не заселен. Кто-нибудь может подтвердить?

Обновление 2

Я нашел переменную unity_LightAtten в документации по переменным шейдера Unity. Однако это используется только для затенения Vertex Lit, что не совсем идеально, особенно если учесть отсутствие поддержки консоли. Может ли быть способ передать эту переменную в прямой рендеринг?

1 ответ

Вы можете передать Light.range в шейдер, используя Material.SetFloat. Вы должны приложить скрипт, чтобы сделать это.

Другие вопросы по тегам