Двач.hk не отвечает.
Вы видите копию треда, сохраненную 23 сентября 2018 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
519 Кб, 768x1143
OpenGL thread 4 195365 В конец треда | Веб
Рисуй треугольник!
Треугольник сам себя не нарисует!

Спрашиваем, сами же решаем проблему, сами же отписываемся. Постим книжечки, гуглим, учим математику. Посылаем нахуй за легаси.
Добро пожаловать. Снова.

Архив:

http://arhivach.org/thread/28624/ - 1
http://arhivach.org/thread/47586/ - 2
http://arhivach.org/thread/64117/ - 3

Документация:

https://www.opengl.org/sdk/docs/man3/ - OpenGL 3.3
https://www.opengl.org/sdk/docs/man4/ - OpenGL 4.5
https://www.opengl.org/wiki/Main_Page
http://docs.gl/

Тьюториалы:

> OpenGL


http://www.learnopengl.com/
https://code.google.com/p/gl33lessons/
https://triplepointfive.github.io/ogltutor/index.html
http://opengl-tutorial.blogspot.ru/
http://www.opengl-tutorial.org/
http://www.tomdalling.com/blog/category/modern-opengl/
http://www.lighthouse3d.com/tutorials/glsl-tutorial/glsl-core-tutorial-index/
https://en.wikibooks.org/wiki/Category:OpenGL_Programming

> Математика


http://www.rossprogrammproduct.com/translations/Matrix and Quaternion FAQ.htm
http://www.gamedev.ru/code/articles/faq_matrix_quat
http://www.gamedev.ru/code/articles/?id=4215

Библиотеки:

> Контекст


https://www.libsdl.org/
http://www.glfw.org/
http://www.sfml-dev.org/

> Загрузка текстур


https://www.libsdl.org/projects/SDL_image/
https://github.com/nothings/stb
http://gli.g-truc.net/0.7.0/index.html

> Математика


http://glm.g-truc.net/0.9.7/index.html

> Расширения


http://glew.sourceforge.net/

Книги:

> OpenGL


http://rutracker.org/forum/viewtopic.php?t=5047442 - Superbibile 7 (вышла летом)
http://www.amazon.com/OpenGL-Shading-Language-Cookbook-Second/dp/1782167021/
http://www.amazon.com/OpenGL-Programming-Guide-Official-Learning/dp/0321773039/

> Математика


http://sernam.ru/book_mm3d.php
http://www.amazon.com/Math-Primer-Graphics-Game-Development/dp/1568817231
http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Edition/dp/1435458869

Полезные ссылки:

http://tfc.duke.free.fr/
http://tfpsly.free.fr/bookmarks.html
https://www.youtube.com/user/BSVino/playlists
https://www.youtube.com/user/thebennybox/playlists
# OP 2 195366
Какие-то остальные ссылки: полезные книжки по комп. графике, какие-то полезные исходники/библиотеки, статьи, презентации и прочее - думаю стоит добавлять по ходу треда.
В шапке, на мой взгляд, должна быть общая информация без какой-то конкретизации.
3 195368
Насколько я понимаю, все серьезные геймдевелоперы перевелись, тред создан зря.
Но если нет, то такой вопрос: какую версию используете на коммерческих проектах? Я вот сижу на 3.2 и думаю — не слишком ли жирно? Алсо, на говнокарты от интел уже завезли нормальные драйвера?
# OP 4 195369
>>195368

> Я вот сижу на 3.2 и думаю — не слишком ли жирно?


А может быть наоборот?
3.2 вышел 6 лет назад.
5 195377
>>195369

>6 лет назад


Да кажись вообще 7-8. Но моя стационарная пека больше не поддерживает. При этом комфортно играю на ней в игры до 2011 включительно на средне-высоких. Среди новых ААА игр с йоба графонием довольно мало годных, на мой взгляд, так что еще пару лет можно не апгрейдить. Я к тому, что среди ца, людей с такой же точкой зрения может быть довольно большой процент, только пеку они купили не в 2008или 2009, не помню, ка к я, а на год раньше.
sage 6 195378
>>195365 (OP)
Вот выкатят Vulkan, и OpenGL станет legacy весь.
7 195381
>>195378
С хуя ли? В нем обратная совместимость будет?
8 195389
Поясните, когда надо использовать GL_DYNAMIC_DRAW?
9 195390
>>195381

> В нем обратная совместимость будет?


НЕ-БУ-ДЕТ
>>195378

> Вот выкатят Vulkan, и OpenGL станет legacy весь.


Для каких-то мегасложных вещей, игре те же, вполне себе да.
А для простого будет хватать и старого ogl'a.
61 Кб, 1366x768
11 195403
Перекачусь-ка я сюда. Пытаюсь пилить движок на с++ сразу под браузеры. Хочу сказать, что Emscripten пока что довольно сырая штука. В GLFW половина функций не работает. Наверное перепишу под GLUT.

Сегодня весь день пытаюсь запилить pointer lock. Пока работает только в полноэкранном режиме. И glfwSetMousePos не работает, видимо, придётся обрабатывать событие mouse move (на десктопе я привык просто получать координаты в цикле и ставить их в середину окна, естественно с выключенным GLFW_MOUSE_CURSOR)
12 195421
>>195403

> Пытаюсь пилить движок на с++ сразу под браузеры


И в чём профит?
13 195425
>>195421
На десктопе мне всё давно известно. Портировать готовый браузерный код на десктоп намного легче. Этим я займусь совсем скоро, когда смогу в браузере хотя бы просто БРОДИТЬ по миру.
14 195428
>>195425
Чет я не понял, ты пишешь дектопный код на с++, потом переводишь его в жс с помощью эмскриптен, а потом будешь назад переводить в с++?
15 195436
>>195428
Браузерный компилируется emscripten'ом, десктопный компилируется GCC.

Я пишу сразу браузерный код. Когда освоюсь в нём, сделаю порт на декстоп - потребуется не больше, чем пара #ifdef (например, в Emscripten для основного цикла есть своя функция, а десктопном варианте будет стандартный while (running) { ... }).

Например, сейчас я выяснил, что GLFW не очень хорошо поддерживается емскриптеном. Скорее всего перепишу на [free]GLUT/SDL. Не придётся делать это потом, когда будет уже много кода.
16 195442
>>195403
А ты какую версию glfw юзаешь?
У меня нету функции

> glfwSetMousePos


но есть

> glfwSetCursorPos

17 195446
>>195442
Вторую. Третья не работает, опять же, хотя поддержка есть.

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

Придётся как-то преобразовывать абсолютные координаты захваченного курсора (они могу расти бесконечно) в координаты относительно последней обработки. Пошёл смотреть исходники всяких движков, портированных на webgl
18 195452
>>195446
Всё, решение найдено. Надо обрабатывать событие HTML mousemove (через API эмскриптена). Там есть movementX и movementY, содержащие значение относительно предыдущего такого события
20 195492
Поясните пожалуйста. Есть у меня 3д координаты фигуры.
Я умножаю каждую вершину(допустим, без шейдеров), как в обычном пайплайне, на матрицы. Scale->Rotate->Translate->View->Projection.
В итоге имею 4вектор, в котором последняя координата - флаг.
Теперь я должен рисовать эту вершину, используя первый и второй элемент(Х и Y)? Получается, третий элемент вообще не используется теперь?
21 195499
>>195492
Четвёртая координата - это глубина. Используется для отсечения невидимых поверхностей. Пока что автоматически, вручную ты будешь ей оперировать, например, при реализации прозрачности.

По поводу матриц - посмотри https://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_05
22 195506
>>195492
Вообще, ты не прав. После умножения вершины на матрицы модели, вида и проекции у тебя по прежнему вектор положения в трёхмерном пространстве, только уже относительно камеры. Используя 3 координаты и глубину видеокарта уже рассчитывает положение на экране.

Матрица проекции отвечает, например, за перспективу. Более удалённые от камеры точки сближаются. Точно не скажу, какая это матричная операция, можешь глянуть код функций перспективы: https://github.com/g-truc/glm/blob/master/glm/gtc/matrix_transform.inl#L211-L399
23 195516
>>195499
>>195506
Таки на счёт четвёртой координаты яя ошибся
http://stackoverflow.com/questions/2422750/in-opengl-vertex-shaders-what-is-w-and-why-do-i-divide-by-it
Кажется, в прикреплённом треде тебе правильно ответили.
24 195519
Народ, поясните за это дерьмо
Установил себе вижуал студио, попытался в нём запилить лабораторку из универа - нихуя опенгл не пашет.
Попытался запилить на Qt - та же хуйня
Ругается или на библиотеки, или я даже хуй знает на что

Что там надо поставить чтоб оно нормально блядь работало без всяких выебонов?
25 195524
>>195519

>Что там надо поставить чтоб оно нормально блядь работало без всяких выебонов?


Debian
147 Кб, 636x657
26 195527
>>195519

> попытался в нём запилить лабораторку из универа - нихуя опенгл не пашет


Что у тебя там?
27 195535
>>195527
там всё на хохляцком
в двух словах - треугольник, у которого цвета меняются и идут градиентом от одного угла к другому (разноцветный треугольник)
28 195536
>>195535
это типа самая первая, самая примитивная лаба

через месяц сдавать ему курсач - свою игру
а не только не совсем понимаю как её сделать, так ещё тупо и возможности нет, пиздец какой-то а не предмет
29 195539
>>195535
>>195536
Я отпишусь по позже.
Не ссы.
30 195547
>>195519

>нихуя опенгл не пашет


Каким образом не пашет? Вкидывай с++-код, шейдеры. Еще можешь попытать счастья в /pr, он побыстрее будет.
31 195556
Наконец-то новый тред
32 195576
Пацаны, а вызывать функции опенгла можно только с того треда, который создал контекст, или как?
33 195586
>>195576
Утверждается, что можно в одном треде контекст отпустить, в другом принять и рисовать. Но что-то с такой системой заморачиваться неохота, даже для теста.
34 195589
>>195368

>все серьезные геймдевелоперы перевелись


Ты хотел сказать движкописатели? Серьёзные геймдевелоперы делают игры.
74 Кб, 1366x768
35 195619
Подскажите по поводу выделения памяти под массивы вершин. Добавил в сцену поддержку нескольких объектов. Все они хранят вершины в одном массиве. При добавлении вершин в массив хочу увеличивать его realloc'ом. Вроде как должно избавить от фрагментации памяти, да и на видеокарту так эффективнее отправляется. Но меня беспокоит скорость перемещения данных при realloc'е.

Массив элементов для каждого объекта пока отдельный, потому что я не нашёл, как можно отрисовать только несколько элементов из массива. Это вообще возможно?

В целом, подскажите, как лучше выделять память и хранить эти данные.
36 195620
>>195619
Нахуя в одном массиве-то? Байтоеб мамкин?
37 195623
>>195620
Я же написал

>Вроде как должно избавить от фрагментации памяти, да и на видеокарту так эффективнее отправляется.


Да чего эти массивы, по-твоему, придумали?
38 195652
>>195619
Какая версия опенгл?
39 195707
>>195623
Я и говорю байтоеб. Между тобой и железом еще сидит драйвер, со своими понятиями. Вот ты думаешь дал ему указатель на данные в ram и они потекли по шине в vram? Нихуя. Пока не скажешь glFinish или SwapBuffers, драйвер имеет право курить бамбук. Все зависит от реализации.
40 195715
>>195619
Ты ебанулся? Для каждого объекта сделай свой массив вершин. Чего байты ебёшь-то.
32 Кб, 600x399
41 195718
ОБЪЯСНИТЕ, МНЕ, БЛЯДЬ, МОЛЮ!!! ПОЧЕМУ ФУНКЦИЯ GLSL noise1 ВСЕГДА(!)АБСОЛЮТНО ВСЕГДА ЁБ ЕЁ МАТЬ(!!!!!!) ВОЗВРАЩАЕТ 0??????????? ЭТО ЖЕ ШУМ, ОН ДОЛЖЕН БЫТЬ РАЗНЫМ, ПИЗДЕЦ КАРОЧЕ! КАК СДЕЛАТЬ?????
42 195724
>>195718
пссц, юнити-дибил, не хочешь САМ РУКАМИ КОД ПОПИСАТЬ! Её просто еще не реализовали.
43 195728
>>195718
На примере перлин нойза из флэша помню, что в перлин нойз нужно передавать любое число, для целей рандома. Возможно у тебя похожая ситуация и тебе надо в какую-то глобальную переменную записывать какое-то псевдо-случайное число.
44 195729
>>195724
Что значит не реализовали?
https://www.opengl.org/sdk/docs/man/html/noise.xhtml
Где тут хоть 1 слово о том, что её не реализовали?
45 195731
>>195728
У меня есть переменная, которая содержит в себе прошедшее с запуска программы время. Она может подойти как параметр. Осталось передать его в функцию, которая не работает.
46 195765
>>195729
Это спецификация. Кто как хочет так её и реализовывает. Не хочет реализовывать нойз - не реализует. Вендор железа сам решает и никому не отчитывается.
47 195766
>>195765
Вендор обязан реализовать то что входит в объявленную им поддерживаемой версию стандарта.
48 195796
а есть на opengl какой-то онлайн компилятор?
53 Кб, 1366x768
49 195806
>>195652
WebGL (считай, что OpenGL ES 2.0).

>>195707
>>195715
Ок.
75 Кб, 640x1136
50 195811
>>195796
Компилятор чего?
51 195818
>>195766
Тащемта, это в директиксе так, а огл у каждого свой. Вспомни те же расширения из времён 1.1.
52 195828
>>195818
Правильно, а вспомни еще их префиксы и понятие core since.
53 195846
>>195766

> Вендор обязан реализовать то что входит в объявленную им поддерживаемой версию стандарта.


Пидарашьи вопли мамкиног опетуха. Иди и реализовывай. Я уверен, что ты даже на стажера в н-видиа не пройдешь.
54 195847
>>195619
VAO для кого придумали, епта?
55 195848
>>195818
Расширения есть до сих пор. Таким образом, новые фичи попадают в опен гл куда раньше, чем в директикс.

>>195846
Но он все правильно сказал. Не понимаю, с чего тебе так пердак разворотило.

>>195847

>2015


>VAO

56 195851
>>195847
Вроде и без него нормально получилось. Его нет в базе WebGL, только в расширении. Какие от него профиты?
57 195852
>>195846
Иначе вендор пиздит про поддерживаемую версию. Потому что версии определяются в основном именно принятием в них расширений. Сверх версии - пожалуйста, пили свои glYOBAStreamSparsedDataArrayBufferPointers.

В директхуе все просто? А сколько не-железячников в нем участвует? Точнее если не мелкомягкие, то кто?
58 195854
>>195852
Очередной типичный СНГ-максимализм из ничего. Вендор никому ничего не должен. И как может реализовать стандарт, так и реализовывает. Придумывая свои ext_ и прочее. Он тебе ничего не должен. Поэтому у нас и нет нихуя. Что всякие пидарасы вроде тебя не могут в рационализм. А хотят всё и сразу. НИ ОДНА ВИДЕОКАРТА НИКОГДА НЕ ПОДДЕРЖИВАЛА ВЕСЬ ВТАНДАРТ! НИКОГДА!

>>195848

> Но он все правильно сказал.


Нет.
59 195857
>>195854
Но тогда это означает, что оборудование тупо не соответствует стандарту.
Вот представь себе, ты купил мышку, вполне норм на вид, заводится с обычным HID-драйвером. А взяв в руку понимаешь, что у нее оси перепутаны. Кагбе на 90 градусов свернуты. Лезешь на сайт производителя, драйвер оттуда ставишь, получаешь тупые свистоперделки "100500 функций по нажатию на среднюю клавишу при ритмичном пошатывании колесика и попердывании в микрофон", а с осями проблема никуда не девается. Что это такое? КО-КО-КО-ПРОИЗВОДИТЕЛЬ-МНЕ-НИХУЯ-НЕ-ОБЯЗАН-БУДУ-РАБОТАТЬ-ТАК или производитель таки налажал?
Реально у меня такая мышка лежит, и к сожалению была распакована слишком поздно, чтоб вернуть в магазин.

Подозреваю, что ты в основном насиловал встроенные видеокарты в ноутах, там риальне всякие уродцы бывают, чего только стоит вообще идея разделяемой оперативки. А одно время даже на каких-то игорях писали "mobile-видеокарты не поддерживаются".
60 195862
>>195851

>нет в базе


Его самому запилить - это полсотни строчек кода.

>>195848
Что не так с VAO?
18 Кб, 300x400
61 195865
>>195857

> оборудование тупо не соответствует стандарту


Манямирок абосраташа-юнити-петуха лопнул. Если я тебе скажу, что на консолях еще на asm пишут и железо гавняное, что приходится извращаться еще так. И на боксе и на пс3. Всё консольное железо и видеокарты - полное гавно. Было есть и будет.
_Boris Batkin at Naughty Dog_
62 195867
>>195865
Не буду сомневаться, что писать под сосноли процесс в принципе изъебистый и еще наполовину анально огороженный вендорами. Изъебистость его в основном вызвана тем, что 1) у каждой сосноли свой фиксированный набор железа, и если девелопер собирается выпускать игоря сразу на всем что под руку попадется, то ебля его кодомакак с кучей железа где у каждого гпу свои тараканы разумеется обеспечена; 2) желание запилить графон круче чем вчера, но на том же говне мамонта, что и позавчера, и это пожалуй основной генератор секса.
63 195874
>>195446
Ебать ты обосранец. Думаешь, кто-то будет играть в твоё говно в браузере? Нахуй тащить в браузер неприспособленные для этого вещи? Может, мне насрать тебе на лицо потому, что сейчас модно так делать среди тупорылых макак? Пиши нормальный, оптимизированный код под десктоп. Нет блядь, я сожру гигабайты оперативки и высру говно с графоном хуже, чем в 1997 году, при этом это говно будет тормозить сильнее третьего крузиса, но зато ЕБАТЬ Я МОДНЫЙ ДЕВЕЛОПЕР У МАМЫ, ТРИДЕ, В БРАУЗЕРЕ, СМАТРИТИ ВСЕ!!!11
Веб зашёл в тупик в тот момент, когда js-макаки внезпно решили, что они тоже у мам программисты и устроили пир во время чумы, запихивая в браузер абсолютно всё говно, не приспособленное для этого.
36 Кб, 600x400
64 195876
>>195619
Ты ебанутый? Что ты там оптимизируешь, блядь? Очнись, нахуй, твой говнокод транслируется в жс-дрисню, это говно по определению не может быстро работать, там нечего оптимизировать.
65 195885
>>195874
Луддит сука штоле? Вебгл есть, значит кому то это нужно. Само 3д в браузере тормозит не больше чем на десктопе, узкое место это жс, т.е. физика, а она не нужна для браузеродрочилен. В итоге получаем идеальную мультиплатформу, не нужна ни анальная жава, ни моно, ни анус твоей мамки - только браузер, а он стоит на любой микроволновке и на радость детям выводит трехмерные кубы прямо по соседству с вкладкой порнотьюба. Прогресс не остановить, мудак ты тупой.
66 195887
>>195885

>трехмерные кубы


>прогресс


Проснись, ты обосрался.
Массивы вершин, текстуры хранить/сортировать/обновлять ты где собрался? Не в тормозной js-дрисне? Или ты думаешь, что все данные сразу же волшебным образом попадут в гпу?
Это говно не нужно никому, кроме мамкиных отрисовщиков кубов и цветных треугольников, и прогресса в этом не больше, чем в пожирании говна только потому, что кто-то заикнулся, что так модно.
67 195891
>>195887
Разуй глаза, в соседнем треде обсуждают уе4 где сцена БЕЗ ВСЕГО дает 10 фпс и это считается нормальным, плюсы ёба, безграничные возможности. А человек с мозгами сможет написать быстрый код и на жс. Никто не говорит что браузер не потянет крузис 4, такие игры для веба нет смысла пилить. Зато для индипараши как замена флешу - то что надо. Пиздуй на порталы популярных вебжл либ и смотри примеры, диванный кармак блядь, там отнюдь не одни кубы показывают и нихуя не тормозит.
68 195894
>>195874

>я сожру гигабайты оперативки


>говно будет тормозить сильнее третьего крузиса


>>195876

>твой говнокод транслируется в жс-дрисню, это говно по определению не может быстро работать


Сыкнул на вас, на таких опущей, что в 2015 году не слышали про Asm.js и WebAssembly
69 195897
>>195894
Спустил тебе на лицо, а потом в туза выебал.
Что только не придумают скриптомакаки, лишь бы не учить нормальные языки и при этом ощущать себя нормальными программистами. Ассемблер в браузере - это как подрочить, стоя на одной руке вверх ногами, и кончить себе в рот при этом. Круто, конечно, молодцы ребята, но нахуй никому не нужно, кроме пары конченых извращенцев.
70 195898
>>195885

>Само 3д в браузере тормозит не больше чем на десктопе, узкое место это жс, т.е. физика, а она не нужна для браузеродрочилен.


Кстати, физику переносят на GPU с помощью шейдеров.

>Никто не говорит что браузер потянет крузис 4, такие игры для веба нет смысла пилить.


Вопрос времени.
71 195899
>>195897
Что же тогда в твоем представлении жаба?
72 195900
>>195897

>Ассемблер в браузере


>+ даже не понял, что я пишу не на JS


ты очень тупой
73 195904
>>195897
Тащемта жаваскрипт уже давно комилируется всеми браузерами на лету в нативный код. В противном случае у тебя бы даже ютуб не запустился.
Жаваскрипт код скомпилированный Emscripten работает в некоторых браузерах всего в 2 раза медленее С++ кода и быстрее жавы.
74 195940
>>195900
Я НА АСЕМБЛИРИ ПИШУ Я КРУТОЙ И УМНЫЙ ПРАГРАМИСТ ПАНЯТНА?
Да-да, мы все тебя услышали, можешь больше не кукарекать.
75 195954
>>195862

>Что не так с VAO?


Я перефразирую:

>2015


>держать геометрию в клиентскиой памяти

76 195958
>>195811
кода
77 195967
>>195964
НА АСМ.ЖС КАРОЧИ В БРАУЗИРЕ ПИШИШЬ И ВСЁ В ГПУ ХРОНИШ ПОНИЛ? АПИРАТИВКА ВОЩЕ НЕ РАСХОДУЕТСЯ НИТАРМАЗИТ 200 ФПС ВЫДАЁТ КАК В КРУЗИСЕ
209 Кб, 700x525
78 195968
>>195904
Пиздец ты тупой.
Иногда даже страшно становится от того, какой беспросветный пиздец творится в головах js-макак.
Конечно, ютуб работает именно на джаваскрипте, который на лету компилируется в машинные коды и проигрывает тебе видео. Не сомневайся. Даже не задумывайся о том, что сервер шлёт сырые данные, которые затем проигрываются ядром браузера с помощью кодеков, написанных на сишке. Жаваскрипт работает медленнее всего в два раза, не сомневайся. Даже не задумывайся о том, как оно всё устроено внутри, как работает компьютер, зачем нужен кеш процессора и что такое браузер, что такое блокирующий/неблокирующий ввод/вывод, какие вообще могут быть узкие места у программы. Вообще старайся не думать, думать вредно, пусть разработчики браузера за тебя думают, они умные дяди. Просто пиши на жаваскрипте, думать не надо.
79 195975
>>195964
Если используешь OpenGL 3.0+, то гугли vertex buffer object, а если нет, то страдай нет, правда, зачем использовать старые версии?
80 195979
Тем временем подведу итоги треда:

>Пидарашьи вопли мамкиног опетуха


>Очередной типичный СНГ-максимализм из ничего


>Манямирок абосраташа-юнити-петуха лопнул


>Ебать ты обосранец


>Ты ебанутый?


>Проснись, ты обосрался


>Сыкнул на вас, на таких опущей


>Спустил тебе на лицо, а потом в туза выебал


>ты очень тупой


>Пиздец ты тупой



Похоже, в гд пополнение порваток.
81 195987
>>195979
Сосач может в конструктивную беседу, но не может не перемешать ее с говном и хуями.
82 196017
>>195998
Проиграл на всю хату.
83 196054
>>195998
Так и будет.
84 196112
>>195979

> ОБЪЯСНИТЕ, МНЕ, БЛЯДЬ, МОЛЮ


> at Naughty Dog


> оборудование тупо не соответствует стандарту

sage 85 196126
>>195718
Ее никто не реализует.
О тебе заботятся, дурилка глупая. Чтобы ты не падал в обморок когда, не только текстуры везде по разному накладываются, но и нойз имеет разную реализацию и хитрые баги.
Сделой его сам, это просто.
86 196144
>>195998
ФПС 20 надо чтоб было.
87 196152
>>196147
Почему бы сразу через webgl пилить, а не ебаться?
88 196156
>>196154
С с++ переводить в джс.
89 196173
>>196156
Я вообще-то программист, а не макака. Пишу на С++, оптимизирую всё, чтобы быстро работало. На жс нельзя оптимизировать.
90 196175
>>196173

>оптимизирует жс-дрисню


Ебать ты даун. Обоссал тебе лицо.
91 196178
>>196173
То есть ты серьезно думаешь, что если ты напишешь на С++, а потом переведешь в жс, то оно будет работать быстрее, чем если б ты сразу на жс писал?
92 196179
>>196173
А мог бы игры делать
230 Кб, 1366x768
93 196180
>>196156
В ams.js
>>196178
Так-то да
>>196173
JS можно оптимизировать. Можно даже asm.js-код вручную писать. Но это очень муторно. Вот пример asm.js кода: https://gist.github.com/jeresig/5293608 Как на ассемблере писать вручную. Вдобавок, в дальнейшем, если WebAssembly победит asm.js, можно будет его использовать как целевую платформу - код не изменится
>>196179
Неинтересно
94 196182
>>196180

>неинтересно


У тебя ошибка в слове не умею
95 196184
>>196182
Несложно было догадаться по приложенному скрину. Надеюсь научиться моделлить и рисовать в процессе.
29 Кб, 500x373
96 196186
>>196180

>Вот пример asm.js кода


>do {...} while (0)


вот это оптимизация
97 196187
>>196184
Учиться делать игры с написания движка, это как учиться писать книги создавая печатный станок. Ты уж выбери что-то одно
98 196188
>>196187
А давай я буду делать то, что мне нравится? Как тебе?
>>196186
Это подсказка компилятору. Почитай ты уже про asm.js, Сёма. Весь тред своими глупыми догадками засрал.
99 196190
>>196188
Давай ты съебешь в /pr/
100 196191
>>196180
Ну будет твоя параша компилироваться сразу в псевдо-байткод, охуеть теперь. Получишь speedup в 20-30%. Учитывая то, что оно все еще запускается на виртуальной машине, использует сборщик мусора и т.д., твой движок будет супер тормозным. Это конечно не мое дело, каждый дрочит как хочет, но ты реально долбоеб.
101 196194
>>196191

>asm.js


>компилироваться сразу в псевдо-байткод


>оно все еще запускается на виртуальной машине


>использует сборщик мусора


Твоя тупизна непробиваема
102 196195
>>196194
Лол, это долбоеб еще думает, что у него там реальный ассемблер.
103 196197
>>196195
В последний раз отвечаю тебе, даун, только чтобы у читающих не возникло сомнений в твоей тупизне:
http://asmjs.org/faq.html

>Q. Does the fact that asm.js is JavaScript mean you can't get predictable performance?


A. An ahead-of-time (AOT) compiler for asm.js can generate code with very predictable performance, because validated asm.js code is limited to an extremely restricted subset of JavaScript that provides only strictly-typed integers, floats, arithmetic, function calls, and heap accesses.

>Q. Can asm.js serve as a VM for managed languages, like the JVM or CLR?


A. Right now, asm.js has no direct access to garbage-collected data; an asm.js program can only interact indirectly with external data via numeric handles.
61 Кб, 429x410
104 196199
>>196180

> https://gist.github.com/jeresig/5293608 Как на ассемблере писать вручную.


Это по-твоему ассемблер? Обычный js-код где немного поебывают байты. Могу написать x / 2, а могу x >> 2, но от этого код ассемблером не становится. Раздел где делают игры, я ебал.
105 196201
asm.js это не более чем описание того, как конпелятор emscripten транслирует с++ программы в жаваскрипт.
никакого ассемблера там нет
106 196202
>>196201
поскольку это с++ транслированный в жс, то теоретически можно сделать обратное в жс движке браузера для оптимизации. в этом собственно вся суть
107 196204
>>196197
Ну ты реально конченый чмошник. С твоей же ссылки:

>Q. Is asm.js a new language?


>A. No, it's just (a subset of) JavaScript.



>asm.js code is limited to an extremely restricted subset of JavaScript that provides only strictly-typed integers, floats, arithmetic, function calls, and heap accesses



А если вкратце, то ПСЕВДО-БАЙТКОД. Который потом исполняется на V8 или любом другом интерпретаторе.

Ну и еще:

>Q. What kind of performance benefits can I expect to get with asm.js?


>A. It's early to say, but our preliminary benchmarks of C programs compiled to asm.js are usually within a factor of 2 slowdown over native compilation with clang. We will publish more benchmarks as we collect them.



Короче, удачи с написанием производительного движка, хуесос.
108 196214
>>196204

>А если вкратце, то ПСЕВДО-БАЙТКОД.


какой еще байткот? цитата значит только то, что 99% жаваскрипт функций использовать низзя, иначе это будет "ненастоящий" asm.js. Вот и все.
109 196215
>>196214
Гугли как работают интерпретаторы, и тогда поймешь почему эту хуйня — это типа байткод.
У них даже в факе есть соответствующий вопрос:

>Why don't you specify a bytecode syntax instead of strange JavaScript idioms?

110 196222
>>196215
Их ебанутый фак составлен в аспекте ОЛОЛО МЫ ПРИДУМАЛИ НОВЫЙ ЯЗЫК ДЛЯ ВЕБА.
хотя на самом деле это просто вспомогательная библиотечка для компилятора с++ в жс
90 Кб, 1366x768
111 196245
Пока вы тут срётесь, я начинаю реализовывать направленное освещение. Пока что оно намертво забито в шейдер. Сейчас сделаю получение данных от приложения, запилю класс Light::Sun.
84 Кб, 1366x768
112 196259
Кажется, я не учитываю положение и вращение объекта. Проблема в том, что я не знаю, что передавать в шейдер. Я сначала получаю матрицу модели-вида-проекции всей сцены (относительно камеры), потом для каждого объекта смещаю её, затем поворачиваю. Т.е. как таковой "матрицы обекта" у меня нет, в его методе draw я произвожу операции над глобальной матрицей, а не единичной. Может кто-то подсказать, что в таком случае передавать в шейдер? Может я вообще всё в неправильном порядке делаю? Код: http://pastebin.com/D3Z4wrbd
113 196269
Получается, я освещаю объект так, будто он находится в начале координат и не повёрнут. Значит мне надо умножить нормали на матрицу модели-вида этого обекта?
114 196271
>>196259
Я сейчас немного занят, чтобы копаться в твоем коде, поэтому я просто выкладу как делал я, возможно оно тебе поможет.
И так, матрица которую передаем в шейдер:
m_WVPMatrix = m_projMatrix m_camera->getViewMatrix() m_worldMatrix;
Тут:
- матрица проекции
m_projMatrix = glm::perspective(45.0f, 1.33f, 1.0f, 10.0f);
как и у тебя, походу;
- матрица вида (камеры), считается так
m_viewMatrix = glm::lookAt(m_position, m_target, m_up);
ты, как я понял, крутишь камеру вручную матрицами
- мировая матрица (положение объекта в мире, для каждого объекта своя в отличие от двух первых)
m_worldMatrix = trans_matrix rotZ_matrix rotY_matrix rotX_matrix scale_matrix;
соответственно матрицы из которых она собирается:
--- масштабирование
glm::mat4 scale_matrix = glm::scale(glm::mat4(1.0f), m_scale);
--- поворот
glm::mat4 rotX_matrix = glm::rotate(glm::mat4(1.0f), m_rotation.x, glm::vec3(1.0f, 0.0f, 0.0f));
glm::mat4 rotY_matrix = glm::rotate(glm::mat4(1.0f), m_rotation.y, glm::vec3(0.0f, 1.0f, 0.0f));
glm::mat4 rotZ_matrix = glm::rotate(glm::mat4(1.0f), m_rotation.z, glm::vec3(0.0f, 0.0f, 1.0f));
--- перенос в пространстве
glm::mat4 trans_matrix = glm::translate(glm::mat4(1.0f), m_translate);

Надеюсь, чем нибудь тебе это поможет, удачи тебе анон.
115 196273
>>196271
сука, разметку проебал, короче там где шрифт меняется с обычного на курсив и назад должно быть умножение
116 196275
>>196271
а, думаю что и так очевидно, но на всякий случай - m_scale, m_rotation и m_translate - это glm::vec3 содержащие информацию про масштабирование, поворот и сдвиг объекта по/вокруг осей х, у, z соответственно
82 Кб, 1366x768
117 196290
>>196271
Спасибо! Посмотрев твой код, я понял, что можно вместо translate относительно матрицы MVP сделать translate относительно единичной,а потом MVP умножить на результат (надо бы освежить в памяти теорию по матрицам).

Свет теперь рассчитывается правильно.
118 196308
>>195975
Ебанашка, пойди загугли что такое VAO и зачем его используют.
119 196314
>>196308
Хуесос не знает, что до третьей версии VAO означал совсем другую вещь. Еще ты, наверное, не знаешь, кто по средам твою мамашу поебывает.
120 196342
А есть смысл хранить для каждого объекта матрицу модели-вида вместо позиции, кватерниона и масштабирования?
121 196371
>>196342
Зачем?
122 196617
Начал задумываться над архитектурой движка. Сейчас есть классы Object и Camera, оба наследуются от Transformation - он хранит положение и вращение относительно некоторой начальной точки (сейчас только начало координат, но потом будет возможность указать любой другой transformation, чтобы объекты могли прикреплятьс друк к другу. например, камера позади персонажа).

Непонятный для меня момент - это шейдеры и шейдерные программы. Я уже столкнулся с необходимостью в нескольких шейдерных программах (текстурированные объекты, цветные объекты, интерфейс). К чему должна относиться шейдерная программа? К модели? Как тогда быть с интерфейсом, который моделью являться не будет?

Пока что планирую захардкодить три упомянутые шейдерные программы, реализовать интерфейс, добавить сложности в сцену, и после уже решить. Но буду рад любому совету. Также подскажите несложные движки с хорошим кодом, чтобы посмотреть, как там сделано.
78 Кб, 1366x768
123 196681
Пытаюсь сделать зеркало (большой прямоуольник на скрине) с помощью stencil-буфера. Почему отражённые объекты рисуются и за пределами зеркала? Код рендера: http://pastebin.com/0ZTv5XKJ
sage 124 196682
>>196617
Открой для себя three.js.
125 196685
>>196617
1) берешь готовый. Например Ogre или Cocos2d, godot.
2) Смотришь как сделано там.
Скорее всего ты ничего не поймешь и у тебя выйдет обычной

vector<Object> v;
while(true) { game.input(dt); freach() {v.update(dame, dt); v.render(game, dt);} }
Ты убьешь кэш и у тебя будет 1.5 fps

> Непонятный для меня момент - это шейдеры и шейдерные программы


Это вообще пушка. Самая сложная-пресложная и рискованная часть - непонимат.
126 196692
>>196685

>у тебя будет 1.5 fps


У меня 60 фпс, и то это искуственное ограничение. Что я делаю не так? Не занимаюсь преждевременной оптимизацией?

>рискованная часть


Ты не любитель тестов, да?
127 196701
>>196692
Скрины же. Где скрины?

> Ты не любитель тестов


Ты хотел сказать render sandbox'ов?
128 196702
>>196701
Скринов полон тред. Я к тому, что пока не даже сцены как таковой. Об оптимизации тут и речи быть не может.

>Ты хотел сказать render sandbox'ов?


Я имел ввиду автоматизированное тестирование. Обычно я пишу тесты до кода, но опыта в С++ и в игровых движках у меня мало, и я даже не представляю, как можно их тестировать. Но планирую приступить к написанию тестов как только архитектура более-менее устаканится
129 196711
>>196681
Почему бы не использовать рендер в текстуру?
130 196713
>>196617

>архитектура движка


>классы


>наследование


Лоооол. Просто пушка. Я знал, что ты меня не подведешь.

>Ogre


Кстати, Ogre довольно хуево написан, за остальные не скажу.
131 196714
>>196702

>gamedev


>TDD


Лоол, жги еще.
132 196718
>>196617
Я чайлды сделал так - Transform хранит родителя, при доставании координаты складывает с родительской, и так рекурсивно пока не упрётся в конец дерева.
Для шейдеров/текстур запили объекта материала, как в юниче. Для интерфейса вхардкодь какой-нибудь убершейдер с ползунками, лол.
133 196720
>>196713

>архитектура движка


>классы


>наследование


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

>gamedev


>TDD


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

И таки я вижу применение TDD в геймдеве - например, если стоит задача оптимизировать какое-томесто в движке, то первым делом следует написать тесты производительности (а как иначе ты её замеришь?)
134 196721
>>196720
А как вообще пишутся тесты и как они применяются?
Много слышу о них, но как-то гайда для тупых не нахожу.
135 196722
>>196718

>Я чайлды сделал так - Transform хранит родителя, при доставании координаты складывает с родительской, и так рекурсивно пока не упрётся в конец дерева.


Надеюсь, ты сохраняешь значение, чтобы если у объекта несколько дочерних, для каждого не пересчитывать

>Для шейдеров/текстур запили объекта материала


А в формате md5mesh шейдер указывается для модели. Правда этот формат и не умеет хранить материалы. Так что, наверное, так и сделаю, как ты сказал.
136 196724
>>196617

>К чему должна относиться


У тебя должен быть отдельный класс для какждого чиха. Не делай из движка неперевариваемую вермишель.
137 196725
>>196721
В тестирование на С++ я не вникал. Утилит полно, например, классическая Check. Надо смотреть гайды по конкретному инструменту. А по общем принципам тестирования целые книги есть.
138 196726
>>196724
У мен итак есть класс шейдерной программы (и для шейдера отдельный). Я хотел узнать, какова логика смены шейдерных программ.
140 196744
>>196714
Кстати, где можно почитать что-то внятно аргументированное об этом?
141 196755
>>196685

>убьешь кеш


>пилит движок на джавадрисне


Какой кеш? Там в любом случае будет 2 фпс, когда объектов на сцене будет больше пяти.
79 Кб, 1259x813
142 196756
Посоны, отвлекитесь ненадолго от жарких споров и подскажите, есть ли смысл на десктопе юзать opengl es 2 вместо opengl 2.1?
Пишу на некроноуте, который поддерживает максимум эти версии. Игрушка несложная будет, в 2d, в принципе, много фич мне и не надо. Хочу получить core профиль без deprecated функционала. Как обстоят дела с языком шейдеров у gles 2? Сильно отличается от opengl 2/3? Стоит оно того или нет?
143 196761
>>196756
GLES 2.0 суть то же самое, что GL 4.0 кокрастыке без депрекейтед фич. Все ограничения GLES 2.0 легко обходятся.
GLSL такой же, единственное, что нужно - это писать точность переменных в шейдерах (highp, lowp и т.д), а так никаких отличий.
Единственное, в чём я сомневаюсь - взлетит ли глес2 на винде, ни разу не пробовал ещё.
144 196764
>>196756
Кек. Я ееешку откопал нахаляву, на ней только 1.5 поддерживается. Думаю: принять челендж или нахуй послать.
145 196779
>>196756
А ES запустится на десктопе?
Если нет, то я бы писал на ДХ9.
146 196786
>>196779

>DX9


Для меня кросс-платформа во главе угла, сам под линуксом прогаю. Под шином планирую только компилять шин-версию.
Под линуксом ES работает, видеокарта - встроенная Intel.
>>196761
А я про винду и не задумался даже, под линуксом всё норм взлетело сходу, думал, что и под шином будет норм. Надо будет попробовать.
87 Кб, 1366x768
147 196829
А glViewport - дорогая операция? Можно использовать её на каждый элемент интерфейса прямоугольной формы, или лучше для производительности делать весь интерфейс в одном вьюпорте?
36 Кб, 600x400
148 196835
149 196837
>>196829
Нахуя? Тебе дали трансформейшен матрицу, нет блядь, хочу вьюпорт туда-сюда двигать.
150 196838
>>196829

нет, недорогая, это обычное матричное преобразование
хоть евсь стек матриц преобразованиями забей, производительности похуй
151 196842
>>196837
>>196838
Почему тогда не убрали glViewport из OpenGL ES? Все остальные матричные операции выкинули
152 196843
>>196838
В OpenGL ES нет стека матриц. Там вообще нет матриц
153 196844
>>196842

>Почему тогда не убрали glViewport из OpenGL ES?


Прост шоб был.

>Все остальные матричные операции выкинули


И хорошо. Программируемый пайплайн наше фсё.
93 Кб, 1366x768
154 196863
Сделал прикрепление объектов сцены друг к другу через, добавив произвольную базовую матрицу трансформации объекта. Получил таким образом полноценную камеру третьего лица.
155 196898
>>196863
Слушай, побереги свои отчеты о разработке до следующего раза. Пишешь ты, а стыдно мне.
156 196899
>>196898
Ты че он же на плюсах и ассемблере пишет, ты радоваться должен.
157 196918
>>196761

>взлетит ли глес2 на винде


https://github.com/google/angle
158 197009
Убийца ГТА на подходе! Можно садиться в машину и ездить. Реализм 100% - физика езды на убитом в хлам москвиче присутствует.
159 197012
>>197009
Ну это вообще пушка.
160 197082
>>197009
А что там с освещением и тенями?
161 197128
>>197082
Завезу, когда сделаю скелетную анимацию, ибо сейчас надо разобраться с мешами и обектами - понять, кому какие данные нужны для рендеринга, и на основании этого строить классы и их отношения.

Я вот заметил, что кости скелетной анимации и объекты сцены - суть одно и то же: имеют родительский объект и дочерние, матрицу трансформации относительно родителя и локальную. Стоит ли их делать одной сущностью (или потомками одной сущности)?
162 197187
Подскажите. Пытался писать код в Qt и Вижуале - везде выводит ошибки, мол у меня редист не тот (хотя есть все версии)
26 Кб, 580x346
163 197201
>>197187
Што?
273 Кб, 2557x1109
sage 164 197338
>>195365 (OP)
Бамп нахуй блять.
165 197347
>>197338
Что за унтер там на месте геймдизанера?
166 197351
>>197347
Это отсылка к /gd/
1,6 Мб, 1920x1080
167 197534
Почему код, работающий на моих 3 машинах не работает на других? Сделал подарок бате на день рождения, протестировал у себя и на своём планшете, прогнал через gDEBugger - всё отлично, за исключением deprecated функций. А у бати оно не запускается, пиздец!
gluErrorString охуеть какой информативный метод. Недопустимая операция, вот это да! А почему gDEBugger ничего не ловит? Непонимат.
168 197539
>>197534
Спектр возможных причин очень широк и выловить такую хуйню, судя по моему опыту, очень сложно.
У меня, например, была такая ситуация: в одном месте я вместо glGenVertexArrays написал glCreateVertexArrays, которые совершенно идентичны за исключением того, что последнюю ввели в стандарт только в 4.5 версии. А я таргетил 3.2. Поэтому неудивительно, что почти на всех компах, кроме моего, моя поделка крашилась. И даже тут интересно: мой комп поддерживает только 4.2 версию
169 197543
>>197539
Отправил версию, в которой пишется номер строки, на которой нашлась ошибка. Алсо, нельзя ли настроить gDEBugger, чтобы он проверял совместимость с другими версиями OGL? Было бы здорово.
170 197566
>>197534
Делал бы на WebGL - не было бы такой хуйни
171 197569
>>197566
Охуенный совет, ваще.
172 197580
>>197566
Мой движок ориентирован на десктопы, не буду же я пилить новый движок за 2 дня до батиного праздника.
173 197585
>>197580
Я понимаю. Просто ничего подсказать не могу, вот и выебываюсь.

А вообще, если хочешь, могу глянуть твой код незамыленным взором (запустить вряд ли смогу, у тебя же винда-only?)
174 197598
Ковырял opengl несколько лет назад, сейчас задумался над парой проектов и возник вопрос. Меня интересует исключительно 2d графика в обоих проектах. Стоит ли из-за этого вкурить современный ogl или взять какое-нибудь простое средство уровня sdl/sfml и работать на нём?
175 197601
>>197598

>Стоит ли из-за этого вкурить современный ogl


>или взять какое-нибудь простое средство уровня sdl/sfml


А где связь? sdl/sfml создают тебе окно с контекстом и обрабатывают ввод. А версия gl зависит от того, что поддерживает видеокарта и какие драйвера стоят.
Библиотеку я бы посоветовад glfw. А ogl конечно бери 3.0+, уже не осталось, наверное, компов, которые хотя бы его не поддерживали. Хуле с легаси ебаться
176 197604
>>197601
У сдл/сфмл есть свои упрощенные функции для рендеринга, вот где связь.

>>197598
Начни с одной из двух библиотек. Если возможностей окажется мало, то сверху напишешь свой OpenGL-рендерер и будешь его вызывать. Можешь сразу написать класс-обертку над sdl/sfml-рендерером и делать все через нее, чтобы потом легче было переходить на огл.
177 197643
>>197604
>>197601
>>197598
Ну если 2д то можно попробовать sfml.
Там уже и шейдеры завезены.
https://www.youtube.com/watch?v=K6aAxuIL7h8
178 197741
>>197585
Нет, должен компилироваться везде, где есть libpng, opengl, glew, freeglut и gcc.
179 197745
>>197741
Если тут не хочешь выкладывать, можешь связаться со мной в токсе https://tox.chat/ мой ID: 37C1675B1ECC30BF7C09714E5FCE11DFA998EB3641F9816C1D621BF261DDF85711D3F8AAC9E7
Отпиши тут, если напишешь, на всякий случай
180 198226
Посоны, такая тема. Вот есть дефолтный фреймбуффер в GL, он подгоняется под размер окна. Я пилю игру на некроноуте, и когда окошко развернуто на максимум, начинает неслабо подтормаживать, ФПС падает с 140 до 50. Вопрос - можно ли управлять размером этого фреймбуффера? Например, чтобы высота всегда была 600, а ширина подгонялась под ratio. И чтобы итоговая картинка как бы ресайзилась и подгонялась под окно. Можно ли так сделать?
Использую голый glfw.
181 198228
У бати на ноутбуке программа отваливается на вот этой строчке:
glGenBuffers(1, &this->VBO);
Отваливается с GL_INVALID_OPERATION. У меня на этой строчке она не отваливается. В чём может быть проблема?
182 198231
>>198228
У него старый GL, не поддерживающий VBO?
183 198233
>>198231
Такие есть? И как быть?
184 198235
>>198233
Запросто, если у него старая видеокарта или банально не стоят дрова - может быть доступна только версия 1.1, а VBO появились в 1.5
Если так, то ничем не поможешь, в 1.1 только deprecated функционал, glBegin/glEnd, display lists.
185 198244
>>198235
Там и шейдеров нет небось? Это ж ему весь рендерер переписывать, чтоб под легаси работало
186 198260
>>198233
Посмотри поддерживаемые расширения. Для OGL < 2 должна быть своя функция.
187 198323
Вкатываюсь с вопросом.
Есть некробук eee, с процессором N450. Официально заявлено, что это поддерживает OpenGL 1.5, а glxinfo говорит "Mesa GL 2.1". То есть Mesa мне сэмулирует то, что есть в OpenGL 2.1 на железе, которое в него не может, так? И интересно, на какую глюкавость можно рассчитывать?
188 198324
>>198323
Ну по идее квейк 3 может пойти.
И, наверное, даже дум 3, но не бфг версия.
189 198368
>>198233
С виндой без дров идет софтовый OpenGL 1.1.
190 199028
Поделитесь солнечной системой запиленной на OpenGL
130 Кб, 500x1616
192 199133
http://mrdoob.github.io/three.js/
Кто все эти люди? Для чего они делают проекты с таким-то графонием? Им за это платят? Почему в этом треде нет ни 1 картинки, похожей на какую-нибудь из тех проектов? Да что там этот тред, даже дети из унреал и юнити-тредов не делают ничего такого! Что движет этими людьми, делающими графоний на чистом опенгл под браузеры?
193 199140
>>199039
я исходный код имею ввиду
194 199141
>>199133
Это боги.
196 199156
>>199133
Ну там Сони, еще какая-то хуйня. Да, платят.
197 199165
>>199133
Зашел в одну демку. Кубики и шарики цветные, для 2001 года довольно красиво. Тормозит только сильно.
Зашел во вторую - моментально были отожраны 2гб оперативки, комп вошёл в ступор и завис, пришлось ребутаться.
Ну и нахуй нужно такое 3д в браузере?
2,8 Мб, webm,
800x614
198 199520
Сделал загрузку bsp геометрии с лайтмапами.
Теперь надо столкновения делать.
199 199521
>>199520
Что у тебя с фпсом?
200 199522
>>199521
Это только на записи видео.
Так я выставил ограничение на 60.
201 199530
>>199520
Нашёл проблему.
pvs не хочет нормально считаться и всегда выводит всю геометрию за исключением когда я смотрю на стенку.
202 199605
>>199530
Лал. Мамкин рендерщик чтоли? Какие нахуй фпс? Только миллисекунды. И не больше 3мс на кадр.
40 Кб, 604x453
203 199610
>>199605
Ты даун какой-то.
204 199622
в чём писать?
на вижуал студио нихуя не понятно, на кьютэ ругается на glut какой-то
можно эту херню как-то поставить и чтоб оно без проблем работало, или всё через жопу как всегда?
205 199625
206 199695
ДА БЛЯДЬ НЕ ТОНЕМ
5,8 Мб, webm,
800x713
207 200313
>>199520
>>199530
Наконец-то я починил эту эбалу!
Судя по всему всё дело в системе координат данных: вершин, плоскостей и др.
208 200343
>>200313
Надеюсь хоть не на OpenGL 1.0 пишишь?
209 200512
>>200343
Конечно же нет.
210 200513
>>200512
На DX?
211 200514
>>200513
Тогда зачем я тут сижу? Это же ГЛ тред.
На 3ей версии пилю я.
212 200568
>>200313
Ты специально q3-карты грузишь или это просто пример такой?
213 200577
>>200568
Что значит специально?
Я могу и свои загрузить, вон как выше видео: несколько коробок соединённых проёмами и всё.
А квейковские карты я беру как эталон.
Если они работают правильно и загружаются, то значит я не ошибся.
214 200903
Рисовал треугольники еще на второй версии. Сейчас решил вспомнить молодость и нихуя не понятно. Зачем pushmatrix выпилили, например? Самому теперь эту херню пилить?
215 200913
>>200903
Ссылки на тьюториалы в шапке для кого запилены?
216 200945
DirectX-тред не нашел и прикатился сюда. Можно ли в DX9 раскрашивать Mesh в разные цвета?
16 Кб, 752x446
217 200950
Будущему 3d художнику/гейдизайнеру это знать надо?
218 200955
>>200950
нет конечно
будущий геймдизайнер должен знать дх
219 201250
>>200577
Понял, ты взял q3-формат за эталон.
220 201252
>>200950
Абсолютли нат.
221 201357
>>201250
Ничего другого для хранения геометрии уровня я не придумал и поэтому просто уже воспользовался готовым.
222 201444
>>201357
Яснопонятно. Я бы на твоем месте (хрен когда доберусь даже до такого уровня) попробовал свежий формат карт от Валв. В кишках тот же bsp, но побогаче будет.
223 201703
>>201444
Да bsp это, видимо, структура для хранения данных.
Хочется ещё разобраться с форматом карт в думе 3.
Там уже порталы юзаются, а не заранее рассчитанный pvs.
224 201755
>>195365 (OP)
Тут можно поиграться с белндингом:
http://www.andersriggelsen.dk/glblendfunc.php
225 201814
>>201755
Охуеть, как круто.
Палю годноту быдлу: https://www.shadertoy.com/
1,7 Мб, webm,
1058x892
226 202088
Судя по всему сделал столкновения. Проблема опять была с системой координат.
Теперь надо допилить скольжение вдоль стены, а то сейчас как-будто бы за стенки/пол зацепляешься.
Добавить гравитацию и может быть прыжки.
227 202092
>>202088
Что там такое зеленое промелькнуло в последних кадрах?
228 202099
>>202092
А. Это цвет которым буфер очищаешь.
Я эти "дыры" тоже заметил сразу, особенно когда камеру быстро вращаешь.
Почему так происходит я не могу точно сказать.
Скорее всего из-за того, что процессор не может достаточно быстро отсылать команды видеокарте чтобы та всегда была нагружена и из-за этого могут быть такие дыры.
Думаю можно решить или как-то сгладить этот косяк тем, что я буду запоминать в каком листе дерева я был на предыдущем кадре и при вычисления новой позиции я будут сравнивать со старой.
Если они совпадают то и считать видимость заново не имеет смысла.
229 202102
>>202099
То есть у тебя некий "список видимости" строится асинхронно?
230 202103
>>202102

> То есть у тебя некий "список видимости" строится асинхронно?


Да, только параллелизма у меня нету. Я в нём пока не разбираюсь.
http://graphics.cs.brown.edu/games/quake/quake3.html#VisFindCluster
231 202115
>>202103
Мда, вот это, как мне кажется, плохо. А сколько времени уходит на построение? Может не так уж и дорого каждый кадр его делать? Да и обходились же как-то одним потоком раньше.
232 202118
>>202115

> А сколько времени уходит на построение? Может не так уж и дорого каждый кадр его делать? Да и обходились же как-то одним потоком раньше.


Всё происходит крайне быстро.
Я имел ввиду то, что видеокарта работает гораздо быстрее процессора и из-за этого он не может за ней угнаться.
233 202176
>>202088
Как пилить BSP уровни? Только в хаммере? Блендер не может их экспортить? Всегда загружал octree и в хуй не дул, а тут такие возможности! Тоже хочу BSP. И как у этого формата с открытыми большими пространствами? Нужно будет подгружать отдельные куски, как в первом полураспаде?
183 Кб, 424x582
234 202181
>>202176

> Как пилить BSP уровни?


Я пилю в пикрелейтед.
Мне понравился больше чем gtkradiant.
Потом через q3map2 пропускаю карту:
https://en.wikibooks.org/wiki/Q3Map2

> Блендер не может их экспортить?


Вот есть скрипт для Блендера, но он для карт первого квейка.
https://developer.blender.org/T35778

> И как у этого формата с открытыми большими пространствами?


Наверное не особо. То есть ГТА на таком не запилить. Он для закрытых пространств.

> Нужно будет подгружать отдельные куски, как в первом полураспаде?


Судя по всему да.
235 202378
Ещё есть идея добавить поддержку pk3 архивов.
Я смотрел некоторый код.
Выглядит довольно просто.
236 203803
ребята, помогите пожалуйста
есть солнечная система:
http://pastebin.com/je0TTAPP

помогите создать +2 планеты (любые)

в коде там типа солнце, земля и луна, они крутятся по оси вокруг солнца
237 203806
>>203803

> помогите создать +2 планеты (любые)


Ну так у тебя уже есть Земля.
Добавь Марс, например, но с другими параметрами.
В чём проблема?
1,6 Мб, webm,
1042x858
238 203809
Добавил вещи (пока 3 штуки) и анимацию оружия.
239 203834
>>203806
я когда что-то добавляю - у меня только луна пропадает и всё :(
240 203836
>>203809
Двиг опенсорц?
241 203837
>>203836
В смысле? Это я сам делаю, но исходники пока никуда не выкладывал.
242 203840
>>203809
Зочем спрайты постоянного размера?
243 203841
>>203840
Они у меня наоборот уменьшаются когда я к ним приближаюсь.
Я с биллбордами проебался дня два и оставил их так.
Потом поправлю.
244 203846
>>203841
а можешь мне с солнечной системой помочь?
тебе эт наверное как два пальца обосцать
245 203848
>>203846
Иди учи gl3, а про старые версии забудь.
246 203849
>>203848
мне эту солнечную систему в понедельник сдать и я до конца своей жизни смогу об этом больше не вспоминать
247 203850
>>203849

> мне эту солнечную систему в понедельник сдать и я до конца своей жизни смогу об этом больше не вспоминать


Ничем помочь не могу.
248 203853
>>203850
кто бы сомневался, лол
249 203854
>>203853
такие посылаторы с их "иди учи %random_lang%" никогда ни с чем помочь не могут, кроме как давать глупые советы)
251 203862
>>203861
Да, я смотрел это, но увы у меня ничего не вышло.
В будущем хочу попробовать через геометрический шейдер их генерировать.
https://stackoverflow.com/questions/8608844/resizing-point-sprites-based-on-distance-from-the-camera
1,9 Мб, webm,
972x790
253 203978
Хенда хох!
254 203990
>>203978
тебе нужно сделать эффект выстрела из дробовика и более плавную анимацию у бота после выстрела
255 204000
>>203990
Ноу щит шерлок!
249 Кб, 1010x762
256 204005
Аноны, в универе предложили несколько тем, связанных с рендерингом. Некоторые из них кратко: запилить сглаживание для объемной визуализации (3д-текстура); антиалясинг для depth peeling; исследовать инструментарий или запилить свой для работы с блоком шейдеров.
Для меня интересно разобраться в этой теме, но я пока крайне поверхностно шарю в этом.
Вопрос в том, с чего начать изучение рендеринга? Если я просто научусь работать с OpenGL по туториалам, то хватит ли мне знаний, чтобы уверенно разбираться в этом и нормально запилить задания? Или нужно более глубокие знания OpenGL? Или вообще стоит начать с каких-то вообще азов рендеринга? Если так, то какие ресурсы или книги можете посоветовать для этого?
257 204010
>>204005
Хера се у вас универ, я прям завидую.
Насчет изучения рендеринга, то я бы посоветовал начать с изучения rendering pipeline (можно даже начать со статьи в википедии https://en.wikipedia.org/wiki/Graphics_pipeline, и дальше по ссылкам). И параллельно делай туториалы, да. И параллельно читай спецификации (например OpenGL https://www.opengl.org/registry/doc/glspec43.core.20120806.pdf . Да, спецификации написаны довольно сложным языком, но если сможешь осилить и понять, что там написано, то это будет громадный бонус). Также учи матан: матрицы, векторы, вот это все.
По темам, гугли whitepapers: много умного народа уже наверняка глубоко исследовала эти темы, так что сначала полезно изучить все достижения в этой области, прежде чем пилить свой велосипед.
258 204012
>>204005

> Если я просто научусь работать с OpenGL по туториалам, то хватит ли мне знаний, чтобы уверенно разбираться в этом



Зависит от твоих познаний в математике и (что куда более важно) умении её применять.
259 204015
>>204005
На Хабре был цикл статей "Пилим свой ОпенЖыЭль", погугли.
260 204036
>>204010
Спасибо за инфу, буду изучать.

>>204012
Ну матан, линал на уровне первого курса знаю в принципе; если что-то дополнительное потребуется, то по ходу дела, думаю, раскурю.

>>204015
Это http://habrahabr.ru/post/248153/ ? Обзорно просматривал как-то, но думаю теперь подробнее разобраться и закодить все самостоятельно.
262 204968
>>204945
https://www.youtube.com/watch?v=HQYsFshbkYw
Слишком много лишнего. Это гораздо шустрее.
263 204969
>>204968
А, я в глаза долблюсь, тред про OpenGL.
14 Кб, 992x694
264 204995
Аноны, поясните за кубы. Почему когда я делаю их порядком тысячи, начинает тормозить? А еще где взять пример нормального управления камерой?

http://pastebin.com/riYEtR8J

А еще, что бы изменить размеры куба, надо же вершины менять? Тогда меняется VAO, но почему говорят, что его менять не надо?
265 205025
>>204995
Потому что VAO и должен быть фиксированный, размеры куба нужно менять матрицами преобразований.

Если у тебя тысяча VAO для тысячи кубов - неудивительно, что они тормозят.
266 205030
>>204995

> Почему когда я делаю их порядком тысячи, начинает тормозить?


Юзай инстансинг.

> А еще, что бы изменить размеры куба, надо же вершины менять?


У каждого куба есть матрица модели.
Там ты можешь через неё менять размер, угол поворота и др.
268 207309
>>207300
Первая и вторая ссылки вроде норм.
Я по этому начал изучать: http://www.learnopengl.com/
Там и про сборку библиотек написано, и про пайплайн с шейдерами написано, и за математику вроде годно поясняется, и в конце уроков даже небольшие упражнения на закрепление материала есть.
269 207310
>>207309
Спасибо за ссылку, бро. Наверное, это лучший вариант.
270 208190
Я щас чота пиздану, тока сильно не бейте - Как сделать освещение P.T. в opengl/glsl? Чот один примитив находится в уроках, а нужен направлющий толчок.
271 208314
>>205025
>>205030

Спасибо. Теперь все работает отлично.
Получается для каждого класса я буду делать свой VAO? Типа для куба, треугольника, и.т.д?

А еще насчет текстуры. Почему-то мои кубы просто игнорят ее бинд. Я же должен для каждого куба бинд делать?
272 208360
>>208314

> Я же должен для каждого куба бинд делать?


Оно несколько иначе работает.
Биндишь текстуру и рисуешь свои кубы.
То есть текстура биндится один раз в определённый слот я про glActiveTexture перед отрисовкой.

> Получается для каждого класса я буду делать свой VAO? Типа для куба, треугольника, и.т.д?


Не. VAO помогает тебе устанавливать атрибуты для рисования glEnableVertexAttribArray, glVertexAttribPointer.
То есть есть смысл именно в том, что ты объединяешь при помощи этого VAO меши с похожими атрибутами.
273 208423
>>208190
Там по идее PBR+GI, дико комплексная система. Простым glsl не обойтись.
274 208500
>>208423

>pbr


Это ты о photorealistic based render?

>gi


А это что?
275 208560
>>208190

> освещение P.T.


Там дохера всего. Если брать только core, то это physics based shading + global illumination. Остальное уже всякие SSAO и прочее. Если ты не работал и не знаешь, как обстоят дела с артом в ААА на западе, то я тебе поясню: шейдера и постэффекты делают художники, а не программисты. Их не копипастят из интернета. Программисты только оптимизируют всякое гавно + фичи.
53 Кб, 1280x720
276 208605
>>208560

> physics based shading


> делают художники, а не программисты

277 208643
>>208605

> мемы-мемаски


> обоссаные /gd-асики


Если ты умеешь только в буквы-слова, а не смысл и опыт, то мне тебя жаль.
278 208653
>>208643

>мам мемы


>мне тебя жаль


Бревно в глазу
279 208682
>>208653
Какое же ты быдло обоссаное. Если ты пишешь свой движок, то ты пишешь pbr+gi сам. Если делаешь игру на движке, то всё делает лайтинг/енвайромент артист в редакторе.
280 208852
>>208682
Чот ты ваще куда-то увильнул
281 225592
https://www.khronos.org/vulkan/

Vulkan is Here!

Khronos launched the Vulkan 1.0 specification on February 16th, 2016 and Khronos members released Vulkan drivers and SDKs on the same day. Below you will find everything you need to come up to speed on Vulkan and to forge ahead and explore whether Vulkan is right for your engine or application.
282 225610
>>225592
постепенно наполняют гитхаб. это радует
283 225677
>>225592
Функции с десятком параметров. Они это серьезно? Как можно было превратить няшный OpenGL в это?
284 225694
>>225677
А что за функции ты имеешь ввиду?
Может они один раз при создании контекста или около того вызываются?
285 225786
>>225694
vkCmdWaitEvents. Сколько бы раз не вызывались - это мало похоже на качественный API. А обилие структурок до боли напоминает DirectX.
286 226753
>>225786
В плюсовом враппере первый аргумент уйдет, так как это будет метод класса, три пары переменных "количество хреней-указатель на хрени" заменят векторы хреней. Ну и количество аргументов нифига не будет самой большой проблемой при программировании движка на вулкане. Да что же всё так лагает с бета-драйвером? Амуда, пожалуйста.
287 226849
>>226753

> Да что же всё так лагает с бета-драйвером? Амуда, пожалуйста.


А мой видюхи в бета драйверах вообще нету почему-то хотя писали, что вулкан будет работать на видео с огл 4 и выше.
288 229497
В шейдерах только матрица проекции? Model-view матрица все еще в приложении?
289 229537
>>229497
Штоу?
290 231372
Как структурируется обычно в опенгл?. Вот, например, модель персонажа - она целиком в одном vao?
291 232058
>>231372
Что ты имеешь ввиду?
Объясни поподробнее.
293 238176
Как организуется связь с gpu-ram при виртуальном текстурировании? Загрузка страниц в gpu-ram по требованию? glTexImage2D и тд
67 Кб, 600x901
294 241603
Бамп!
295 241631
В какой момент расжимаются сжатые текстуры?
296 242450
>>241603
Они же не будут крутиться?
297 242472
>>242450
Ты же не инженер!
298 242484
>>242472
!Инженер я не ты журнал?!
299 242740
>>241603
Они не будут крутиться. лол
300 242744
>>242740
ну так Россия же
книга по погроммированию с обложкой на которой бесконечной цикл
книга по тридэмаксу с обложкой на которой лента мёбиуса
книга по пикселарту с обложкой на которой кисточка и палитра
301 242822
>>242740
Дебилы без пространственного мышления, откуда вы лезите?
302 242828
>>242822
Если они у тебя крутятся то обратись к психиатру.
303 242861
>>242828
Поехавший, попробуй представить, что верхний левый - заводила. И посмотри. Если не можешь, у тебя явно проблемы.

мимокрок
304 242864
>>242861

>центральня симметрия


>верхний-левый


дебил
305 242880
>>242864

>думает, что эта хуйня может крутиться только так, как ходит часовой механизм


>всерьёз называет кого-то дебилом

130 Кб, 600x901
306 242985
>>242861
Теперь рассказывай как оно все крутится в твоем воспаленном могзгу.
307 242986
>>242985
ну эт
ортографик вью
камеру сверху
и они смещены по высоте
наибали тип))))
308 242987
>>242986
Затралели лалок вапще))))))))))
309 243019
>>242985
Дебил без пространственного мышления чирикает красными стрелочками.
sage 310 243025
>>243019

>мам смотри я тралю

311 243026
>>243019

> пространственное мышление


> загадка уровня /b

312 243031
>>243025
Представь, что верхний-левый - заводила и все не ограничивается вариантом, когда они ходят, как часы. Напряги хоть раз свой мозг.
313 243037
>>242986

>ортографик


>тени

314 243039
315 243063
>>243039

> #2


> Они в одной плоскости?


топ мхех
не зря я сидел в /b
316 243064
>>243037
амбиент окклюжн вместо теней
селф-иллюминейшен на 100%
317 243181
>>242744
Что не так с лентой Мёбиуса?
318 243183
>>243181
в 3дмаксе сделай
319 243185
>>243183
В блендере могу.
320 243186
>>242744

> ну так Россия же


Дизайнеры же.
7 Кб, 300x168
321 243187
>>243183
Легко.
322 243191
>>243187
я обосрался, обтеку ща
группы сглаживания работают? а хотя хуле им не работать, да
323 243413
Лол, чёт я нихрена не понял, а как мне не делить вертикальную синхронизацию между всем программами на opengl?
Сочетания dx+gl/dx+dx уживаются спокойно друг с другом. Но gl в количестве больше одного стакается с другими, пусть там что мои программы, что чужие игры.
Первый пик, всё на gl, второй - три игры на dx.
5,7 Мб, webm,
960x540
324 243723
Живительные кубы в тред.
399 Кб, 1366x724
325 243729
>>243723
Вот тебе ещё копрокубы, засранец.
326 243731
>>243723
Спасибо, повалялся 5 минут в конвульсиях.
327 243736
>>243723
А код покажешь?
38 Кб, 862x688
328 243743
>>243736
Аттрактор Лоренца, в остальном почти всё как на learnopengl.
329 243912
А в чём суть новых версий gl? Каждая версия это просто некоторый минимум поддерживаемых расширений, или что?
Я просто много лет инициализирую gl как версию 1.0, а к всяким шейдерам/хуэйдерам как к расширениям отношусь. По скорости вроде как всё соотвествует чужим программам, никаких недостатков. В чём разница, зачем нужны версии, кроме как чтоб кратко говорить о примерном уровне карты?
59 Кб, 610x344
330 243917
>>243912
glew, glm. Ниже не имеет смысл копать. Всё есть в коде этих либ, если захочешь глубоко копнуть.

> В чём разница


C opengl 2.0 появился программируемый пайплаин. А это +100 человек в отделе рендера и +10000 больше строк кода + шейдеров для норм картинки. Фактически это ёба-монст для графона. OpenGL 5 = OpenGL 1 + тоны расширений от всяких ати-нвидиа.
331 243960
>>243917
А что можно сделать эдакого с помощью геометрических шейдоров?
332 244212
>>243960
Генерировать геометрию на лету.
333 244237
>>244212
Покажи пример, чтобы я обоссался
335 244279
>>244254
Но ведь для этого не требуется геометрический шейдер вовсе.
Не знаю как сейчас, но несколько лет назад геометрические шейдеры были очень тормозные, так как из-за них карте неизвестно заранее сколько геометрии нужно будет рисовать, и использовать их для изменения размеров спрайтов по меньшей мере неэффективно. Так то, спрайты в зависимости от расстояния до камеры можно было менять ещё даже через низкоуровневый вершинный шейдер, который ARB_vertex_program, когда про glsl никто ещё даже не слышал.
336 244306
>>244279

>из-за них карте неизвестно заранее сколько геометрии нужно будет рисовать


>layout (triangle_strip, max_vertices = 4) out;


>max_vertices


Передаем точку из неё геом шейдер делает парочку треугольников. Выгода.
Мимо
337 244320
>>244279
Слышал, то ли в скайриме, то ли в крузисе снег на деревьях генерировали шейдором.
338 244377
>>244320
Это называется частицы.
339 244451
>>244377
Текстуры, а не частицы.
340 244462
>>244451
Шейдер.
26 Кб, 655x702
341 244490
Почему у opengl такое отставание?
342 244493
>>244490
Дело в дровах.
343 244497
>>244490
Почему обычно тормозит кривое кириллоговно?
344 244543
>>244490
За openGL никто не следит. Он открытый, микрософтам например не выгодно делать чтоб openGL был каким-то популярным, так как тогда куда большая часть игр перекатится на люниксы или ещё куда, и со всякими нвидиями у них договор какой-нибудь, быть может.
Мне кажется дело в дровах. Вот такой баг есть (>>243413 ), например. Я в /pr поспрашивал, у кого-то всё в норме, у кого-то такой же эффект. Помимо этого, OBS не может захватывать программы на openGL. Причём, если запускать те же программы на встроенной карте от интела, всё работает. Что синхронизация в норме, что obs изи захватывает. То есть проблема конкретно в драйвере нвидии, и видимо с быстродействием что-то подобное. А с dx везде всё работает правильно, и захватывается всё как надо.
345 244546
>>244543

>большая часть игр перекатится на люниксы



Ты такой дегенерат, что просто пиздец. Даже так - пизденящий душу пиздец. Кому твоя ссаная прошивка для роутеров нужна, у которой доля на десктопах - в пределах погрешности измерений?
346 244553
>>244546
Большая часть не в смысле, что >50%, а в смысле что несколько более крупная доля игр, чем сейчас. Я же написал "куда большая", что говорит конкретно какое значение я имел ввиду. Например 15%, заместо 5%.

>Ты такой дегенерат, что просто пиздец.


Ага. Я не разбираясь в теме с потолка предположил первый бред который в голову пришёл, по идее то микрософтам вообще может не быть дела до OpenGL.
347 244576
>>244490
DX на win, xbox
у PS3-4 вообще своё PSGL/LibGCM
на мобилах Unity
Фактически, OpenGL никто не юзает кроме фриков
14 Кб, 232x310
348 244577
>>244576

>на мобилах Unity

349 244578
>>244577
Ладно, уговорил. Мобилы, линукс, фрики.
350 244623
>>244490
Нахуя тебе больше 60 fps в игре? Все равно твой ссаный монитор физически не выдаст больше 60-75 кадров в секунду.
351 244625
>>244576

> на мобилах Unity


Юнити лишь движок, а вот графическая часть в нём как раз таки на опенгл.
Ты долбаёб или прикидываешься?
352 244647
>>244625

> а вот графическая часть в нём как раз таки на опенгл


Нет. То есть, он может в гл, но если можно, то работает на дх.
353 244656
>>244647

> то работает на дх


Как он на андроиде или айос/мак будет работать на дх?
115 Кб, 680x376
354 244745
Пилю свой кириллодвижок. Где почитать про буферы и шейдеры?
355 244761
>>244745
ОП пост для кого составлен?
356 244765
>>244745
готовишь анус для снульчеканкурса?
22 Кб, 500x500
357 246578
Объясните ка мне тупому по простому что такое: normalized device coordinate (NDC) space, clip-space, and window space.
34 Кб, 200x177
358 251387
http://pastebin.com/r0Bd2Yih
Что я делаю не так?
c#
Tao (обертка над GLUT)
gl4csharp (обертка над GL)
Качество кода, комментов и прочее - говно, ведь я ебаный ньюфаг.
Скажите лучше что не так с ГЛ вызовами.
По итогу я вижу только заливку и ИНОГДА в центре бывает одна точка.
359 251402
>>251387
Попробуй glgeterror потыкать.
360 251409
>>251402
No Error
361 251411
>>251387

>Что я делаю не так?


Используешь gl

>>251387

> я вижу только заливку и ИНОГДА в центре бывает одна точка.


А ты что надеялся увидеть, crysis?
362 251503
>>251387
Вьюпорт за тебя либа делает?
363 252499
>>251387

>> 41. Gl.VertexAttribPointer


>> ...


>>156. Gl.BindVertexArray(VAO);


VAO надо биндить до вызовов VertexAttribPointer
364 252500
>>252499

>> 141. Gl.VertexAttribPointer


>> ...


>>156. Gl.BindVertexArray(VAO);


VAO надо биндить до вызовов VertexAttribPointer

fix
365 252502
>>252500
алсо поставь себе деббагер
https://developer.nvidia.com/nvidia-nsight-visual-studio-edition
366 253993
Линукс сосет
367 256409
Ананасы, почему не заводится? Вроде бы все правильно сделал, или нет?
http://pastebin.com/BvvC8pHF
368 256411
>>253993
Схуяли? Все там норм с опенглем. Есть проприетарные нвидиевские драйвера.
369 256412
>>256409
Ананас, тебя кто научил дергать АПИшные функции и не обрабатывать ошибки?
370 256414
>>256412
Ну я только начал. Читаю Addison Wesley: OpenGL Programming Guide. Он там уже про 4.3 кряхтит что-то с самого начала и шейдер загоняет сразу же. Сорцов не искал его и посмотрел, как в на офсайте опенгл загружают шейдеры, сделал по подобию.
371 256417
>>256414
Юзай glGetError после каждого (почти) вызова.

Осторожно: сразу после инициалиации могут быть коды ошибок. Есть смысл ее подергать в цикле в самом начале, пока не вернет GL_NO_ERROR.

В твоей книге, кстати, в самом начале есть пример, как вытаскивать ошибки компиляции шейдеров. Сделай такую штуку у себя. Вообще сделай инфраструктуру для обработки ошибок, потом сам себе спасибо скажешь.
372 256421
>>256417
Зачем после каждого? Либо вызовы оборачивать в макрос, либо дёргать один раз в конце кадра, а там уже разбираться.
373 256422
>>256409

>> glEnableVertexAttribArray(0);


вот на этом месте какую-то хуйню написал, вместо нуля, который, как я понимаю, ставится в соответствие vPosition шейдера
374 256424
>>256421
Ну, потому что любой вызов может быть неуспешным. Если вызывать в конце, ты не разберешься потом, какой именно.

Я у себя запили макрос HANDLE_OPENGL_ERRORS, который втыкаю после каждой функции. Он мне в случае чего кидает исключение с именем файла, номером строки и ошибкой. Можны и вызовы в макросы завернуть, конечно.
375 256777
Пиздякнул тут на досуге оберточку для себя. Может кому надо будет.
http://pastebin.com/xgCEtfLY
376 256906
>>256777
Сделал меня грустить. Я раньше С++ очень хорошо знал, но за 5 последних лет багфиксинга в больших корпорациях безнадежно отстал от жизни.
377 257916
>>256777
Есть версия чуть проще.
http://pastebin.com/aBs2Xqat
378 257919
>>257916

> strcpy( str, "GL_INVALID_FRAMEBUFFER_OPERATION" );


Норкоман?
sage 379 258066
>>257919
Не говоря уже о том, что все case повторяются, и их можно было препроцессором сгенерить, а не полагаться на копипаст.
380 258158
Если я хочу воксели пердолить, то обязательно CUDA использовать, или можно без неё нормального фпс добиться?
381 258375
Аноны, поясните, пожалуйста, мне вот за такую херню. Читаю сейчас тут супербиблию 7 опенгл . Там тип рассказывает, как биндить VAO, сначала биндит буфер, потом VAO и далее:
glVertexArrayBinding
glVertexArrayAttribFormat
glEnableVertexArrayAttrib

Нашел в другом месте, что в более ранних версиях делалось так:
glEnableVertexAttrib
glVertexAttribPointer

В чем профит первого способа, если он длиннее получается?
52 Кб, 700x516
382 258652
объясните по-хардокору: для чего нужно это все? Это типа все на очень низком уровне? Если да, то зачем? Если нет, то зачем?
383 258746
>>258652
Это ВЕСЕЛО, слышал такое слово?
384 258749
>>258746
У меня тут от книг гл-овских пукан горит. Ох и весело же )
385 258901
>>258746
недостаточно хардкорно.
386 258975
>>244490
Как можно сравнивать разные API в каком-то там движке, где непонятно как используются функции этого самого API.

Ты уверен что разработчики запилили все как нужно? У тебя есть код? Есть четкое понимание как это делается на DirectX и OpenGL?
387 258988
>>256777
Если я хочу просто вызвать glFunc, твой макрос думаешь заработает?

Хорошо. Это я тупой, ты собрался все вызовы запаковывать в gl(func, blabla);

А не проще было просто использовать дебажный opengl? https://www.opengl.org/sdk/tools/BuGLe/

К тому же, его можно самому написать!
388 258989
>>256906
Ничего такого! Лямбды и автоподставление типов компилятором.
389 259360
>>258988
Мне пока и так сойдет. А про дебажную версию я вообще не знал
390 259546
>>258375

> В чем профит первого способа, если он длиннее получается?


http://stackoverflow.com/a/21652955
391 259797
Ананасы, подскажите, пожалуйста, почему не заводится. Рисую в image2D, но, первое - не биндится image2d (invalid operation выдает, но вот схуяли, даже в руководстве нет такой хуйни), а второе - в шейдере где-то косяк, но это, мне кажется, уже отсылка к первому.
http://pastebin.com/X46RMZ3c
392 259807
>>259797
http://pastebin.com/7gJQp9Gd
Нашел косяки некоторые, исправил шейдер. Мне кажется, что CUDA здесь пизже въедет и без изъебов, но, в общем, теперь выдает
Compute shader(s) failed to link.
Compute link error: INVALID_OPERATION.
ERROR: error(#404) local work size runs out of limitaion
393 259813
>>259807
Бля, ну и насрал же я тут. Извините. Вот эта залупа уже хочет работать, только вот почему все упирается в ограничение на 1024 элемента (для вычисления, естественно)? Его можно обойти, или для таких случаев использовать OpenCL? Только вот тут поебота - надо будет интероп писать.
http://pastebin.com/RjRg02YH
394 259837
>>259813
NVIDIA не может в человеческий OpenСL, так что не поможет. Есть ограничение на количество потоков (по видимому, 1024, но можно как-то запросить). Делаешь цикл, чтобы каждый поток обрабатывал несколько элементов с шагом в 1024.
395 259859
>>259837
У меня видюха от AMD, а на работе делаю софт под CUDA, вот же ирония вышла.
5 Кб, 251x201
396 260003
Я вот думаю на чем писать свою игру, с одной стороны я неплохо знаю opengl es но с другой стороны он – устаревшее говно и пора бы уже переходить на Vulkan, он гораздо производительней, но и гораздо сложнее и более низкоуровневый, думаете стоит заморочиться и сделать рендерер на вулкане?
397 260014
>>260003
AMD'шники соснут, потому что с их дровишками OpenGL 4.5 доступен только для HD7000 серии и выше, а у Nvidia от 400 и далее. Вообще, бесит меня политика AMD в плане поддержки железа. Конченая компания.
398 260019
>>260014
Да ладно, а вот у АМД вулкан с 7к у хуанга с 700, хотя в общем понятно, что это все нахер не нужно кроме как для AAA.
399 260021
>>260014
HD 7000 в 2013 вышли. То, что старше, уже дрова же.
>>260003
Чтобы сделать движок на Вулкане быстрее AZDO OpenGL, нужно быть готовым маленькие куски переписывать под каждого вендора. Тык этому готов?
400 260022
>>260021

>Чтобы сделать движок на Вулкане быстрее AZDO OpenGL, нужно быть готовым маленькие куски переписывать под каждого вендора.


С какого перепуга? Производительность вулкана выше уже по дефолту так как можно управлять синхронизацией и командными буфферами.
401 260023
>>259813
Так, продолжаю запускать говнопримеры. В общем, настроил вычислительный шейдер, 1024 элемента, да и хуй бы с ним, тут у меня invalid enumeration валится при использовании glGetTexImage
http://pastebin.com/jYZjRXM5
402 260027
>>260022
Дрова под OpenGL пилятся уже 20 лет. Ты правда думаешь, что сможешь их превзойти?
http://32ipi028l5q82yhj72224m8j.wpengine.netdna-cdn.com/wp-content/uploads/2016/03/Practical_DX12_Programming_Model_and_Hardware_Capabilities.pdf
403 260041
>>260003

> с одной стороны я неплохо знаю opengl es но с другой стороны он – устаревшее говно и пора бы уже переходить на Vulkan


По моему ты просто даун.
Спецификация Вулкана вышла буквально несколько месяцев назад.
Чтобы что-то делать на Вулкане и чтобы это было доступно конечный продукт имеется ввиду как можно большему числу пользователей, пройдёт ещё несколько лет.
404 260475
>>195365 (OP)
Вкатываюсь с андроидодерьмом.
405 260477
>>260475
Так, полистал тред. Ничего для быстрого старта под ведроид не нашел. Поясните, с чего начать?
406 260481
>>258652
Не обращай внимания, проходи мимо. Тебе в соседний тред.
А здесь сидят те, кто хочет созидать своими руками, а не сосать хуй разработчиков юнити, причмокивая и сглатывая сперму.
407 260552
>>260477
OpenGL ES
408 260629
>>260477
OpenGL ES 3 Cookbook с нее можешь начать. Там все просто расписано и применимо к OpenGL настольному (хотя у кастрата есть модификаторы точности и прочая хуйня). А вот книгу с начала поста, которая идет офиицальным руководством OpenGL вообще не советую читать - просто каша. Супербиблия неплохая, но для начала тоже не самый хороший вариант, тем более что примеры, которые там приведены рассматриваются крайне скудно и больше времени уделяется на описание API как такового.
409 261799
Привет парни.

В каком порядке следует вызывать и почему функции:

glEnableVertexAttribArray
glVertexAttribPointer

?

Потому что работает и так и так, что странно
410 261807
>>261799
Ниважн там кароч праверка етих флагов када идет вызов draw т.е. перед драв калом вызывать над кароч.
411 261948
>>261877
братишка я тебе звездочек принес:

*

ALT + 42
412 261949
>>261948
а нихуя, даже так на этой параше не работает
413 261958
>>261877
читни про VAO
414 262044
>>261877
Ты можешь все индексы в один IBO запихнуть.
И в последнем параметре glDrawElements указывать смещение в байтах от начала буфера (IBO).

Даже можно все модели запихнуть в один VBO, но это потом когда разберёшься с этим.
И через http://docs.gl/gl3/glDrawElementsBaseVertex рисовать.
48 Кб, 1227x819
415 264100
>>262044
Всегда возникает ошибка в glGenVertexArrays и glGenBuffers. В гугле написано только, что надо поставить glewExperimental = true, но это не помогает. Что здесь не так?
9 Кб, 494x259
416 264141
>>264100
Попробуй сначала создавать окошко (наверное, где-то внутри в нём создаётся контекст).
Типо так.
59 Кб, 1331x855
417 264185
>>264141
Сделал так, результат тот же. Судя по всему, я единственный, испытывающий эту проблему. В гугле ничего толкового не найти.
418 264194
>>264185
дрова поменяй
419 264210
>>264194
Установил последние, все по-прежнему.
420 264211
>>264185
Попробуй.
http://pastebin.com/raw/5M9Y4zQy

GL.h и GLU.h убери.
Вся эта ебалайка есть уже в glew
421 264213
>>264211
У меня "OpenGL 3.3 API is not available". Это не исправляется никак? У меня около года назад все работало нормально, с тех пор я не трогал опенгл, и все забыл. Взялся заново, а тут такая хуйня. Думал, может проблема с подключением библиотек или еще чего.
422 264214
>>264213

> Думал, может проблема с подключением библиотек или еще чего.


Проверь пути к либам, подключаются ли они и тд.

Алсо, также в папке у глева есть бинарники.
Запусти glewinfo. Глянь какой там вывод.
25 Кб, 1407x671
423 264217
>>264214
С путями все нормально, иначе тогда ошибка была бы во время линковки. Бинарник glew32.dll (других же нет?) перекинут в директорию проекта. glewinfo вот.
424 264218
>>264217
Я все понял, у меня же дефолтный процессор интеловский, а не нвидиа. Переключил, теперь все работает. Спасибо за наводку.
425 264219
>>264217
Попробуй этот код:
http://pastebin.com/raw/qBydzL7v

Скорее всего ты проебался с
glfwMakeContextCurrent( win );
Я не видел его у тебя в коде выше.
426 264221
>>264219
Спасибо, но и без этого все тоже работает. Проблема была в графическом процессоре. Код, который у меня, теперь работает нормально.
427 264900
Короче, решил тут я себе BuGLe подтянуть, вытянул сорцы, значит, вытянул с репа gtk2-devel (сьюзи у меня), и что бы вы думали - а хуй тебе, не гуй.
Короче, поебался я 5 минут тут, три семерки вся хуйня. Не стал искать правильный путь - поменял в SConscript'e gldb:
have_gtk = True
И идут нахуй, все работает сука.
428 264923
Скажите, пожалуйста, что у меня не так в этом коде. Я уже заебался эти туториалы по 50 раз перечитывать, никак не могу понять, как работают эти злоебучие шейдеры. И туториалов много, так проблема, что везде написано по-разному, что вообще сбивает с толку. И вдобавок ни один из приведенных в них примерах не работает.
http://pastebin.com/EU7pQniF
429 264932
Пытаюсь разобраться с наложением текстур, делая лабу для вуза.
Не могу понять как сделать так, чтобы одна текстура натягивалась на несколько полигонов сразу. Не повторялась, а именно чтобы например на квадрате 5x5 лежал один кусок текстуры.

Пока смог только ручками решить эту проблему при генерации прямоугольников с разбиением: для каждого полигона разбиения вычисляются нужные текстурные координаты. Функция на пике.

Но что с остальными примитивами делать я не знаю, их я строил функциями из glu glut, а не своими.
430 264957
>>264923
Попробуй вот это:
http://pastebin.com/raw/zyyAsTNM

>>264932

> Не могу понять как сделать так, чтобы одна текстура натягивалась на несколько полигонов сразу. Не повторялась, а именно чтобы например на квадрате 5x5 лежал один кусок текстуры.


Передавай в шейдер сразу 2 текстуры.
И для какой-то из них ебашь текстурные координаты для твоего прямоугольника.
Ну или рисуй в том месте ещё полигоны и натягивай на них нужную текстуру.
Но тогда может возникнуть такая проблема:
https://upload.wikimedia.org/wikipedia/commons/5/5f/ZfightingCB.png
431 264970
>>264932

> glVertex


> glNormal


Почему не залить всё в GPU и на мучить драйвер сто лет как устаревшим API?
432 265280
>>264970
дак енто ж ДЕЛФИ
я сразу чет не узрел, что это код гиар студио, там, поди и GL'а без костылей не поставить нормального.
79 Кб, 782x503
433 265718
Ребят, я ламер пока что, но забрел вот в такие дербри. Можно ли как то избегать переопределения объекта класса? Или это так и должно быть? Проблема в том, что определение попадает в цикл, где каждые 0.15 секунд инициализируются довольно крупные вещи, а это затратно для ресурсов. Где можно почитать на счет отрисовки множества объектов через классы?
434 265732
>>265718
Ты постоянно буфер перезаписываешь что ли?! Я понять не могу вопроса
435 265734
>>265732
приходится...тут display функция уходит в петлю, то есть каждый раз перезаписывается все, что внутри него. мне нужно отрисовать объект. Его конструкция описана в классе. как это сделать грамотно? получается, что каждый раз, когда перерисовывается экран создается заново(!) объект класса, ему снова присваиваются координаты. Так и должно быть или я просто дебил?
436 265738
>>265734
У тебя данные BrushBox'а постоянные, или они меняются одинаково, или как они вообще сделаны, внутри то что?
237 Кб, 1920x977
437 265749
>>265738
выглядит это как то так.
438 265751
>>265749
короче, раз уж у тебя спрайты там отрисовываются, то можно отрисовку спрайтов сделать одной пачкой (за один вызов gl), но при этом рисовать надо будет н устаревшими способами (glVertex, glTexCoord, glBegin/end). Почитай про буферы, там, в целом, все очень просто, да и быстрее работать будет, это однозначно.
439 265753
>>265751
окей, спасибо. просто в туториалах обычно не показывают работу с классами ибо там рисуют 1 чайник или 1 кубик. ооп не раскрывается..)
440 265823
Ищу разработчика движка на OpenGL
Если у кого есть желание оставьте контакты >>264565 (OP)
441 265834
Кто и что думает на счет Vulkan? Какие у него перспективы?
442 265971
>>265834
Хорошие перспективы.
Через несколько лет увидим результаты.
443 266018
>>265834
OpenGL 2.0 для мобилок, веба и индиговна будет жить еще очень долго. Вулкан станет основным API для ААА, если MS будет продолжать тупить с UWP.
444 266072
>>266018
Просто я запариваюсь над тем, что начинать учить, чтоб не зря было. Пока что овладел нормально только плюсами и парой тройкой библиотек к нему. Очень хотел юзать opengl, а тут вот говорят лучше вещь сделали.
445 266105
>>266072
Вулкан намного сложнее GL, но в целом он намного более продвинут по архитектуре. На нем приятнее писать.
Кстати, палю годноту по вулкану: https://github.com/SaschaWillems/Vulkan
446 266131
>>266105
А за это большое спасибо. Разумеется с драйверами 340 из репозитория дебиана оно не встанет? там вроде от 368 версии на картах с opengl 4.5 поддержкой. Это крашит систему. Кто пытался поставить под linux?
447 270597
Посоны, объясните, пожалуйста, в чем разница использования

>> glClearColor(...)


>> glClear(GL_COLOR_BUFFER_BIT)


и

>> GLfloat color[] = { ... }


>> glClearBufferfv(GL_COLOR, color)

448 272208
Так, ананасы, вопрос следующий:
Есть, значит, у меня моделька с кучкой материалов (.obj и .mtl файлы, короче), и тут я решил их по-маленьку зарендерить, но вот в чем дело, у GLSL на шейдер ограничение в 16 текстур (вроде и до 32 можно), а вот стандарт .mtl, который вейвфронт замутили, подразумевает наличие до 9 текстур от просто изображения предмета до каких-то залуп (алсо, забавно, что нет маски нормалей, а бампинг есть), так вот. Каким образом мне лучше сделать - мусор повыкидывать (оставить только основную текстуру, бампинга, отражения, прозрачности) или разбить объект на куски (под каждый отдельный материал) и затем рендерить его в несколько проходов (но это получается сильно затратнее), может есть что-то по-лучше, да и вообще нахуя мне столько текстур?
449 272522
>>272208
Загрузи все изображения в пространство одной текстуры и сдвинь текстурные координаты у вершин соответственно.
450 272564
>>272522
Спасибо.
А что делать для видеокарт, у которых размер текстуры маленький (2к х 2к, к примеру, для модели-то ведь точно хватит, а вот для какого-то ландшафта, например, окажется маловато (если тужа еще запихивать карту бампинга, нормалей, диффузии и пр.)). Херить качество?
452 272601
>>272564

> если тужа еще запихивать карту бампинга, нормалей, диффузии и пр.


куда ты их запихивать собрался, госпади
Я НЕ КАРТА ВЫСОТ Я ТЕКСТУРКА
НЕ ЗАПИХИВАЙ МЕНЯ, ПОДУМОЙ
453 272624
>>272601
Ну ведь бампинг на физическую высоту (имею в виду объекта) не влияет
>>272597
Спасибо, тоже о них подумал, но где-то кто-то пиздякнул мне на ухо, что текстуры массива должны быть одного размера, а оказывается нет.

Кстати, тут еще один вопрос. У меня следующий кусок в шейдере:
http://pastebin.com/MeHspyQ2
Размер структуры равен 76 байт (если посчитать), но gl_uniform_block_data_size показывает, что размер униформа равен 636 байт. Я, так понимаю, 4 байта между структурами добавляется длы 16-байтного выравнивания данных?
454 272652
>>272624

> Ну ведь бампинг на физическую высоту (имею в виду объекта) не влияет


при чем тут это
ландскейп совершенно не так делается, ландскейпу свой шейдер пишешь
карта высот я имел в виду топология ландшафта, разумеется, она хайрезная, а эти мелкие текстурки что на траве, земле, песке и прочем их по 512 делай если печешься за производительность на древневидюхах
или в несколько проходов можно рендерить (наверное, я сам не умею). я про то что там процедурный подход нужен
455 272711
>>272624

> Размер структуры равен 76 байт (если посчитать), но gl_uniform_block_data_size показывает, что размер униформа равен 636 байт. Я, так понимаю, 4 байта между структурами добавляется длы 16-байтного выравнивания данных?


http://steps3d.narod.ru/tutorials/ubo-tutorial.html
456 273389
>>272711
Спасибо. В общем, на верочку, решил прочитать индексы и смещения, и, похоже делаю это вообще неправильно:
http://pastebin.com/WZMKJq0j
Вывод следующий:

>> u_materials: 4294967295 offset 0


>> u_materials.materials: 4294967295 offset 0


>> u_materials.materials[0]: 4294967295 offset 0


>> u_materials.materials.ambientTexture: 4294967295 offset 0


>> u_materials.materials[0].ambientTexture: 4294967295 offset 0


>> MaterialsBlock.materials: 4294967295 offset 0


>> MaterialsBlock.materials[0]: 4294967295 offset 0


>> MaterialsBlock.materials.ambientTexture: 4294967295 offset 0


>> MaterialsBlock.materials[0].ambientTexture: 4294967295 offset 0


>> materials: 4294967295 offset 0


>> materials[0]: 4294967295 offset 0


>> materials.ambientTexture: 4294967295 offset 0


>> materials[0].ambientTexture: 4294967295 offset 0


>> Materials block size 636


Нихуя не нашел, короче говоря, но зато размер блока выводит, сука. Я вот вкурить не могу, как он их ищет то блять. По имени переменной обратился, по имени блока тоже, даже блять без имени, но все тщетно.
457 273721
>>273389
Так, короче, хуй с этими поисками размещений, по std140 разобрался, теперь это не нужно (а хотелось бы понять, как делать-то). Но, в общем, мне не дает покоя конченый шейдер, а дело вот в чем, имею вот такой шейдер (делает чуть более, чем нихуя - применяет краску и все):
http://pastebin.com/g8TEaFfx (выводит пикрелейтед 1)
Однако, стоит мне заменить тело main'a на вот это:

> MaterialStruct m = u_materials.materials[vs_out.material];


> fs_color = vec4(m.diffuseColor.rgb (vs_out.normalCoords.z + 1) 2, 1);


Коричневый цвет сразу уебывает в звенящие дали, оставляя цвет только от первого материала. Видимо, компилятор сделал какую-то охуительную оптимизацию и все накрылось пиздой. Как сделать правильно?
458 273722
>>273721
Быстрофикс: звездочки перед и после

>> (vs_out.normalCoords.z + 1)


вот этой хуйни
459 274494
>>273721
А зачем ты так делаешь?
Похоже на какой-то перевод из одного пространства в другое.
460 274583
>>274494
в normalCoords я пока что просто пробрасываю значение gl_Position, а вообще просто решил подзатенить чутка, чтобы трехмерно выглядело.
Короче, один тип подсказал, что нужен квалификатор flat для переменной материала, чтобы он не интерполировался, вот теперь заработало, да.
30 Кб, 802x632
461 276449
>>274583
Делаю шейдеры по книжке одной, охуительно так-то.
462 276453
>>276449
Зачем ты нацепил глянец туда, где должна быть матовая поверхность?
513 Кб, 1242x936
463 276454
464 276461
>>276453
Это не моя модель, я скачал и проверяю работу.
465 288377
Я просто хотел сказать, что меня ЗАЕБАЛИ шейдеры и GLSL.
Ебучий матан, ебучая тригонометрия, ебучие матрицы, всё руками делать, охуевать трижды, гроб, гроб, кладбище, пидоры, всё.
Спасибо за внимание.
36 Кб, 620x520
466 288527
>>288377
Щито поделать.
467 288619
>>288377
а по моему это круто, хоть где то есть толк моим знаниям лол
468 288622
в glsl во фрагментном шейдере есть возможность сохранить данные в промежуточном буфере
ну допустим выполнили какие то операции на данном фрагменте, установили для него цвет сохранили какие то данные в переменных -> перешли к следующему фрагменту, взяли прошлые данные опять выполнили действия опять сохранили данные -> перешли к следующему фрагменту итд

Ну или на крайний случай параллельный буфер, допустим выполнили операции установили цвет в gl_FragColor, установили цвет в буфере -> перешли к следующему фрагменту взяли цвет из буфера прошлого фрагмента, выполнили операции, установили цвет в gl_FragColor, установили цвет в буфере -> перешли к следующему
469 288710
>>288622
Это вопрос или утверждение?
470 288783
>>288710
вопрос как хронить промежуточные данные типа фрагмент -> фрагмент
471 288806
>>288783
есть атомики, если тебе нужно в одном проходе хранить данные. Можно зарендерить во фреймбуфер и потом его ебать следующим проходом (так делают тени, и карты отражения, в частности)
338 Кб, 256x256
472 288894
>>288806
ладно иначе сформулирую вопрос, с этим у меня проблема
на пике можно увидеть РАЗМАЗЫВАНИЕ, и вот я ни как не пойму как такое сделать в glsl, ну те если бы изображение было бы массивом то все просто, но вот в glsl же иначе
16 Кб, 496x501
473 288896
>>288894

> РАЗМАЗЫВАНИЕ


Ты это имеешь ввиду?
474 288897
>>288896
ага, мне же нужно обращаться к прошлому измененному значению пикселя на позиции выше
475 288923
>>288897
Не нужно. Это совсем не так делается. Но тебе ещё рано задумываться об этом, раз ты такую простейшую трансформацию осилить не можешь. Рекомендую изучить базу glsl для начала.
476 288929
>>288923
Тут дело не в glsl, а в алгоритме.

>>288897
То есть ты хочешь получить такие же тени как и на гифке?
Дык можно и проще же сделать.
https://www.youtube.com/watch?v=fsbECSpwtig
477 288935
>>288923
новичок да, я в общем то и изучаю glsl, а лучший способ учится это же писать код
и так то вот что у меня уже есть
https://www.youtube.com/watch?v=wbIslzIHtss
https://www.youtube.com/watch?v=s_E57cr86YQ

вот только информация на на тему glsl страшно хаотично разбросана по сети и это вызывает некоторые трудности в обучении
478 288936
>>288929
о добра тебе
479 288972
>>288935
Что пилишь?
480 288975
>>288972
В идеале должна получиться пиксель арт игрушка с нетривиальным сюжетом в нуаркиберпанк bladerunner сеттинге, с боевкой частично как в child of light, но пока графена нет тк художник учится, а я вот на системой света работаю.
481 288976
>>288975
все свое, физика, рендер, итд
482 288987
>>195968
Веб воркеры работают параллельно. Ты просто отсталый.
483 288994
>>288929
этот метод не позоволит нормально использовать карту света, да и тени там не очень они общие для всех источников света 0:53
а я хочу как раз имея на входе карту света, для каждого исочника света ее по своему модифицировать (добавляя тень) и уже потом просто рендерить сам свет
так даже дешевле будет чем то что на видео, но вот я никак не пойму как это размазывание реализовать
1,6 Мб, 500x288
485 289005
>>289004
премного благодарен
25 Кб, 415x155
486 289154
>>289005
черд
вот этого я и хотел избежать - фором по всей высоте экрана проходить в каждом фргаменте, но видимо не получится усидеть на двух стульях, и либо дешево либо красиво
487 289156
>>288897
Матричные фильтры читай - самый простейший алгоритм
641 Кб, 500x291
488 289163
>>289156
окей, спасибо за наводку
GlowStick !dWRwJsmqCE 489 290573
Сап, велосипедисты.
Кто-нибудь знает, в чём может быть проблема?
Первый пик - правильный вид игры.
Второй и третий пики - так, как игра выглядит у других людей.

Сама игра - https://yadi.sk/d/tg9DSCRGu3JfW

Механизм, который передаёт цвет в шейдер:
coin_ptr->get_shader().activate();
coin_ptr->get_shader().set_uniform_vec3("background", glm::rgbColor(glm::vec3(std::fmod((coin_ptr->get_scale() × 360.0f / 0.55f) + coin_ptr->get_color_shift(), 360), 0.45f + coin_ptr->get_scale(), 1)));

Этот код раскрывается вот так:
glUseProgram(this->program_id);
glUniform3fv(glGetUniformLocation(this->program_id, "background"), 1, glm::value_ptr(glm::rgbColor(glm::vec3(std::fmod((coin_ptr->get_scale() × 360.0f / 0.55f) + coin_ptr->get_color_shift(), 360), 0.45f + coin_ptr->get_scale(), 1))));

Может, шейдеры v120 не у всех работают? На легаси нужно переписывать?

Помогите.
490 290584
>>290573
Начни с проверки того, что у тебя окно с правильной глубиной цвета создаётся. OpenGL'у же пофиг, он будет пытаться хоть что-то отобразить в любом случае.
491 290626
>>290573
Сам код шейдеров давай да и зачем юзать? 120?
Бери хотя бы 330
492 290630
Алсо, ананасы.
Когда делать перекат?
Как достигнем 500 постов или подождать пока Абу восстановит бамплимит?
493 290637
>>290630
Подожди пока начнет тонуть, очевидно же.
GlowStick !dWRwJsmqCE 494 290765
>>290626
Если 120 не работают, то какой смысл использовать 330? Вот код шейдеров:

fbo vertex - http://pastebin.com/i36hQ03F
fbo fragment - http://pastebin.com/whC9X3Fj

draw vertex - http://pastebin.com/GU5dDZrA
draw fragment - http://pastebin.com/9AAVZv7J

fbo отвечает за fbo, draw отвечает за отрисовку треугольников.

>>290584
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);

Добавил вот эти строчки - треугольники всё равно белые.
495 290771
>>290765

> Если 120 не работают


Ну это же совсем древние видеокарты десятилетней давности.
496 290777
>>290771
Мне не трудно написать 2 шейдера под 120, если это только расширит аудиторию.
GlowStick !dWRwJsmqCE 497 290787
Проблема решена. Мой драйвер устанавливал неустановленные юниформы в ноль, а драйверы у других людей входили в UB. Теперь всё работает.
498 290788
>>290787
А зачем каждый раз вычислять адрес юниформа в шейдере?
Почему один раз не делать и хранить где-то хендл на это?
GlowStick !dWRwJsmqCE 499 290790
>>290788
Это игра на twg, тут очень много мест, которые можно было бы оптимизировать. Например, добавить кеш для шейдеров, чтобы не загружать один и тот же шейдер несколько раз. В серьёзном проекте я бы это реализовал, но тут не вижу особого смысла.
500 290793
>>290790

> Например, добавить кеш для шейдеров, чтобы не загружать один и тот же шейдер несколько раз


В смысле?
Не биндить его дважды?
GlowStick !dWRwJsmqCE 501 290795
>>290793
Для каждого треугольинка создаётся свой шейдер.
20 Кб, 510x546
502 290796
>>290795
Штоу?
GlowStick !dWRwJsmqCE 503 290800
>>290796
У каждого объекта dream::engine::entity есть свой dream::gl::vertex_buffer_object, у которого есть dream::gl::shader. Все треугольники - энтити.
GlowStick !dWRwJsmqCE 504 290801
>>290800

> vertex_array_object


Фастфикс.

Я осознаю, что это неправильно и нуждается в оптимизации.
4 Кб, 432x128
505 290802
>>290800
>>290801

> Я осознаю, что это неправильно и нуждается в оптимизации.


Это не просто не правильно.
Это ужасно.

Лучше пусть каждать энтить хранит позицию в игровом мире, цвет, ещё какие-то настройки.
Перед отрисовкой отсекай те треугольники, который за экраном.
Получится что-то вроде пикрелейтеда.
GlowStick !dWRwJsmqCE 506 290803
>>290802

> Перед отрисовкой отсекай те треугольники, который за экраном.


У меня таких нет.

Да и оптимизировать я смогу. Но когда нужно торопиться - немного не до этого.
507 291376
Что будет, если использовать гейзерную программу и установить в ней значение одной из юниформ, использовать другую шейдерную программу, а потом опять установить первую программу?
Сохранится ли значение юниформы?
508 291377
>>291376
Должны.
У меня так текстуры работают.
509 291629
>>291376
2.11.7 Uniform Variables

... Uniforms are program object-specific state. They retain their values once loaded, and their values are restored whenever a program object is used, as long as the program object has not been re-linked. ...
510 293666
Двощик, почему у меня не получается передать две текстуры в шейдер?
Делаю все по науке - бинжу тектсуры на разные юниты, передаю номера юнитов в шейдер. При отрисовке в обоих семплерах текстура из нулевого юнита.
Везде написано, что все делается именно так, но у меня не робит. хотя я уверен, что там где-то просто косяк, но я не вижу, где.

c++ код (проблемное место в Matrial8::bindTo())
http://pastebin.com/JwkqUD3d

Фрагментный шейдер
http://pastebin.com/KC6Jcci5
511 293677
>>293666
в uniform пердавай не GL_TEXTURE0 и т.д., а просто 0, 1 и т.д.
glUniform1i(location, 0); - биндит текстуру 0
512 293679
>>293677
Благодарствую
Аноним 513 295184
>>293679
а если MRT, то еще glActiveTexture(GL_TEXTURE<номер);
514 295196
Имеется ogl ver < 2, черно-белая текстура и цвета.
Нужно рендерить так, чтобы темные участки текстуры смешивались с цветом больше, чем светлые.
515 295199
>>295196
Короч, нужно что-то типа Resultcolor = (1 - Texturecolor) x Drawcolor
Все осложняется тем, что дело происходит на lwjgl.
516 295200
>>295199
Хотя не, тогда светлые места темными станут.
517 295251
>>295199
ogl < 2 это типо без шейдеров?
Проблема же очевидно банальным шейдером решается
518 295257
>>295251
Шейдеры как раз появились в gl2
65 Кб, 768x384
519 295273
Сталкивался кто с проблемой отрисовки нескольких сотен двигающихся спрайтов с анимациями(мобы типа)? Я вот погуглил, говорят нужно через один динамический VBO рендерить за один glDrawElements. Пока думаю сделать два буфера: геометрии и текстурных координат, их перестраивать через glBufferSubData. Может есть какой оптимальный путь?
Алсо треугольники или квады? Говорят лучше треугольники, типа карты под них заточены.
очевидный ньюфаг
520 295336
>>295257
Были в 1.1 в виде расширений же.
521 295387
>>295273
1) Делаешь один спрайтшит на всех и аплоадишь его в одну текстуру.
2) Каждый объект представляется координатами на экране и индексом спрайта. Фигаришь их в буфер с параметром GL_DYNAMIC_DRAW.
3) В геометрическом шейдере генеришь квады и готовые текстурные координаты, простые как амеба вершинный и фрагментный шейдеры кушают и высирают на экран. И все это за один drawcall.
4) ...
5) ПРОФИТ!!!!!

Пояснение: квады начиная с OpenGL 3.1 выпилены нахуй, делай TRIANGLE_STRIPE или TRIANGLE_FAN, про квады забудь.
1 Кб, 180x80
522 295418
Аноны, поясните мне, пожалуйста.
Вот есть OpenGL ES 2.0, там, как и положено, пишется версия шейдера
#version 120 и т.п.
А вот и пришел GL ES 3.0, а там уже блять другое
#version 300 es
Они что, опидорели там в своем комитете?!
523 295421
>>295418
Неосилятор не нужен, иди в юнити-тред или уеч-тред.
120 == гавно мамонта
524 295476
>>295421
Почему они не сделали всем суффикс es, а у 2.0 оставили индексы первый шейдеров?
525 295481
>>295418
Потому, что начиная с GL ES 3.0 используются специальные версии GLSL. Почему? Потому, что разные платформы.
526 295696
527 295906
>>295696
Думаешь пора перекатываться?
9 Кб, 320x240
528 295939
Ананасы, раздумывал тут на тему приемлемого освещения (для мобилок, естественно), хотелось бы получить что-то похожее на террарию, но там, как мне кажется, используется многопроходовый матричный фильтр с проверкой текущей ячейки на прозрачность для света (для прозрачных нулевой коэффициент затухания, для непрозрачных - другой), в общем, получается-то в целом довольно неплохо при 8+ проходах и при этом работа не зависит от количества источников света (натыкал точек и готово), напихал следующее:
http://pastebin.com/d0FUUfQ7
Получается что-то вроде пикрелейтеда, но проблема, в общем-то понятна - матричный фильтр и большие затраты, у меня это будет выдавать нормальный FPS даже при максимальном разрешении текстур, однако на мобиле железо сосущее, как известно, и будут некоторые веселости с залипаниями и торможениями.

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

Еще, как вариант, мне кажется, можно попробовать тепловые карты и этот вариант я тоже пробовал, но регулировать яркость освещения я пока не допер как. Ну и, естественно, чтобы свет появлялся вовремя нужно рендерить за пределами области видимости причем неплохо так, зато ресурсов почти не отжирает (почти тот же матричный фильтр, только за один проход).
Может подскажете еще варианты какие? Хотел бы, конечно, тепловые карты задействовать, но не допер, как считать передачу света (если его заменить теплом), то есть с какими поэффициентами и как уничтожение света, чтобы не залило всю карту.
5,9 Мб, 1920x1080
529 296202
>>295939
Короче, подумтил тут шейдер для flood-fill'a, как в террарии используется, похоже (но там он программный был, насколько мне помнится), получается гораздо приятнее, чем на основе передачи тепла, только побочный продукт - ромбик очень уж не нравится
530 296790
>>295939

> (для мобилок, естественно)


Ну раз мобилки, то может не стоит городить что-то уж слишком сложное?
Может для начала попробовать простые техники?
531 297006
>>296790
Сначала тоже так подумал, а потом решил разные способы попытать в поисках самого привлекательного, все равно сроков не ставил, у меня это как своеобразная развлекуха получается, не просто же целый день сидеть без дела
532 297763
Нужно написать простенький редактор уровней для своего игрового движка на OpenGL + Physx. Для него нужен ГУИ фреймфорк. Подумав, взял wxWidgets. Мотивация - не такой тяжелый, как QT, не требует шаманства со вспециальными аддонами для студии, сразу есть компонент для отображения OpenGL контента.

Все правильно сделал?
533 297811
Пизданутый мобильный геймдев, меня он просто колотит блять. Под GLES 2.0 нет функции texture, а вместо нее старая-престарая texture2D, которую, сука, в 3.0 заменили на универсальную texture, а старую просто выкинули нахуй. У меня от них DIRECTX!
534 297816
>>297811
Жри говно молча
39 Кб, 604x587
535 297822
>>297816
слушаюсь
12 Кб, 325x386
Supreme !!NXKHuroIdQ 536 297856
Поясните за такую штуку: у некоторых этот код рисует круги(как и нужно), а у некоторых рисуются квадраты. Причём, у меня в одном приложении этот код рисует круги, а в другом - квадраты. А у других рисуются квадраты и в том приложении, в котором у меня рисуются круги.
Использую LWJGL
537 297862
>>297856
В гугле забанили? http://stackoverflow.com/questions/1513811/getting-smooth-big-points-in-opengl
Трипкод и имя убери
538 297864
>>297856
Вангую поинтсайз(который кстати КВАДРАТ) много больше радиуса выводимой окружности. Получается маленькая окружность выведеная вершинами с очень большими квадратами, которые толпятся все в точке +-2 пикселя.
Почему везде по разному - хз.
539 297866
>>297864
Поинтсайз динамичный и в любом случае у некоторых точки квадратные
>>297862
Спасибо
540 298130
Короче, ананасы, вопрос такой.
Допустим у меня есть точка, я нормирую ее координаты (от -1 до 1) в пределах некоторого вида, для этого вида у меня есть совершенно конкретные значения ширины и высота области видимости в пикселах. Так вот, допустим, ширина области будет 200, а позиция х точки 0.01375, это получается ее координата (в пикселах) теперь окажется равной 101.375, что нецелое число, естественно, так вот, каким образом OpenGL определит ее позицию на экране, он вернет 101 или 102, то есть мне важно не само число, а способ его получения.
541 298131
>>298130
OpenGL вычисляет позиции пикселей по их центру. То есть он определит позицию как пиксел, центр которого ближе всего к 101.375, что есть 101.5
542 298134
>>298131
Opengl ничего не вычисляет. Это как хтмл просто спецификация, а каждый браузер сам определяет как рисовать
543 298160
>>298134
Вот спецификация и говорит, как вычислять.
544 298172
>>298134
Не похуй ли? Всё равно все существующие реализации принимают за позицию пикселя его центр.
545 298217
>>298131
Спасибо
546 298221
Если я работаю в полноценном движке готовом (типа UE4), мне нужно шарить ОупенДжиЭл?

МимоБогГеймДизайна
547 298222
>>298221
дай человеку движок и он сделает игру
научи человека писать движок и он сделает нихуя
548 298411
20 Кб, 140x140
549 298833

>glDrawElementsInstancedBaseVertexBaseInstance

551 299643
>>299409
Причем тут OpenGL?
552 299673
>>299643
При том, что новый Дум на ОпенГЛ.
Да и вообще интересно же.
553 299678
>>299673
На ДХ.
554 299685
>>299678
Выбор из Вулкана и ГЛ.
555 299694
>>299685
Какая разница, если в статье ни строчки кода.
52 Кб, 650x650
556 299697
557 299742
>>299694
Хабрахабр, плес
558 300033
Пропускать varying через геометри шейдер обязательно? Или можно как-то пробросить из вертекс сразу в фрагмент чтобы не писать все эти лишние ин/аут?
559 300035
>>300033
Ну если геометрический шейдер участвует, то да надо.
560 300038
>>299409
Как-то про ДесуСекс у этого чела поподробнее расписано, и про ГТА в принципе тоже. Видимо поторопился он малость.

А есть еще подобные разборки кадров?
561 300042
>>300035
Ок, а есть способ сохранить имена переменных? Ну чтобы можно было линковать уже скомпилированные шейдеры для вариантов с геометри или без.
562 300055
>>300042
В новых версиях ГЛа можно хранить уже слинкованные шейдеры в бинарном виде.
http://docs.gl/gl4/glShaderBinary

И вроде как можно отцеплять шейдер от программы и прицеплять другой шейдер.

> Ок, а есть способ сохранить имена переменных?


Можешь также ещё попробовать юзать uniform buffer object
Или заранее задавать индекс переменной прямо в тексте шейдера.
563 300064
>>300055
Я имею в виду атрибуты вершин. Вот пример

-- vertex
out vec3 n;

-- fragment
in vec3 n;

если сюда вставить геометрический шейдер, как пропихнуть n через него? Это придется менять имена всех переменных в фрагментном шейдере.

-- vertex
out vec3 n;

--geometry
in vec3 n[];
out vec3 n_;

-- fragment
in vec3 n_
;

Короче, видимо, придется пилить дефайны и компилировать с ними разные версии шейдеров для программ с геметрическим шейдером и без.
565 300072
46 Кб, 960x540
566 300284
>>300071
Сделал связывание через layout (location).

Блять, решил выебнутся - сделать вытягивание шэдоу волюма в геометри шейдере, оказалось GL_EXT_gpu_shader4 (нижняя граница совместимости для которой я пишу) не поддерживает GS инстансинг (invocations). За один проход стрипами не вытянишь силуэтные грани. Сука.
567 300301
>>300284
Спизди из третьего дума, который идет даже на днищекартах.
568 300305
>>300301
Там это через стенсил работает.
569 300309
>>300305
Это везде через стенсил работает. Фишка в том чтобы генерить сам волюм на гпу. >>300284 кун
438 Кб, 651x499
570 300475
>>300284
Я спиздел. Всё делается за 1 проход. Замутил Carmack's Reverse на z-fail. Пришлось правда перенести все мешы на TRIANGLES_ADJACENCY.
571 300476
>>300475
А теперь покажи тень от самолета на светло-сером однотонном shadow receiver.
105 Кб, 636x286
572 300775
Аноны, ответьте пожалуйста на один вопрос. Имеется у меня модель, полученная из OBJ-файла, соотвественно там поверхности состоят из четырехуголников, которые я рендерю веером и использую буфер индексов, чтобы было проще с этим работать. Так вот, теперь для наложения карты нормалей мне стало необходимо вычислять векторы касательных дл всех вершин, нашел пикрелейтед для получения их, но вот ведь незадача - веер состоит из нескольких треугольников, да и к тому же каждая вершина в модели вообще будет использоваться по нескольку раз. Так получается, мне теперь придется потеснить буфер индексов и выкинуть его, а модель разбить на отдельные треугольники?
573 300864
>>300775
Тебе, по идее, нужно тагент посчитать и его тоже на ГПУ загрузить (как и вершины и текстурные координаты, например)
И вот таким шейдером рисовать
http://pastebin.com/ZJUcY5YA

https://web.archive.org/web/20080512083730/http://www.terathon.com/code/tangent.php
574 300949
>>300476
Моделька не замкнутая, поэтому иногда течет. Думаю все же на шедоумапах остановиться. Вот для примера PCF4x4 на 2 скрине. Еще немного поэксперементирую со всякими variance.
575 300964
>>300949
А если какой-нибудь FSAA наложить, может норм будет?
576 300965
>>300949
Сам сейчас курю тему с тенями, нашел один интересный документик про теневые карты: http://cg.ivd.kit.edu/publications/2015/sssm/StochasticSoftShadows.pdf
Если коротко: обещают за хорошее время рендерить тени достоверного вида.
577 301725
Аноны, где можно найти пример хелло ворлда с использованием OpenGL4 и SDL2 на сишке? Везде кресты.
579 301728
>>301727
Добра тебе няша, буду разбираться. Хотя как-то жирно для хелло ворда, я ожидал строк 50. Надеюсь ты меня не обманул.
580 301730
>>301727
GLCheckError() наркоман писал?
581 301731
>>301730
Я его из Дума 3 взял.
582 301737
>>301731
Точно из третьего Дума?
584 301744
>>301741
Kek. У меня значит не-БФГ, там оно GL_CheckErrors( void ).
И проверяет не 15, а 10 ошибок. Вообще пушка. Кармак, как ты мог такую хуйню написать?!
585 301745
>>301744
Охуел? Кармак - бог.
586 301746
>>301744
Можешь глянуть что теперь он пишет.
https://github.com/SoylentGraham/VRLib/blob/master/jni/GlUtils.cpp#L543

Алсо, кстати интересный момент.
Вот в индустрии есть крутые чуваки которые делают годные вещи и вообще они люди опытные, много чего написали и попробовали.
Интересно читать их статьи и какие-то наблюдения, но не всегда можно посмотреть их код.
Ну как-то вдохновиться им, какие-то интересные моменты найти для себя: "Блин круто! Я даже не думал, что так можно написать" и тд и тп.
587 301755
>>301746

>github


Вот так я как раз и думал переписать эту функцию - while, пока все ошибки не собраны. Видимо прошлую версию все же не он писал.

>посмотреть их код


ИМХО Кармак действительно один из немногих, чей реально рабочий код можно вот так просто увидеть. Еще есть утекшие исходники HL2, но это по сути наследие Кармака (Quake 1 -> GoldSRC -> Source).

Правда мне больше хотелось бы видеть статьи с разборкой рендера как в блоге http://www.adriancourreges.com/ - там разобраны Doom 2016, Deus Ex HR, GTA 5 и Supreme Commander.
588 301758
>>301755
Скачиваешь renderdoc и разбираешь. Совсем дурак чтоли.
589 301759
>>301755

> Видимо прошлую версию все же не он писал.


Прошлая версия писалась лет 17 назад. Она просто перекочевала в Дум.
https://github.com/id-Software/Quake-III-Arena/blob/master/code/renderer/tr_init.c#L241
590 301760
>>301755
Алсо, можешь поглять этот реддид
https://www.reddit.com/r/GraphicsProgramming/
591 301763
>>301760
Большое спасибо, анон!
592 301778
>>301727
Всё это обязательно указывать? В других примерах такого не вижу.
593 301780
>>301778
Ну вообще вроде как в документации написано, что атрибуты инициализируются какими-то базовыми значениями.
Я написал просто чтоб было.
Может закомментировать и глянуть как будет работать.
594 301797
>>301727
И да,

> #include <GL/glew.h>


Везде вижу использование всяких glew/glu/etc. Зачем? Это же надстройки над opengl. Почему нельзя писать на чистом opengl? Поясни пожалуйста за это.
595 301798
>>301797

> Почему нельзя писать на чистом opengl? Поясни пожалуйста за это.


Тебе придётся вручную получать адреса функций опенгла, писать константы какие-то и тд.
Ну а библиотека glew всё делает сразу за тебя.
596 301806
Так ананасы. По поводу шапки.
Нашёл хороший сборник ссылок про то, что касается опенгла сразу на одной странице.
https://github.com/eug/awesome-opengl
Это нам позволит сократить шапку раза в полтора.

Стоит ли повесить её?
597 301821
>>301727
Весь день тупил в эту пасту, opengl сложный, не могу понять принципа рисования. Вот есть у меня SDL-окно, opengl и glew тоже инициализировал, как мне нарисовать квадрат 40x40 пикселей? Как с пикселями вообще работать? Аноны, спасайте, голова пиздец болит, сложно-сложно-сложно.
598 301822
599 301842
>>301821
Зачем тебе работать с пикселями? OpenGL работает с треугольниками. Переключай голову.
600 301849
>>301821
Купи новую голову, поумнее, для начала.
601 301850
>>301842
А OpenGL разве нельзя сказать, чтобы он с пикселями работал? Слышал, что можно. Нагуглить не могу. У меня 2D.

>>301849
Это сложно.
602 301851
>>301850
Да можно, работай с пикселями, нах - https://www.opengl.org/sdk/docs/man2/xhtml/glDrawPixels.xml
Потом ты скажешь, что OpenGL тормозной, что уеч быстрее спрайты рисует и ты уйдешь из этого треда так и не узнав, что спрайты сейчас рисуют при помощи текстурированных треугольников.
603 301855
>>301851
Это не то. В том примере, про который я слышал меняли opengl'овский 0.000 и 1.000 на обычные пиксели, в итоге можно было юзать всё как раньше, но размеры указывать в пикселях. Там что-то с glMatrixЧётотам было. Я хочу рисовать текстурированные треугольники в пикселях!
604 301858
>>301855
Делай матрицу масштабирования с размерами клиентской области, будет тебе натягивание совы на глобус^H^H^H^H^H^H^H^H^H^H^H^H^H^H нормальных координат на оконные.

И все же, прекрати ебать себе могзги, положи их на место и пользуйся по назначению. Что у тебя там, клон марио-террарии-метроидвании с пикселяртом и претензией на олдскул, что ты так в оконные координаты вцепился?
605 301859
>>301858

> Делай матрицу масштабирования с размерами клиентской области


Блядь, а можно конкретней? Яж не разберусь.

> прекрати ебать себе могзги


У меня просто 2D игра, зачем мне что-то помимо пикселей?
606 301863
>>301859
Блин. Ты треугольник хотя бы нарисовал уже? А то я не знаю, на каком языке с тобой вообще говорить.

>Яж не разберусь.


>У меня просто 2D игра, зачем мне что-то помимо пикселей?


Ну нахуя ты в OpenGL-треде вообще? Надо чтоб "Стильно, модно, молодежно", так что ли?

Сри через GDI пикселями своими, раз не хочешь про то как в OpenGL слушать.
https://msdn.microsoft.com/en-us/library/windows/desktop/dd145078(v=vs.85).aspx
607 301866
>>301863

> Ты треугольник хотя бы нарисовал уже?


Нет, там двумерный массив, а это страшно, сложно, я решил отложить и изучить теорию.

> Надо чтоб "Стильно, модно, молодежно", так что ли?


Да я вообще к трудэ не хочу прикасаться, но надо ускорение от карточки.
Алсо, "Стильно, модно, молодёжно" это вулкан, скорее.

> microsoft.com



И всё же, поясни за матрицу. Неужели я на столько сильно туплю?
608 301867
>>301866
Я даже не знаю, проигрывать с тебя или плакать.

Пожалуйста, начни вот отсюда (забудь про игру пока): https://code.google.com/archive/p/gl33lessons/
609 301868
>>301866

> забудь про игру пока


Это я умею.

> code.google.com


Зачем заливать что-то на такие анальные сайты? Без JS оно не работает, с JS тоже не работает, сукаблядь, бесит. Ладно, хватит баттхёрта, открыл в другом браузере. Буду разбираться, спасибо.

И да, у меня ещё один вопрос на счёт OpenGL, мне всю свою жизнь придётся ебать числа с плавающей точкой? Все эти флоаты, даблы, к чему? С интами нельзя будет работать? Оно же и производительность режет, и просто неприятно.
610 301869
Промазал, >>301868 это сюда >>301867 .
611 301873
>>301867
Не кормите его, это тролль.
612 301886
>>301868
Ух, ты на чем сидишь в 2016 году, на 486SX50MHz с 4Mb RAM, S3 Virge 2Mb, HDD 100Mb??
613 301888
>>301867

>Пожалуйста, начни вот отсюда (забудь про игру пока): https://code.google.com/archive/p/gl33lessons/


Виндоблядство какое-то, да и объясняет плохо. В общем я решил твою пасту переписывать. Дошел до шейдеров и охуел, сложно, но хотя бы понятно что происходит.
Пикрелейтед, сигфолт, почему? Debug1 ещё выводится, debug2 и debug3 — нет. Уже пол часа пытаюсь найти причину.

>>301886
Huintel core i7-3770, 16Gb RAM.

Не понял к чему ты это написал, поясни.
614 301889
>>301888
Включаю режим Ванги: shader_file после fopen у тебя на null показывает, поскольку файл с текстом шейдера не лежит там где его пытается открыть программа. По дефолту клади его пока рядом с экзешником (с путями потом будешь разбираться).

> Huintel core i7-3770, 16Gb RAM.


Нормальная тачила.
Sizeof( int ) == sizeof( uint32_t ) == 4 == sizeof( float ). Про производительность не думай пока у тебя нет вообще ничего. Ты же не пишешь песочницу с отработкой дохулиарда взаимодействий, а значит про производительность не думай пока. Кармак с float работает, значит норм.
615 301890
>>301889

> поскольку файл с текстом шейдера не лежит там где его пытается открыть программа


Стоп, какой файл?

> По дефолту клади его пока рядом с экзешником


Что и зачем мне куда-то класть? Он же программой создаётся, нет? Не понял немного. Зачем вообще шейдеры нужны? Я думал они для того, чтобы йоба-грофен сделоть.

> Кармак с float работает, значит норм.


У Кармака задачи другие.
616 301891
>>301890
Читай глазками, а не ректальным очком анальной жопы:

> После того как исходный код шейдеров написан их можно загрузить из программы и создать из них шейдерную программу. Исходный код шейдера это обычный текст, загрузить его можно как обычный текстовой файл, в исходника к статье для этого используется функция LoadFile, которая открывает файл, узнает его размер, выделяет под данные файла память и читает весь файл в память, после чего эти данные можно использовать.

617 301892
>>301891
Да хватит уже кормить его!
618 301893
>>301892
Я сегодня добрый относительно.
619 301895
>>301891
Я ту статью вообще дропнул. Сейчас перечитал, стало понятнее, чувствую прилив знаний. Однако я по прежнему не понимаю где мне взять шейдеры не злись, Анончик, я туповат. Вот эта паста http://pastebin.com/raw/rWcQg0QQ генерит сраный шейдер или нет? Я же её переписываю.

>>301892
Но я же не разберусь!
620 301897
>>301895
Ты для начала ответь на самый простой вопрос - нахуя тебе вообще OpenGL?
621 301898
>>301895
Шейдеры есть в тексте статьи и в архиве, прикрепленном к ней.
622 301901
>>301868

>Все эти флоаты, даблы, к чему? С интами нельзя будет работать? Оно же и производительность режет


Шёл 2016й год, а дауны всё ещё не знали, что операции с плавающей точкой стали быстрее целочисленных операций ещё два поколения назад(а уже в первых пентиумах их производительность сравнялась).
81 Кб, 543x831
623 301910
>>301897
Скорость.

>>301898
Разобрался! Вроде как. Результата не вижу, просто сигфолта нет. Короче вот мой инит, на который я убил полные сутки, если не больше, оно уже рабочее? Как, например, фон белым цветом залить? Мне нужен хоть какой-то результат и я съебу в мир снов, ибо заебался, вас также перестану доёбывать некоторое время.
Треугольник рисовать не хочу, эт сложно.

Функция "build_shader" полностью скопипизжена из аналогичного примера на пастбине.
624 301914
>>301910

>Скорость.


Т.е. тех >9000 fps, которые тебе для твоих задач будет выдавать практически любой готовый 2D движок, тебе недостаточно?
625 301923
>>301910
Посоны, ну как фон-то сделать.
626 301925
>>301923

> как залить фон белым цветом


glClearColor + glClear например.

Болезный, ты сейчас спрашиваешь как написать сочинение про курочку Рябу (про "Мертвые души" или "Войну и мир" уже не обсуждаем, это недостижимая планка большинства местных кириллов), когда сам еще не заполнил палочками прописи за первую четверть первого класса, и после этого обижаешься, что тебя тут не любят. Понял?
2 Кб, 282x39
627 301930
>>301925
Я пытался так сделать, ничего не работает, вот и спрашиваю что забыл.

> Понял?


Я всё понимаю, и мне за это стыдно, честно-честно, но я ведь сам не справлюсь. Вот я сейчас этот хелловорд добью и больше тут по таким глупостям какать не буду, только с хелловордом помогите.
628 301931
>>301930
1) Заливаешь черным цветом.
2) А буфера флипнул?
629 301932
>>301931
Объясни как конкретно "флипнуть" буфер. glFlush() не оно?
630 301937
>>301932
Не угадал, SwapBuffers (если что, входит в API оконной системы, или того SDK, который юзается поверх окон).
631 301939
>>301937
О, круть, работает! Только в SDL это делается с помощью функции SDL_GL_SwapWindow(window), ели нашел.

съебал
380 Кб, webm,
640x480
632 302062
Двач, помоги. Как исправить исчезание тайлов (вембрелейтед)? Это как-то связано с камерой, но так как я полное дно и учу OpenGL лишь неделю, я просто не понимаю как это фиксить.

const char g_vertexShaderSource =
"#version 330 core\n"
"in vec4 data;" // quad + tex coord
"out vec2 TexCoords;"
"uniform mat4 proj;"
"uniform mat4 model;"
"uniform mat4 view;"
"uniform vec4 atlas;"
"void main() {"
" TexCoords = atlas.xy + (data.zw
atlas.zw);"
" gl_Position = proj view model vec4(data.xy, 0.0, 1.0);"
"}"
;

const char
g_fragmentShaderSource =
"#version 330 core\n"
"in vec2 TexCoords;"
"out vec4 color;"
"uniform sampler2D image;"
"void main() {"
" color = texture(image, TexCoords);"
"}"
;
633 302068
>>302062
Забейте, я просто еблан, который считает координаты беззнаковыми переменными.
634 303101
>>302965
Почему ты решил, что он умер?
635 303203
Я что-то второй день уже туплю, и никак не соображу, как реализовать линейную интерполяцию текстурных координат на треугольнике(имитацию отсутствия коррекции перспективы). Ткните меня носом в готовое решение, пожалуйста(оно же должно быть).
636 303233
>>303203
glOrtho?
637 303244
>>303233
Нет, нашёл всё-таки. Надо всего-то было передавать текстурные координаты с типом noperspective.
Шейдер, имитирующий говнографику PS1, почти готов!
638 303252
>>303244
И где же он?
19 Кб, 774x139
639 306175
Поясните за буфер глубины.
В общем решил постигать Constructive solid geometry через буферы stencil и depth, но не могу понять, почему моя сфера исчезает, когда я задаю glDepthFunc(GL_GREATER). Т.е. я ожидаю, что буду видеть задние стенки сферы, а вижу ровно нихуя.
Боюсь, что где-то фундаментально неправ. алсо GL ES2.

Чем изначально инициализирован буфер глубины? Или невидимые стенки каким-то хером не рендерятся вообще? Вырубание кулфейсов не помогает что-то увидеть
sage 640 306190
>>306175

>Или невидимые стенки каким-то хером не рендерятся вообще?


Куллинг по нормалям. Отключи его.
392 Кб, 806x626
641 306339
Рендерю тут кубы через GS(знаю, что он для этого не предназначен).
А ничо так, миллион кубов на экране без просадок на офисной интегрированной видеокарте. Можно свой майнкрафт(который на этой машине даже не запускается) пилить, лол.
642 306342
>>244623
Ну я же не только отрисовкой занят. Мне еще, знаешь ли, физику симулировать нужно, звук проиграть, подготовить анимацию, обработать сетевые данные и локальный ввод. Обеспечить работу геймплейных фич и ИИ. И все это тратит время, причем вполне прилично. Так что хорошо бы, что бы кадры рисовались быстрее, что бы на прочие дела времени оставалось больше.
643 306344
>>246578
А что такое мировое пространство ты знаешь? А объектное?
644 306368
>>306190
не, вот что было.
Что-то привык к undef-айнам
надо было: glClearDepth(0.0);

>Since the depth buffer values maps 0.0 to the near clip plane, and 1.0 to the far clip plane, there is no chance for any object under any situation to have a depth buffer value above 1.0. If it has, it's beyond the far clip plane and will be clipped instead. If it's not, it's value is less than 1.0 and is rejected by the depth buffer test.

Untitled-1.png459 Кб, 806x626
645 306828
Ололо. Только пиздец неудобно стрипами выводить, нормали какие нужно не сгенерировать.
646 307394
>>306828
красота!
647 307637
Какую либу для создания контекстного окна для рендеринга и инпут/аутпута стоит использовать вместе с OpenGL в 2016почти 2017 году? Использовал раньше GLUT но сейчас начинаю новый проект и думаю начать использовать что-нибудь по-новее, если есть.
648 307638
>>307637
Ты оппост смотрел, еблан?
14593336573600.jpg36 Кб, 421x604
649 307650
Есть какие-нибудь понятныи книжки/туториалы по PBR в реал-тайме? Я неплохо разбираюсь в обычном PBR рендеринге, во всяких GI алгоритмах, алгоритмах семплинга, брдф, хочу вот почитать про реалтайм рендеринг теперь.
650 307651
>>307650
понятные*
651 307654
>>307650
https://interplayoflight.wordpress.com/2013/12/30/readings-on-physically-based-rendering/

> Я неплохо разбираюсь в обычном PBR рендеринге, во всяких GI алгоритмах, алгоритмах семплинга, брдф


А вот на счёт этого что можешь посоветовать почитать/посмотреть?
Ну чтобы понять о чём это и ориентироваться в теме.
652 307730
я к вам вкачусь пожалуй )))
653 307732
что посоветуете для создания карт почитать? структуру хранения файлов, про форматы карт? Пилить свой супер редактор карт? или лучше поискать готовый?
654 307753
>>307732
Ищи готовый лучше.
655 307755
>>307753
ну вот я подумал ок возьму от квейка, ток чот в гугл не осилил документацию как устроен мап файл что там ваще надо чтоб загрузить такую карту себе в прогу
656 307819
Тут все юзают Visual Studio? Никого не смущает, что там блядский MSVC вместо нормального компилятора? И в чём смысл юзать вообще OpenGL тогда, если всё это будет работать только под виндой?
657 307827
>>307819
Отладил в студии, потом перекомпилил на чем надо, не?
658 307830
>>307827
Мне почему-то кажется, что если проект большой и там присутствуют всякие точные расчёты, то если скомпилить потом на другом компиляторе, получится нерабочая хуйня. Как минимум будут проблемы со всякими там округлениями. Хотя если использовать только GL типы, то хуй знает.
У кого-нибудь есть опыт подобный?
tom-cruise43 Кб, 600x400
659 307850
>>307819

>2016


>программировать под шиндовс


>в студии


Как же жалко спермохлёбов, которые качают многогигабайтную VS, чтобы скомпилировать несколько десятков строк кода. И к тому же, лишены таких полезных штук, как clang и valgrind. Я вот хз как еще под виндой профилировать эффективность использования процессорного кеша. Наверное только какие-нибудь платные профайлеры от интел.
660 307854
>>307850

>профилировать эффективность использования процессорного кеша


Лолирую со школьника.
661 307855
>>307830
Детерминизм может иметь значение только в сетевом коде. В графике всем на это довольно сильно похуй, так как ты всё равно не сможешь наговнокодить погрешности достаточно крупные хотя бы для того, чтобы у тебя хоть один пиксель не совпал.
Короче, ты хуйнёй страдаешь.
>>307850
А вот и нитакоекакфсе красноглазое уёбище подползло. Которое студию видело последний раз, наверное, десять лет назад, и не знает, что нынче она обладает самым мощным и удобным дебаггером, до которого валгриндам срать и срать, и всё равно не просраться. И да, профилировать использование процессорного кэша она тоже умеет. И загрузку процессорных каналов показывает. И распределение инструкций по ядрам. И скомпилированный код вплоть до уровня машинных кодов. И ещё много чего, но ты же ведь всё равно не поверишь, а посмотреть и убедиться сам не можешь, потому что ставить окнеблядиксное говно принципиально не будешь(экспресс-версия которого весит 160мб, хуй знает где ты гигабайты нашёл)?
662 307857
Я тут писал всё время на opengl3.3 и сейчас решил перекатиться на 4.0+. Видеокарта позволяет(посмотрел через GL View Extension или что-то такое + на сайте). В интернете пишут что-то про драйвера, но ведь opengl32.lib валяется в папке с компилятором. Кароче, я не понимаю. Что мне нужно сделать?
663 307858
>>307857
не с компилятором, а в системной, в виндоус сдк кароче*
У меня уже глаза слипаются.
664 307859
>>307855
Вот и пиздабол подъехал.
Во-первых, выпуски express устарели лет на 6 и уже давно не поддерживаются. Они более чем всраты, никакого вразумительного дебага ты там не найдешь, а компилятор даже с++11 поддерживает не полностью.
Во-вторых, дебаггер самый обычный, ничем не отличающийся от оного в любой опенсорсной среде типа codelite или qt creator.
В-третьих, попробуй поставить visual studio 2015 community, и охуеешь от размера, минималка (только цепепе, без шершавого и тулзов для мобилок/веба) выйдет в несколько Гб. Полный комплект исчисляется уже десятками гигабайт.
665 307863
>>307858
>>307857
Или там просто нужно выставить версию при создании контекста, а либа та же остаётся?
666 307882
>>307732
бампчую
667 307893
>>307882
анон можешь посоветовать примеры структур файлов моделей, карт, шейдеров.

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

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

Книжки из оп поста и сайты смотрел, большинство из них рендрит треугольник а потом начинает сразу рендрить готовые сцены, что бы описать всякие фишки работы с шейдером.
668 307905
>>307893
Отрендери треугольник для начала, чтобы не задавать идиотских вопросов, не имеющих отношения к теме треда.
669 307933
>>307931
Толсто, петушара.
670 308140
лол
671 308630
Может кто-нибудь рассказать, зачем вообще нужны GL типы данных? Типа GLfloat, GLuint ну вы поняли.
В каких случаях их стоит использовать?
Например, скажем, я написал свой бичёвый аналог glm (вектора/матрицы/всякие трансформации). Что будет, если я перепишу с GLfloat вместо float?
672 308633
>>308630
В С и С++ встроенные типы данных могут иметь разные размеры, в зависимости от версии компилятора или платформы. Использование псевдонимов позволяет повысить платформонезависимость.

Хотя сейчас это и не так актуально для ПК.
673 308634
>>308630
Не нужны, это костыль для устаревших платформ.
674 309920
Какой-то мудень начал переводить learnopengl туториал на хабре. Ожидаем прирост школьников и просто всяких залетных мразей.
675 309924
>>309920

> Ожидаем прирост школьников и просто всяких залетных мразей.



От чего такой вывод?
yoba.png135 Кб, 640x480
676 310291
То чувство, когда используешь йоба-шейдеры в пиксельной параше.
677 310326
>>310291
...Но все равно получается криво. Ты, либо, разрешение текстур подними, вместе с размерами экранного буфера, либо разрешение карты нормалей сделай соответствующим.
678 310796
>>288377
еблан, блять, пиздуй на филфак.
wut.png180 Кб, 806x626
679 311139
>>310326
Не, это я параллакс мэппинг хуйнул, но поначалу проебался с инвертированными координатами и тем, что текстуру высот без сглаживания скармливал(охуеть артефакты от этого лезут). Плюс у меня все текстуры в одном атласе, и если для цвета и нормалей тайлить всё норм, то для текстуры глубины я пока так и не могу окнчательно избавиться от шакальных артефактов на стыках. Похоже, придётся для глубины каждый тайл отдельной текстурой делать всё же(которые, впрочем, всё равно можно нарезать из одного файла прямо в коде).
680 311148
>>311139
Что пилишь?
681 311160
>>311139
Как ты атлас организовал?
00331.jpg24 Кб, 450x333
682 311179
>>311139
насколько помню в ярости мегатекстуры всем кускам текстуры ещё в "атласе" (что и есть мега-текстура) обрезали не по рамке, а ещё толи 16 пикселей "за рамкой" оставляли чтобы артефактов не было

возможно это твой случай
683 311211
>>311148
Шутан. Хотя кого я обманываю, движок я пилю.
>>311160
Как все организуют.
>>311179
Я знаю, что это артефакты оверсэмплинга, т.к. разрешения флоатов не хватает. По-видимому, придётся всё же добивать по краям линию.
684 311226
>>311211

> Шутан. Хотя кого я обманываю, движок я пилю.


Прикольна. Я тоже время от времени делаю, лел.
Ищи в треде вебмки, они мои, лел.
fffffuuu.png208 Кб, 806x626
685 311387
>>311139
Охуеть, два дня с этой хуергой трахался, но подебил таки.
Итого выяснилось, что артефакты на стыках лезут не из-за протекания текстур, а из-за того, что на стыках неправильно определяются ЛОДы, и берётся мипмэп не того уровня, как остальная текстура.
Проблема известная, но только вот почти нихуя не описанная нигде. Лечится обычно хранением в атласе текстуры в четыре раза большего размера, но я вылечил просто отключением нахуй мипмэпов, так как всё равно вместо текстур у меня гигантские говнопиксели, выглядящие одинаково на любых имеющихся расстояниях.
686 311404
>>311387
В отдалении эти пиксели будут выглядеть ещё хочу без мипмаппинга.
grass.png311 Кб, 806x626
687 311866
Генерируем траву через GS, первый уровень.
688 312300
>>195365 (OP)
Хотел задать вопрос, но пока писал - сам придумал ответ, проверил - работает, всем спасибо, идите нахуй.
689 312316
>>312300
Молодца, всё правильно сделал.
690 312684
Я полный ноль в триде, второй день сижу, ебусь с матрицами. Вроде, понял, как работает камера, нашел функцию lookAt, которая автоматически берет некоторые параметры камеры и вычисляет позицию вершин с их учетом. Есть функция paintGL, которая выполняется каждый фрейм. Логично засунуть lookAt туда, но тогда у меня выходит, что результирующая матрица постоянно меняет свое значение при том, что камера все время находится на одном месте, и отрисовывается, будто кубик постепенно отдаляется. Как быть?
691 312687
>>312684
Все, разобрался. Надо просто на каждый фрейм создавать новую матрицу view.
692 312770
А кто-нибудь подскажет, как камеру вращать? Ничего не гуглится нормального, википедия предлагает хуячить невъебенную матрицу вращения. Это пиздец какой-то, можно же сделать попроще. Больше ничего найти не могу. Либо какая-то хуйня написана, либо ничего не работает.
693 312776
>>312770

>можно же сделать попроще


Юзай ДВИЖКИ
694 312779
>>312770
Зачем ты берешься писать движок, если даже базовые вещи для тебя непонятны?
695 312781
>>312779
То есть, если я не могу что-то осилить, значит нельзя к этому прикасаться? А какие базовые вещи ты подразумеваешь - матрицу поворота, представляющую из себя ебаное нагромождение тригонометрального хаоса?
А вообще я уже разобрался, просто гуглил немного неправильно.
696 312810
>>312781
Пока ты не знаешь базовых вещей (линейной алгебры), к написанию трехмерного движка прикасаться нельзя, все верно.
697 312839
>>312810
Речь о линейной алгебре и шла, болван. И да, все детали знать все равно невозможно. Никто и не мог подумать, что поворот можно описывать несколькими разными способами, ведь ни в википедии, ни в некоторых учебниках, приведенных в шапке об этом не было сказано ни слова.
698 312932
>>312839
Учитывая, что в первом же туториале из шапки это подробнейшим образом расписывается со всей математикой, то болван тут только ты. Иди уже возьми юнити, там всё за тебя сделано.
grass.png732 Кб, 806x626
699 313043
Итого двухуровневая процедурная трава на GS, работает приемлемо на встроенной Intel видяхе.
Только после всех правок и отладок мне самому на геометри шейдер смотреть страшно теперь.
700 313053
>>313043
Выглядит отвратительно.
701 313061
>>311866
>>313043
Неплохо. Теперь добавь цветочков всяких, кустов и деревьев, чтобы естественнее выглядело. Что за игру пилишь?
702 313067
>>313053
Есть такое. Чтобы нормально выглядело, теперь надо нарисовать приличные спрайты травы(а не взять первый попавшийся из гугла), добавить освещение, анимацию и тени на переднем уровне. А то пока что свет считается банально по нормали земли.
>>313061
Ничего не пилю. Просто нарабатываю скиллы и изучаю возможности.
703 313248
Скажите, как эффективнее всего (по роизводительности) показывать двухмерную картинку (массив цветовых значений) в клиентской области окна?
Можно ли напрямую попиксельно выводить в color buffer?
704 313252
>>313248
Статичную? Двумя треугольниками с текстурой.
705 313257
>>313248
Зачем заморачиваться на производительность при такой задаче, с отрисовкой одной двухмерной картинки даже самая древняя видеокарта справится на ура. Так что >>313252 - cамый простой способ.
706 313260
>>313257
Дело в том, что это и есть один из самых производительных способов.
707 313312
>>313252

>Статичную?


Нет. Есть поток изображений от прибора (рентген-аппарт), нужно наложить на них некоторый цифровой фильт и показать результат в окне. Так как скорость потока заранее неизвестна, нужно позаботиться о производительности в самом нагруженном случае. Может есть достатчно быстрый способ выводить в идеопамять (без OpenGL), желательно с двойной буферизацией?

>Двумя треугольниками с текстурой


Не понимаю. Какие треугольники и текстура? У меня нет 3D моделей, у меня - 2D изображения.
Не бейте сильно - я раньше с графикой не работал.
708 313321
>>313312
Тебе нужно просто выводить прямоугольник с текстурой, как тут: http://www.learnopengl.com/#!Getting-started/Textures
3D это 2D с еще одним измерением.
Обрабатываешь свой результат, как тебе нужно, а потом просто делаешь из него текстуру и загружаешь.
Ты уверен, что тебе нужен OpenGL? Может тебе и какой-нибудь GDI+ подойдет?
709 313335
>>311387
Лечится текстурными массивами. Тоже когдато ебался с атласами и протеканием в мипах. Потом забил и перешел на Array Texture.
710 313338
>>195874
ВебГЛ - это отличная идея для демоверсий, например, чтобы не парить юзера качанием бинарника и установкой его на свой компьютер, а ты - ёбаный даун.
711 313359
>>313335
Я на 3.3 делаю, там их ещё нет.
713 313565
>>313378
Опа! То ли я слепой, то ли мне подсунули табличку с ошибкой, когда я их доступность смотрел.
Отлично, пошёл опробовать.
714 314035
>>313321

>Ты уверен...?


Нет, не уверен.

>OpenGL или GDI+


А как у GDI+ со скоростью и двойной буферизацией?
И вот ещё вопрос к профессионалам. Как согласовать частоту кадров (и моменты производства кадров) с частотой работы видеосистемы? Может быть видеосистема может посылать какой-нибудь сигнал о том что нужно, чтобы приложение срочно выдало ей следующий кадр (не знаю как правильно сформулировать)?
715 314186
>>314035
google vsync
716 315763
Гейманы, хелп.

https://bitbucket.org/pinkierton/dgl/src/41e0d5fb8eca4f2431d0bbeb55280e43c07d644c/app02/source/app.d
167:0

Суть - нихуя не работает матрица перспективы. Перепробовал и считать ее в функции, и подставлять константную - хуй там плавал, черный прямоугольник.
Если заменить на единичную - разумеется все работает (это же все равно что ее и нет), но тогда нихуя нету перспективы - как камеру от объекта не удаляй, он сука всегда одного и того же размера.
717 315801
>>265718
Объяви свои брушбоксы глобально (за пределами функции) или сделай их статическими.
718 315921
>>265718
У тебя на 9 и 10 строчки идёт объявление функций же.
719 316880
Это нормально что фрагментный шейдер игнорируется напрочь? Вставил шейдер после кода с дисплейными списками старого ГЛ (glbegin-end), в итоге все рисуется цветом предыдущих объектов. Инициализирую правильно, по крайней мере отдельно рисует треугольники нужными цветами.
sage 720 316922
>>316880
gDEBugger в помощь.
Это должно быть в шапке.
sage 721 316924
>>316922
Он же мертв уже десятилетие?
722 316933
>>316924
Чего это? Пользуюсь сам, брат жив. Вещь просто незаменимая.
723 317400
>>315763
у тебя усеченная пирамида начинается на расстоянии 1.0 от камеры, а объект находится на расстоянии 0.5.
Безымянный.png76 Кб, 918x809
sage 724 317676
Сап. У меня явные проблемы. Помогите советом плис.
sage 725 317677
>>317676

> cmake


Выкинь это дерьмо и больше никогда к нему не прикасайся. Особенно на винде.
726 317687
>>317676

>No CMAKE_C_COMPILER could be found.



Не благодари.
pekasmeh.jpg9 Кб, 200x200
727 317691
>>317676

> sudo pacman -S glfw-x11

sage 728 317735
>>317677
а как альтернативу, но годную, что использовать?(меня в гугле забанили, моск кипит немного)
sage 729 317796
>>317735
не слушай этого дебила, если разрабы сказали использовать cmake, значит используй cmake
730 317831
>>317735
SCons, WAF, как альтернативу, одного поля ягоды
731 317836
>>317796
Я даже не знаю кому верить блять, ты хотя бы объяснил бы как Cmake юзать.
sage 732 317853
>>317796

> не слушай этого дебила


Программа, которая ищет (и не находит) компилятор в реестре и по захардкоженным путям, в то время, когда он настроен и есть в PATH, просто не заслуживает аргументированного обсуждения.
sage 733 317854
>>317836

>как Cmake юзать


в твоем конкретно случае
http://www.glfw.org/docs/latest/compile.html
а лучше не выебываться и скачать уже готовый билд
http://www.glfw.org/download.html
734 317855
>>317854
Я уже решил не ебаться с Cmake.
d.png21 Кб, 601x574
sage 735 317857
>>317853

>ищет (и не находит) компилятор


кому ты пиздишь?
ZuFf5Ek.png608 Кб, 2696x1612
736 318170
Здравствуйте, мои няшки!
Пишет вам полный GL ньюфаня. Вопросов есть у меня.
1. Я пытаюсь нарисовать плоскую картинку из квадратных спрайтов по типу как на пике. Для этого я прохожу в цикле по всем тайлам и каждый накладываю, как текстуру. В принципе получается нормально, но только тогда, когда размер текстуры в пикселах совпадает с размером области ее наложения. Когда я пытаюсь зумить изображение, оно превращается в тыкву, текстуры уродуются и становятся заметны швы между ними. По-видимому, как-то нужно это дело сглаживать. Как?
2. У меня есть условно неподвижный пользовательский интерфейс на переднем плане и некий 2д вид на заднем, который может двигаться и отдаляться. Сейчас я использую для всего одни фиксированные координаты по типу
GL.Ortho (0, w, h, 0, -1, 1);
GL.Viewport(0, 0, w, h);
Мне приходится заниматься неудобными пересчетами координат. Подозреваю, что есть более рациональный способ это организовать. Как?
3. Мне приходится рисовать линии и точки. Я освоился со стандартными методами вроде GL.Begin(PrimitiveType.Lines);
Но все нарисованное выглядит пиксельно и убого. Хочется рисовать красивые плавные линии ( к примеру, с градиентом цвета от середины линии к краям в перпендикулярном направлении). Как это делать?
Пока все, может потом еще вспомню.
Спасибо.
737 318209
>>318170
Во-первых, всё, что ниже GL 3.3 выкинь на помойку.
Во-вторых, для какого-то простого 2д лучше юзай SFML.
Там, кстати, есть возможность использования шейдеров.
tumblrmaorhbBFRh1rfjowdo1500.gif4 Кб, 500x500
738 318311
Дело такое. Как заменить цвет определенных пикселов при наложении текстуры? Например у меня есть текстура со спрайтом котика. Я хочу использовать ее для рисования котиков с разноцветными глазами. Для этого пикселы глаз в текстуре я рисую например маджентой. Как мне при наложении перекрасить их в нужный цвет не меняя остальные?
739 318312
>>318311
Масками.
740 318313
>>318312
объясни нормально. я только вчера жл учить начал
741 318483
>>318313
Ну так возвращайся, когда выучишь, дебил.
наверни, блджад, хотя бы десяток уроков, все вопросы отпадут сами
742 318627
Привет, такой вопрос. На каком языке еще можно что-то пытаться делать в опенгле кроме сей? Идеально было бы что-то вроде руби или хаскелла, но в инете по этому я нашел чуть более чем нихуя.
743 318628
Есть множество текстур 6464 (вернее это одна большая текстура с кусками по 6464), нужно прорисовывать фон соответствующий размерам экрана из этих кусков по 64. Сначала я думал на ходу генерировать одну текстуру размером с экран и просто отправлять её на прорисовку как фон. Однако после движения камеры (внутренней камеры) фон должен смещаться. И здесь нужно его пере генерировать, смещая часть и дорисовывая другие блоки с другой стороны. После этого меня посетила идея разбить фон на участки скажем по 512*512, и генерировать их. И прорисовывать фон из этих текстур. И генерировать новые при необходимости. Или не стоит заворачиваться и просто пере генерировать фоновую текстуру каждый раз?
744 318630
>>318627
Опенггл это набор си функций. Практически любой язык поддерживает вызов си функций из себя. Вот к примеру один такой список: https://www.khronos.org/opengl/wiki/Language_bindings первая ссылка в гугле.
Естественно ты не найдёшь материалов по этим библиотекам. По сути там просто обёртка вызова аналогичных си функций из твоего языка программирования. И что бы написать, что то на нужном тебе языке тебе нужно: Знать какую функцию ты хочешь вызвать на си - это написано в книжках по опенгл и не важно на каком языке все функции всегда вызываются одинаково. И знать как запись этой функции выглядит в твоём языке, это написано в мануале библиотеки обёртки. Конечно некоторые библиотеки поддерживают всякие плюшки, но об этом написано отдельно в их мануалах.
745 318631
>>318628
Просто делаешь сетку и отрисовываешь.
проблема0.jpg216 Кб, 1577x832
746 319180
Сап, Господа. Вроде пишу по тутариалу, но возникла такая проблема. Решил обратиться в тред, т.к. сам я разбираться буду от одного дня и до недели/двух недель. Можете объяснить в чём возникла проблема? Серьёзно, исходный код, прилагающийся к тутариалу, смотрел уже.
Если есть какие-то арф. ошибки в посте, то сори
747 319181
>>319180
Отвечает Капитан Очевидность:
У тебя не определена переменная vertexShaderSource.
748 319184
>>319181
Как её определить?
749 319187
>>319184
char * vertexShaderSource;
Не забудь в нее исходник шейдера положить, а то компилировать нечего будет.
750 319193
>>319187
спасибо, с меня пиво
751 319335
>>319000
если убрать все из рендера и оставить только очистку буферов все равно падает?
квады.jpg22 Кб, 295x263
752 322484
Есть объект , состоящий из quads , проблема в том, что квады прорисовываться сразу и так получается , что внешние не видят внутренние , и все они ориентируются на фон ( за прозрачными частями не видно сзади стоящие квады, а сразу видно фон) .
сообсвенно вопрос , как это исправить.
753 322531
>>322530

>включенным блендингом


включен
754 322535

>предварительно отсортировав, начиная с дальних от камеры.


т.е. каждый квад прорисовывать отдельно( я прорисовываю пачкой).
755 322538
>>322533
GL_ONE, GL_ONE_MINUS_SRC_ALPHA
756 322548
>>322542

>скармливай ему в каждом кадре сортированный набор точек, пусть он из них генерит квады.


так я и делаю, только скармилваю не отсортированный.
757 322551
>>322542
вот оригинал текстуры
http://rgho.st/8gqrmvCgR
758 322558
>>322542
Бленд стоял немного другой, поменял
вот так выглядить один и тот же кусок с разных сторон.
759 322561
>>322559

>Советую подумать насчет сортировки частиц. Если их не 10кк, то можно быстро отсортировать, только не пузырьком, я например предпочитаю поразрядную сортировку - время почти O(n), только памяти жрет примерно дополнительно 200% от исходного массива, если делать побитово.


частиц всего 5к
использую движок, там он немного специфичен
http://rgho.st/8fWZFQMSr
blob557 Кб, 1039x616
760 322568
>>322563
слушай, а как вот от такого дерьма избавляться ?
761 322573
>>322568
лол, убрал дискард
сделал

>умножением обоих параметров на коэффициенты в районе (0.7;1.0).


и стало не плохо
762 322580
>>322574
ага
спасибо! пока без сортировки и ZWriteEnable = false ( не пишем в буфер глубины , что бы убрать просвет)
выглядит довольно таких приемлимо
763 322581
>>322563

>Движок поддерживает GL_DYNAMIC_DRAW буфер?


да
slowpoke
blob754 Кб, 1020x574
764 323020
>>322559
Слушай, сделал сортировку
но все равно если писать в буфер глубины, то получается херня как на скрине, только теперь с другой стороны( ну раньше грубо говоря смотря слева так было, теперь справа)
blob514 Кб, 1008x564
765 323029
>>322583
и еще , ровно в центре моей текстуры
вот такая поебота , фпс на ней падает в 100-150 раз!
не знаю откуда она и как ее убрать( думал там много частитиц алгоритм нагенерил в одном месте, сделал сортировку на выброс рядом стоящих и одинаковых , но не помогло)
766 323054
>>323050
да в центре текстуры

>>323045
от ближнего к дальнему
767 323153
>>323054
Наоборот сделай, прозрачные объекты положено рисовать от дальних к ближним.
768 323302
>>323153
проблему не решило(
769 323379
>>322560

>Пацаны правда уже на вокселях и с самозатенением делают


пробовал я делать на вокселях
производительность полная дерьмо
CloudSystem.webm3,9 Мб, webm,
1024x576
770 323966
>>323384
вот видос, что выходит.
разницу в 1 частицу не получится сделать, ибо генерируется все процедурно.
CloudSystem 2017-01-20 11-04-01-50.webm3,1 Мб, webm,
1024x576
771 323968
>>323384
а вот так, если не писать в zbuffer.
772 323981
>>323971

>Пока поэкспериментируй с их яркостью и прозрачностью, помнишь про домножение итоговых частей вектора цвета во фрагментном шейдере?


Помню-помню)
я еще за освещение не брался.

>И еще имеет смысл добавить прозрачность при приближении к камере


а как это сделать?
773 323982
>>323971

>а сами частицы еще поворачивал бы


ну вроде бы квады, все время смотрят на меня лицом
774 324015
>>324002

>В конце надо домножать альфу на одну хитрую функцию


у меня кстати еще трабл, у меня ща альфа умножена на 0.7
если умножать на меньшее значение , текстура начинает светиться по ебаному , ща покажу
blob1,5 Мб, 2028x1052
775 324020
>>324015
вот такое вот дерьмо
776 324028
>>324025
помогло
CloudSystem.webm1,8 Мб, webm,
1024x576
777 324183
>>324025
Вот пока вот так получается.
778 324698
>>197338
кто такие последние 3?
779 324853
>>324679
ну у меня ~4к вершин на облако
наверное надо поменьше
ну и функцию которая их генерит надо подкрутить немного, что бы не такое круглое было.
781 326559
>>326557
Перфект
il-2-sturmovik[1].jpg182 Кб, 720x405
782 326664
>>326557
Ju 87 BOMBANOOLO
убийцу Ил-2 пилишь?
783 327115
>>326658
выше есть
шейдер особо не менял
784 327117
>>326664
неа
blob859 Кб, 1189x777
785 327118
>>326559
из-за чего вот такое гавно может появляться ?
как полосы
blob596 Кб, 651x526
786 327119
>>327118
и еще вот такое дерьмо
когда цвет задаю
787 327129
>>327124

> генерацию частиц


они не в шейдере генерируются
спс, вроде понял, ща попробую.
788 327133
>>327124
не помогло
вроде делаю рандомного размера частицы , все равно полосы появляются
789 327146
>>327137
окей
790 327172
791 327226
>>327137
бля еще ни хуя не выходит сделать его не однородного цвета
14785318921590.webm6,9 Мб, webm,
1280x512
792 327500
Вот правильные облака
14785318926446.webm6,3 Мб, webm,
960x540
sage 793 327502
>>327500
бля, не та вебмка
794 327580
>>327502
ну у меня освещения вообще нету пока
фпс ~25 это не кайф , особенно когда в сцене одни облака.
выглядят конечно они пиздато, как сделанны ?
795 327592
>>327580
волюм+перлин+ворли+сабсерфейс скаттеринг+атмосферик скаттеринг
видяха ноутбучная интеловская
796 327691
>>327592
т.е. это частицами?
797 327705
Запилил вот это в делфи.
Стоит ли перекатываться в кресты?

https://drive.google.com/file/d/0B5eCY5SALqIZTENvWUVkSm01LTQ/view
798 327798
>>327592
отпиши плиз на почту woIJRwerqANUSya8UYPUNCTUMrs'@u если есть возможность, подскажи как размутить таких облаков, хотя бы без освещение
799 327904
Подскажите, я правильно понимаю, как работает v-sync?
Если, например, я установил swap interval равным 1 (в духе setSwapInterval(1)); далее, если вход в функцию SwapBuffers() произойдёт раньше чем драйвер получит v-blank-сигнал от монитора, то этот поток будет остановлен до получения этого v-blank-сигнала драйвером. Сразу после этого передний и задний буферы поменяются местами и монитор считает изобржение из переднего буфера без разрывов ("tearing"), а поток, вызвавший SwapBuffers(), будет "разбужен" драйвером. То есть приём и обработка событий (пользовательского ввода, таймера...), которые могут произойти пока первый поток "спит" (в SwapBuffers()), нужно производить в других потоках. Если же драйвер получит v-blank-сигнал раньше, чем будет вызвана SwapBuffers(), то поток, вызвавший SwapBuffers(), не блокируется, буферы меняются сразу же, ну и тк делее.
Это всё верно, или нет?
Не очень понятно, поток будет остановлен точно внтри SwapBuffers(), или есть вероятность, что он может проскочить дальше?
800 329129
Я хочу детектить столкновение в 2д пространстве через рендер в свой фреймбуффер с каким-нибудь stencil буфером. Что-нибудь в буфер и положу, а как потом эффективно прочитать оттуда?
Или может все же как-то можно передать флажок из шейдера?
801 329369
>>329305
Текстурки кривые, описать формально сложно.
Так-то, конечно, и без gpu не с хер задержка в двадэ-то, но хочется чтоб малейшее соприкосновение на экране детектилось. Да и спортивный инетрес.

Мб в дальнейшем будут тысячи невыпуклых фигур -- поди посчитай все!
802 329894
>>329369
Видеокарта для такого не подходит из-за сильных задержек и доступа через PCI-E. Сделай софтовый растеризатор с консервативной растеризатором, должно выйти если не годно, то хотя бы забавно..
803 329895
>>329894

>консервативной растеризацией

804 331941
>>195958
С пылесоса пишешь?
805 332397
>>329129
Нормально никак, ведь тебе нужен не только факт столкновения, но и информация о столкнувшихся объектах?

Но через жопу (glReadPixels, occlusion query) можно попробовать:
https://www.opengl.org/discussion_boards/showthread.php/180072-Pixel-perfect-collision
http://stackoverflow.com/questions/16416955/2d-pixel-perfect-collision-detection-with-opengl

Еще можно попробовать рендерить в текстуру, которую одновременно использовать в качестве семплера, как-то кодируя в фрагметнах пересекающиеся спрайты, но разработчики стандарта говорят, что так делают только мудаки и поведение будет непредсказуемым:
https://www.khronos.org/opengl/wiki/GLSL_:_common_mistakes#Sampling_and_Rendering_to_the_Same_Texture
806 332515
>>327904
если setSwapInterval(1), и SwapBuffers() ждет двух событий: когда закончится рендер и затем v-blank-сигнала, пока эти события не произойдут поток заблокирован.

> То есть приём и обработка событий, нужно производить в других потоках.


Если нужно управление, пока рендер тупит, да, нужно всю параллельную обработку выносить в параллельный поток.

Вот тут чувак придумал костыль, с использованием glDeleteSync, нахуя не знаю, но может пригодится.
http://stackoverflow.com/questions/5829881/avoid-waiting-on-swapbuffers
807 332664
>>318170

> GL.Begin(PrimitiveType.Lines);


Забудь. OpenGL 4.0 Core Profile + GLSL - это твоя дорога.

> Для этого я прохожу в цикле по всем тайлам и каждый накладываю, как текстуру


Текстурные атласы используй. Это более гибкий способ, карту можно, например, хранить в текстуре: один пиксель - индекс тайла, тайлы отрисовывать на плоскость на лету из атласа. (Кольцо вычетов по модулю - наше все, да)

>Когда я пытаюсь зумить изображение, оно превращается в тыкву, текстуры уродуются и становятся заметны швы между ними.


Не хрена не понял из твоего описания. Просто зумить текстуру ты можешь матрицей в вершинном шейдере, но разумеется, она будет обрезаться / уродоваться (в зависимости от настройки границ) по границам полигона на который ты её натягиваешь. Если ты работаешь с тайлами, зумь полигоны, а текстурные координаты не трогай.

> Мне приходится заниматься неудобными пересчетами координат.


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

> Хочется рисовать красивые плавные линии


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

> Пока все, может потом еще вспомню.


В какой среде хуяришь? Видюха какая?
808 332685
>>318311
В пиксельном шейдере при отрисовке кота заменяешь условный цвет глаз, на тот который передаёшь снаружи через uniform переменную.

Более нормальный подход: используешь для задания цвета смещение его в спектре в цветовой модели HSV/HSB, нак удобне поменять желтый на зеленый с оттенками. Для обозначения областей можешь использовать альфа-канал, размечая разные области для закраски можешь использовать альфаканал.
809 332769
>>318627
Первые же ссылки в гоголе:
haskell : https://wiki.haskell.org/OpenGLTutorial1
ruby : http://ruby-opengl.rubyforge.org/tutorial.html

Опять забанили за порнуху?
810 332790
>>319477
Хуя ты молодец. Еще возмущаешся, что детерминированная машина из-за твоего косяка видишь ли не работает. Охуенчик.
811 332801
>>319180
Бля. У тебя лог ошибок для того и дан, что бы ты читал, что там написано.
812 344849
>>329129
Возьми любой физический движок и заюзай библиотеку обнаружения столкновений из него. Для столкновений уже давно придуманы быстрые алгоритмы, не надо изобретать велосипед.
813 344872
>>333815
Шта?
814 356121
>>327502
это воксели?
815 356130
>>327502
как вообще сделать такое?
есть какие-нибудь мануалы?
хотя бы что-то примерное?
Скриншот 2017-02-08 16.45.35.png28 Кб, 643x503
816 368929
>>195365 (OP)
Хуй знает, туда ли вкатился, но попробую. Решил попробовать попипасть под ГейОСь на СДЛ, запилил по первому попавшемуся туториалу окошко - а в нем какие-то артефакты, и хуй знает, нормально ли это и как их убрать. SDL_RenderClear пробовал, не помогает.
Что я делаю не так?
817 369010
>>368929
Где код?
818 369036
>>368929

> ГейОСь


Кек, удачи тебе, надюсь не амд под капотом.
819 369043
>>369036
Такс-такс, у меня прошка 2011 года, там таки АМД. Ты же не будешь мне намекать на ЗАПЕКАНКУ? В играх-то все нормально.

>>369010
Отсюда:
http://lazyfoo.net/tutorials/SDL/02_getting_an_image_on_the_screen/index.php
820 369110
>>369043

> Отсюда


Потом выше ты привёл функцию SDL_RenderClear
Эта функцию из SDL2, а ты даёшь ссылку на урок по SDL1
Зачем?
why.jpg22 Кб, 510x264
821 370572
Зачем вам опенгл? Это же графический ассемблер сука.
Сука движкопейсатели.
822 370584
>>370572
Почему ты решил, что опенгл используется только в игростроении?
823 371053
>>370584
Я про гры ни слова не написал.
В любых других областях используют движки. Или ты думаешь что NASA отрисовывает треугольники и изучает GL_BLENDы, бесконечными списки ARB констант и всякое говно вида glEnable glDisable.
824 371127
>>371053

> Я про гры ни слова не написал.


> /gd/


> движкописатели


Да, наверное, ты говорил про аэродинамику.
825 371148
OpenGL в /gd не нужен.
</thread>
Скриншот 2017-02-10 15.19.40.png21 Кб, 804x621
826 371291
>>369110
>>368929
Немного разобрался. Теперь я умею выводить квадратики, менять цвета и считывать ввод с клавиатуры/мыши. Сейчас буду разбираться с рендерингом шрифтов и png. Ву-ху!
827 371293
>>371291
Бери сразу какой-нибудь ImageMagic или DevIL и проблем знать не будешь, как с каким-нибудь libpng.
828 371296
>>371293
stb_image
829 371311
>>371296
Я этот хедер глянул, ебать они его на 7 тыщ строк развели...
830 371316
>>371053

>В любых других областях используют движки.


Движок сам себя не напишет
831 371334
Кто-нить парсил форматы PMD/PMX?
У меня взлетело. Сейчас подпиливаю к ним Bullet
832 371429
>>371293
Хорошо, для шрифтов - FreeType.
833 372709
>>371429

>FreeType


В нём метода нарисовать_заебись(строку), рисует он исключительно по буквам, а потом эти буквы ещё и в слова собрать нужно будет. Это только кажется тривиальным, пока не знаешь, что такое кернинг и лигатуры (а если ещё захочешь для жирного саудовского рынка что-то напедалить - тогда вообще можно будет повеситься с арабским письмом).
Короче, использовать нужно harfbuzz.
834 372780
>>371429

>Хорошо, для шрифтов - FreeType.


Нахуя этого монстра тащить? Для всего хватает stb_truetype, да и свой рендер навелосипедить - дело пары недель.
835 372802
>>371429
>>372780
зочем штифты?
836 372872
>>372802
Сделать консоль как в квейке.
837 375483
как мне проверить в fragment shader, что я НЕ передаю текстуру?

uniform sampler2D texture;
main()
{
if(texture == ???)
.......

чтобы переключить подсветку. Какие там значения возможны-то?
839 375644
>>375483
Лучше опиши что ты именно хочешь.
840 375911
>>375644
Спасибо за предложение. Проблема вот какая была:
кручу через шейдер, если текстурки не передаю, то всё чорное.
Нужно было, что при отсутствии текстур, fragment shader считал хотя бы то нормалям отражённый свет.
Решением было (как советовали на ссылке), делать вкл/выкл через uniform

Сделал вот так:

uniform float no_tex;

void main()
{
//
if(no_tex == 0.0)
{
ct = vec3(1.0, 1.0, 1.0); // fiat lux cykablat!
at = 1.0;
}
else
{
ct = texel.rgb; // from the texture
at = texel.a;
}

gl_FragColor = vec4(ct cf, at af);

}
840 375911
>>375644
Спасибо за предложение. Проблема вот какая была:
кручу через шейдер, если текстурки не передаю, то всё чорное.
Нужно было, что при отсутствии текстур, fragment shader считал хотя бы то нормалям отражённый свет.
Решением было (как советовали на ссылке), делать вкл/выкл через uniform

Сделал вот так:

uniform float no_tex;

void main()
{
//
if(no_tex == 0.0)
{
ct = vec3(1.0, 1.0, 1.0); // fiat lux cykablat!
at = 1.0;
}
else
{
ct = texel.rgb; // from the texture
at = texel.a;
}

gl_FragColor = vec4(ct cf, at af);

}
841 375925
>>375911
Не проще биндить текстуру из белого пикселя по умолчанию?
842 375943
>>375925
это для меня сейчас временная мера, пока не разобрался, как решено с текстурами у второй модели.
Первая - PMD, вторая - PMX. Но японец, написавший парсер, сваял два класса с несовместимыми по духу структурами данных.
Поэтому во второй ещё ничего не биндится совсем.

Вообще у меня такое чувство, что моя прога - куча из OpenGL версий от 1 до 3.1. Эти говна ещё раскидать надо будет
843 376832
>>375943
Текстуру тебе надо всегда передавать во фрагментный шейдер.
Если, например, хочешь отключить отображение текстур на мешах моделях либо делай отдельный шейдер либо передавай прозрачную текстуру.

> Вообще у меня такое чувство, что моя прога - куча из OpenGL версий от 1 до 3.1. Эти говна ещё раскидать надо будет



Лучше пиши сразу на 3,3+ версии
844 377509
>>376832

>Текстуру тебе надо всегда передавать во фрагментный шейдер


туда и передаю

>Лучше пиши сразу на 3,3+ версии


какая альтернатива для gluSphere, gluCylinder и т.д.
845 377568
>>377509

> какая альтернатива для


Написать самому или читать какой-нибудь .obj файл.
846 378116
Есть одна задача, к которой я никак не могу найти решение. Помоги мне, анон?

У меня есть необходимость рендерить в 3д пространстве большое количество плоских поверхностей с составным содержимым. Можно воспринимать это как карточки, они могут состоять из большого количества слоев - фон, рамка, текст, элементы декора. Порядок слоев определен. Плоскости могут быть повернуты в пространстве.

Я не могу рендерить каждую вариацию в свою текстуру (или в одну мегатекстуру), на это уйдет вся память, их может быть около 1000 разных и каждая должна иметь разрешение в районе 1000х1000х32бпп, а это уже 4гб. Я хочу найти способ как мне эффективно рендерить слоеные плоскости в трехмерном пространстве. Может быть есть известные решения? Можно, наверное, их постоянно сортировать и рисовать без z-буфера, но я не знаю насколько это эффективно (учитывая что они довольно часто перемещаются в пространстве, хотя камера в основном неподвижна).
847 378149
>>378116

> плоских поверхностей с составным содержимым. Можно воспринимать это как карточки


Что это значит?
848 378154
>>195365 (OP)
Анон, у меня вопрос простой.
Как посчитать матрицу вида?
Работающую камеру брал отсюда: https://code.google.com/archive/p/gl33lessons/
А там она на матрицах, а не на векторах.
Как ты себя реализовывал эту матрицу?
849 378164
>>378154
https://www.youtube.com/watch?v=nLnqnB4QU-4&index=51&list=PL0AB023E769342AFE

классные тьюториалы у него
заль, что уже года 3 не появлялся...
850 378242
>>378149
Ну смотри, у тебя есть карточка. У нее есть рамка, рисунок, подпись. Все это в каком-то лэйауте лежит на плоском кваде. Вот лэйаут задается набором квадов, лежащих в одной плоскости. У каждого лэйаута свои размеры и своя текстура.
Это как слои в фотошопе, только разного размера, а не каждый слой по размеру листа.
851 378248
>>378242

>У каждого квада свои размеры и своя текстура.


фикс
852 378288
>>378242
Ну сами текстуры можешь хранить в GL_TEXTURE2D, а в GL_TEXTURE2D_ARRAY.
А при помощи инстансинга рисовать свои плоскости.
853 378849
>>378288
Но квады лежат в одной плоскости, там будет z-tearing, если включить z-buffer. А если выключить, то придется на каждое движение все сортировать.
854 378852
>>378849

>z-tearing


Z-fighting конечно
855 380840
>>378849
Рисуй тогда с небольшим отступом в несколько пикселей.
856 380853
>>380840
Это костыли. Если объект будет достаточно далеко от камеры, проекционная матрица съест всю точность и будет тот же z-fighting. А если делать отступы с рассчетом на дальность, то при приближении они будут слишком большими.
857 380857
>>380853
Значит используй рендер в текстуру.
858 380858
>>380857
Я уже писал что это займет слишком много памяти. Такие тривиальные решения я и сам рассматривал, я ищу что-то более глубокое.
859 380860
>>380858
Ты код написал?
Проверил как оно работает?
860 380862
>>380858
Рендери свои квады тогда на определённом расстоянии друг от друга и мастурбируй.
Чем ближе квад к камере тем он меньше.
И если смотреть под определённым углом то будет казаться, что они все в 1 плоскости.
861 380863
>>380860
Я считать умею.
862 380864
>>380862

> мастурбируй


Блять, масштабируй.
Лол
863 380865
>>380862
>>380864
Лол, по Фрейду.
Да, тоже об этом думал. Ладно, начну с этого, а там посмотрим. Спасибо.
864 380879
>>380853

>проекционная матрица съест всю точность и будет тот же z-fighting


http://outerra.blogspot.ru/2012/11/maximizing-depth-buffer-range-and.html
865 380966
866 381077
Почему вы изучаете OpenGL, а не DirectX?
867 381764
Vertex Array Objects вообще ещё актуальны?
868 381768
>>381764
Без них ничего не нарирсуешь.
Сам-то как думаешь?
869 381775
>>381768
Ну, можно и VBO мацать. Я про то спрашивал, не перданут ли их из стандарта, продумав замену.

О своей махарайке: парсю японские PMD/PMX. Как и везде, материалы и прилежащие текстурки относятся к отдельным частям модельки.
То есть для рисовки прокручиваю список материалов, для каждого ставлю свет, альфу, текстуры. Эта часть выглядит как из прошлого века при том, что вершинки с нормальками рисуются через VBO/VAO.

У всех с материалами/текстурами такая же фигня (ручками блеат) или я делаю через жёпу?
870 381776
>>381775
Мне кажется ты не очень понимаешь что делаешь и что за что отвечает.
871 381778
VAO запоминает порядок вызова glBindBuffer, glVertexAttribPointer(), glEnableVertexAttribArray(), glBindBuffer()
То есть помогает с вершинами, нормалями, цветами. Текстуры и материалы как бы этим методом не покрываются. Их ручками.
872 382015
>>381775

>Я про то спрашивал, не перданут ли их из стандарта, продумав замену.


Ты собираешься делать свою игру дольше 20 лет?
873 382059
Кстати, анончики, такой вот вопрос. В GL4.5 добавили вкуснях с именованными хранилищами и прочими именованными ништяками, только вот вопрос в том, стоит ли это все использовать, поскольку, неизбежно, на данный момент времени имеются карточки (впрочем, мне кажется, их довольно много), которые этого не поддерживают (скорее всего, карточки то могут, хули там такого, только ленивые производители драйверов клали хуй на это)?
874 382207
>>382059
В чём профит этих новых фич?
875 382208
>>382207
В том, что у тебя стейт не глобальный, а локальный.
876 382298
Ебать вы все тут умные.
Решил вкатиться, но нихуя не знаю. С чего начать?
877 382306
>>382298
С прочтения ОП-поста пробовал?
879 382333
>>382306
Вот анон подтолкнул меня к одной мысли.
Надо ли при перекате делать подробное шапку?
Не однократно в треде всплывали дауны которые упорно не видят шапки.
880 382358
>>382059
По факту то ведь, с появления первых игор на вулкане уже прошло более года, и, насколько мне известно, вулкан - новое название для OpenGL Next, то бишь дальше 4.5 версии он не пойдет?
Думаю теперь, а не стоит ли заранее начать изучать новую технологию.
881 382671
>>382358
Vulkan пока что не имеет костылей, в отличие от OpenGL. Но, видится мне, с развитием технологий он, как и GL, неизбежно их приобретет. А сам OpenGL забрасывать не планировали. Его будут саппортить еще лет 20 как минимум.
882 384597
>>382333
Видел шапку, но в ней мало конкретики, порог вхождения довольно высокий. Извините если грубо ворвался в тред, просто заметил дружественную атмосферу треда и попросил пояснить по хардкору. Разбираюсь в графоне и фичах, сам тридешник, но очень хочется получить знания богов индустрии, благодаря которым мы, холопы тут без сарказма существуем.
883 384606
>>384597

> но в ней мало конкретики, порог вхождения довольно высокий


Поясни что значит "мало конкретики" и "порог вхождения довольно высокий".
884 384611
>>384597
Блджад, в шапке первая же ссылка в разделе туториалов:
http://www.learnopengl.com/
Всё разжевано и положено в рот. Куда уж ещё проще-то?
885 386268
>>195365 (OP)
Здорова, бандиты. Не совсем по теме, но посоветуйте какую-нибудь годную либу для звука, чтобы поддерживала максимальное количество платформ, была без LGPL-параши в лицензии и поддерживала статическую линковку.
sage 886 386405
>>386268
Пиздец ты пидарас, а.
887 386550
>>386405
Что такое?
sage 888 386564
>>386550
Сам-то как думаешь?
889 386730
>>386564
Не знаю. Ты чего такой злой?
890 386917
891 387453
>>386268
PortAudio
892 387521
Ананасы, я тут слышал, что уже давненько SDL завезли под мобильные платформы, а это значит, что можно говнокодить и под ведроидом, я так понимаю. Есть какие костыли известные?
Кокос2д не хочу, потому что пошел он нахуй, вот почему (а на самом деле у него кучка довольно неприятных и я даже сказал бы ебаненьких багов)
Скриншот 2017-03-09 03.09.06.png104 Кб, 798x623
893 387630
>>387453
Похоже, на то, что нужно.

>>371291
А я продолжаю пилить свой 2D-движок. Для PNG сначала писал свой костыль, но потом нашел отличную маленькую либу upng с хорошей лицензией - и встроил ее. Запилил биндинги для Lua, пишу документацию. Может, когда-нибудь и на гитхаб выложу.
894 387631
>>387630
stb_image в помощь.
895 387698
>>387631
Да я хочу по-минимуму чужие библиотеки в проект таскать, я даже от zlib отказался.
896 387703
>>387698
Вот именно поэтому и stb_image. Оно легче и компактнее upng, и лицензия "делайте что хотите, мне похуй".
897 387768
>>387703
>>387631
Хм, вижу, что там и рендеринг шрифтов есть. Призадумался.
898 387885
>>387768
sdl_ttf
Скриншот 2017-03-11 02.17.59.png68 Кб, 800x628
899 388208
>>387768
>>387703
Да, stb_image явно лучше upng - поддержка куча форматов и плюх вроде интерлейсинга. Разве что собирается долго - аж целых две секунды. Есть вопрос по блендингу - появилась какая-то непонятная для меня вещь:
Сначала включаю glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA), рендерю свет. Потом - glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA) и рендерю соника - но вокруг него вдруг появляется какая-то левая рамка, причем разная для разных изображений.
Знаю, что двухмерный свет надо делать по-другому - сначала рендерятся предметы, затем отдельный черный фреймбуфер для сплошной тени, потом из него вырезаются кружки света, и уже потом он рендерится поверх всего остального. Но все равно интересно, отчего такое происходит.
Хоть в какую сторону копать?
900 389113
Как загрузить текстуру так, чтобы загружать не из отдельного файла, а из кода? То есть я напишу хекс код картинки и она будет загружена в текстуру? как это сделать?
901 389122
>>389113
массив под текстуру просто в коде заведи и всё
902 389132
Из PBO можно не скопировать, а перенести данные в текстуру?
903 389177
>>389113
Передавай массив в glTexSubImage или как там эта функция называется.
904 389209
>>387521
Двачую вопрос.
son.gif85 Кб, 480x600
905 389242
>>387521
SDL увы и не под каждым линухом работает (Mint, например).
Для верда компилировать сурс.
906 389267
>>389242
Не проблема, в общем-то, главное, чтобы зашло.
907 389308
>>387768

>Хм, вижу, что там и рендеринг шрифтов есть


Неужели рисовать текст так сложно? Велосипедный SDF рендер текста пишеться за пару дней. За неделю можно написать лейаут для рич текста.
908 389346
>>389308
Но зачем? Велосипеды велосипедами, но зачем решать задачу, которая была тысячу раз решена для тебя и существуют проверенные, вылизанные до мелочей решения, лучше которых ты всё равно не сделаешь?
909 389352
>>389346

>которая была тысячу раз решена


С чего ты взял, что она решена? До сих пор нет нормального способа векторную графику рисовать целиком на видяхе. С текстом такая же хрень.
910 389372
>>389346

>существуют проверенные, вылизанные до мелочей решения


Которые тянут тысячи зависимостей и которые ты заебешься собирать под нужные платформы.
911 389389
>>389352

>До сих пор нет нормального способа векторную графику рисовать целиком на видяхе.


Настало время прохладных историй.
Приятно, наверное, ощущать себя дебилом, сидя в треде про OpenGL и утверждая, что нет способов рисовать векторную графику на видяхе?
>>389372
У того же stb_truetype 0(ноль, нуль, зеро, О с черточкой, нисколько, ни одного, отсутствуют) зависимостей, кроме CRT(но блеать мы не на ассемблере пишем, чтобы зависимостей от CRT не было).
912 389403
>>389389

>нет способов рисовать векторную графику на видяхе?


Представь себе, именно так дело и обстоит. На мобилках есть OpenVG, на десктопе решения у отдельных вендоров вроде NV_path_rendering, а нормальной (корректно рисующей) полностью ускоренной либы для графики до сих пор нет. Skia, например, частично на проце все рисует, direct2d - тоже.
913 389407
>>389389

> stb_truetype


> вылизанные до мелочей решения


Там такой же велосипедный рендер на коленке, причем тормозной и кривоватый. Она вполне может неправильно рассчитать геометрию для какого-нибудь хитрожопого глифа и нарисовать тебе сегфолт или тихо насрать в память.
coordinates.jpg26 Кб, 400x265
914 389495
Подскажите, пожалуйста, кто знает.
Раньше в OpenGL можно было рисовать, используя не float, а integer-координаты. Тогда они означали пикселы. Сейчас, с приходом разных шейдеров, функции вроде glVertex2i устарели, не так ли (теперь, DrawElements и проч.)? Какой наилучший способ рисовать 2D в пиксельных координатах сейчас?
Насколько я понял, что бы я не передавал в вертексный шейдер, gl_position всегда ждёт флоаты в формате vec4.
915 389499
Я спрашиваю просто из-за такой проблемы, что когда масштабирую окно, картинка на мгновение растягивается (особенно заметно в верхней части окна), а только потом перерисовывается правильно. Потом попробую сделать как тут ОП пишет - вызывать swapBuffers не после рендера, а до glViewport. https://groups.google.com/forum/#!topic/angleproject/RvyVkjRCQGU
916 389506
>>389499
Целочисленные координаты тебе не тут точно не помогут. Артефакты скорее всего от оконного менеджера идут, а не от того, как ты рендеришь.
917 389507
>>389506
Возможно мою проблему решит замена glfwGetFramebufferSize на glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

И как в примере с сайта GLFW:

void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
glViewport(0, 0, width, height);
}

Попробую, наверно, завтра, если время будет.
Безымянный.png34 Кб, 1378x570
918 389512
Возможно непонятно объяснил. На всякий случай, вот картинка. Вот хелловорлд:
https://github.com/georgy7/dtype/blob/97c9bcd66236ecdd91b6941ccae20a4669f21969/examples/base/abstract_app.d
https://github.com/georgy7/dtype/blob/97c9bcd66236ecdd91b6941ccae20a4669f21969/examples/blank1_rectangle.d
Иначе о чём без кода говорить.
919 389527
>>389512
Там проблема ниже, чем glfw. Где-то в wgl/xgl. Отрисовка окна происходит быстрее, чем изменение размера контекста, из-за этого и артефакты. Обычно на это все забивают, все равно через кадр все устаканивается.
920 389654
>>389132
Бамп воросу. После анлока буффера можно сказать драйверу что у меня там текстура, а не гонять данные туда-сюда по VRAMу?
921 389667
>>389654
Не вникал особо в текст, но походу то, что тебе надо.
http://www.songho.ca/opengl/gl_pbo.html

>// copy pixels from PBO to texture object


>// Use offset instead of ponter.


>glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, WIDTH, HEIGHT, GL_BGRA, GL_UNSIGNED_BYTE, 0);

922 389668
>>389654
>>389667
Перечитал вопрос и понял что это не то, что тебе надо. Так, как ты хочешь, сделать нельзя, PBO и текстура это слишком разные вещи, чтобы быть взаимозаменяемыми. Там данные хранятся в разных форматах.
923 389697
>>389668
PBO и прочая шняга это условности. Нужно замапить видеопамять и перегнать из системной все что нужно в любом формате. А так получается лишний оверхед на копирование. Надеюсь в Вулкане такой хуйни нет.
924 389766
>>389697
Надейся.
Первое что тебе придется делать в вулкане, елси ты хочешь использовать физическую память на видеокарте, - это самому перегонять кучу данных сначала в область памяти API (та же оперативка, только ОСОБЕННАЯ), а уже потом удаленными командами для видяхи коипровать их в видеопамять.
925 389855
Решил проблему перепроверкой после рендера и, если поменялся размер, перерендером кадра.
https://github.com/georgy7/dtype/commit/727bba4419c38f1646c4de227d80d84bb1bfbb56#diff-211c4ecbe22099ab129604fde1df4b2c
>>389512-кун
926 390377
Почему не получается наложить текстуру? Она накладывается как попало (2). И вверху блоки должны быть другого цвета (3). Текстура (4).
Код: http://pastebin.com/iZQuARGw
927 390462
>>390377
Потому что учи шейдеры, вот почему
 .png6 Кб, 520x520
928 390631
>>390377
Во-первых, нахуй старьё.
Во-вторых, ты проебался с текстурными координатами.
929 390741
>>195365 (OP)
Я хотел задать вопрос, но сам нашёл ответ. Нельзя between glBegin i glEnd
930 391175
>>195365 (OP)
Почему Опенгл такой ебанутый?
931 391177
>>391175
Ты имел в виду "почему в мире есть что-то сложнее 1+1"?
932 391186
>>391177
Нет, почему в Опенгле такая ебанутая система координат? Впрочем это наверное моя оплошность, ведь я его пытаюсь использовать для создания 2D игры. А сам опенгл очень лёгок. Я SDL не осилил, на простом WinAPI жуткие тормоза, а Опенгл легче всего этого дерьма. Но другие библиотеки для создания 2D игры я не нашёл.
933 391230
>>391186

>такая ебанутая система координат?


Почему ебанутая? Как в математике: если х вправо, то у - вверх, x cross y = z, y cross z = x, z cross x = y. Все строго и логично. Плюс матрицы в памяти лежат по столбцам, что гораздо удобнее - можно сразу с векторами базиса работать.
934 391334
>>391186
Так SDL это обертка над opengl & directx. Он же наоборот упрощает разработку. Как он может быть сложнее, или я что-то не понимаю?
935 391478
как нарисовать тестуру с помощью примитивов? С# openTK
936 391482
>>391478
два треугольника
937 391487
>>391482

>два треугольника


хорошо. спрошу подробнее.
мне нужно нарисовать изображение с помощью примитивов и использовать его потом, как текстуру.
очевидные ответы вроде "используй fbo " мне не помогут. я не очень хорошо умею в жл.
938 391558
>>391487
напиши хук, который скриншоты делает.
939 391562
Хочу войти в OpenGL. Где туториалы по последним версиями на Си? Доставь годноты, Анон.
940 391563
>>391562

> Где туториалы


Где найти туториалы
fix
942 391578
>>391573
Это же всё кресы. А в первой ссылке ещё и винда, упаси боже.
Алсо, третья версия разве не устаревшая? Сейчас же 4.5 есть.
943 391622
>>391578
Ещё один даун.
Откуда вы лезите?
motionblur-screenshot.jpg182 Кб, 1286x758
944 392236
Хелоу аноны. Мне нужно размыть модельку. Всю сцену я могу розмыть, это не проблема. Мне нужно размыть только одну модель, и при этом только видимую ее часть если ее что-то заслоняет. Как в FBO забрать только видимую часть модели в данный момент? Я придумал конечено же какую-то хуйню не производительную, забирать сцену с моделью и без а потом находить разницу и размывать ее, но я думаю что это херово два раза рендерить в FBO. Как это нормальные люди делают?
945 392264
>>391622
Весеннее обострение, похоже.
946 392271
>>392236
Попробуй рисовать модель с записью в стенсил, а потом обычный screen space motion blur с тестом.
Сниafdмок.PNG29 Кб, 485x281
947 392283
Здрасьте. Есть вопрос по поводу, как сформировать текстуру в виде массива с данными, не используя при этом отдельный bmp/jpg-файл в идеале, ссылку на лит-ру/мануал-пример.
Смысл в том, что формируется два (на самом деле нужен один) массива, в одном даны числовые значения (values), во втором - им соответствующие параметры цвета (colors).
В текущем варианте использую готовый способ считывания файла с jpg-текстурой (готовая цветовая шкала) из библиотеки FreeImage, но это не то, нужна возможность динамического изменения её (шкалы) свойств что-то типа bitmap без файла, отдаленно

Один из шейдеров (пиксельный):
varying float VinL1L2;
uniform float umin;
uniform float umax;
uniform sampler2D texture_sampler;
void main() {
float u = VinL1L2;
vec2 tc;
tc[0]=0.9;tc[1]=0.5;
if(u<umax)
{
tc[0]=(u-umin)/(umax-umin);
gl_FragColor = texture2D(texture_sampler, tc);
}
}
948 392286
>>392271
Блин, спасибо большое, это то что нужно. Я чет проморгал stncil buffer, впервые узнал а нагуглить раньше чет не получалось.
949 392303
>>392283
Не понял что ты имеешь ввиду, но просто запиши в массив RGB данные и в функции создания текстуры указывай на этот массив.
950 392304
>>392283
Texture buffer object
951 392589
>>392303
Ну то есть мне надо засунуть массив, задаваемый в проге, из 128 RGB цветов, своих, не используя для этого файлов и сторонних библиотек.
>>392304
Надеюсь поможет
952 392717
>>391622
Ладно, извини, я не разобрался.

Сейчас дошёл до матриц, хочу крутить треугольник. Везде для этого предлагают библиотеку GLM, но работает ли она под Си? На википедии написано, что это для C++, в 3.5 статей всё на C++, у неё заголовки .hpp, я не могу скомпилять прогу с ней, gcc ругается. То есть только кресты? Есть ещё какие-то библиотеки? Я бы не хотел велосипедить всё это дело, я хочу трудэ писать.
953 392727
>>392717

> Я бы не хотел велосипедить всё это дело


> хочет писать на Си


Ты болен шизофренией?
954 392728
>>392727
Почему Си == велосипеды в сравнении с плюсами?
955 392739
Если разобраться в OpenGL, то с остальными технологиями Chronos особенно WebGL тоже всё понятно будет?
956 392797
>>392728
Ты говноед и не понял ещё, что кресты - ужасающее дерьмо.
957 392810
>>392717
У GLM же вроде была си-версия?
Впрочем, хуй с тобой, идейные пидарасы, не понимающие сути идеи, за которую борцуют, должны страдать.
958 392811
>>392810
Я просто пишу на том, на чём мне удобно писать, иди на хуй.
959 392822
>>392811
Если ты не можешь добавить одну строчку в код и набрать три символа в консоли - то ты таки идейный пидарас, так что продолжай сосать.
960 392823
>>392822
О чём ты говоришь? О glm? Ну расскажи мне как что-то скомпилять с ним сишным компилятором. Если нет, то выражайся яснее.
961 392827
Я о g++ блядь. Но ты же идейный, тебе ДРЕВНИЕ БОГИ ПОГРОМРОВАНИЯ ЗОПРЕТИЛИ ИСПОЛЬЗОВАТЬ!!!
962 392836
>>392827
Это сойдёт как временное решение. Сишная библиотека в любом случае нужна.
963 392854
>>392836
Блять, у возьми и напиши сам тогда.
От написания пары десятков функций ещё никому не было плохо.
964 392856
>>392854
Я не разбираюсь в этом.
965 392859
>>392856
Тогда бери готовое, проверенное, и оптимизированное(вплоть до поддержки всех simd) решение, и не выёбывайся.
966 392867
>>392304
Да, прокатило, спасибо. Однако не нравится формат "текстурных координат" в формате 0-:-127 (допустим цветов 128), вместо 0-:-1, целочисленные, короче. Не совсем уверен, как сделать промежуточный интерполированный цвет, если координата где-то между "пикселями".
Юзал инфу из https://gist.github.com/roxlu/5090067
и частично из http://steps3d.narod.ru/tutorials/draw-instanced-tutorial.html и http://stackoverflow.com/questions/12834058/texturing-using-texelfetch
967 392868
>>392867
Фильтрацию текстуры поменяй на линейную, тогда он тебе все сам интерполирует.
968 392869
>>392868
В шейдере нельзя в texelFetch задавать вещественный тип. Я конечно могу сам смешивать цвета, например, если координата 98,3, то взять координату 98 и тупо прибавить к каждой rgb-составляющей 30% от разницы между цветом[99] и цветом[98].
Просто не хочу лишний раз нагружать шейдеры еще и этим (хотя если сделать это в вершинном, то вроде сильно не скажется).
969 392871
>>392717

>Я бы не хотел велосипедить всё это дело, я хочу трудэ писать


Написать базовую либу для векторов/матриц - дело пары дней. Заодно и разберешься что там к чему. Хинт: инверсия матрицы 4х4 общего вида требуется в 0.0001% случаев.
970 392872
>>392867

> Однако не нравится формат "текстурных координат" в формате 0-:-127 (допустим цветов 128), вместо 0-:-1, целочисленные, короче.


В смысле? Можно попробовать упаковывать во float16 координаты.
971 392874
>>392869

>texelFetch


texture2D тебе религия запрещает использовать?
972 392878
>>392869
Ну texelFetch для дискретных и быстрых выборок используется. Я не думаю, что твоя линейная интерполяция будет работать быстрее, чем встроенная.
973 392885
>>392871
Да мне бы с самим opengl сначала разобраться. А то два дня пердолился а понял ровным счётом нихуя. Сейчас всё переписал, вдумчиво, и чёто-както дошло до головы-то моей, но захотелось мне камеру повращать, а тут матрицы, бляяяя пиздеееец, сложно. И вот сейчас я кажись понял суть ШОК КАМЕРА НЕ ДВИГАЕТСЯ ЭТО ПРОСТРАНСТВО ВОКРУГ МЕНЯЕТСЯ, и надо бы воплотить всё в жизнь закрепив знания, а ты предлагаешь мне на написание своей либы отвлечься. Нельзя так делать, нельзя отвлекаться.
974 392888
>>392885

>а тут матрицы, бляяяя пиздеееец, сложно


Если ты матриц не понимаешь, то за трехмерку можешь даже не браться.
Если не умеешь пользоваться гуглом - тем более:
https://github.com/arkanis/single-header-file-c-libs/blob/master/math_3d.h
975 392889
>>392888

> Если ты матриц не понимаешь, то за трехмерку можешь даже не браться.


Ты так говоришь, как будто все с рождения гуру матриц а я особенный. Всё приходит со временем.
Спасибо.
976 392895
>>392885

> Да мне бы с самим opengl сначала разобраться.


Блять, да что с тобой такое?
То не нравятся ему туторы на С++, то не нравится ему шинда, то не устраивает версия ГЛа.
Может просто заткнуться и взять готовое, научиться, а потом от этого отталкиваться с понимаем что ты делаешь и к чему это приведёт?
977 392898
>>392895

> То не нравятся ему туторы на С++


Я запутаюсь.

> то не нравится ему шинда


Сложно.

> то не устраивает версия ГЛа.


Я не разобрался, о чём уже писал. Извиняюсь за это.

> Может просто заткнуться и взять готовое


Либу уже нашёл, так бы временно использовал glm.
978 392918
>>392823
Нахуя ты на Си пишешь, ебанутый?
979 392922
>>392918
Что мне могут дать кресты?
980 392925
>>392885
Бля, не осиляю камеру. Может кто доставить понятный гайд по ней? Если этот гайд будет на русском, то вообще заебись.
Просто посчитать я посчитаю, а куда дальше просчёты отправлять, что с ними делать, зачем что-то с ними делать, как быть с шейдерами и т.д. непонятно. Помогите, Анончики. Нужно доходчивое объяснение.
981 392928
>>392922
Кресты? RAII, смартпоинтеры, исключения, стандартную библиотеку (коллекции на шаблонах, треды, файлы, строки, регекспы и т.п.), ООП в конце концов.

А ещё лучше - пиши на джаве, там всё то же, только лучше.
982 392931
>>392928

>А ещё лучше - пиши на джаве,


Съеби. Просто съеби отсюда.
983 392933
>>392931
Ты вот сейчас шутки шутишь, а потом для своего ёба-оптимизированного движка на Ши будешь писать логику на каком-нибудь говноскрипте с багами, тормозным рантаймом, ебанутым ГЦ и прочими радостями опенсорса.
why.jpg80 Кб, 960x960
984 392937
>>392933

>для своего ёба-оптимизированного движка на Ши будешь писать логику на каком-нибудь говноскрипте

985 392997
>>392933
Да оставьте человека, пусть сам разберется. Я тоже таким был, прошло, когда знаний больше появилось.
986 393003
>>392933
Если ты лично настолько дебил, чтобы так делать, это ещё не значит, что все остальные вокруг тебя тоже дебилы и будут делать как ты.
987 393020
>>392928
То чувство, когда в джаве нет деструкторов...
Пичаль беда, хотя бы на GC деструкторы завязывали бы, а то так, как ни крути, на крестах ресурсами в некоторых случаях управлять гораздо удобнее.
988 393141
>>393020
Ну как, есть try-with-resource, который позволяет автоматически освободить ресурсы при выходе из блока. Для простых случаев этого достаточно.
989 393143
>>393141
Вот именно, что для простых, а если пилить кэш ресурсов с истекающим сроком жизни, то кресты выигрывают.
1490762714.png36 Кб, 455x250
990 393162
Няши, поясните, SDL хороший выбор на 2017 год? В /pr/ поясняют что мертво, нужен вулкан. А что вы скажете?
991 393163
>>393162

> SDL хороший выбор на 2017 год


А почему он должен быть плохим?

> нужен вулкан


В GLFW вроде бы добавили поддержку Вулкана.

> А что вы скажете?


Скажу то, что раз ты юзаешь библиотеки Qt то почему бы контекст создавать безо всяких сторонних либ того же SDL?
992 393165
>>393163

> А почему он должен быть плохим?


Не знаю, мне он вполне нравится, да и выглядит логичным. Главное запомнить как называются все элементы, а то без комплнетишинов тяжело писать-приходится вечно в доки лазить.

> В GLFW вроде бы добавили поддержку Вулкана.


Так это всё равно интерпритатор в API вулкана, не нужно.

> Скажу то, что раз ты юзаешь библиотеки Qt то почему бы контекст создавать безо всяких сторонних либ того же SDL?



Ты имееншь ввиду зачем мне QT? В нём удобные сигналы, и цикл выполнения. На чистых крестах пришлось бы делать что-то вроде while (true).
Или ты спрашиваешь зачем мне SDL если есть QT? В кт опенгл какой-то непонятный, почти нет документации. Ни асилил короче.
993 393166
Итак, анон. Наступило время переката. И вот вопрос. Как организовывать шапку?
Есть мысля залить её на https://gist.github.com/ и со временем что-то убирать/добавлять т.к. в текущей шапке есть мёртвые линки (ну по крайней мере месяц назад точно).
И в будущем всё равно найдутся долбаёбы которые просят ссылки на туторы игнорирую шапку вообще.
Что скажешь?
994 393167
>>393166
Всё правильно считаешь. Надо как в /s - шапка на гейхабе, её никто не читает, (впрочем шапку треда тоже не читают).
996 456524
Сука, почему когда я два часа серчу инет в поисках очередного говна, которое мне нужно вымучить за неделю и сдать в свой говновузик, чтобы не отчислили нахуй, рано или поздно все сводится к тому, что я прихожу на ебучий двач? Что блять пошло не так в моей жизни?
я знаю что происходит.webm1,9 Мб, webm,
1280x720, 0:21
997 456526
>>456524

>Что блять пошло не так в моей жизни?


Ты выбрал опенгл вместо софтвар рендерера
998 456542
>>456524
Ты просто ещё молодой и зёленый. Всё нормально.
А вот этого >>456526 пидораса-велосипедиста, я бы на твоём месте не слушал.
999 456546
>>456524
Ты просто долбаеб необучаемый. Который просто не может:
1) прочитать
2) запомнить
3) сделать
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 23 сентября 2018 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски