Получение вектора освещённости через OSl шейдер.

Главная Форумы Освещение и рендеринг Получение вектора освещённости через OSl шейдер.

В этой теме 2 ответа, 2 участника, последнее обновление marggob marggob 5 мес., 1 неделя назад.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #13390
    marggob
    marggob
    Участник

    Добрый день.
    Столкнулся с такой проблемой, что требуется запечь Directional Lightmap. Потыкавшись в ноды суслика пришёл к выводу, что штатными средствами это нереально. Посему обратился к OSL. На данный момент у меня получилось сделать шейдер, который получает вектор освещённости для равномерного рассеянного света. То есть попросту говоря векторный АО. Но это ни то, что мне нужно.
    Собственно вопрос такой. При просчёте вектора освещённости я использую не хитрый шейдер типа:

    /////////////////////////////////////////////////////////

    didhit = trace(P, rayDir, “maxdist”, Distance);
    getmessage (“trace”, “N”, hit_normal);

    if(didhit)
    {
    hit_normal = reflect(hit_normal, N);
    }
    else
    {
    hit_normal = rayDir;
    }

    hit_normal = normalize(hit_normal);
    hit_normal = vector (-hit_normal[0], hit_normal[2], -hit_normal[1]);
    /// Здесь я перевожу вектор в систему координат Unity///

    outNormal = hit_normal * 0.5 + 0.5; //и перевожу его из (-1, 1) в (0, 1)

    /////////////////////////////////////////////////////////

    Вектор “rayDir” для каждого последующего семпла случайный(по полусфере), но он сейчас не имеет значения, поэтому я не стал писать всю партянку кода, которая за это отвечает. Просто держим в уме, что он каждый следующий семпл имеет другое направление.

    Собственно в чём вопрос. Могу ли я так же как получаю информацию о нормали поверхности, в которую ударился луч в этой строчке:

    getmessage (“trace”, “N”, hit_normal);

    получать информацию об освещённости поверхности? Или, что тоже вариант, получать информацию о цвете поверхности(учитывая текстуру)? Думаю обычную лайтампу можно предварительно посчитать и считать дирекшенал опираясь на интенсивность цвета из неё.

    #13395
    Артем Слаква
    Артем Слаква
    Хранитель

    В OSL я еще не дорос до такого уровня, а вот с Cycles знаком немного теснее…

    Такое подойдет?

    directional-lightmap

    #13397
    marggob
    marggob
    Участник

    Нет. Это не подходит. Придётся хитропопить с OSL всё таки. )

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)

Для ответа в этой теме необходимо авторизоваться.


О сайте

На данном сайте Вы сможете найти множество уроков и материалов по графическому
редактору Blender.

Контакты

Для связи с администрацией сайта Вы можете воспользоваться следующими контактами:

Email:
info@blender3d.com.ua

Следите за нами

Подписывайтесь на наши страницы в социальных сетях.

На сайте Blender3D собрано огромное количество уроков по программе трехмерного моделирования Blender. Обучающие материалы представлены как в формате видеоуроков, так и в текстовом виде. Здесь затронуты все аспекты, связанные с Blender, начиная от моделирования и заканчивая созданием игр с применением языка программирования Python.

Помимо уроков по Blender, Вы сможете найти готовые 3D-модели и архивы высококачественных текстур. Сайт регулярно пополняется новым контентом и следит за развитием Blender.