Войти
ПрограммированиеФорумГрафика

Предрасчёт рейкаста для эффективного рендеринга травы и меха (комментарии) (2 стр)

Страницы: 1 2
#15
(Правка: 18:34) 18:33, 19 авг. 2019

MrShoor
> Если чуть-чуть увеличить радиус у препятствий, то луч начнет пересекать то, что
> раньше не пересекал. Как этот момент обходится?
цель увеличения радиуса — именно сгенерить новые пересечения. представь себе эти две окружности увеличиваются, когда ты шагаешь малыми шагами по лучу.

arprog
> Демка будет?
в новой лиге path of exile предположительно будет много этой технологии

#16
(Правка: 19:28) 19:27, 19 авг. 2019

Suslik
> цель увеличения радиуса — именно сгенерить новые пересечения. представь себе
> эти две окружности увеличиваются, когда ты шагаешь малыми шагами по лучу.
Это я представляю. Я не понимаю как именно ты увеличиваешь этот радиус. Вот у тебя в текстуре XY - начало луча, Z - угол. В пикселе в R хранится дистанция на луче и в GBA нормаль - это единственное предрассчитанное пересечение. Откуда берутся эти самые новые пересечения?

#17
21:04, 19 авг. 2019

MrShoor
> Откуда берутся эти самые новые пересечения?
пересечение хранится одно. но во время его расчёта радиус волокон увеличивается. короче, так:

float Grass::CastRay(vec3 origin, vec3 dir)
{
  float extraRadius = 0.0f;
  for(float dist = 0; dist < 100.0f; dist += step)
  {
    extraRadius += spikiness;
    for(auto fiber : this->fibers)
    {
      float dist;
      if(length(origin + dir * dist - fiber.center) < fiber.radius + extraRadius)
      {
        return dist;
      }
    }
  }
}
#18
21:27, 19 авг. 2019

Suslik
> пересечение хранится одно. но во время его расчёта радиус волокон
> увеличивается. короче, так:
Погоди, так это не семплинг с 3д текстуры. Ты просто перебираешь все fibers чтоль? Тогда откуда O(1) тут?

#19
(Правка: 22:00) 22:00, 19 авг. 2019
Тогда откуда O(1) тут?

Ну так же два for-a :)
#20
(Правка: 22:38) 22:37, 19 авг. 2019

MrShoor
> Погоди, так это не семплинг с 3д текстуры.
Это предрасчет этой 3D текстуры.
Только там должно быть vec2 вместо vec3.

#21
22:57, 19 авг. 2019

}:+()___ [Smile]
> Это предрасчет этой 3D текстуры.
> Только там должно быть vec2 вместо vec3.
да, так

#22
23:26, 19 авг. 2019

}:+()___ [Smile]
> Это предрасчет этой 3D текстуры.
Оу, теперь я понял, спс. Интересный трюк.

Страницы: 1 2
ПрограммированиеФорумГрафика