Я разрабатываю гиперболический граф для визуализации деревьев с большим количеством узлов. Вот почему я использую WebGL и библиотеку ThreeJS для повышения производительности. Вы можете проверить, что я разработал до сих пор, здесь: http://hyperbrowser.herokuapp.com/. Идея состоит в том, чтобы иметь возможность взаимодействовать с графом: щелчок по узлу центрирует граф в этом узле, а перетаскивание мыши перемещает граф вокруг него.
Я смог отобразить до 100 000 узлов. Но когда вы перетаскиваете такое большое количество узлов, производительность падает. Я думаю, это потому, что теперь я выполняю все операции с самим JavaScript, а затем обновляю положение вершин моего THREE.PointCloud.
После некоторых исследований мне пришла в голову идея выполнять операции в вершинном шейдере непосредственно с самими вершинами. И передавать параметры для конкретных преобразований либо в форме, либо в атрибутах. Я думаю, что это кажется жизнеспособным, поэтому я хочу спросить:
- Правильный это подход или нет
И если это так, поскольку преобразования, которые я применяю, являются функциями с комплексными числами, есть ли способ выполнить эти операции в самих шейдерах?Способ состоит в том, чтобы просто выполнить математические преобразования: https://github.com/julesb/glsl-util
Весь код находится в https://github.com/vabada/hyperBrowser/ на случай, если вы захотите чтобы увидеть, как я выполняю какие-либо конкретные операции. Конечно, любые советы, идеи и советы приветствуются.
THREE.LinePieces
и нарисуйте одну линию. Посмотрите, поможет ли это. 2. Вы создаете новыйRaycaster
при каждом движении мыши. Создайте один и используйте его повторно. 3. Убедитесь, что вы подумали о том, как бы вы выбрали, если бы вершинный шейдер изменил позиции. - person WestLangley   schedule 13.11.2014