Вот ещё про овраги — а как предполагается сэмплить текстуры и тене-карты на вот этих корытах? Как рисовать прозрачную геометрию? Что делать в случае текстур с масками?
Имбирная Ведьмочка
В текстуре, очевидно, брать mipmap level, соответствующий площади, покрываемой пирамидой.
Aslan
и... семлировать его в цетре?
GLoom
да
Принципиально новая графика могла бы быть, если бы создатель Ecstatica развил бы свой движок.
Тут в этой замечательной теме задам вопрос.
Как нормали xyz запаковать в два флоат числа ?
UV и текстуру не предлогать, для получения нормали.
ronniko
Переведи их в сферические координаты, а в шейдере обратно.
А как это сделать ?
Есть формула ?
Это ?
public Point3 Spherical(float r, float theta, float phi) { Point3 pt = new Point3( ); float snt = ( float)Math.Sin( theta * Math.PI / 180); float cnt = ( float)Math.Cos( theta * Math.PI / 180); float snp = ( float)Math.Sin( phi * Math.PI / 180); float cnp = ( float)Math.Cos( phi * Math.PI / 180); pt.X = r * snt * cnp; pt.Y = r * cnt; pt.Z = -r * snt * snp; pt.W = 1; return pt; }
ronniko
Загугли cartesian to spherical и наоборот.
Вот, например, какая-то репа, не гарантирую что правильный код, надо проверять.
https://gist.github.com/overdev/d0acea5729d43086b4841efb8f27c8e2
А разве сферические координаты не три числа ?
Угол по х и по у и радиус.
ronniko
Для нормали радиус будет 1.
Логично.
ronniko
дело давно было, но вроде бы как-то так:
GLoom
> Хорошо бы гифку сделать где эти полоски ползут.
Держи: https://www.shadertoy.com/view/dsVfRG
MrShoor
С телефона яркость слегка пульсирует. Посмотрю ещё на компе.
Тема в архиве.