forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   Sigel (http://forum.boolean.name/showthread.php?t=4960)

SBJoker 16.03.2009 00:29

Ответ: Sigel
 
1й ~3000
2й ~2200

HolyDel 16.03.2009 00:37

Ответ: Sigel
 
SBJoker, спасибо. визуально разница заметна?

ABTOMAT 16.03.2009 01:10

Ответ: Sigel
 
Как один из вариантов - при загрузке заранее отрендерить твоим способом сглаживания кадров например в два раза больше. Я думаю, при теперешних объёмах ОЗУ картинка 1024*64 сильно нетяготит, а зато получим более сглаженную анимацию без лишних проволочек.

SBJoker 16.03.2009 01:32

Ответ: Sigel
 
HolyDel, 1я вся рывками..как низкий фпс анимации выглядит..второе всё плавно...
Номер кадра в первом варианте точно правильно считается?

HolyDel 16.03.2009 01:37

Ответ: Sigel
 
ну повози камеру)) все правильно считается
рывками - потому что всего 40 кадров на 10 секунд. 0.25с достаточно чтобы увидеть резкую смену картинки.
блицовая анимтекстура вела бы себя точно также.
а интерполяция анимтекстуры это уже мой хак.
ее надо юзать когда смена кадров анимтекстуры не больше 20-30 раз в секунду.

HolyDel 17.03.2009 06:02

Ответ: Sigel
 
Вложений: 2
демка потипа 2д светлячков.
тут тестится MRT (рендер сразу в несколько текстур) в принципе в этой демке он нафиг не нужен, но все же, чисто проверить будет на других компах работать или не.

rectangle текстуры.
и фикс того, что окно пропадло при запуске и его нужно было искать (щас вроде нормально, хотя хз)

железо скорее всего нужно уровня 6xxx или выше.
пока не работает на АТИ. скоро поправлю :)

z/x - менять число "фонариков"

ABTOMAT 17.03.2009 16:27

Ответ: Sigel
 
1250ФПС - 10шт
50ФПС - 1000шт

HolyDel 17.03.2009 16:33

Ответ: Sigel
 
ABTOMAT, окно на сей раз человеческое создалось? Вылезло на передний план?

ABTOMAT 17.03.2009 16:37

Ответ: Sigel
 
Фуллскрин же ж

HolyDel 17.03.2009 16:38

Ответ: Sigel
 
а в фуллскрине и раньше нормально было?

ABTOMAT 17.03.2009 17:53

Ответ: Sigel
 
да, в нём нормально.
А окно на заднем плане сидить.

HolyDel 17.03.2009 18:14

Ответ: Sigel
 
Вложений: 1
Авт, проверь вот это еще плиз. скомпилил в оконном режиме.

(на ати по прежнему не работает, в чем причина - еще не разобрался)

ABTOMAT 17.03.2009 18:23

Ответ: Sigel
 
Теперь с окном всё замечательно :super:

HolyDel 17.03.2009 19:59

Ответ: Sigel
 
ну и отлично.

переписал систему расширений. теперь они по хитрому инициализирутся. сначала без суффикса, если нет то с ARB, если нет то с EXT. таким образом удалось инстансинг инициализировать на обоих видюхах (у NV он EXT а у ATI - ARB).

Убрал наконец возможность менять размеры окна. Ибо она больше мешает, чем помогает.

Теперь окно вылазит вперед, как и положено.

Сделал возможность рендера в несколько текстур сразу (движек держит до 16).

такие дела

IGR 17.03.2009 20:02

Ответ: Sigel
 
Вложений: 1
Цитата:

пока не работает на АТИ. скоро поправлю
эм... действительно !! :)

ABTOMAT 17.03.2009 20:25

Ответ: Sigel
 
На АТИ открывается вход в Матрицу! :pure_magic: :-D

IGR 17.03.2009 20:46

Ответ: Sigel
 

Цитата:

На АТИ открывается вход в Матрицу!
ага, ты какую таблетку буш синюю или красную ?? :lol:

ABTOMAT 17.03.2009 22:26

Ответ: Sigel
 
Галоперидол, пожалста ;)

moka 17.03.2009 23:35

Ответ: Sigel
 
HolyDel, к Deferred Shading готовишся? :)

HolyDel 17.03.2009 23:58

Ответ: Sigel
 
MoKa, не совсем. просто технология на глаза попалась, решил по быстрому сделать :)

на самом деле довольно много всего можно завязать на MRT. Например рендеринг в кубемапу за один проход (естественно не всю сцену, а какую нить спец геометрию). Или даже рендер в 3д текстуру, и так тоже можно, да. Или например партиклы на ГПУ, или какая нибудь хитрая анимация.
Вобщем технология очень полезная и ограничивает только фантазия.

jimon 18.03.2009 00:54

Ответ: Sigel
 
MoKa
а что собстенно от deferred shading надо ?
к примеру у меня в jengine уже сейчас можно отрендерить всю сцену (или часть сцены выборочно) с одним шейдером в несколько текстур за раз (mrt рулз), а потом уже работать с этими текстурами (я заюзал рендер через композиторы как в ogre и использую шейдеры cgfx)
такого подхода достаточно будет ?
но прокручивая всё это в голове я наткнулся на одну проблему, к примеру анимация происходит в вертексном шейдере, а нам надо отрендерить только канал глубины в фрагментном шейдере, как такое сделать если в материале вертексный и фрагментный шейдер не разделимы ?

impersonalis 18.03.2009 01:34

Ответ: Sigel
 
у меня с мрт ассоциируется только "магнитно-резонансная томография", подскажите что курить.

moka 18.03.2009 01:36

Ответ: Sigel
 
В FX (HLSL) материал, можно было делать инклюды. Можно сделать в одном файле много разновидностей вершинного, а в другом пиксельные, а в третьем только техники, где делать разные комбинации.
Jimon, от Deferred Shading'а требуется по сути уже готовая модель освещения, плюс гибкость для пользовательских шейдеров.

HolyDel 18.03.2009 01:40

Ответ: Sigel
 
jimon попробуй сделать ветвление.
условие на некую uniform переменную. когда она true - тогда рендериш цвет, когда false - тогда глубину.
это примерно.

moka 18.03.2009 01:44

Ответ: Sigel
 
Советую ещё Defin'ы покурить, ты можешь сделать ifdef'ов много, и заранее чтобы подготовить разные шейдера, открываешь инклуд файл с дефайнами, там везде ставишь нужные дефайны в зависимости от настроек (это делать нада программой писать, работу с текстовым файлом, почти как ini). И компилишь шейдер, каждый раз когда компилишь, идёт переучёт всего, в том числе и дефайнов.
Прошлый шейдер с этого же файла, но с другими дефайнами, который был скомпилен - естественно не пострадает.

jimon 18.03.2009 01:51

Ответ: Sigel
 
MoKa
да,но тебе так хочется иметь отдельную технику RenderZToTexture ?

HolyDel
в принципе можно, но тогда еще большая нагрузка на код шейдера

вот дефолтовый шейдер :
Код:

void DefaultMaterial_VS(in float4 Position : POSITION,in float2 UV : TEXCOORD0,out float4 oPosition : POSITION,out float2 oUV : TEXCOORD0,uniform float4x4 ProjMat,uniform float4x4 TexMat)
<
        string VL0 = "Position";
        string VL2 = "UV";
>
{
        oPosition = mul(ProjMat,Position);
        oUV = mul(TexMat,float4(UV.x,UV.y,0,1)).xy;
}
void DefaultMaterial_FS(in float2 UV : TEXCOORD0,out float4 oColor : COLOR,uniform sampler2D Diff : TEX0)
{
        oColor = tex2D(Diff,UV);
}
float4x4 ProjViewModelMatrix;
float4x4 TexMatrix;
sampler2D DiffuseTexture;
technique DefaultMaterial
<
        string PROJMAT = "ProjViewModelMatrix";
        string TEXMAT = "TexMatrix";
        string TEX0 = "DiffuseTexture";
>
{
        pass
        {
                VertexProgram = compile latest DefaultMaterial_VS(ProjViewModelMatrix,TexMatrix);
                FragmentProgram = compile latest DefaultMaterial_FS(DiffuseTexture);
        }
}"

VL0-VL4 это слои данных вертексов (position,normal,uv,color но можно и свои данные пихать)
TEX0-TEX8 слои текстур (до 32, ограничено настройками при компиляции)
техники могут быть разного уровня качества графики, тогда надо задать имя техники так DefaultMaterial__Q3 (где может быть Q0,Q1,Q2,Q3,Q4 от самого низкого до самого высокого качества) и двиг тогда выберет оптимальную технику

как видим уже тут у меня далеко не упрёшь, надо соблюдать формат аннотаций

HolyDel 18.03.2009 01:57

Ответ: Sigel
 
тогда никак. хотя если тебе надо тупо получить глубину, то просто юзай glMaskColor(0,0,0,0);
насколько мне известно, в таком случае пиксельный шейдер вообще не будет обрабатываться (хотя может и будет, все таки там discard (texkill) может быть).

moka 18.03.2009 02:03

Ответ: Sigel
 
jimon, заюзай struct - код будет намного читабельнее и удобнее (это насчёт передачи данных в вершинник, и перенос данных из вершинного в фрагментный).

HolyDel 18.03.2009 02:07

Ответ: Sigel
 
Цитата:

Сообщение от impersonalis (Сообщение 100966)
у меня с мрт ассоциируется только "магнитно-резонансная томография", подскажите что курить.

я вот это курил:
http://steps3d.narod.ru/tutorials/mrt-tutorial.html

на самом деле замечательнейшая фича, наряду с float текстурами, rect текстурами и r2vb (рендер в вершинный буфер). так фактически можно на гпу делать что угодно.

у меня в движке это выглядит так:
Код:

somefbo->BindTexture(tex1,0);
somefbo->BindTexture(tex2,1);
somefbo->BindTexture(tex3,2);

где второй параметр - это "слой" к которому привязывается текстура.

а в шейдере запись пикселя будет уже не
Код:

gl_FragColor = bla_bla_bla;
а как то так:
Код:

gl_FrafData[0] = color1;
gl_FrafData[1] = color2;
gl_FrafData[2] = color3;

соотвественно после его работы в tex1 запишется color1, в tex2 - color2, а tex3 - color3. и все это за ОДИН проход :)

HolyDel 18.03.2009 03:13

Ответ: Sigel
 
Вложений: 2
ввел систему сбора статистики (отдельное спасибо MoKe, за то что навел на мысль).
Она прям сразу оказалась куда полезнее чем я думал.
На данный момент в статистику пишется число переключений текстур и шейдеров.
Как оказалось, у меня в двиге шейдера переключались даже в том случае, если они не менялись! Т.е тысячу моделей рендерим с одним шейдером - 1000 раз переключается.
Исправление этого бага в частности позволило чучуть ускорить вывод мд2 моделей.
В архиве старая версия, новая версия и блицовая версия.

Скажите плиз, есть ли изминения в плане производительности? Сравните старую и новую версию в F3 режиме (этот режим активен по умолчанию).
F1 - софтварный метод
F2 - без интерполяции.

во второй демке просто жмите пробел - скажите как меняется фпс (до_пробела/после_пробела). Такая уже была, но от нее мало толку было. шейдера то все равно переключались на уровне ГАПИ (на уровне драйвера наверно не, так как все равно немного ускорялось).
такие дела.

-=Jack=- 18.03.2009 09:35

Ответ: Sigel
 
Новая:
F1 - 24
F2 - 244
F3 - 240
Старая:
F1 - 22
F2 - 210
F3 - 48

*когда включаю старую, почемуто начинает лагать Aimp...

Вторая: 120-160(шейдеров не видно)

HolyDel 18.03.2009 12:55

Ответ: Sigel
 
Вложений: 1
ага. в старой был тпакой глюк.
-=Jack=-, у тебя же АТИ. скажи, третий режим (F3) у тебя сглаживается? Или рывками?

Цитата:

Вторая: 120-160(шейдеров не видно)
у меня на ати с 20-24 до 170-180. но ето довольно сильная видюшка и довольно слабый проц. шейдера там простые в хлам, поэтому их и не видно.
на буке с встроенной нвидиа - с 75-80 до тех же 170-180. но ето относительно слабая видюха и довольно мощный проц.

dimanche13 18.03.2009 14:27

Ответ: Sigel
 
какая сейчас текущая версия движка? я смотрю пока по тестам опережает все с чем удалось потестить, респект. Документацию будешь ли делать, когда. примерный процент готовности, тоже напиши

HolyDel 18.03.2009 14:47

Ответ: Sigel
 
Код:

какая сейчас текущая версия движка?
версию пока не проставляю. Нужно сделать следуещее, до того как можно будет нумеровать версии:
Код:

0) экспорт\импорт бинарного формата 3д моделей ...done
1) человеческий parent - child, пока он кривой. совсем кривой.
2) скелетная анимация ...done
3) всякие PointEntity, DeltaYaw и прочие
4) наладить ландшафт. я его сломал и он не работает.
5) прикрутить простейшие менеджеры на текстуры как минимум чтобы не захламлять видеопамять, хотя и на другие ресурсы было бы неплохл ...done
6) сделать jpg загрузчик нормальным, а нечерез OLE как сейчас, а то под вайном на убунте не работает (другие текстуры грузятся)
7) внести в ядро загрузчик png (нужный формат)
8) сделать Sigel Standart Shader Libriary. Набор стандартных\системных шейдеров. Они будут "вшиты" в ексешник скорее всего. И тогда такие шейдеры можно будет создать прямо из ядра, а не грузить из файлов.
как то так:
Shader *bump_shader = SSSL::Creata("Bump");
Shader *theora_shader = SSSL::Creata("Theora");
Shader *md2_shader = SSSL::Creata("Md2");

Цитата:

я смотрю пока по тестам опережает все с чем удалось потестить, респект.
мало тестов. обязательно найдутся и в сижеле слабые места в плане производительности. я уже одно нашел - создание \ удаление объектов медленное.

Цитата:

Документацию будешь ли делать, когда.
я как то начинал. пока там правда только раздел TFont более менее готов.
http://sigel.likosoft.ru/help
пока не вижу необходимости в справке. + сам по себе двиг не слишком сложный, посложне блица и хорса к примеру, но зато куда проще огра или того-же иррлихта.
смотрите раздел Samples в справке.

Цитата:

примерный процент готовности, тоже напиши
не могу оценить. ибо цели как таковой нету (типа сделать то-то и то-то и то-то, а потом смотреть что сделано, а что нет и так выводить процент).
Думаю сам двиг готов процентов на 7-10 в плане законченности.
Выполню список выше - прибавлю еще 5. причем из того списка самое важное (и самое сложное) - это первые 3 пункта (0..2)

-=Jack=- 18.03.2009 20:00

Ответ: Sigel
 
Цитата:

Сообщение от HolyDel (Сообщение 100984)
третий режим (F3) у тебя сглаживается?

Да..

HolyDel 18.03.2009 20:02

Ответ: Sigel
 
ну слава богу. а у блица сколько фпс было? там есть версия в комплекте.

-=Jack=- 18.03.2009 20:48

Ответ: Sigel
 
По старому, 3 фпс.

FDsagizi 19.03.2009 09:56

Ответ: Sigel
 
Цитата:

0) экспорт\импорт бинарного формата 3д моделей
Можешь по началу написать загрузчик .obj - он прост до ужоса!

Хотя как не крути, а свой экспортер писать предеться! ну и сответственно свой формат моделек. Хотя это не очень трудная задача =)
Если будешь писать экспортер под макс, делай так, чтобы он экспортил с максемально возожной скоростью!!!

Ибо сечас юзаю огр, и тут есть 2 экспортера вменяемых, так один может несколько тысяч материалов + сотня тысяц полигонов экспотрнуть за 1-2 секунды, а второй пыхтит на этом же около минуты двух!

jimon 19.03.2009 10:45

Ответ: Sigel
 
FDsagizi
тысячу материалов не потянет толком не один двиг, тебе оно надо ?

HolyDel 19.03.2009 20:00

Ответ: Sigel
 
мой нынешний експортер експортит несколько минут тупую геометрию в 10к поликов.
такие дела.

думаю бинарный будет побыстрее.

HolyDel 20.03.2009 02:11

Ответ: Sigel
 
Вложений: 1
сделал конвертор s3m файлов в sbs (sigel binary surface).
конвертит относительно долго (ибо еще и оптимизирует индексы) но зато sbs файлы грузятся куда быстрее s3m (на больших моделях они грузятся быстрее в 100-200 раз).
и весят меньше.

0-й пункт из списка выше готов.

ABTOMAT 20.03.2009 02:21

Ответ: Sigel
 
хехе, сразу надо было делать кошерный формат ;)

HolyDel 20.03.2009 02:36

Ответ: Sigel
 
да я впервые в столь долгую загрузку уперся на прошлой деме. вот и пришлось писать. а так и текстовый вполне устраивал.

FDsagizi 20.03.2009 07:57

Ответ: Sigel
 
Как по мне, то можно уже сечас взять в зубы Max SDK и наваять не сложный плагин!
Чтобы небыло лишних конвертеров ди конвертеров...

Ну и если займешся, попробуй написать импортер, пусть он будет кривоват, но хотябы чобы геометрию можно было вернуть. Ибо недавно сталкнулся с проблемой, фал где была карта одного из уровней, на свн не комитилась, а не кто этого не просек. Ну вот, осталися только .mesh файл, а в 3д макс их не засунишь!

HolyDel 20.03.2009 11:21

Ответ: Sigel
 
FDsagizi, конвертор я писал 15 минут (не включая сюда время на написание функций загрузки и сохранения в бинарном формате), а плагин писать 15 дней (включая в них изучение MaxSDK). Он конечно нужен (плагин), но на данный момент есть задачи по актуальнее. по моему мнению.

добавил Entity::Point. направлять можно на 2д точку, 3д точку или объект.
ent->Point(x,z)
ent->Point(x,y,z)
ent->Point(Entity*)

+ теперь fov по умолчанию 60 - раньше был 45.

HolyDel 20.03.2009 18:45

Ответ: Sigel
 
Вложений: 1
потестите плиз клипплейны.

1,2 включать выключать клипплейны (2шт)
стрелки - рулить первым, WASD - вторым.

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

SBJoker 20.03.2009 19:09

Ответ: Sigel
 
всё работает.. на более сложной геометрии затестить мб стоит?

HolyDel 20.03.2009 19:31

Ответ: Sigel
 
Вложений: 1
вот. добавил статую.
вроде нормально обрезается.

HolyDel 20.03.2009 23:50

Ответ: Sigel
 
Вложений: 1
собрал тестик:

ManagedTest.exe - тут грузится ОДНА текстура и каждое прибиндивание текстуры выстанавливает все ее прааметры (если такая текстура уже прибиндена - то заново она не биндится). текст размазан, мне пока лень ето фиксить.

UnManagedTest.exe - тут грузится 10 текстур. каждой проставлются свои параметры и при прибиндивании они уже не меняются

Z - сортировать список объектов по текстурам (минимизировать их переключения)

циферки сверху вниз - фпс, трисов в сцене, переключений текстур, сводно видеопамяти в кб (работает только на ати, на нв должно быть 0)

мои результаты:

Цитата:

Vista
9600M GS 256MB
2x2.26GHz

Managed - 170 / 300
UnManaged - 150 / 230

WinXP SP2
HD 2600 XT 512MB
Celerone D 2.66Ghz

UnManaged - 25-40 / 80-150
Managed - 30-49 / 120-154
выводы:
лучше делать мендежмент одинаковых текстур, чем не делать его. Похоже glBindTexture жрет больше чем установка кучи параметров через glTexParameter и т.д. + меньшее время загрузки + экономия видеопамяти.

ABTOMAT 21.03.2009 01:14

Ответ: Sigel
 
ManagerTest.exe
220
12288
938
0
UnManagerTest.exe - грузится заметно дольше предыдущего
201
12288
914
0

Респект! 20 ФПС - это хорошо!

HolyDel 21.03.2009 01:17

Ответ: Sigel
 
Z нажми. или это с ним?

ABTOMAT 21.03.2009 01:20

Ответ: Sigel
 
330 (каждому)

HolyDel 21.03.2009 03:36

Ответ: Sigel
 
Вложений: 2
сделал хитрую шнягу в шейдерах. чтобы можно было компилить вендоро зависимый код.

теперь в начало кода шейдера пишутся строки (пока по умолчанию одна - определение вендора
#define NVIDIA
#define AMD
#define INTEL

таким образом можно вендоро-специфик код выносить в секции #ifdef #endif (в примере это шейдер light.psh).

кстати, механизм позволяет писать свои строки.
например можно писать качество шейдеров
#define QUALITY 1
в зависимости от настроек игры.

пофикшеная дема, она теперь не только работает на АТИ, но и освещается более менее нормально.

заценяйте!

moka 21.03.2009 03:51

Ответ: Sigel
 
Дефайны рулят! Советую покурить как устроены материалы в HL2, очень круто!
Очень удобно иметь разные файлы с дефайнами, и просто их инклудить, большим рядом шейдеров.
Дефайны полюбому рулят.
Есть ещё else у них ;).

Taugeshtu 21.03.2009 19:13

Ответ: Sigel
 
Вложений: 1
Цитата:

пофикшеная дема, она теперь не только работает на АТИ, но и освещается более менее нормально
FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!! FAIL!!!!

Не работает.... Опять! На моей шайтан-видяхе)

HolyDel 21.03.2009 20:58

Ответ: Sigel
 
Ize'g0re, понажимай плиз на c и v. скажи что будет. и кинь логи плиз.

Taugeshtu 21.03.2009 21:35

Ответ: Sigel
 
Лог не можу кинуть - я имею вредную привычку прямо из архива тестилки запускать (ну лень мне распаковывать) )
Нажал C/v... одинаков результат - затенение исчезает, пятна матрицы тоже...
Не все входы в матрицу пали!

HolyDel 21.03.2009 22:29

Ответ: Sigel
 
Вложений: 1
Цитата:

На моей шайтан-видяхе
это не у тебя шайтан-видяха, это у меня кривые руки.

ize'g0re, проверь плиз еще эту версию.
кажется пофикшено.
Вложение 5642

теперь еще проблемы с фуллскрином на win7 выявились.

Taugeshtu 22.03.2009 12:06

Ответ: Sigel
 
Цитата:

Вот теперь тебя люблю я...
(с)
Работает, по нажатию с вылазит диффуз, на v - нормал

HolyDel 22.03.2009 14:34

Ответ: Sigel
 
благодарю. это серьезная проблема с шейдерами была. хорошо што у тебя такая хорошая видюха. на моих обоих все работает, даже если неправильно :(

-=SCiP=- 23.03.2009 01:17

Ответ: Sigel
 
А у мну вообще не запустилась( сразу выдало окно типа отправить отчет об ошибке.
Видюха ATI Radion 9000 SIRIES 64Mb
Скорее всего дрова устарели но другие более свежее не подходят!

ABTOMAT 23.03.2009 01:52

Ответ: Sigel
 
Насколько я знаю, она шейдеры не держит.
Утверждать не буду, но у друга была 9600 (т.е. более поздняя) и там уже ШМ 2.0 не пахала.
HolyDel, какие шойдеры нужны для этой демки?

HolyDel 23.03.2009 02:01

Ответ: Sigel
 
без логов я бессилен.
но, кажется проблема в чем то другом. без шейдеров просто картинка была -бы левой.

скорее всего проблема в драйверах. хотя сложно без логов гадать (надеюсь, намек понят?)

HolyDel 27.03.2009 03:57

Ответ: Sigel
 
Вложений: 1
сделал отрисовку картинок с float позицией.
в ексешнике 2 - это как раз float режим.
кажется что картинка движется более плавно чем в режиме 1 (это режим по умолчанию)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot