Q: Что такое VBO?
A: VBO – это технология, позволяющая выгрузить данные в видеоустройство для повышения скорости отрисовки.
ОЗУ, ГПУ и ЦПУ — все имеют про три буквы в сокращении, все оканчиваются на «у» (на самом деле, ГП, ЦП и ОЗУ).
Данные между ними передаются относительно медленно, словно каждый из них находится на разных материках. Процессор имеет кэш, доступ к которому является достаточно быстрым; видеокарта имеет видеопамять, доступ к которой будет побыстрее, чем к ОЗУ. Данные, нужные для отрисовки, лежат же в ОЗУ: например, треугольник с 3 вершинами, каждая из которых может иметь 3 локальные координаты, 2 UV-координаты. Для того чтобы не гонять все эти данные из ОЗУ в процессор, а оттуда на ГП, была разработана технология VBO. Она позволяет сразу выгрузить данные в видеопамять, а графический процессор будет использовать их для отрисовки уже оттуда.

Также, VBO представляет из себя массив ака буфер данных, находящийся в видеопамяти.

Q: Что такое VAO?

VBO и DisplayList


А: Всё очень просто, это массив, содержащий буферы с данными(те самые VBO), а также последовательность индексов(о них позже).

indexing1.png

Допустим, рисуется параллелограмм(выше картинка). Поскольку ОГЛ рисует треугольниками, то наш параллелограмм распадается на 2 треугольника. Каждая из 4 вершин может иметь: позицию(3 координаты), UV-координаты(2 координаты). Значит, VAO будет следующим(тут вершины повторяются, поскольку мы описываем треугольники, а каждому из них нужно указать три вершины в опр. порядке):
-VAO
—Pos0
—UV0

//второй треугольник
—Pos2
—UV2

Итого, 6 * (3 + 2) = 30 чисел.
Вместо того, чтобы загружать каждый раз данные о вершине, мы загрузим разово все вершины и последовательность, в которой эти вершины будут рисоваться(индексы). Тогда VAO примет вид:

—indices[0, 1, 2, 2, 3, 1]

Итого, 4 * (3 + 2) + 6 = 26 чисел. Экономия в 4 числа.
— Всего?!
Да, всего. Но мы ведь рисуем лишь два треугольника, а какова будет экономия, если нарисовать 2-3к треугольников?

Q: Хорошо, *не* понятно, но что такое шейдер, зачем он?
A: Шейдер — это программа для ГП, которая обрабатывает какие-то данные на ГП, лол. Вершинный шейдер — вершины, геометрический — наборы вершин, фрагментарный — пиксели. Ещё есть тесселяционный, но с ним я не работал, уж простите. Пишутся шредоры эти на С-подобном языке — GLSL.
Итак, расскажу чуть подробнее про каждый тип шейдеров.
==Вершинный==
Обычно принимает локальную координату вершины, которую с помощью диковинных трансформаций переводит в NDC(normalized device coordinates).

Читайте также:  Как в Майнкрафте поменять логин

==Фрагментарный==
Ну тут всё просто — нужно выдать цвет пикселя. Можно использовать текстуру, откуда по UV-координатам легко достаётся цвет пикселя; можно просто указать цвет (от 0 до 1).

==Геометрический==
Принимаете набор вершин, а дальше что хотите — то и делайте. Можете раздвинуть вершины, можете добавить/убрать имеющиеся. Например, 1 входную вершину можно превратить в куб. Точка->куб. Тут уж ваша фантазия. ‘Nuff said.

Q: Каких-то диковинных трансформаций?
А: Трансформации переводят позицию из одного простраства в другое с помощью матриц. Происходит это по следующей схеме: local space -> world(global) space -> view(camera) space -> clip space -> NDC space.

Local Space: локальное пространство фигуры. Думаю, всё понятно, да?
World(global) Space: мировое пространство фигуры. Тут тоже всё ясно, так?
View(camera) Space: пространство в камере. В мире компьютерной графике вращается не камера, а вершины фигур, смещаются также вершины. Камеры нет, это всё ложь.
Clip Space: если вы используете перспективную проекцию, то более далёкие фигуры будут меньше, чем ближние; параллельные прямые начинают сходится. Но можно задать ортогональную проекцию. Тогда все фигуры будут одинаковых размеров, будто б не удалены; параллельные не сходятся. О построении матриц проекции:
http://ogldev.atspace.co.uk/www/tutorial12/tutorial12.html
http://www.songho.ca/opengl/gl_projectionmatrix.html

Кстати, в первых трёх трансформациях используется 3-хмерный вектор. А вот в последней трансформации требуется 4-хмерный вектор, поскольку после преобразования в clip space координаты должны стать единичными, т.е. находится в NDCS(normalized device coordinates space). А происходит это путём деления xyz на w. Намечается вопрос: «А как тогда подобрать w координаты, чтобы перевести этот вектор в clip space?».

Обычно ставится w = 1, если это точка. И w = 0 если вектор(потому что при делении на 0 всё обращается в бесконечность, а вектор в данном контексте представляет направление. Направление же не имеет конечной точки, ведь так?). А ещё в clip space верно следующее уравнение -w

Q: А что с кодом?
А: Ничего, мне лень его писать, ведь его не очень мало. Тем более, он запросто находится в гугле. Можете найти тут: https://github.com/r4v3n6101/Raven-API *пиар*.
Напоследок, в этом маленьком туториале, скажу, что:
1) В шредорах матрицы column-major, т.е. matrix.get(0, 1) выдаст вам число из первого столбца, второго ряда вместо ожидаемого числа из первого ряда, второго столбца. Легко переводится в row-major. Просто транспонируйте матрицу(поменяйте колонки и ряды местами). В некоторых функциях ОГЛ даже есть такой параметр, transpose.
2) В пространстве NDC левая тройка координат. Так что если использовали правую в пространстве камеры и глобальном пространстве, то вам придётся развернуть ось Z.

Читайте также:  Как построить мешок с подарками в Майнкрафте

Вопросы, предложения, помидоры принимаются.

Источник: forum.mcmodding.ru

Что такое vbo в майнкрафте

VBO: Vertex Buffer Object — это расширение OpenGL (ARB_vertex_buffer_object), позволяющее работать с видеопамятью в части чтения/записи/рендеринга массивов вертексов (вершин) и индексов. Поддерживается практически на всех 3D-ускорителях (все GeForce, Radeon, Quadro, FireGL, Riva TNT, большая часть интегрированных чипсетов Intel, часть карт S3 и 3DLabs), кроме самых старых (таких, как 3dfx Voodoo).

Расширение Vertex Buffer Object позволяет, в частности, размещать геометрию в видеопамяти для последующего (многократного) рендеринга или же организовывать потоковую передачу данных видеокарте (пересылка данных + рендеринг их в каждом кадре).

VBO позволяет избежать передачи больших массивов данных через шину видеокарты в каждом кадре, так как данные хранятся локально на видеокарте. Кроме того, видеопамять на современных видеокартах обычно быстрее системной (system) памяти.

На современных видеокартах VBO обеспечивает очень большое увеличение производительности (наблюдалось, например, ускорение в 1000 раз на GeForce 6800, на статической геометрии). Использовать VBO рекомендуется практически всегда, проще назвать причины, когда не следует его использовать: это либо очень маленькие массивы данных (неэффективно), либо очень большие (когда они не помещаются в свободную видеопамять).

Документация на русском по функциям буферных объектов:

glGenBuffers, glDeleteBuffers — создание/удаление буфера
glBindBuffer — переключение текущего буфера
glBufferData — выделение видеопамяти и/или запись данных
glBufferSubData, glGetBufferSubData — чтение/запись части данных буфера
glMapBuffer, glUnmapBuffer — отображение буфера в оперативную память (аналогично функциям Lock() в DirectX)
glIsBuffer — задаёт ли данный идентикатор вершинный буфер OpenGL
glGetBufferPointerv — запрос указателя на данные уже отображённого буфера
glGetBufferParameteriv — запрос параметров буфера (размер и пр.)

Что такое VBO: Vertex Buffer Object (Объект буфера вершин)?

Источник: minecraft-kak.ru

Стоит ли включать или отключать VBO в Minecraft (04.01.23)

  • Minecraft

vbos вкл. Или выкл. Minecraft

Каждая видеоигра предлагает различные параметры и настройки, которые влияют на то, как игра выглядит, а также на то, как она на самом деле разыгрывается. Например, установка слишком высоких параметров текстуры позволяет игроку загружать текстуры высокого качества в свою игру. Точно так же снижение некоторых настроек дает игроку повышение производительности.

Читайте также:  В Майнкрафте идет война

Включение или отключение VBO в Minecraft

При доступе к настройкам Minecraft вы могли заметить опцию под названием «VBOs». Это одна из многих опций, которые вы можете найти в настройках графики / видео в видеоиграх. Большинство игроков не имеют большого представления о том, что такое VBO, поэтому они спрашивают, следует ли им включать или отключать их.

Популярные уроки Minecraft

Сегодня, мы обсудим это подробно, чтобы помочь вам понять, следует ли вам оставить его включенным или выключить. Итак, давайте перейдем к делу!

Что такое настройка VBO?

Для тех из вас, кто не знает, VBO — это, по сути, настройка видео, которая обозначает вертикальный буферный объект. Это функция OpenGL, которая отвечает за то, какую процедуру или метод использует игра для загрузки данных вершин (включая позиционирование, вектор и цвет).

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

Если бы мы еще больше упростили ситуацию, когда у вас отключена опция, весь мир в Minecraft будет загружается, даже если вы его не видите. С другой стороны, когда VBO включены, ненужные части мира, которые вы не можете загрузить.

Следует ли вам его включать?

Если вы поняли, что такое VBO, должно быть довольно ясно, что включение этого параметра для некоторых пользователей даст им огромный прирост FPS. Следует отметить одну важную вещь: когда она включена, вы перекладываете большую часть нагрузки на графический процессор, а не на центральный процессор.

Таким образом, от вашей системы также может зависеть, сможет ли она в полной мере воспользоваться включенной опцией. Для некоторых пользователей это может даже не повлиять на их производительность. Все, что вам нужно сделать, это попробовать включить и выключить эту опцию и сравнить, заметили ли вы разницу в производительности вашей игры. Если да, то вам непременно стоит оставить его включенным.

Итог

Вот все, что вам нужно знать о том, следует ли вам держать VBO включенными или выключенными. Убедитесь, что вы внимательно прочитали статью, чтобы полностью понять все о ней.

YouTube видео: Стоит ли включать или отключать VBO в Minecraft

Источник: ru.purelysandy.com