Форум

Сообщения, созданные пользователем Grohot
05 марта 2016 13:24
Всем привет!
scenes.pick_object работает 0.3-0.5сек (достаточно большая задержка, т.е. клик на меше и только через пол секунды отклик: очень и очень заметно для пользователя и критично долго, все делается в памяти ведь, чтения с диска нет).

От чего зависит скорость pick_object? Может надо поменять немного алгоритм поиска объекта, по которому кликнули?

Ведь, как выяснил из-за этого и тормозит в том числе перемещение объекта мышью по сцене (создавал отдельную тему, потом удалил, решив, что это железо, но железо довольно мощное ж).

Так как в on_mouse_move я через pick_object тоже проверяю, над каким именно мешем находится перетаскиваемый объект (при этом pick_object сам по себе конечно не подходит для этого, т.к. он выдает как раз сам перемещаемый объект и только во время запаздывания перемещаемого меша от курсора выдает другой меш). Т.е. мне надо самому видимо, создать массив, в котором хранить координаты мешей (они проостой формы) на сцене и в онмаусмув искать по массиву, а не через pick_object. НО pick_object все равно работает медленно к сожалению (просто даже для выбора объекта пол секунды - это долго )
При этом, если отключить тени, то pick_object дает приемлемый отклик 0.03сек, то есть в 10! раз быстрее, как минимум. Как могут включенные тени влиять на pick_object ?

И еще вопрос. Можно ли как-то ограничить просчет теней по глубине/расстоянию? То есть может ли тормозить сцена из-за просчета теней потому например, что от меша, который отбрасывает тени идет просчет в сторону всех мешей, которые могут принимать тени, а между тем реально тень ложится только на 1% мешей сцены? Но вряд ли так, наверно ж просчет идтет от источника света по каждому полигону пока не ляжет на какой-либо меш.
02 марта 2016 18:10
Тут завалялся вопрос, пожалуй, отвечу.
Спасибо большое, Иван. Пока постараюсь дождаться в одном из релизов, чтобы потом не переделывать, если не дождусь, буду вникать в квантерион
02 марта 2016 12:43
Спасибо, ребят. Примерно понял, я-то думал, все просто - нарисовал красиво и вперед :), хотя
если в обычном рендере сложный меш может отрисовываться довольно долго, то уж просчитывать в динамике да еще кучку таких мешей… Буду учиться запекать все что можно )
02 марта 2016 10:19
Да. Информацию об этом можно посмотреть на webglreport.comТут сразу будет информация для вашего GPU
Спасибо.
Оказалось, что на core i5 для интегрированного видеопроцессора MAX_VARYING_VECTORS = 9,
а на core i3 MAX_VARYING_VECTORS = 30
Как-то все наоборот получается.
При этом правда на i3 стоит Win8, а на i5 стоит Win7, может от этого тоже зависит?
В любом случае, выходит, что даже в не особо динамичной игрушке (где надо просто таскать мышью объекты), даже на довольно мощной машине, чтобы сцена шевелилась, надо делать совсем уж низкополигональные модели, и крайне желательно отключить тени
Или я чего-то не понимаю и не так делаю?
Может например надо сделать низкополигональную модель и натянуть на нее текстуру сгенерированную на высокополигональной модели? Какая обычно практика? Есть ли например какой-то оптимальный вес сцены по количеству полигонов например? Т.е. приложение делается браузерным так? Т.е. подразумевается, что оно должно нормально работать на множестве разнообразных машин. Но выходит, чтобы это было в действительности так, надо практически свести приложение к 2D, чуть ли не возвращаясь просто к растровым изображениям.
01 марта 2016 13:20
Спасибо, Роман. Это читал, но понимание все равно поверхностное, как и информация :)
Но главное понимаю, что видимо, все-таки это железо так?
Интересно вот это
Также GLSL позволяет обьявление пользовательскихvarying-переменных. Они должны быть обьявлены и в вершинном и в пикселном шейдере, например:varying float intensity;
Может можно как-то программно увеличить это количество? Хотя скорее вряд ли конечно )
01 марта 2016 11:57

Это просто предупреждение, что доступно небольшое колличество Varying векторов и что для бленд-объектов не будут доступны тени (из-за малого количества Varying'ов). Оно безобидно, просто предупреждает. Вы хотели бы, чтобы это сообщение не отображалось?
Нет конечно хорошо, что оно отображается.
Еще было бы здорово отловить его при инициализации сцены и отключить тени.
Видимо, по аналогии:
 var MIN_VARYINGS_REQUIRED = 10;
….
if (gl.getParameter(gl.MAX_VARYING_VECTORS) < MIN_VARYINGS_REQUIRED) {
m_print.warn("Not enough varyings, disable shadows on blend objects");
cfg_def.disable_blend_shadows_hack = true;
}


И еще пока не понимаю суть. Varying - это некие ресурсы видеоадаптера?
Неужели встроенный в Core i5 граф. проц. может грешить такой бедой?
(у меня на нем с тенями сцена сильно висит и не шевелится толком)
01 марта 2016 11:26
Всем, привет!
Что значит предупреждение
B4W WARN: Not enough varyings, disable shadows on blend objects
(Core i5, 16Gb, Win7 64x, DX11, отдельной видеокарты нет)
И как с этим бороться, если не отключать тени?
28 февраля 2016 22:02
Вам надо запечь кубомапу которая будет имитировать подобные светильники и использовать её в качестве имитации освещения.
Спасибо, понял, позже попробую освоить )
28 февраля 2016 18:51
Всем привет.
Есть ли возможность создать светящуюся плоскость?
(например для создания квадратных бликов на отражающих поверхностях)
Как в этом видео
Видел в документации Halo, но пока не получилось что-то.
27 февраля 2016 21:42
Зашел в структуру проекта, попытался перетащить, не получается
Мышью на желтенький значок меша (треугольник), тащишь его на желтенький значек камеры, до появления надписи
Drop to set parent, отпускаешь. Готово )