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

[Unity3D] Делаю свой фреймворк для рисования линий. (6 стр)

Страницы: 1 2 3 4 5 6
#75
(Правка: 3:34) 3:31, 9 янв. 2019

Да, конечно выносил. Чтение height/width тоже. Но больше ни с чем не заморачивался.


#76
(Правка: 4:08) 3:35, 9 янв. 2019

alexzzzz
Ну там можно еще 1.0f/v.z один раз сделать. Теперь эти вычисления вместо 80% от 50мс занимают 50% от 20мс. И что там еще половину занимает?
Если его поковырять и перенести эти вычисления в шейдер то будет вообще весчь.
Осталось LineRender затестить.

#77
(Правка: 16:42) 12:10, 9 янв. 2019

Polyflow3d
> Может, потому что он не такой умняшка как ты и не смог изобрести билборд?
А то что они уже делают на CPU, пересчитывают в экранные координаты (тоже самое что и я в своем шейдере) это не билборд? Я только исключил матрицу проекции из своих расчетов. И потом что у тебя за мания такая банальные вычисления за прорыв мировой науки выдавать? А ничего что мы уже в 2 раза производительность это тулзы увеличили - может это тоже на "пьедестал" воздвигнешь и стебаться продолжишь. И кто тебе сказал что у тебя самого не те же самые билборды?

linerender_004 | [Unity3D] Делаю свой фреймворк для рисования линий.

Polyflow3d
> почему создатель vectrosity не перенес некоторые свои расчеты в шейдер?
Ну и почему они не сделали того, что мы здесь сейчас сделали?
Polyflow3d
>Все вменяемые люди этим занимались 10 лет назад, когда юнити вышел и давно сделали выводы.
Ах да, вот почему. Ну ну. Поэтому они и на оптимизацию забили.

#78
(Правка: 18:01) 17:58, 9 янв. 2019

foxes
> Теперь эти вычисления вместо 80% от 50мс занимают 50% от 20мс. И что там еще
> половину занимает?

Там не просто один ScreenToWorld, плюс один WorldToScreen, там за одну интерацию цикла четыре ScreenToWorld и два WorldToScreen. Всё остальное, что бы оно ни делало, занимает ещё столько же:

+ Показать
#79
(Правка: 20:51) 18:38, 9 янв. 2019

alexzzzz
> Там не просто один
Окей
foxes
> эти вычисления
alexzzzz
Навскидку по моим данным заполнение массива из 1000 элементов 0.15 мс. C вычислениями 15000 элементов забирают 5-6 мс, по крайней мере то что у меня уходит на формирование меша для круга с полосочками на 15к вершин. Это 10 кругов по 750 сегментов. 0.1-1 мс уходит на создание компонентов, самого меша с заливкой (colors32 vertices tangents SetIndices). На 20 кругов по 750 сегментов 10 - 11 мс (это 15к точек и 30к вершин)

Я попробовал сделать это с LineRender и Unity отвалился, я так понял из за редактора. А на малых значениях он ни чего кроме заполнения массива не показывает.

alexzzzz
> Всё остальное, что бы оно ни делало, занимает ещё столько же:
Тут заполнение массивов уже 5-7мс берет и еще 3-5мс на побочные вычисления которые не выкинешь если не избавляться от всего этого полностью. Но если улучшить хотя бы в 2 раза это еще минус 1.5-2.5 мс.

Думаю IntersectAndDoSkip можно убрать для теста. А вот это за скобки цикла, и два цикла сделать по условию.

if (useTransformMatrix) {
  for (int i = start; i < end; i += add) {
    p1 = thisMatrix.MultiplyPoint3x4 (m_points3[i]);
    p2 = thisMatrix.MultiplyPoint3x4 (m_points3[i+1]);
    ...
  }
}
else {
  for (int i = start; i < end; i += add) {
    p1 = m_points3[i];
    p2 = m_points3[i+1];
    ...
  }
}

thisLine = px / (float)System.Math.Sqrt (px.x * px.x + px.y * px.y);
Тут можно попробовать стандартную фишку
  [StructLayout(LayoutKind.Explicit)]
  private struct FloatIntUnion
  {
    [FieldOffset(0)]
    public float f;

    [FieldOffset(0)]
    public int tmp;
  }

  public static float Sqrt2(float z)
  {
      if (z == 0) return 0;
      FloatIntUnion u;
      u.tmp = 0;
      float xhalf = 0.5f * z;
      u.f = z;
      u.tmp = 0x5f375a86 - (u.tmp >> 1);
      u.f = u.f * (1.5f - xhalf * u.f * u.f);
      return u.f * z;
  }

thisLine = px * (float)Sqrt2 (px.x * px.x + px.y * px.y);

Но это мелочи, на 2 раза тут не наберется.

#80
5:40, 10 янв. 2019

прекратили личные выпады

#81
10:53, 10 янв. 2019

foxes

vectorosity не стал перекладывать вычисления в шейдер, потому что он дал пользователю свободу использовать любой шейдер. И теперь ему например не приходится адаптировать его для SRP.
Медленно, конечно, зато универсально.

Я вообще зачастую не понимаю что ты там булькаешь и че от меня хочешь - ты хоть бы падежи правильные употреблял, и знаки припинания расставлял.  Одно понятно - что ты не особо одаренный 40 летний дяденька с кучей комплексов по поводу своей самореализации и гипертрофированным болезненно раздутым эго. Даже туалетная бумага на твоем аватаре золтого цвета, повернутая коцом к стене. Ну прям аллегория твоих изобретений, типа билборда на gpu.     

#82
(Правка: 18:51) 11:26, 10 янв. 2019
Polyflow3d
> Я вообще зачастую не понимаю что ты там булькаешь и че от меня хочешь
Долго ржал. Ты тему то вообще для чего создал? Тебе люди свои предложения и решения высказывают. А ты че делаешь? Игнор оптимизации того же vectorosity, без потери функционала, под предлогом "ничего не понимаю". Все поняли, один ты умный и замученный? Разбрызгал эгом, других в этом обвинил.

Polyflow3d
> Медленно, конечно, зато универсально.
И без шанса на альтернативу и оптимизацию даже на том же C#.

Suslik
> прекратили личные выпады
Тут в основном все между собой общаются спокойно, стараясь игнорировать личные выпады автора. Вообще тему можно в топку, я уже отдельную создал.

#83
17:13, 10 янв. 2019

Тема хорошая и интересная. Пару сообщений с оскорблениями я потёр.

#84
22:03, 12 янв. 2019

Тем временем я сделал новую думку с участием своего фреймворка
http://polyflow.studio/WebGL/Graph/

#85
4:04, 13 янв. 2019

Polyflow3d
выглядит красиво

#86
8:57, 13 янв. 2019

Suslik
спасибо.
Кстати, мы как то обсуждали вычисление нормалей для меша, и ты утверждал что нормали бывают только параметрические.
Вот тут так и есть, как ты любишь, все параметрически, никаких нубских нормалей на основе треугольников )):

Изображение
Страницы: 1 2 3 4 5 6
ПрограммированиеФорумГрафика