Войти
ПрограммированиеФорумГрафика

Рендеринг. Кто как делает? (11 стр)

Страницы: 17 8 9 10 11 12 Следующая »
#150
10:58, 12 апр. 2016

Mr. Rabbit
>Рендерер в Engine.cpp
Я глянул исходники. Engine.cpp берет на себя кучу всего. Нету разделения на примерные подсистемы: RenderSystem/Scene/Materials/Shaders/Resources/RenderObjects и т.д. Все это сидит внутри его.
Ну да ладно. Ты попробуй профилируй. У тебя на CPU может быть дикая просадка на копировании матриц в классе GPURegisterStack, в методе void PushMatrix( const D3DXMATRIX & m ) {
на x86 это постоянные fld инструкции, причем для тысячи объектов может чуток просаживать FPS. Хотя-бы через memcpy сделай. Но это всего лишь предположение. Готовый буфер констант нужно хранить, а не формировать его постоянно в кадре. Зачем ты через Ocree разбиваешь геометрию на треугольники? Это сложно и тяжело поддерживать. Лучше в дереве храни объекты, а не группы полигонов.
Если тебе не нужен Windows XP, то лучше IDirect3DDevice9Ex, уйдет Lost Device
В коде системы трансформирование частиц можно и нужно перенести на GPU. Зачем этим грузить CPU ? Цвет в константы шейдера.

 mVertices[ vertexNum ].mPosition = p.mPosition + leftTop * p.mSize;
...
            mVertices[ v1 ].mPosition = p.mPosition + rightTop * p.mSize;
...
      mVertices[ v1 ].mBoneIndices = ruVector4( p.mColor / 255.0f, p.mOpacity / 255.0f );

            mVertices[ v2 ].mPosition = p.mPosition + rightBottom * p.mSize;
...
      mVertices[ v2 ].mBoneIndices = ruVector4( p.mColor / 255.0f, p.mOpacity / 255.0f );

            mVertices[ v3 ].mPosition = p.mPosition + leftBottom * p.mSize;
...
      mVertices[ v3 ].mBoneIndices = ruVector4( p.mColor / 255.0f, p.mOpacity / 255.0f );
Ну вообще я бв не городил все в 1 формат, послушай что говорят.
Напишу еще потом. Выложил бы проект с контентом, можно было потюнить, сделать профилирование.
innuendo
> В этом случае объекты быстро пропадают исчезают. Вся эта байда скрывается туманом и far plane
Очевидно это тюнится на этапе проектировки уровня, для достижения не заметного исчезновения, а вот туман нужен не всегда.
>Я всё ещё жду ответы на вопросы:
Даже не собираюсь тратить время.

#151
11:01, 12 апр. 2016

Andrey
> а вот туман нужен не всегда.

Ну-ну, на скольких игровых проектах ты не видел тумана ?

> > всё ещё жду ответы на вопросы:
> Даже не собираюсь тратить время.

А что так ? Боишься ?

#152
11:03, 12 апр. 2016

Andrey

Сделал тупым перебором, и правда, проц не задымился :) фпс радует,
вот тока иногда отсекает не верно.

#153
11:04, 12 апр. 2016

Mr. Rabbit
> Сделал тупым перебором, и правда, проц не задымился

Не хочешь через Octree сделать ? Как один один оптимизатор упирался :)

#154
11:05, 12 апр. 2016

Я и так делаю профилирование после каждых значительных изменений. Никаких просадок не получил после изменений.

Andrey
> RenderSystem/Scene/Materials/Shaders/Resources
Не нужно. Это лишнее неоправданное усложнение движка, сейчас рендер прямой как струна без закидонов.

Andrey
> на x86 это постоянные fld инструкции,
SSE2. Студия генерит инструкции SSE, вместо использования x87. Для неверующих: можете посмотреть ассемблерный выхлоп - со включенным SSE в листинге нет ни одной инструкции fld, fmul и прочих. Все заменяется на аналоги из SSE

Andrey
> Зачем ты через Ocree разбиваешь геометрию на треугольники? Это сложно и тяжело
> поддерживать. Лучше в дереве храни объекты, а не группы полигонов.
Октри не используется года так с 2014. А недавно я его вообще выкинул.

Andrey
> Выложил бы проект с контентом, можно было потюнить, сделать профилирование.
Проект закрытый. Открыты только исходники. Я и сам в состоянии "тюнить". А и кстати, движок все еще в процессе обновления, так что то что в репозитории - не окончательный вариант.

#155
11:11, 12 апр. 2016

mr.DIMAS
> Октри не используется года так с 2014. А недавно я его вообще выкинул.

Тоже тупым перебором? :)

innuendo
> Не хочешь через Octree сделать ? Как один один оптимизатор упирался :)

NIET :)  перепишу математику на DirectXmath и в несколько потоков буду гонять. :)

#156
11:15, 12 апр. 2016

Mr. Rabbit

Ты для начала прогони профайлером

#157
11:18, 12 апр. 2016

innuendo

PROGNAL :)  I?

#158
11:20, 12 апр. 2016

mr.DIMAS
> SSE2. Студия генерит инструкции SSE, вместо использования x87. Для неверующих: можете посмотреть ассемблерный выхлоп - со включенным SSE в листинге нет ни одной инструкции fld, fmul и прочих. Все заменяется на аналоги из SSE
Ладно. Но все-же гонять копирование пару тысяч матриц в кадре, вместо их готового хранения, не очень хорошая идея.
Ну и я хотел бы узнать резуьтаты профилирования. Возьми к примеру CodeXL, не поленись запусти и посмотри.

#159
11:23, 12 апр. 2016

>>Октри не используется года так с 2014. А недавно я его вообще выкинул.
Да, как ни странно для рендеринга больше неактуально. Сам недавно в этом убедился.
Причём тормоза начинаются именно при большом поликаунте.

#160
11:28, 12 апр. 2016

Andrey
> вместо их готового хранения, не очень хорошая идея.

Ну так покажи как нужно пачками посылать ?

#161
12:40, 12 апр. 2016

Andrey

ААА, я понял про Clip Distance!!! Это у каждого объекта должно быть  индивидуально, и отсекаться независимо от FarPlane. Дошло наконецто :)

#162
13:00, 12 апр. 2016

в думе тоже только один формат вершин на всё - idDrawVert (в какой-то версии движка было написано "our only drawing vertex type", вроде в Prey SDK или ET:QW).

и только один тип геометрии для рендера:
srfTriangles_t ("our only drawing geometry type").

тут описаны форматы вершин из CoD.

а подход с Clip Distance - это "contribution culling"?

#163
13:09, 12 апр. 2016

Mr. Rabbit
> Дошло наконецто

Сиречь, сиречь

#164
13:49, 12 апр. 2016

Mr. Rabbit
> ААА, я понял про Clip Distance!!! Это у каждого объекта должно быть  индивидуально, и отсекаться независимо от FarPlane. Дошло наконецто :)
да, индивидуально, так-же у объектов может быть несколько других параметров, в основном это фаги. Кастить тени, рисовать ли в DepthPass/zOnlyPass, Intance Group и т.д.
>а подход с Clip Distance - это "contribution culling"?
первый раз слышу. Ну мона почитать.

Страницы: 17 8 9 10 11 12 Следующая »
ПрограммированиеФорумГрафика

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