{{notification.text}}

MirGames

Xander

Хабаровск
Зарегистрирован 13.05.05 11:48
Последний раз был в сети 02.02.19 10:33
Ассемблер И Геймдев
01.11.09 18:38
Цитата(DeadMage @ Сегодня, 07:35)
[snapback]99547[/snapback]
Я лучше знаю тонкости работы своей программы, о них компилятор не знает и не узнает, а я о тонкостях работы процессора почитать всегда могу)

Это касается лишь узкоспециализированных спец. мест и алгоритмов в твоей программе, а не всей оной целиком. Даже просто от того, что "человеко-часов" тебе никогда не хватит сделать то, что делает за тебя компилятор.

Кроме как "почитать всегда смогу" нужно много знать(+ иметь приличный практичный опыт, а не просто "почитать") и о тонкостях работы процессора и об оптимизации на асме(аналогично, различных фич там очень много), чтобы реально получить хоть какой-то буст от проделанной работы. Простое "знание" ассемблера и понимание асм-кода далеко недостаточно.

Зачастую, так и бывает, что в большинстве случаев С++ оптимизатор(от Intel в особенности) дает куда более впечатляющий асм код, чем самописный.

Т.е. это все как бы очень часто бывает несерьезно. Можно потратить уйму времени на "всякую оптимизацию", получить +5 FPS к 700 и "порадоваться" за себя молодца.

P.S. Цель оправдывает средства.

P.S.S. А вообще чистый асм рулит, да :). Без всяких Мелкософтских "примочек".
Вопрос по Dglengine 2 (soft Shadows)
06.02.09 23:37
Цитата(Woolf @ Сегодня, 13:43)
[snapback]92703[/snapback]
Я имею в виду, при построении шадоумапы каждый выводимый объект имеет же текстуру

Не совсем так, с текстурой рисуются только обьекты, имеющие в этой же текстуре альфаканал... Иначе бессмысленно(т.е. не "каждый обьект").

Alpha-test работает правильно в этом случае, проверено. И это, серьезно, и есть то, что тебе нужно.
Вопрос по Dglengine 2 (soft Shadows)
29.01.09 23:54
Цитата(DRON @ Сегодня, 14:39)
[snapback]92381[/snapback]
2XProger твоя тенька - прошлый век

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

Цитата(petyakurochkin @ Сегодня, 14:51)
[snapback]92382[/snapback]
Тем не менее, самые норм тени Чем шадов мапс лучше? Самозатенение в обмен на алиасинг Нафик такое счастье

А отрисовка пер обджект в текстуру и чистка оной, это что ли гуд? А если рисовать скопом все в текстуру(или частями) то полезет злополучный алиасинг и здесь.

Такие тени, насколько я помню, юзались(юзаются?), например, для отрисовки теней от вентиляционных решеток(текстурко с альфой).
Сюда же:
Цитата(DRON @ Сегодня, 15:59)
[snapback]92385[/snapback]
объектов друг на друга уидают тень фпс в 0 и заколмажешься строить спискт на которые проецировать надо будет

+1

Цитата(DRON @ Сегодня, 15:59)
[snapback]92385[/snapback]
ShadowMaps - быстрые и делать просто

Это ты, конечно, пошутил видимо... ?
Простой рендер в один РТ это конечно просто и выглядет соответственно(цена = качество)...
Прикрутив один только PCF, сложность реализации возрасет в разы, а потом захочется PSM, а потом и PSSM, и что бы в каждом сплите был PSM и все это красиво блюрилось.
Зато выглядеть все это будет ничего так :)
Dds
14.01.09 23:40
Цитата(petyakurochkin @ Сегодня, 16:27)
[snapback]91843[/snapback]
Просто ведь надо еще и флипать мип-мап уровни в таком случае

Зачем в 2д мип уровни?

Цитата(petyakurochkin @ Сегодня, 16:27)
[snapback]91843[/snapback]
Да и простые текстуры - это тоже хорошо

Даже очень хорошо, если 2d :)

Цитата(petyakurochkin @ Сегодня, 16:27)
[snapback]91843[/snapback]
И всё-таки точно ли лучше хранить простую картинку, а флипать программно?

Вообще, конечно, всегда лучше делать всевозможные рассчеты или преобразования оффлайн, если такая возможность. Т.е. от тебя зависит в этом случае.
Dds
14.01.09 23:33
Цитата(visual @ Сегодня, 13:32)
[snapback]91836[/snapback]
Смысл трехмерной текстуры или ее хранения в файле?

Именно хранение.

Цитата(petyakurochkin @ Сегодня, 14:09)
[snapback]91837[/snapback]
На одном слое я могу хранить анимацию, на другом тайлы. На третьем - еще анимацию. И т.д. т.о. я могу использовать всего один проход для рендеринга 2d-игры.

Хм. А в чем пойнт то?
Выводить за один проход это, конечно, хорошо. И может ты все таки имелл в виду 1 батч? :)
Далее, если оно все таки так, то каким образом сие произойдет? Т.е., как я понимаю, ты собираешься каждый кадр апдейтить вертекс буффер?

И вообще как факт, такие вот ивзращения не оправдывают себя в 2д... Я сомневаюсь, что у тебя будет порядка 0.5К или более батчей, а для меньшего кол-ва смысла заморачиваться нет, особенно в OpenGL (DIP Cost меньше). Т.е. особого прироста ожидать просто не от чего.

+ ко всему 3Д текстура ставит некоторые ограничения. Например на размер текстур(в данному случае слоев).
Вот например, есть у тебя текстурка какой нибудь статики, 64х64 к примеру, и лента кадров анимации перса 32х512. И что делать?
Можно юзать эти ограничения, и геммориться с подгоном всех текстур под один размер(примерно).
Можно делать текстурку 64х512, тогда получаем просто эгоистичный расход памяти.
Для такой текстурки, правда, можно погеммориться и затолкать несколько лент, к примеру, в один слой.
Проблемы начнуться, когда ленты будут иметь различный размер и при хотении заюзать фильтрацию или мипмаппинг.
Dds
14.01.09 20:05
Цитата(petyakurochkin @ Сегодня, 09:27)
[snapback]91831[/snapback]
Я вообще думаю, а что лучше: забить на флип вообще и флипать в фотошопе или флипать программно?

Лучше програмно.

Цитата(petyakurochkin @ Сегодня, 10:32)
[snapback]91832[/snapback]
Как создать трёхмерную текстуру? Я имею ввиду не загрузить, а именно создать

Никак. Или как сказал visual писать генератор вручную.
Вот только какой смысл в этом?
И снится мне трава, трава у дома..
14.09.08 20:23
Цитата(Woolf @ Сегодня, 08:03)
[snapback]86685[/snapback]
не выйдет, нужна генерация травы именно по карте травы..

И? Кто мешает создать карту травы, меньшую чем размер ландшафта, где пиксель карты будет равен определенному блоку травы расположенному на ленде? И те месте где трава не нужна, ее там не будет. Если нужен еще и плавный переход - то стенсил.

Цитата(Woolf @ Сегодня, 08:03)
[snapback]86685[/snapback]
Трава на асфальте, имхо, будет выглядеть странно.

Не спорю, но стенсил еще никто не отменял.

Цитата(Woolf @ Сегодня, 08:03)
[snapback]86685[/snapback]
Реальное решение, я об этом не подумал..

Сарказм не к месту. Если очень захотеть, то можно обойтись всего лишь несколькими блоками травы(занимаем очень немного видеопамяти), но они будут выравнены лишь по двум осям и пhи банальной отрисовке будут либо "висеть" над ланшафтом, либо "тонуть" там. Шейдером можно очень точно отрегулировать высоту каждого вертекса блока травы.

Если ничего не устраивает и кажется непонятно чем, то занимайся реализацией стримминга и проблем не будет(я этого не говорил :)).
И снится мне трава, трава у дома..
13.09.08 22:00
Woolf
А зачем все пихать в видеопамять? Как ты тогда, например, делать банальное отсечение по камере?
Чем не устраивает отрисовка по блокам? Тоесть создал например несколько различных блоков травы(для разнообразия), скажем 10х10 метров, и их отрисовываешь, принимая во внимание расстояние и камеру. Если ландшафт довольно разнообразный(а именно высота) то можно корректировать высоту через шейдер - либо записывать в текстуру и читать шейдером, либо проще - передать в шейдер массив Unifom'ов, и для каждого вертекса в шейдере выбрать нужную высоту(чтобы узнать какая высота к какой вершине относится можно дописать в w координату вершины индекс, с помошью которого и произойдет выборка из массива).

P.S. За батч, имхо, нереально, только если инстансинг, но он плохо с отчечением камеры дружит.
Ланшафт 3d Maxa
25.08.08 21:13
[offtop]Vga
Без понятия :).
У меня и дома в бумажном варианте эта книжка второго издания...
Первое совсем в глаза не видел, поэтому сказать не могу.
[/offtop]

Ланшафт 3d Maxa
24.08.08 15:06
Style
Нужно поделить каждую текстурную координату вершины на размер карты высот:
Код
...
glTexCoord2f(j/MapSize_j, (i+1)/MapSize_i);
...
glTexCoord2f(j/MapSize_j, i/MapSize_i);

Примерно так. А вообще через glBegin/glEnd рисовать не совсем хорошо - не эффективно.
Ланшафт 3d Maxa
24.08.08 13:21
Style
Лучше бы ты показал код, с попытками переноса этого примера на DGLE, а я бы уже поправил, если там что то не так...
Ланшафт 3d Maxa
24.08.08 09:28
Style
Нужно перебрать все треугольники в модели, проверяя с каждым пересечение луча. Функцию пересечения луча с треугольником довольно просто найти в гугле.

А насчет исходника - выкладывай, посмотрим.
Управление к игре
23.08.08 23:31
STRYKER
Здесь всегда кто нибудь да есть ;), просто GLScene мало кто из здешних обитателей использует.
Жди когда сюда придет cdmlex, и все разжует...
Ланшафт 3d Maxa
23.08.08 23:26
Style
Только отрисовывать этот луч не нужно, а так правильно все, опускаешь луч из позиции камеры перпендикулярно вниз, и находишь пересечение его с моделью ландшафта.
Но это все, имхо, не удобно.
Если ландшафт будет большого размера, то начнутся тормоза...
Придеться разбивать на части, много мучиться и т.п.
Лучше карту высот юзать, имхо.
Direct3d или Opengl?
22.08.08 21:18
Drako
+1 :D

Battlemakc
Товарищ, вы сильно заблуждаетесь ;).
Популярность DirectX кроется совсем в другом, а в не том, что он якобы "быстрее". OpenGL как и DirectX - это прослойки, первый даже является более низкоуровневым, позволяя производить более тонкий контроль. К тому же DIP cost в OpenGL относительно меньше, чем в DirectX, поэтому некоторые вещи в OpenGL отрисовываются куда быстрее ;).
Основная причина его непопулярности - очень некорректные драйвера на видеокартах от ATi(а в этом еще и другая причина). Много придеться приложить усилий, чтобы заставить работать приложение на большинстве ATi карт и версий драйверов.
А на OpenGL написать игру можно, и работать она будет ни чуть не медленнее... просто разработка обойдется дороже...
Снова про Камеру и Мир
21.08.08 21:59
Неясно все как то, да... Но если все остальные игры работают нормально, то проблемы явно не в железе(хотя я и не утверждаю обратного).
Ты бы попробовал позапускать различные демки различных движков... Если уж этот баг будет проявлять себя снова и снова, то я даже и не знаю... появится повод обновить себе свой комп :).

P.S. Может, что либо из железа разогнано за далеко сверх нормы?
Снова про Камеру и Мир
21.08.08 18:30
Gate Of Denied
Гм, повесить процесс на одно ядро не пробовал?
Может уже выше об этом говорили...
Код

SetThreadAffinityMask(GetCurrentThread(), 1);

Хотя, я думаю, проблема в чем то другом... Может, что в системе занимает много процессорного времени?