Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];

Вниз

OpenGL: определение того, был ил отрисован хоть один пиксел...   Найти похожие ветки 

 
Ketmar   (2002-11-08 18:31) [0]

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

Satanas Nobiscum! 08-Nov-XXXVII A.S.


 
Ketmar   (2002-11-08 18:31) [1]

насчет "знающих" - это не сюда, сорри %-) это из "потрепаться" так скопировал %-)))

Satanas Nobiscum! 08-Nov-XXXVII A.S.


 
Sapersky_   (2002-11-09 01:09) [2]

У меня такое ощущение, что С ЭТИМ будет тормозить ещё больше :).
Т.е. теоретически, если выполнять проецирование вручную, можно потом посмотреть в соответствующем месте Z-буфера - если значения Z те же, что и у треугольника, значит, он нарисовался... но это такая муть... Специальной фичи, насколько я знаю, нет - ускорители для того и придумали, чтобы не считать нарисованные/ненарисованные пиксели (а хотя бы только треугольники). Да и отдельные треугольники сейчас уже никто не считает - T&L-видеокарта быстрее нарисует достаточно большой блок заранее помещённых в видеопамять треугольников, чем будет качать по AGP одиночные, полученные точным отсечением (на которое, кстати, тратится процессорное время).
И вот ещё - зачем определять, нарисовалось что-то или нет, если оно УЖЕ нарисовалось - только для статистики разве что?


 
Ketmar   (2002-11-09 11:41) [3]

2Saersky_:
я знаю, что можно z-buffer проверить. вы правы - это не тот метод %-) а фича - ну не может ее не быть, нутром чую! %-) кстати, не обязательно вручную проецировать, кажись, feedback mode все сам сделает и доложит...
а зачем? щаз расскажу: движок у меня поратальный. соответственно, надо узнать, был ли отрисован портал? если да, то идем сквозь него и рисуем следующую комнату. если нет - то чего напрягаться? вкратце алгоритм таков: рисуем текущий сектор без порталов. рисуем все объекты, живущие в этом секторе. рисуем порталы (по штуке за раз). если пордал "дожил" до экрана, то рекурсивно малюем сектор, который находится за порталом. без определения "нарисованности" получается отрисовка кучи лишнего. приходится использовать PVS. а не хочу. в software-варианте у меня этот механизм проканывал, а вот с акселями - фигня. не откатываться же назад на software? %-)
вижу пока единственный вариант: PVS + stencil buffer. и куча underdraw"а. оно хоть и не доживет до экрана, а время и шину, все же, забирает. особенно если mesh сильно детализированный. %-(

Satanas Nobiscum! 09-Nov-XXXVII A.S.


 
Sapersky_   (2002-11-10 12:39) [4]

Ага, то есть, насколько я понял, вы пытаетесь в портальном движке обойтись без геометрических вычислений зон видимости. Подход, безусловно, новаторский :), но, как мне кажется, не слишком рациональный.
Во-первых, что значит "рисуем портал"? Насколько я знаю, портал - это невизуальный объект, предназначенный для определения зон видимости. То есть практически он соответствует какому-то объекту (окну, двери), но вовсе не обязательно повторяет контур этого объекта. Например, если имеется окно сложной формы, проще сделать портал как описывающий прямоугольник этого окна.
Во-вторых, насколько я понимаю, для того, чтобы обеспечить корректный вывод полупрозрачных объектов (в том же окне стекло вставлено - или как?), вывод нужно производить В ОБРАТНОМ ПОРЯДКЕ. Т.е. при определении видимости мы только получаем список секторов, которые нужно рисовать, а рисуем его уже потом. Тогда, кстати, можно и Z-буфер отключить, хотя не факт, что это будет быстрее (overdraw большой всё-таки). Или сектора рисовать в прямом порядке, а объекты, соответствующие порталам (поскольку именно они могут быть полупрозрачными) - в обратном.
В общем, ИМХО лучше всё-таки сделать геометрическую проверку видимости. Т.е. в соответствии с классическими канонами - строим по положению/ориентации камеры пирамиду видимости, проверяем, попадают ли в неё порталы текущего сектора, если что-то попадает, усекаем по нему пирамиду, рекурсивно повторяем для сектора, лежащего за этим порталом и т.д. Примерно то же, что и PVS, но в run-time и более точно (в PVS попадает много лишнего, т.к. положение игрока неизвестно).


 
Ketmar   (2002-11-11 10:17) [5]

ну примерно это и сделано. проверка попадания портала во frustum + stencil buffer для "убиения" лишней отрисовки, и ты ды ad infinitum. %-) а зачем у меня PVS я уже и не помню. кажись, для AI...
а порядок... конечно же, для полупрозрачных порталов такой, как вы описали. не суть важно, я же приводил просто пример типа "для чего такой изврат".
и делать порталы прямоугольной формы смысла нету. порталы - они же из редактора/разбивателя делаются %-) все равно я их по frustum"у не режу, так что форма не важна. а для построения нового frustum"а - там да, там можно и прямоугольник поюзать.

Satanas Nobiscum! 11-Nov-XXXVII A.S.


 
T.o.l.   (2002-11-11 15:09) [6]

Я тут вот тоже кодер на OpenGL, и я вам скажу: НЕ ИСПОЛЬЗУЙТЕ Stencil buffer, ибо он не на всех тачках работает, а иногда даже очень затормаживает систему.... ОЧЕНЬ!


 
Ketmar   (2002-11-11 17:38) [7]

2T.o.l.
а меня очень мало волнуют машины, где нету stencil buffer"а. так же, как и, например, 286-е. а так же те, например, у кого нету ARB_depth_mask (или как там его точно зовут?). и ты ды. не сработает - ну и не надо...

Satanas Nobiscum! 11-Nov-XXXVII A.S.


 
Sapersky_   (2002-11-12 00:27) [8]

2Ketmar:
Кажется, понял, в чём проблема. Порталы предварительно рисуются исключительно для определения видимости, и если использовать stencil, он, конечно, "вырежет" всё, что надо, но не подозревающий об этом процессор всё равно пройдётся по всем секторам, которые попали в поле обзора и "нарисует" их, даже если реально не видно ни пикселя... (не говоря уже о том, что сам по себе stencil дополнительно нагружает видеопамять). Так?
Но даже если так, я не знаю, что ещё прибавить к вышесказанному :(. Либо, как я уже писал, вспоминать стереометрию и делать усечение frustum"а по порталам, либо... поспрашивать ещё где-нибудь :), вот вроде неплохой форум:

http://pub137.ezboard.com/fmrgamemakerfrm0

Как-то раз я даже видел там человека из M$ :)

Или, если с английским проблемы, можно попробовать спросить на gamedev.ru.
Может, и правда есть такая фича. Я был уверен, что нет, но если уж существует некий feedback mode, о котором вы писали ранее... кстати, что это такое и как работает? :)


 
Ketmar   (2002-11-12 10:54) [9]

2Sapersky_:
вы совершенно точно поняли. все так. правда, overhead от stencils можно не учитывать, ибо они все одно используются для зеркал, а вот overhead от лишних секторов получается немаленький иногда.

за форум - сенькс. как только смогу сформулировать вопрос... ибо с ЧТЕНИЕМ у меня не проблема - читаю аглицкий весьма легко, а вот с написанием чего-либо связного и понятного...

про feedback - гляньте в OpenGL reference %-) если вкратце - один из режимов, в котором вместо рендеринга в отдельный буфер записывается вся информация о нем (реднеринге) - как то трансформированные координаты вертексов, спроецированные координаты вертексов и ты ды... не знаю, зачем он нужен, но есть %-)

Satanas Nobiscum! 12-Nov-XXXVII A.S.


 
Sapersky_   (2002-11-12 12:21) [10]

Насчёт feedback mode - глянул... и вот что подумал: а если получать экранные координаты вершин порталов с помощью этого дела и проверять их на пересечение? Получается тоже геометрическая проверка, но более простая, в 2D - находится ли один многоугольник (если привести все порталы к прямоугольникам - четырёхугольник) в другом. Вряд ли это будет быстрее, чем 3D-проверка (feedback, скорее всего, работает полностью на software), но для программирования должно быть проще.


 
T.o.l.   (2002-11-12 15:02) [11]

Эээ...я насчёт тех у кого не поддерживаеться Stencil Buffer....
Я вот сам столкнулся с этой проблемой..... моя видюха Stencil Buffer не держит.... а ведь это GeForce 2 MX 400! ну щас-то это уже устаревшая карточка, но у меня много знакомых на ней сидит.... и все операции со Stencil"ом не выполняються и ОЧЕНЬ затормаживают воспроизведение! даже самые простые сцены.... СКОЛЬКО Я ДРАЙВЕРОВ И ВСЯКИХ НАСТРОЕК ПЕРЕМЕНЯЛ!!!! НИЧЕГО НЕ ПОМОГАЕТ!


 
T.o.l.   (2002-11-12 15:10) [12]

У меня предложение.... Использовать FeedBack mode для определения присутствия портала в кадре, и поступить как в
3-м Квейке На определённом расстоянии от портала картинка за порталом не обрабатываеться, а рисуеться только какая-то мутная текстура... Так и смотреть... правда, ели к порталу подойти близко, даже через стену... он будет отрисовываться...


 
Ketmar   (2002-11-12 17:21) [13]

2Sapersky_:
а смысл использовать для этого feedback? вряд ли овчинка будет стоить выделки... хотя... я вот опять подумал %-) - да, видимо так проще, нежели строить frustum и потом рубать. меньше операций...

2T.o.l.:
ну я ведь не пишу коммерческий движок... потому не все ли равно мне, что у некоторых stencil"ов нету? %-) ну вот например делать зеркала без stencil"ов мне ни разу не удобно. и воду. и еще кое-что. так смысл напрагаться с порталами? %-)
по поводу "расстояний": дык порталы не только (и не столько) телепортерами заведуют. отсечение по расстоянию можно и без них сделать, но смысл? вся проблема в том, что надо убивать только то, чего не видим...

Satanas Nobiscum! 12-Nov-XXXVII A.S.


 
Sapersky_   (2002-11-13 23:05) [14]

2Ketmar:
Ну можно и не feedback, а gluProject, например. Даже проще будет - чем возиться с буферами всякими.

2T.o.l.:
> моя видюха Stencil Buffer не держит.... а ведь это GeForce 2 MX 400!

Не может быть. Stencil есть даже у TNT.
Возможно, проблема только с данным экземпляром (бракованый). Но скорее всего - глюки драйверов или программы, которая тормозит.


 
T.o.l.   (2002-11-19 10:55) [15]

2Sapersky_:

Нееее..... у меня много знакомых с GeForce2 и у всех не работает Stencil buffer, хотя дрова на неё самые новые которые выставлены на сайте NVidea!


 
Ketmar   (2002-11-19 16:38) [16]

а у меня - работает. вот странно-то %-)

Satanas Nobiscum! 19-Nov-XXXVII A.S.


 
Sapersky_   (2002-11-19 17:26) [17]

2T.o.l.:
Находим DirectX8 SDK, запускаем примеры ShadowVolume, StencilDepth, StencilMirror. У меня на GF2MX400 - 85, 200 и 170 FPS соответственно. Насколько я помню, на TNT2M64 примеры тоже работали, хотя медленнее (1-й около 20 FPS). Причём это не эмуляция (в DX8 вообще нет нормальной эмуляции, только страшно тормозной reference).
Возможно, для вас как OpenGL-программиста это не очень полезно, но по крайней мере убедит, что stencil у GeForce есть :)



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.009 c
1-67343
Bel
2003-04-08 16:57
2003.04.21
Что это значит? (про указатели)


7-67581
Евген
2003-02-26 15:36
2003.04.21
Работа с ИК портом


6-67411
HDD
2003-02-27 16:41
2003.04.21
Помогите пожалуйста!


14-67437
kostya2000
2003-04-04 19:33
2003.04.21
Люди, что вы можете сказать о фирме SIS?


7-67604
Dmitry V. Averuanov
2003-01-09 14:06
2003.04.21
Захватить изображение с нескольких устройств видеозахвата ???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский