Сообщения на форуме пользователя Andrey (51 стр.)
Эффективный куллинг растительности. | 27 мая 2010 | 12:23 | #191 |
---|
slava_mib
>...- вызвать отрисовку объектов в них
странно что это в узле сделано, почему?
>...- вызвать отрисовку объектов в них
странно что это в узле сделано, почему?
Cg Shader и древняя карточка. | 27 мая 2010 | 12:06 | #4 |
---|
frp
по моему там есть GL_ARB_vertex_program, соответственно для Cg профиль arbvp1 должен работать.
по моему там есть GL_ARB_vertex_program, соответственно для Cg профиль arbvp1 должен работать.
wglShareLists; LAST QUESTION! Чесн слово =) | 25 мая 2010 | 11:05 | #18 |
---|
Maksitron
> блин у меня при загрузке теперь некоторые текстуры с мусором отображаются. =(
> почему? из-за того что на OGL никак низя в паралельном потоке загрузить
> текстуру в видеопамять не рискуя повредить эту самую текстуру? Кто нибудь делал
> так вообще? т.е. у нас 2 расшареных потока(в каждом по контексту) в первом мы
> выводим графику а во втором загружаем текстуры. причем не только в оперативку
> но и видеопамять - т.е. основному потоку достается только хендл текстуры по
> которому он и рисует её.
текстура одна и та-же? glGetError() ?
> блин у меня при загрузке теперь некоторые текстуры с мусором отображаются. =(
> почему? из-за того что на OGL никак низя в паралельном потоке загрузить
> текстуру в видеопамять не рискуя повредить эту самую текстуру? Кто нибудь делал
> так вообще? т.е. у нас 2 расшареных потока(в каждом по контексту) в первом мы
> выводим графику а во втором загружаем текстуры. причем не только в оперативку
> но и видеопамять - т.е. основному потоку достается только хендл текстуры по
> которому он и рисует её.
текстура одна и та-же? glGetError() ?
wglShareLists; LAST QUESTION! Чесн слово =) | 24 мая 2010 | 15:07 | #12 |
---|
RPGman
>Работает. Шарятся только ресы. Состояние контекста не зависит от наличия и/или состояния соседних контекстов.
ага, буду знать, если что попробую перейти на эту схему, если ы будущем все усложниться. Ошибка явно была не в OpenGL API, а в куче кода... Беру слова обратно :)
>Работает. Шарятся только ресы. Состояние контекста не зависит от наличия и/или состояния соседних контекстов.
ага, буду знать, если что попробую перейти на эту схему, если ы будущем все усложниться. Ошибка явно была не в OpenGL API, а в куче кода... Беру слова обратно :)
wglShareLists; LAST QUESTION! Чесн слово =) | 24 мая 2010 | 14:22 | #9 |
---|
RPGman
>С чего биндинги текстур в одном контексте автоматом должны дублироваться в другом?
>В одном - одна текстура прибиндена, в другом - другая. Первый контекст рендерит с первой текстурой, второй контекст заливает вторую.
У меня так было, отказался я от этой схемы. Возможно что-то не так делал, но врядли.
У тебя так нормально работало?
>С чего биндинги текстур в одном контексте автоматом должны дублироваться в другом?
>В одном - одна текстура прибиндена, в другом - другая. Первый контекст рендерит с первой текстурой, второй контекст заливает вторую.
У меня так было, отказался я от этой схемы. Возможно что-то не так делал, но врядли.
У тебя так нормально работало?
wglShareLists; LAST QUESTION! Чесн слово =) | 24 мая 2010 | 12:50 | #6 |
---|
RPGman
> Весь смысл второго контекста пропадает.
Не пропадает. Сначала делаем создание контекстов потом уже расшариваем, стартуем нужные потоки с расшаренными контекстами. Наверное ты меня не понял.
> Тут уже ты лажаешь. Именно вторым шареным контекстом решается работа с ресами
> из параллельных потоков. Естественно, если ты в первом начал использовать
> текстуру, которая только-только заливается во втором, то ты сам себе злобный
> буратино.
Ты сам лажаешь. Речь идет о разных текстурах.Читай внимательно что я написал. Еще раз в Direct3D 1 текстуру ставим(биндим в OpenGL) в потоке рендера, а другую можно заливать в другом. в OpenGL 1 биндим в потоке рендера (и она текущая!), другую заливаем в другом но опять-же ее нужно биндить! и уже она другая в потоке рендера.
> Весь смысл второго контекста пропадает.
Не пропадает. Сначала делаем создание контекстов потом уже расшариваем, стартуем нужные потоки с расшаренными контекстами. Наверное ты меня не понял.
> Тут уже ты лажаешь. Именно вторым шареным контекстом решается работа с ресами
> из параллельных потоков. Естественно, если ты в первом начал использовать
> текстуру, которая только-только заливается во втором, то ты сам себе злобный
> буратино.
Ты сам лажаешь. Речь идет о разных текстурах.Читай внимательно что я написал. Еще раз в Direct3D 1 текстуру ставим(биндим в OpenGL) в потоке рендера, а другую можно заливать в другом. в OpenGL 1 биндим в потоке рендера (и она текущая!), другую заливаем в другом но опять-же ее нужно биндить! и уже она другая в потоке рендера.
wglShareLists; LAST QUESTION! Чесн слово =) | 24 мая 2010 | 12:26 | #4 |
---|
Maksitron
Попробуй так.
1) создай все контексты в одном потоке;
2) расшарь какие нужно в том же потоке;
3) потом только делай их текущими в конкретном потоке.
>> BTW, зачем тебе два контекста?
>хочу организовать подгрузку текстур во втором потоке.
не прокатит :) тут OpenGL убог, разные текстуры будут биндятся в разных потоках, какая тогда будет текущей, и как ты думаешь какую текcтуру ты увидишь(если ты вообще увидишь что-то нормальное)? У меня рваная геометрия была на экране, когда пытался VBO грузить в отдельном потоке. Это в Direct3D так можно, там не нужно делать такой идиотизм как сделать "текущим" какой-то ресурс что-бы его изменить.
>Сори за глупый вопрос - но про какой ресурс идет речь?)
для ошибок связанными с wglShareLists, GetLastError/FormatMessage выдают какие-то левые ошибки/сообщения. У меня вообще было сообщения связанное с файлом...
Попробуй так.
1) создай все контексты в одном потоке;
2) расшарь какие нужно в том же потоке;
3) потом только делай их текущими в конкретном потоке.
>> BTW, зачем тебе два контекста?
>хочу организовать подгрузку текстур во втором потоке.
не прокатит :) тут OpenGL убог, разные текстуры будут биндятся в разных потоках, какая тогда будет текущей, и как ты думаешь какую текcтуру ты увидишь(если ты вообще увидишь что-то нормальное)? У меня рваная геометрия была на экране, когда пытался VBO грузить в отдельном потоке. Это в Direct3D так можно, там не нужно делать такой идиотизм как сделать "текущим" какой-то ресурс что-бы его изменить.
>Сори за глупый вопрос - но про какой ресурс идет речь?)
для ошибок связанными с wglShareLists, GetLastError/FormatMessage выдают какие-то левые ошибки/сообщения. У меня вообще было сообщения связанное с файлом...
Народ, все в skype! :) | 21 мая 2010 | 16:04 | #51 |
---|
вот если бы его перестали на Delphi писать вообще было бы круто
Введение в Lua. (Комментарии к статье) | 21 мая 2010 | 10:39 | #67 |
---|
Executor
хорошая ссылка!!
хорошая ссылка!!
Ушел из жизни Дио | 19 мая 2010 | 11:03 | #24 |
---|
democoder
> Но всем ведь срать, не так ли?
мне нет.
> Но всем ведь срать, не так ли?
мне нет.
Эффективный куллинг растительности. | 19 мая 2010 | 10:52 | #61 |
---|
innuendo
> кастую Andrey в топик :)
> пусть пояснит - почему выбрал octree
Сейчас он меня устраивает. Попробую зафигячить больше растительности, посмотрю что с этого выйдет.
> кастую Andrey в топик :)
> пусть пояснит - почему выбрал octree
Сейчас он меня устраивает. Попробую зафигячить больше растительности, посмотрю что с этого выйдет.
Эффективный куллинг растительности. | 17 мая 2010 | 11:26 | #16 |
---|
.L
> Мне кто-то из знакомых както подсказал делать через октри. Я сделал - фигня.
innuendo
> я даже догадываюсь кто :)
Да это я подсказал.
У меня растительность работает через Octree. Не томозит, хорошо кулится, не жрет много памяти. Значит неправильно сделано. Не нужно флейм разводить.
Предложение slava_mib по поводу BVH более продвинутое и более эффективное чем Octree. Я тоже подумаю над этим.
> Мне кто-то из знакомых както подсказал делать через октри. Я сделал - фигня.
innuendo
> я даже догадываюсь кто :)
Да это я подсказал.
У меня растительность работает через Octree. Не томозит, хорошо кулится, не жрет много памяти. Значит неправильно сделано. Не нужно флейм разводить.
Предложение slava_mib по поводу BVH более продвинутое и более эффективное чем Octree. Я тоже подумаю над этим.
Душегубъ (FPS, наш ответ Крайсису :) | 12 мая 2010 | 15:52 | #28 |
---|
iLya2IK
> Ну прям :) Больше всего времени жрут постэффекты (отрисовка в rect текстуру
> размером с экран). Всюду бамп налеплен, прочие шойдеры, модели не самые легкие
> (по паре тыщ поликов). Да и карточка, согласись, далеко не самая хорошая.
> Отключи бамп, уменьши расширение экрана, все легче компу будет.
Не не надо мне это говорить :). Пару тыс поликов это десятилетняя давность. Короче оптимизируй и выкинь Delphi лучше сразу.... cцена не загруженная, Far Cry выдает 50 FPS модельки больше 2 тыс поликов всюда бамп 3 источника света, больше объектов кадре. Короче очень медленно... Но красиво.
> Ну прям :) Больше всего времени жрут постэффекты (отрисовка в rect текстуру
> размером с экран). Всюду бамп налеплен, прочие шойдеры, модели не самые легкие
> (по паре тыщ поликов). Да и карточка, согласись, далеко не самая хорошая.
> Отключи бамп, уменьши расширение экрана, все легче компу будет.
Не не надо мне это говорить :). Пару тыс поликов это десятилетняя давность. Короче оптимизируй и выкинь Delphi лучше сразу.... cцена не загруженная, Far Cry выдает 50 FPS модельки больше 2 тыс поликов всюда бамп 3 источника света, больше объектов кадре. Короче очень медленно... Но красиво.
Как вы менеджите установку шейдерных констант? | 12 мая 2010 | 15:43 | #1 |
---|
.L
>if ((shader.Flags & EffectType.FOG) != 0)
>f ((shader.Flags & EffectType.MAP_DIFFUSE) != 0
> && (shader.Flags & EffectType.TERRAIN) == 0)
>if ((shader.Flags & EffectType.SKINNING) != 0)
>if ((shader.Flags & EffectType.LIGHTING) != 0)
зачем так сложно? каждый шейдер содержит набор констант что есть, то и будет ставиться, зачем то-то проверять?
Заведи предопределяемые константы. Текщий ambient, fog текщуя матрица такого-то типа и т.д. Эти типы и будут ArtisticVariables + еще какие-то дополнительные.
> shader.SetColor("ambient",
убрать передачу по строкам. Слать пачками за меньшее число вызовов.
>if ((shader.Flags & EffectType.FOG) != 0)
>f ((shader.Flags & EffectType.MAP_DIFFUSE) != 0
> && (shader.Flags & EffectType.TERRAIN) == 0)
>if ((shader.Flags & EffectType.SKINNING) != 0)
>if ((shader.Flags & EffectType.LIGHTING) != 0)
зачем так сложно? каждый шейдер содержит набор констант что есть, то и будет ставиться, зачем то-то проверять?
Заведи предопределяемые константы. Текщий ambient, fog текщуя матрица такого-то типа и т.д. Эти типы и будут ArtisticVariables + еще какие-то дополнительные.
> shader.SetColor("ambient",
убрать передачу по строкам. Слать пачками за меньшее число вызовов.
Кол.во источников света в кадре | 11 мая 2010 | 23:35 | #117 |
---|
1 - 100
2 - 63
3 - 46
4 - 36
5 - 30
6 - 25
7 - 21
8 - 18
ATI X1300
2 - 63
3 - 46
4 - 36
5 - 30
6 - 25
7 - 21
8 - 18
ATI X1300