C# заставляет гореть!

Общие вопросы о Unity3D

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 13:50

Dewa1s писал(а):
NAGIBATOR228pacan писал(а):Что за бред вообще тогда где игровые движки на c# или java, почему на них никто не делает?
Я не знаю каким это образом шейдер влияет на скорость, но это так, я предполагаю что более продвинутый шейдер тормозит гпу и он медленнее устанавливает новый массив вершин и треугольников, меш строится в реалтайме и в корутине если что, сейчас он строит 1024 мешей за 8 секунд, и за 6 если врубить анлит шейдер.

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

Нету там мешей с сотнями тысяч вершин, каждый чанк отрисовывает только видимую поверхность, плюс плоскости рядом стоящих кубов объединяются
https://0fps.net/2012/06/30/meshing-in- ... raft-game/
Говорю же, с неправильным подходом и С++ захлебнется, ты упираешься в свои алгоритмы, а не в производительность платформы

Ну у меня меш тоже не отрисовывает то что не видно, про объединение, до этого я тоже дойду пока я это не сделал, хотя спасибо большое за эту инфу потому что я сомневался в том что в майнкрафте все таки мерджат эти квады, потому что по освещению видно что вроде бы они отличные я понятие не имею как они тогда это освещение без доп вершин сделали, наверное мерджут и с учетом освещения, но в любом случае на c++ даже эти алгоритмы будут работать быстрее это факт смысл мне не пытаться использовать все возможное чтобы ускорить процесс генерации?
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение 1max1 15 апр 2019, 13:50

Небольшой пример многоразового использования массива.

Синтаксис:
Используется csharp
class Program
{
    const int minLength = 100;
    const int maxLength = 999;

    static int needLength = 0;
    static int[] array = new int[maxLength];
    static Random random = new Random();

    static void Main()
    {
        needLength = random.Next(minLength, maxLength);

        FillArray(array, needLength);
    }

    static void FillArray(int[] array, int needLength)
    {
        for (int i = 0; i < needLength; ++i)
        {
            // Заполняем лишь часть массива
            array[i] = random.Next(0, 100);
        }
    }
}
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 13:57

1max1 писал(а):Небольшой пример многоразового использования массива.

Синтаксис:
Используется csharp
class Program
{
    const int minLength = 100;
    const int maxLength = 999;

    static int needLength = 0;
    static int[] array = new int[maxLength];
    static Random random = new Random();

    static void Main()
    {
        needLength = random.Next(minLength, maxLength);

        FillArray(array, needLength);
    }

    static void FillArray(int[] array, int needLength)
    {
        for (int i = 0; i < needLength; ++i)
        {
            // Заполняем лишь часть массива
            array[i] = random.Next(0, 100);
        }
    }
}

Ну ты же не меняешь длину массива! Ты в таком случае отправишь maxLenght вершин в меш в любом случае
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение 1max1 15 апр 2019, 14:00

Ну ты же не меняешь длину массива!

Так а зачем ее менять?! Если можно использовать один и тот же массив всегда, просто когда нужно корректировать его длину?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 14:02

1max1 писал(а):
Ну ты же не меняешь длину массива!

Так а зачем ее менять?! Если можно использовать один и тот же массив всегда, просто когда нужно корректировать его длину?

Но как тогда ты меш создашь, напишешь mesh.vertices = array, и он тебе всегда будет создавать меш с максимальным количеством вершин, а это убийство гпу, а с треугольниками все еще будет страшнее, надо либо создавать еще один массив либо первый пересоздавать и в обоих случаях - минус память
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение AlcogGMS 15 апр 2019, 14:11

1) Ну статьи на хабре говорят что разница в 10-80% и тесты проведенные там это тоже подтверждают, на гайде по плагинам был тест где массив 10000x10000 на c++ плагине заполнялся в 5!!! раз быстрее чем в unity, с моим шумом на c++ все считается минимум в 2 раза быстрее(даже больше это только по времени в 2 раза быстрее, а там не только же шум все тратит) меня тут переубедить будет сложно.
3) Да можно быть супер мастером экспертом и сделать и на c# быстро, только супер мастер эксперт на c++ это сделает еще быстрее[/quote]

1)А скиньте ка ссылку если можно на эти гайды и статьи.
Что-то мне кажется что их проводил любитель с++, который "не совсем хорошо" умеет работать в #
Тоже касается и вашего шума, уверен где его и дальше можно ускорить, с помощью #, и возможно станет работать быстрее чем у вас на ++

2) Да, согласен, и на пределе возможностей ++ выиграют от силы на пару %
AlcogGMS
UNIт
 
Сообщения: 50
Зарегистрирован: 11 янв 2019, 21:57

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 14:26

AlcogGMS писал(а):1) Ну статьи на хабре говорят что разница в 10-80% и тесты проведенные там это тоже подтверждают, на гайде по плагинам был тест где массив 10000x10000 на c++ плагине заполнялся в 5!!! раз быстрее чем в unity, с моим шумом на c++ все считается минимум в 2 раза быстрее(даже больше это только по времени в 2 раза быстрее, а там не только же шум все тратит) меня тут переубедить будет сложно.
3) Да можно быть супер мастером экспертом и сделать и на c# быстро, только супер мастер эксперт на c++ это сделает еще быстрее


1)А скиньте ка ссылку если можно на эти гайды и статьи.
Что-то мне кажется что их проводил любитель с++, который "не совсем хорошо" умеет работать в #
Тоже касается и вашего шума, уверен где его и дальше можно ускорить, с помощью #, и возможно станет работать быстрее чем у вас на ++

2) Да, согласен, и на пределе возможностей ++ выиграют от силы на пару %[/quote]
1)
Хабр https://habr.com/ru/post/266163/.
Тот гайд, https://medium.com/@rafalwilinski/tutor ... bde7f67454 вот какой-то левый гайд, но там нет исходника как он это делал
Что касается моего шума, если его улучшить то он будет работать и на c++ быстрее чем на c# и шум не мой кстати нашел его на гитхабе
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение 1max1 15 апр 2019, 14:32

А если сделать resize в с++ и возвращать тот же массив только с другой длиной каждый раз.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: C# заставляет гореть!

Сообщение Cr0c 15 апр 2019, 14:36

1max1 писал(а):А если сделать resize в с++ и возвращать тот же массив только с другой длиной каждый раз.

Ссылки не прокидываются между шарпом и не managed кодом
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: C# заставляет гореть!

Сообщение Cr0c 15 апр 2019, 15:00

NAGIBATOR228pacan писал(а):Хабр https://habr.com/ru/post/266163/.

Почитал часть комментов - там вполне обоснованно (и очень вежливо) объясняется ущербность данных тестов.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 15:17

Cr0c писал(а):
NAGIBATOR228pacan писал(а):Хабр https://habr.com/ru/post/266163/.

Почитал часть комментов - там вполне обоснованно (и очень вежливо) объясняется ущербность данных тестов.

Мне лень копаться в этой огромной стене комментов видел только пару из них в которых через десяток костылей и прочего приближаются к скорости с++, только зачем мне все эти костыли если c++ по-умолчанию быстрее, то что c++ быстрее это очевидный общепризнанный факт смысл это оспаривать, быстрее может быть только чистый c или асемблер
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение Cr0c 15 апр 2019, 15:20

NAGIBATOR228pacan писал(а):
Cr0c писал(а):
NAGIBATOR228pacan писал(а):Хабр https://habr.com/ru/post/266163/.

Почитал часть комментов - там вполне обоснованно (и очень вежливо) объясняется ущербность данных тестов.

Мне лень копаться в этой огромной стене комментов видел только пару из них в которых через десяток костылей и прочего приближаются к скорости с++, только зачем мне все эти костыли если c++ по-умолчанию быстрее

...при создании сортировки "пузырьком" без учёта разницы работы с массивами в managed и nonmanaged компиляторах. Ну да, весомый аргумент :D
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 15:43

Cr0c писал(а):
NAGIBATOR228pacan писал(а):
Cr0c писал(а):
NAGIBATOR228pacan писал(а):Хабр https://habr.com/ru/post/266163/.

Почитал часть комментов - там вполне обоснованно (и очень вежливо) объясняется ущербность данных тестов.

Мне лень копаться в этой огромной стене комментов видел только пару из них в которых через десяток костылей и прочего приближаются к скорости с++, только зачем мне все эти костыли если c++ по-умолчанию быстрее

...при создании сортировки "пузырьком" без учёта разницы работы с массивами в managed и nonmanaged компиляторах. Ну да, весомый аргумент :D

Да я верю что c# может сравнятся по скорости с c++ если использовать unsafe мод и я даже буду рад если это так, но все равно это костыли, писали бы все на c# игровые движки, почему не пишут, c# же удобнее, я думаю дело в конечной скорости, на c# надо мучатся над оптимизации в отличии от c++. К тому же многие библиотеки на c# наврятли используют unsafe код и поэтому даже если ты будешь со своей стороны все делать идеально, то библиотеки будут работать медленно, например шум
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение AlcogGMS 15 апр 2019, 20:26

Дело не только в небезопасном коде, он поможет выиграть лишь небольшую часть, здесь речь больше о том в этих языках высокая производительность часто достигается совершенно разными подходами, в любом из этих языков можно одинаково провозится чтобы результат был стоящим, в каждом по своему.
AlcogGMS
UNIт
 
Сообщения: 50
Зарегистрирован: 11 янв 2019, 21:57

Re: C# заставляет гореть!

Сообщение Saltant 15 апр 2019, 20:49

Машине так то по барабану на каком языке ей пишут, язык создан для людей, чтоб именно люди понимали че пишут - соответственно весь код зависит от опыта программиста.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Пред.След.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9