ПрограммированиеФорумОбщее

Когда заканчивается видеопамять

#0
0:40, 28 июля 2011

В общем проблема в заголовке. Использую Ogre 1.7.2, PhysX. Все работает в режиме создания ресурсов на одной видеокарте (в настройках рендеринга DirectX). Но когда стоит создание ресурсов на всех девайсах - выдает о ошибку конца видеопамяти. У меня две 250GTS, три монитора (используются все).  В логе дублируются записи (при втором случае) о загрузке текстур.

Подозреваю, что проблема заключается в следующем. У меня в скриптах материалов используются 4 схемы - по разрезам лето/зима и день/ночь. Достаточно много материалов с большими текстурами. Согласно логу они грузятся все, хотя в один запуск у меня устанавливается одна схема и она работает до завершения. Чо делать? У кого какие идеи???

#1
1:24, 28 июля 2011

NIXIUS
> Согласно логу они грузятся все, хотя в один запуск у меня устанавливается одна
> схема
Что-то тут не то.
Попробуй физически убрать другие "схемы" и посмотреть что будет и откуда они пытаются грузится.

#2
1:35, 28 июля 2011

Лог загрузки меша и назначение ему материала (схема уже установлена!)

13:45:51: Mesh: Loading flora_3_1.mesh.
13:45:51: Can't assign material Default to SubEntity of ent_0 because this Material does not exist. Have you forgotten to define it in a .material script?
13:45:51: Texture: bush_2.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 0 generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1.
13:45:51: Texture: bush_2.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 0 generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1.
13:45:51: Texture: bush_1.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 0 generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1.
13:45:51: Texture: bush_1.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 0 generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1.

Скрипт материала:

abstract material material/flora/base
{
    technique summer/day
    {
        scheme summer/day
        pass main
        {
            scene_blend alpha_blend
            alpha_rejection greater_equal 200
            texture_unit main
            {
                texture $summer_day 0
            }
        }
    }
    technique summer/night
    {
        scheme summer/night
        pass main
        {
            scene_blend alpha_blend
            alpha_rejection greater_equal 200
            vertex_program_ref TxComby_1_Fara_vp
            {
            }
            fragment_program_ref TxComby_1_Fara_fp
            {
            param_named_auto DistanceOverride 1.0
            }
            texture_unit main
            {
                texture $summer_night 0
            }
        }
    }
    technique winter/day
    {
        scheme winter/day
        pass main
        {
            scene_blend alpha_blend
            alpha_rejection greater_equal 200
            texture_unit main
            {
                texture $winter_day 0
            }
        }
    }
    technique winter/night
    {
        scheme winter/night
        pass main
        {
            scene_blend alpha_blend
            alpha_rejection greater_equal 200
            vertex_program_ref TxComby_1_Fara_vp
            {
            }
            fragment_program_ref TxComby_1_Fara_fp
            {
            param_named_auto DistanceOverride 1.0
            }
            texture_unit main
            {
                texture $winter_night 0
            }
        }
    }
}

material material/flora/bush/0 : material/flora/base
{
    set $summer_day "bush_2.png"
    set $summer_night "bush_2.png"
    set $winter_day "bush_1.png"
    set $winter_night "bush_1.png"
}
#3
1:35, 28 июля 2011

Схемы быстро убрать не могу - да тут очевидно все

#4
16:26, 28 июля 2011

А ты что mipmap-уровни не юзаешь?

#5
23:29, 28 июля 2011

NIXIUS
>>Can't assign material Default to SubEntity of ent_0
Одной части сущности ent_0 назначен материал с именем "Default". И Огр не может найти такой материал. Может есть смысл проверить меш сущности "ent_0" на корректность назначенного материала?
Или, если ты руками в коде меняешь материалы обьектов, может где-то опечатался и на сущность воткнулся стандартный дефолтовый "Default" материал?

#6
23:42, 28 июля 2011

0xdeadc0de
> Одной части сущности ent_0 назначен материал с именем "Default". И Огр не может
> найти такой материал. Может есть смысл проверить меш сущности "ent_0" на
> корректность назначенного материала?
> Или, если ты руками в коде меняешь материалы обьектов, может где-то опечатался
> и на сущность воткнулся стандартный дефолтовый "Default" материал?
Не - по логу же видно - грузится меш (у него действительно субмеш с материалом Default - о чем огр ругнулся в лог), а затем назначается материал, причем всей entity, о чем свидетельствуют последующие записи в логе (загрузка текстур).

#7
23:56, 28 июля 2011

NIXIUS
> У меня две 250GTS, три монитора (используются все

вспомнилась классика  - три магнитофона, куртки замшевые ... три :)

#8
0:20, 29 июля 2011

innuendo
Обьясни шутку. На большинстве средних карт стоит один DVI  и один аналоговый выход. В итоге можно включить до 4-х мониторов.
 
NIXIUS
Ок,
>>выдает о ошибку конца видеопамяти
что именно за ошибка? У меня нет двух видюх, и я никогда в огре такой ошибки не видел. Но насколько мне подсказывает память, почти все ресурсы в Огре грузятся как managed. И я сильно сомневаюсь, что твой код ест 2 гига памяти карты. Хотя я совсем не в курсе, как работает ресурс-менеджмент на мульти-картах, так что тут могу ошибаться.
Но, я совершенно точно помню, что Огр подгружает ресурсы при первом требовании. Т.е. если у тебя согласно логу грузятся текстуры материалов, то эти материалы кто-то будет использовать.
Плюс, Огр (не в обиду огро-юзерам) - тот еще кусок кода, который стоило бы пристрелить и запретить распространять как open source. И по этому логу  (без живого кода) совсем не понятно, что именно там происходит - используется ли этот материал на обьекте, или он один раз загрузился и сразу выгрузился (последнее узнать невозможно на текущей версии огра, и сомневаюсь, что когда-нибудь будет можно)
 
В любом случае, даже с полным логом будет трудновато понять, что именно происходит в ядре. Универсальный выход - собери дебаг-сборку Огра, и под отладчиком посмотри, что, где, как и зачем грузится. Как бонус - быстрее поймешь, что Огр - это не то, о чем ты думал, когда качал исходники, а просто очередная надстройка над GAPI (причем сильно переоцененная)

#9
9:35, 29 июля 2011

0xdeadc0de
> Обьясни шутку. На большинстве средних карт стоит один DVI и один аналоговый
> выход. В итоге можно включить до 4-х мониторов

эх, Шпака знаешь ? :)

ПрограммированиеФорумОбщее

Тема в архиве.