По поводу старого компилятора вспомнилась ещё одна его проблема ― он не умеет checked-арифметику, игнорирует ключевое слово checked. На оф. форуме было упоминание. Я проверял, действительно не работает со штатным компилятором.
Самое плохое в Unity это то что там нет дебагера, а C# -ный использовать не возможно ... скатываемся в прошлый век, и расставляем Debug.Log()
Ну и конечно сама его реализация не как "API для разработчика ", а как "пишите для Unity .dll" ущербна - код полностью завязан на юнити.
Пошаговая отладка C# в MonoDevelop вроде была всегда. В Visual Studio тоже работает при наличии Visual Studio Tools for Unity.
alexzzzz
> В Visual Studio тоже работает при наличии Visual Studio Tools for Unity.
интересно, надо попробовать
alexzzzz
Спасибо, попробовал, стало веселее )
Уже 3 года пишу на Unity.
После выхода Unity5 была замечена ощутимая регрессия в производительности.
На 4.6 наша игра выдавала комфортные 30FPS на среднем мобильном железе. Перешли на Unity5 в силу политики apple, которая принуждает разрабов писать 64 bit приложения, и по некоторым другим, не менее важным.
Регрессию в производительности заметили сразу: 15FPS. Это в 2 раза меньше!!! Откатываться мы не спешили, поскольку пологали, что версия сырая и совсем скоро всё исправится... Уже 5.3.3 а сильно лучше не становится.
Более того: диву даёшься как следующая версия Юнити начинает пестрить всё новыми багами, причём в самых неожиданных местах. Так что -Eugene- был прав, ущербность рендеринга на мобильных платформах - вот одно из ограничений Unity5.
Sqwer_37
У вас в проекте в Юнити 5 легаси шейдера или вы на ПБС проект перевели?
Executor
В проекте самописные, максимально упрощённые. (1 выборка из текстуры и без трансформаций текстурников вроде float4 _MainTex_ST;)
т.е. кол-во передаваемых параметров в шейдер не увеличилось и оно минимально возможное.
Ещё один любопытный факт:
одна из самых дорогих операций - смена шейдера, основываясь на этих соображениях был написан простой тест.
Создаём линейку 32 из полупрозрачных объектов. В первом случае - один шейдер и разные рендер стейты, во втором - разные шейдеры(как файлы) с такими же рендер стейтами.
Объекты распологаем таким образом, чтобы они чередовались и Юня не могла бы их сбатчить. Код шейдеров абсолютно одинаков, как пиксельного так и вертексного.
Что имеем по факту тестов, были сделаны на Unity 5.2 f1:
В игре Wasteland есть памятник с надписью
Sqwer_37
Я думаю, не помогло бы.
В roadmap https://unity3d.com/ru/unity/roadmap есть пункт Graphics: Basic GPU Instancing Support.
Но ведь уже давно есть метод Graphics.DrawProcedural http://docs.unity3d.com/ScriptReference/Graphics.DrawProcedural.html , который принимает instanceCount аргумент.
Чем новая фича будет новой?
WISHMASTER35
Есть такой документ по новому инстансингу
https://docs.google.com/document/d/1RS6cVjE8mBVOKqQUuXbaZcPW3kmw3… r-5rDwSs/edit
WISHMASTER35
> В roadmap https://unity3d.com/ru/unity/roadmap есть пункт Graphics: Basic GPU
> Instancing Support.
> Но ведь уже давно есть метод Graphics.DrawProcedural
> http://docs.unity3d.com/ScriptReference/Graphics.DrawProcedural.html , который
> принимает instanceCount аргумент.
> Чем новая фича будет новой?
Я вот тоже не допёр, инстансинг в Юнити уж давно есть, что за новый непонятно.
А DrawProcedural разве не для элементарной процедурной геометрии, типа миллионов частиц, кубиков каких-нибудь? Никогда не пользовался, не знаю.
alexzzzz
Что засунешь в ComputeBuffer, то и нарисуешь. Просто надо самому из ComputeBuffer брать данные.
Почитал тот документ. В общем они сделают, чтобы обычный Mesh поддерживал эту фичу. Даже для каждого инстанса будет куллинг.
Я так понимаю динамический батчинг у них до сих пор на CPU.
Тема в архиве.