Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты C++

Ответ
 
Опции темы
Старый 02.03.2009, 20:25   #466
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

пофиксил мастер 2005 студии. раньше приложение не работало в дебаг режиме.
(Offline)
 
Ответить с цитированием
Старый 03.03.2009, 05:30   #467
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

добавил сортировку полупрозрачных объектов.
проверьте плиз на адекватность.
должно быть примерно как на скрине.
в демке тысяча объектов (примерно 900 полупрозрачных). идет отрисовка с сортировкой

+ добавил команду Camera::ClearColor(r,g,b,a). Которая задает цвет отчистки.
+ добавил воспроизедение Theora на цпу (раньше было только на гпу)
Миниатюры
Нажмите на изображение для увеличения
Название: AlphaSort.jpg
Просмотров: 863
Размер:	69.8 Кб
ID:	5472  
Вложения
Тип файла: zip AlphaSort.zip (460.3 Кб, 427 просмотров)

Последний раз редактировалось HolyDel, 03.03.2009 в 20:33.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (03.03.2009)
Старый 03.03.2009, 20:35   #468
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

поставил на второй комп ати.
странно, но там работает и феора и мд2 (через шейдер).
интересно почему у остальных не работает.
правда работает очень медленнннно.

кстати на ати очень фигово работала синхронизация с системой.
все жутко висло. (я так понял izeg0re под "хреново альт-табится" подразумевал именно это? у меня к примеру помогал только ресет ((. а я до последнего не знал что написал такое говно (((( )
теперь наладил.

кстати, на последних драйверах инится огл3 на ати. и на нвидии тоже.

Последний раз редактировалось HolyDel, 03.03.2009 в 20:41.
(Offline)
 
Ответить с цитированием
Старый 04.03.2009, 02:40   #469
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

сделал сортировку стейтов. это позволило чучуть усокрить вывод графики.

space - применить сортировку (назад ее отменить нельзя)
Z - отменить шейдеры (назад их применить нельзя)

как тестить:
1) дождитесь пожалуйста стабилизации фпс. обычно на это уходит 5-10 сек.
2) запомните фпс
3) нажмите пробел
4) запишите сюда фпс_было / фпс_стало
5) перезапустите ексешник
6) нажмите Z
7) повторите пункты 1-4

можно также написать какая видеокарта.
Вложения
Тип файла: zip StateSortinTest.zip (820.3 Кб, 383 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (04.03.2009)
Старый 04.03.2009, 09:39   #470
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: Sigel

Оба последних примера выкидывают неопознаную ошибку(точнее вылетают и запускают отладчик студии.

Лог:

Logging start

Init extensions

GL_ARB_shadow exists
GL_ARB_shadow_ambient exists
GL_ARB_vertex_shader exists
GL_ARB_fragment_shader exists
GL_ARB_shader_objects exists
GL_ARB_shading_language_100 exists
GL_EXT_gpu_shader4 exists

glGenBuffersARB init
glBindBufferARB init
glBufferDataARB init
glDeleteBuffersARB init
glDrawRangeElements init
glCompressedTexImage2D init
glDrawArraysInstancedEXT not init
glDrawElementsInstancedEXT not init
glActiveTexture init
glCreateShaderObjectARB init
glProgramParameteriEXT init
glCreateProgramObjectARB init
glAttachObjectARB init
glDetachObjectARB init
glDeleteObjectARB init
glShaderSourceARB init
glCompileShaderARB init
glLinkProgramARB init
glValidateProgramARB init
glUseProgramObjectARB init
glGetObjectParameterivARB init
glGetInfoLogARB init
glUniform1fARB init
glUniform1iARB init
glUniform1fvARB init
glUniform2fvARB init
glUniform3fvARB init
glUniform4fvARB init
glGetUniformLocationARB init
glEnableVertexAttribArrayARB init
glVertexAttribPointerARB init
glDisableVertexAttribArrayARB init
glBindAttribLocationARB init
glGetAttribLocationARB init
glIsRenderbuffer init
glBindRenderbuffer init
glDeleteRenderbuffers init
glGenRenderbuffers init
glRenderbufferStorage init
glGetRenderbufferParameteriv init
glIsFramebuffer init
glBindFramebuffer init
glDeleteFramebuffers init
glGenFramebuffers init
glCheckFramebufferStatus init
glFramebufferTexture1D init
glFramebufferTexture2D init
glFramebufferTexture3D init
glFramebufferRenderbuffer init
glGetFramebufferAttachmentParameteriv init
glGenerateMipmap init
glPointParameterfvEXT init

wglSwapIntervalEXT init
wglGetSwapIntervalEXT init
wglChoosePixelFormatARB init
wglCreateContextAttribsARB init

Init extensions success

multisampling :0
win pixel format
Полная аппаратная поддержка
Pixel Format:14
bits:32
accum:0
depth:24
stencil:0
flags:549
OpenGL 3.0 supported. Try init
VENDOR:ATI Technologies Inc.
RENDERER:ATI Radeon HD 2600 PRO
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (04.03.2009)
Старый 04.03.2009, 10:33   #471
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

-=Jack=-, это весь лог?

я выяснил. похоже это ошибка в драйверах 9.1 в 9.2 ее пофиксили.

Последний раз редактировалось HolyDel, 04.03.2009 в 14:26.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
-=Jack=- (04.03.2009)
Старый 04.03.2009, 19:55   #472
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: Sigel

Весь, сейчас скачаю 9.2 - проверю.
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Старый 05.03.2009, 00:00   #473
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

Сообщение от MoKa Посмотреть сообщение
4. Альфа сортировка?
6. Слыхал ещё про сортировку стейтов - что очень мощно оптимизирует.
4. теперь есть. пока сделал сортировку раз в 100 кадров. + возможность отсортировать вручную (например при резком переносе камеры) SortAlphaEntites().

6. заюзал. дало ускорение от 20 до 50%. думаю в худшем случае (например очень легкая геометрия и очень тяжелый вершинный шейдер) сортировка с каши в упорядоченную систему может ускорить вывод в 2-3 раза. в среднем случае не думаю что даст больше 5-10 процентов перфомаранса.
На данный момент вручную - SortEntitesListByState() (наверное будет alias на эту функцию через какой нибудь менеджер конвеера). Что то не могу придумать как сделать по человечески автоматом. Каждый кадр - тупо. Стейты далеко не каждый кадр меняются. При изменении стейта ентити - тоже не катит. Возможны ситуации, когда в рантайме меняются стейты у многих объектов - будет тормозить. Раз в определенный промежуток времени - вариант кажется самым оптимальным, но... если стейты не меняются - то и сортировать ничего не надо. Делать ненужную сортировку, пусть и рпаз в 10 сек. например - меня жаба давит. Менять флаги в методах изменения стейтов - некрасиво. Да и опять же, жаба душит.

Последний раз редактировалось HolyDel, 06.03.2009 в 13:58.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (05.03.2009)
Старый 05.03.2009, 00:16   #474
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Sigel

А можно реализовать счётчик?
К примеру, какие функции отвечяют за смеуну стейтов? Пользовательские вызовы?
Думаю нужно завязать счётчкик, и дать возможность кодеру указать, примерно спустя сколько перемен делать вызов пересортировки. Если конечно есть возможность аккуратно подсчитать.
(Offline)
 
Ответить с цитированием
Старый 05.03.2009, 01:07   #475
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

К примеру, какие функции отвечяют за смеуну стейтов?
ну наприер:
somenetity->BindShader(someshader);
сменили шейдер - сменился стейт.
также его меняет переключение бленда с непрозрачного на прозрачный и обратно.
смена текстуры.
смена source (грубо говоря - геометрии)

так вот - тупо привязываться нельзя. ибо:пользователь может КАЖДЫЙ кадр менять какой то стейт (например видеотекстура, или там шейдер от лода зависит). И что теперь? каждый кадр сортировать - ну уж нет. сортировка куда дороже дельты меду рендерем неотсортированого и отсортированого списка.

надо привязываться как то с умом. в принципе можно делать сортировку, скажем не чаще чем раз в 10 секунд.
(Offline)
 
Ответить с цитированием
Старый 05.03.2009, 02:43   #476
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Sigel

А можно дать функцию, и когда вызовешь в цикле, тогда и при рендере отсортится?
(Offline)
 
Ответить с цитированием
Старый 05.03.2009, 03:01   #477
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

это один из вариантов.
я уже говорил его минус - сортировки будут работать в холостую. жрать ресурсы. на 10к объектов полная сортировка может потребовать окола 100мс.
даже раз в 100. даже раз в 1000 кадров мне жалко вхолостую сортировать список.

о! появилась идея. нужно считать сами переключения. шейдеров. текстур. и т.д. и если число переклчюений превышает некоторый порог - то проводить сортировку.

можно вообще сделать некий PerfomaranceAnalyzer который и будет заниматься анализом производительности. т.е. решать как часто сортировать списки, управлять load bias и прочим.

Последний раз редактировалось HolyDel, 05.03.2009 в 03:19.
(Offline)
 
Ответить с цитированием
Старый 05.03.2009, 19:27   #478
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

вот. демка аналогичная Lost-овской. 4096 кубов.

у меня на ати выигрывает его.
на нвидии - моя.
Вложения
Тип файла: zip 4096Cubes.zip (169.0 Кб, 440 просмотров)

Последний раз редактировалось HolyDel, 05.03.2009 в 21:16.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (05.03.2009)
Старый 05.03.2009, 21:07   #479
-=Jack=-
ПроЭктировщик
 
Аватар для -=Jack=-
 
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений
(для 44 пользователей)
Ответ: Sigel

160 фпс(когда видно все(сверху)).
Если там должны быть шейдеры, альфа и прочее - ничего нет.
__________________
Я бы изменил мир, но Бог не даёт исходников...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (05.03.2009)
Старый 05.03.2009, 21:15   #480
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Sigel

нет. там ничего нету. это тупо вывод 4к кубов. с одним сюрфейсом и одной текстурой.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Sigel Tutorial 1. Свой Crimsoland. HolyDel C++ 21 02.04.2009 21:25
Sigel vs WarTech HolyDel Болтовня 31 09.04.2008 19:13
Sigel::EntityShaders HolyDel Болтовня 8 01.04.2008 17:52


Часовой пояс GMT +4, время: 02:28.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com