Ток я не понял почему всё равно рассчитываете в пиксельном шейдере, но эт как хотите)
Потому что так было на вики. В шейдерах я новичок, поэтому не знаю, где лучше это рассчитывать. Если я правильно догадываюсь, вы предлагаете переделать в сурфейс?
Вообще видимо нужно, чтобы чем меньше отклонение вектора нормали от вектора взгляда, тем значение ближе к 1, то сделать как предложил waruiyume
Да, его решение подошло.
Но вот еще одна проблемка:
Когда камера смотрит левее планеты, атмосфера уходит вправо. Но ведь она наоборот должна становится более видимой?
Т.е. когда планета находится напротив камеры, worldNormal будет направлен перпендекулярно камере - dot(i.worldNormal, i.viewDir) должен быть равен 0.5. Когда же камера съезжает вбок, например, влево, угол между viewDir и вертексами левого края будет уменьшаться - dot приближаться к 1.0. У меня же все наоборот!
При этом если инвертировать viewDir: o.viewDir = normalize(-WorldSpaceViewDir(v.vertex)) - абсолютно ничего не происходит.
И наоборот:
Красными стрелочками я показал, как должно быть.
Откуда такой эффект?