Похоже реально проще сделать кубамапы, их и запекать просто. Просто не в текстуру, а в вертексколор например. А потом уже из этих данных строить интерполированную текстуру кубамапы в реальном времени.
ncuxonaT
Я там тебе в дискорд написал, посмотри.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
И так, понял я примерно как работают эти сферические гармоники, это просто дот между записанным вектором в шейдер и нормалью меша. И таких векторов можно напрописывать сколько угодно.
Где каждое такое направление смешивается с цветом:
Как раз большой оказалось это самое смешивание. Дело в том что при смешивании нельзя вообще совершать каких то математических операций с вектором. Вот допустим мы сложили его или умножили с цветом. Вектор тут же съезжает куда то в сторону. Из-за чего на меше появляются мерзкие цветовые аберрации ввиде красного цвета.
Ситуацию более менее спасла нормализация всех векторов, и так же переписываение всего смешивания на Lerp. Но после чего конечно пропали все тёмные пятна, и цвета стали очень блёклыми.
Решил подкрутить яркость банально возведя всё и вся в степень, стало лучше. Но потом я понял что так делать нельзя. Половина цветов направлений становится бледнее, а другая часть контрастнее.
Не смотря на то что направлений всего 8, кубы вроде как освещаются более менее, но всеравно очень блекло, и пропадают все тёмные места.
Вот и кролик:
Кода пока никакого нет, так что подкрутил цвета вручную чтобы просто посмотреть что получится:
С чтением цветов из вертекс колора проб тоже оказалось есть определённые ньюансы. Это например индексы вершин, при создании обычного куба, они как то рандомно перемешиваются, а так же самих этих вертексов при считывании может быть больше 8, например 14 (почему так хз, возможно юнити как склеивает их при импорте).
Кубамапы я тоже проверил, мне не понравился результат, даже самая размытая кубамапа меняет цвет в зависимости от камеры, что даёт неприятные цветовые искажения особенно на всяких плоских гранях.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
ncuxonaT писал: FiEctro читать из кубемапы надо по направлению нормали, а не вектора отражения
Ну попробовал, от того что я сделал практически ничем не отличается. Всё так же непонятно как смешивать цвета направлений. Я так понимаю тут обычный вектор не годится. Надо как то делать треугольное пятно по направлению света, чтобы они всегда при смешивании давали в сумме 1?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Если читаешь из размытой кубемапы, не надо ничего смешивать.
vec3 ambient = textureCube(cubemap, normal.xyz).rgb;
В современном glsl просто texture, без Cube.
Так векторов много и они друг друга перекрывают. Получилось использовать кубамапу как базис. Работает намного удобнее чем по чистым векторам. Чтение идёт с вертексколора. https://cdn.discordapp.com/attachme...13_19-39-59.mp4
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
ncuxonaT писал: Если читаешь из размытой кубемапы, не надо ничего смешивать.
vec3 ambient = textureCube(cubemap, normal.xyz).rgb;
В современном glsl просто texture, без Cube.
Да зачем хранить целую свору текстур кубамап? Я просто запек нормаль сферы в кубамапу, вычисляю по ней вектор и крашу его в нужный цвет.
Цитата:
Дядя Миша писал: В каком смысле перекрывают?
Вот есть у тебя куб. На верхнюю его часть падает свет с вектора (xyz, y вертикальная) 1 1 1 и второй источник с вектора -1 1 -1. На верхней грани будет смешение цветов этих источников. И ладно когда их 2, а вот если все 4 там вообще черт не разберет.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!