TGViewer
Григорий Дядиченко Григорий Дядиченко @dev_game · 2.66K subscribers
Post #1102 1.37K
Мировая нормаль в шейдере

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

Вот расчёт мировой нормали, вдруг кому пригодится.

o.worldNormal = normalize(mul(unity_ObjectToWorld, v.normal));

Из того на что я потратил больше 5 секунд рамышлений стоит обратить внимание, что домножив на матрицу координат объекта к мировым на нормаль объекта (чтобы получить мировую нормаль), мы её дальне нормализуем. Почему? Потому что если наш Quad или меш не единичного скейла, то скейл сделает нашу нормаль ненормальной :) И дальше часть шейдера:

float4 frag (v2f i) : SV_Target
{
float4 col = tex2D(_MainTex, i.uv);
return col * abs(i.worldNormal.z);
}

Работать не будет из-за того, что компонент Z по сути будет домножен на скейл объекта. В общем я скоро буду уже не гуглить, а искать нужные мне вещи по блогу, чтобы быстро куски кода брать, а не вспоминать названия всех Unity переменных) Так как концепт я придумал сразу, он тривиальный. Но вот задачу я решал минут 5. Хотя она секунд на 10 :) (В моей задаче карточка вращается только по оси Y).

#сниппет
  • ❤‍🔥 6
More from @dev_game
  1. Oct 8, 2026Метрики, метрики и ещё раз метрики https://app.mes-poker.ru Эхх, со своим продуктом руки с…
  2. Oct 6, 2026«Песни земли»: хакатон по созданию мини-игр вместе с КИОН Строки 🎮📕 Школа дизайна и @kio…
  3. Oct 4, 2026💡 Вредные советы: Идея С тех пор как я открыл для себя чудесный мир элевенлабса (и это ка…
  4. Oct 4, 2026ТСПУ и телега Короче говоря как раз немного кул стори по следам теста. Спасибо кто там как…
  5. Oct 3, 2026Мой новый проект https://t.me/Mespoker_bot Поймал меня значит как-то Паша за покером и ска…
  6. Oct 1, 2026🤔 Как продвинуть игру? Я обещал. Я сделал. Получился большой документ с шагами и действия…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →