![]() |
Ответ: Sigel
пофиксил мастер 2005 студии. раньше приложение не работало в дебаг режиме.
|
Ответ: Sigel
Вложений: 2
добавил сортировку полупрозрачных объектов.
проверьте плиз на адекватность. должно быть примерно как на скрине. в демке тысяча объектов (примерно 900 полупрозрачных). идет отрисовка с сортировкой + добавил команду Camera::ClearColor(r,g,b,a). Которая задает цвет отчистки. + добавил воспроизедение Theora на цпу (раньше было только на гпу) |
Ответ: Sigel
поставил на второй комп ати.
странно, но там работает и феора и мд2 (через шейдер). интересно почему у остальных не работает. правда работает очень медленнннно. кстати на ати очень фигово работала синхронизация с системой. все жутко висло. (я так понял izeg0re под "хреново альт-табится" подразумевал именно это? у меня к примеру помогал только ресет ((. а я до последнего не знал что написал такое говно (((( ) теперь наладил. кстати, на последних драйверах инится огл3 на ати. и на нвидии тоже. |
Ответ: Sigel
Вложений: 1
сделал сортировку стейтов. это позволило чучуть усокрить вывод графики.
space - применить сортировку (назад ее отменить нельзя) Z - отменить шейдеры (назад их применить нельзя) как тестить: 1) дождитесь пожалуйста стабилизации фпс. обычно на это уходит 5-10 сек. 2) запомните фпс 3) нажмите пробел 4) запишите сюда фпс_было / фпс_стало 5) перезапустите ексешник 6) нажмите Z 7) повторите пункты 1-4 можно также написать какая видеокарта. |
Ответ: 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 |
Ответ: Sigel
-=Jack=-, это весь лог?
я выяснил. похоже это ошибка в драйверах 9.1 в 9.2 ее пофиксили. |
Ответ: Sigel
Весь, сейчас скачаю 9.2 - проверю.
|
Ответ: Sigel
Цитата:
6. заюзал. дало ускорение от 20 до 50%. думаю в худшем случае (например очень легкая геометрия и очень тяжелый вершинный шейдер) сортировка с каши в упорядоченную систему может ускорить вывод в 2-3 раза. в среднем случае не думаю что даст больше 5-10 процентов перфомаранса. На данный момент вручную - SortEntitesListByState() (наверное будет alias на эту функцию через какой нибудь менеджер конвеера). Что то не могу придумать как сделать по человечески автоматом. Каждый кадр - тупо. Стейты далеко не каждый кадр меняются. При изменении стейта ентити - тоже не катит. Возможны ситуации, когда в рантайме меняются стейты у многих объектов - будет тормозить. Раз в определенный промежуток времени - вариант кажется самым оптимальным, но... если стейты не меняются - то и сортировать ничего не надо. Делать ненужную сортировку, пусть и рпаз в 10 сек. например - меня жаба давит. Менять флаги в методах изменения стейтов - некрасиво. Да и опять же, жаба душит. |
Ответ: Sigel
А можно реализовать счётчик?
К примеру, какие функции отвечяют за смеуну стейтов? Пользовательские вызовы? Думаю нужно завязать счётчкик, и дать возможность кодеру указать, примерно спустя сколько перемен делать вызов пересортировки. Если конечно есть возможность аккуратно подсчитать. |
Ответ: Sigel
Цитата:
somenetity->BindShader(someshader); сменили шейдер - сменился стейт. также его меняет переключение бленда с непрозрачного на прозрачный и обратно. смена текстуры. смена source (грубо говоря - геометрии) так вот - тупо привязываться нельзя. ибо:пользователь может КАЖДЫЙ кадр менять какой то стейт (например видеотекстура, или там шейдер от лода зависит). И что теперь? каждый кадр сортировать - ну уж нет. сортировка куда дороже дельты меду рендерем неотсортированого и отсортированого списка. надо привязываться как то с умом. в принципе можно делать сортировку, скажем не чаще чем раз в 10 секунд. |
Ответ: Sigel
А можно дать функцию, и когда вызовешь в цикле, тогда и при рендере отсортится?
|
Ответ: Sigel
это один из вариантов.
я уже говорил его минус - сортировки будут работать в холостую. жрать ресурсы. на 10к объектов полная сортировка может потребовать окола 100мс. даже раз в 100. даже раз в 1000 кадров мне жалко вхолостую сортировать список. о! появилась идея. нужно считать сами переключения. шейдеров. текстур. и т.д. и если число переклчюений превышает некоторый порог - то проводить сортировку. можно вообще сделать некий PerfomaranceAnalyzer который и будет заниматься анализом производительности. т.е. решать как часто сортировать списки, управлять load bias и прочим. |
Ответ: Sigel
Вложений: 1
вот. демка аналогичная Lost-овской. 4096 кубов.
у меня на ати выигрывает его. на нвидии - моя. |
Ответ: Sigel
160 фпс(когда видно все(сверху)).
Если там должны быть шейдеры, альфа и прочее - ничего нет. |
Ответ: Sigel
нет. там ничего нету. это тупо вывод 4к кубов. с одним сюрфейсом и одной текстурой.
|
Часовой пояс GMT +4, время: 17:21. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot