![]() |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
Цитата:
ежели у сцены глубже, чем в шадоумапе - значит оно загорожено, там тень. |
Ответ: [TrueHorror] - разработка
Цитата:
Освещение нормально - везде 60 фпс. В главном меню освещение глючит, в игре везде нормально. В общем отлично - продолжай :super: |
Ответ: [TrueHorror] - разработка
чото я не понял как умер. в пещере подул ветер и затушил жигу. я на всякий случай вышел задом к костру на поляне. но оно меня нашло и там.
ну и жига светит слишком ярко для жиги. хдр тебе нужен с адаптацией - будет прикольно |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Цитата:
Прошёл всю игру :) Бамп норм, теперь дело за "малым" сделать качественную медию. Цитата:
|
Ответ: [TrueHorror] - разработка
Очень понравилось но бамс слишком сильный и сильные лаги в местах скопленя партиклов тс около генератора 45фпс и в шахте 20 !(в шахте ломанул проход а дальше некуда , как понимаю это был конец)
|
Ответ: [TrueHorror] - разработка
Я вот никак не могу понять почему лагают партиклы, со стороны на них смотришь - фпс норм, внутрь попадаешь - фпс двукратно а то и больше падает.
|
Ответ: [TrueHorror] - разработка
Полноэкранный бленд же...
|
Ответ: [TrueHorror] - разработка
Получается лечатся лаги только уменьшением количества частиц, тут проблем никаких - мягкие частицы выруливают при меньшем количестве с таким же качеством, что и много "жестких".
|
Ответ: [TrueHorror] - разработка
Совсем забыл, что я не сортирую частицы по глубине. На скоряк сделал так.
Код:
D3DXMATRIX worldView; есть ли способы быстрее сортировать частицы по глубине? |
Ответ: [TrueHorror] - разработка
можно инстансингом рисовать, тогда перезаливать только позиции партиклов можно, без остальных геом данных.
|
Ответ: [TrueHorror] - разработка
Наконец-то взялся за тени.
Цитата:
|
Ответ: [TrueHorror] - разработка
как он будет мешать если буферы разные?
--- или ты всё же стенсильные тени хочешь? |
Ответ: [TrueHorror] - разработка
Цитата:
вот как я планирую сделать. Код:
рендерим сцену в г-буфер. |
Ответ: [TrueHorror] - разработка
всё норм. трафарет же записывается в конкретный depthStencil буфер.
ты его записываешь в буфер своей экранной РТ (или где ты там свет аккумулириуешь). шадоумапа рендерится в свою тексу и со своим дептхСтенсил буфером, оба не экранного размера. у шадоумапа стенсил пустой. |
Ответ: [TrueHorror] - разработка
Я все еще не понимаю - не пинай ногами. Шадоумапу заполняем без трафарета - это я понял. НО! Учет теней происходит в шейдере второго прохода, куда помимо гбуфера, передается и текстура шадоумапы. Он же обрабатывает пиксели прошедшие тест трафарета - тень может быть и за ограничивающим объемом - в таком случае она отсечется трафаретом. Или что, тени отрисовывать еще одним проходом после самого освещения?
Я уже вконец запутался. |
Ответ: [TrueHorror] - разработка
Я не понимаю, чего ты не понимаешь. Попробуй сделать уже)
|
Ответ: [TrueHorror] - разработка
Вложений: 1
Игру делаю.
Что сделал: 1) Сделал спотлайты с оптимизацией конусами 2) Переписал скрипт экспорта из макса - теперь можно экспортировать максовские источники света - движок их с радостью жуёт. 3) Начал делать тени( спустя столько времени :-D ) 4) Сделал еще один уровень 5) Расширил два готовых уровня( горы и шахта ) 6) Добавил 15 записок - раскрыващих сюжет. 7) Из-за изменения формата моделей просрал исходник руки с зажигалкой - поэтому на скринах нет руки :-D ) Что хочу добавить в графон помимо теней: 1) SSAO - вот только в ps_2_0 он не влезет 2) HDR - киньте ссылок как его сделать. В планах по игре: 1) Добавить технических головоломок 2) Сделать инвентарь 3) Добавить нормальные скримеры( красная херня на весь экран - не труЪ ) 4) Сделать оставшиеся 4 уровня - да, игру хочу закончить( хоть раз, из всех проЭктов ) - прошу вас почаще меня пинать в случае застоя. 5) Доработать сюжет. Пока что сюжет примерно следующий( кратко ). Играем за горняка, который бросил работу в действующей шахте и стал заниматься разведкой старинных заброшенных шахт. В прошлом, в старых рудниках технология разведки драгоценных металлов была плохо поставлена, поэтому разведка старых шахт оказалась прибыльным занятием. На прошлой работе он нашел двух единомышленников. Игра начинается с прибытия нашего героя к одной из шахт на Урале. Прибывает он с опозданием - в пути пробило колесо и он потратил несколько часов на поиск запаски и её установку. В разведку он взял своих напарников, они приехали раньше него и успели приготовить всё для геологоразведки. Но по прибытии, наш герой никого не обнаруживает ни возле входа в шахту ни в ней самой. Зато в одном штреке обнаруживает забетонированный проход ведущий в( микроспойлер: в то что видно в меню :-D )... Дальше спойлеры. |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
1) HDR контент. Освещение заранее настраивается в широких диапазонах, а не 0-1, скайбокс может быть хдрный, кубмапы (для них особо важно) итп. 2) Рендер в HDR рендер таргет. Гбуфер не надо, результат надо (В принципе, если очень хочется, можно обходится и без этого и рисовать сразу затонмаппеную картинку, но тогда не получится корректного хдр блума, а также в случае дефера полностью сломается аккумуляция света). Самый модный и кайфовый хдр формат нынче DXGI_FORMAT_R11G11B10_FLOAT. На DX9 может сойти D3DFMT_A2R10G10B10. Не так часто даже 16 бит реально оправданы. 3) Tonemapping. Привождение ядерных хдр диапазонов в экран бедного монитора. Варианты: http://filmicgames.com/archives/75 (также можно самому ещё выдумывать, и многие выдумывают). Я юзаю анчартовый, мне норм. 4) [Опционально] Блум. Ну тут всё понятно, только блумить надо не всё подряд, а то, что реально ЯРКО, т.е. вылезает за единицу даже после тонмаппинга. Белый листок бумаги и белая лампа - не одно и то же, пусть на скриншоте их ргб и может быть похож, но не реальное HDR значение. 5) [Опционально] Адаптация. Даунсемплим экран в 2 раза, потом ещё в 2 и так до 1 пикселя, который говорит нам об средней яркости картинки. Меняем экспозицию в зависимости от этого. Это на самом деле грубоватый вариант, чреватый резкими скачками и прочими неприятностями. Где-то у Valve была особо хитрая дока про адаптацию, там они за много кадров усредняли ещё это среднее значение и вообще как-то извращались, чтобы всё плавно и т. д. |
Ответ: [TrueHorror] - разработка
Цитата:
Вообще такой подход менее реалистичен с точки зрения того как должен работать глаз, но с кинематографической точки зрения (а это я считаю ближе к процессу рендеринга - глаз куда сложней и на него равняться рано) это лучше, потому что дает возможность точней и правильней задать экспозицию. Например в помещение с очень яркими окнами: камера в любом случае должна снимать интерьер, а окна могут быть целиком белые, однако если бы была адаптация, то получилось бы нечто среднее - и сцена за окном засвечена и интерьер темный. Еще отмечу что в Betrayer вообще отказались от HDR, но картинка выглядит сочно (если цветную гамму поставить - по умолчанию игра в ч/б). В игре всегда день и нету закрытых помещений - взяли наиболее подходящее условное значение экспозиции и всю медию делали с этим расчётом. Работа дизайнеров/художников решает. |
Ответ: [TrueHorror] - разработка
Цитата:
но некоторые люди любят автоматическую адаптацию, а по мне так эффект дешёвой камеры имхо. Цитата:
|
Ответ: [TrueHorror] - разработка
Цитата:
Единственное место это озеро - видимо случайно - если посмотреть в отражение то виден перс (игра от первого лица) без анимации, просто моделька с расставленными руками. Там ща патчи вышли, может поправили. Но это инди, вообще от создателей fear, там какая то часть команды ушла и стали индиразрабами. |
Ответ: [TrueHorror] - разработка
А где потестить то?
|
Ответ: [TrueHorror] - разработка
Кагбе следующая демка будет когда я закончу игру хотя бы на 60 %. Пока что готово только 40%
|
Ответ: [TrueHorror] - разработка
Написал конвертер своего же формата :-D. В нем есть необходимость - в максе раздельно хранятся вершины, текстурные координаты и их количество не совпадает(sic!). В итоге в игре приходилось каждый раз перебирать все фейсы и убирать лишние вершины при сортировке по текстуре( один меш - одна текстура - это для быстрого рендеринга ). Так же движок считает нормали и тангенты, ибо первые в максе упороты а вторых тупо нет. Вот и решил вытащить эту мутоту в отдельный конвертер. Скрипт экспортит как есть - все раздельно( вершины, текстурные координаты ), а конвертер сортирует все по мешам, вычисляет нормали и тангенты, ограничивающие объемы и записывает все в быстро загружаемый формат( к примеру если движок сам будет все вычислять то на загрузку карты из 100k поликов уходит 41 секунда, а с конвертером загружается за 6 секунд( 5,5 занимает загрузка текстур ) ). На максскрипте это все выполняется ужасно долго. Вот такая петрушка.
|
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Научи.
GetFaceRNormals - оверхед getNormal - кал Вычисленные нормали куда лучше |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
но коли ты сам автор медии, то тебе видней |
Ответ: [TrueHorror] - разработка
Что будет быстрее - загрузить текстуру в jpg ( распаковка, все дела ) или несжатый tga?
|
Ответ: [TrueHorror] - разработка
Цитата:
Быстрей всего загружаются форматы с RLE сжатием, даже быстрей чем без сжатия. Вообще если что то разжимается быстрей чем читается с диска распакованный вариант, то значит загружаться будет быстрей. Раз у тебя D3D9 то вообще используй DDS - он же на GPU распаковывается. |
Ответ: [TrueHorror] - разработка
Цитата:
Спасибо за то что напомнил про DDS. Пожалуй переведу в него текстуры. |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
В релизе текстуры обязаны быть в DDS. DDS это контейнер нативных видюшных данных. Большинство текстур отлично сжимаются DXT, что позволяет экономить дохрена видеопамяти. Самому сжатию нечего делать в рантайме (это не реалтайм дело) - сжимать надо на препроцессе а не у игрока.
|
Ответ: [TrueHorror] - разработка
Цитата:
Да важно отметить что в видеопамяти нужно хранить в DXT, больше по причине ограниченного размера vram, нежели скорости распаковки. Актуально при таких больших локациях как в TrueHorror :) |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Для катсцен понадобилась скелетная анимация. До этого был морфинг - но он слишком много жрет оперативки.
В качестве костей используются узлы сцены - точнее их global transform. И вот тут косяк. Если этой трансформацией преобразовать вершину - она улетает в ебеня. Вроде как нужно получить transform в с.к. относительно [0,0,0] а не позиции кости. Кароч я тут понаписал ататы. Научите меня скелетке. :) |
Ответ: [TrueHorror] - разработка
у тебя меш в Т-позе - т.е. в такой позе, при которой у костей есть определённые дефолт-ротации.
тебе нужно иметь инвертированные матрицы костей в Т-позе, чтобы мировые ротации костей анимационные преобразовывать в пространство относительно Т-позы. вот и все дела. |
Ответ: [TrueHorror] - разработка
Есть книга Джима Адамса про скелетную анимацию.
Однако книга 2004 года и некоторые вещи связанные с directx в ней сильно устарели (даже для dx9), но теоретическая часть в ней подробно расписана. |
Ответ: [TrueHorror] - разработка
|
Ответ: [TrueHorror] - разработка
Цитата:
можно конечно извращаться типа дуал кватернионов, но под них и арт надо готовить специально итп для самого скелета юзал обычные ноды сцены с иерархией, как и mr.DIMAS |
Ответ: [TrueHorror] - разработка
Ну там не только скелетка, там еще рэгдолл, морфинг, лицевая анимация и еще всякие более общие штуки. Да после прочтения книги, нужно поискать более современные статьи, конкретно по реализации, т.к. то что в книге - устарело, но теория там ОК.
|
Ответ: [TrueHorror] - разработка
Бля. У меня бомбит пукан. Эта скелетка никак не получается. Вроде все правильно сделал - но нет блять - меш перекареживает просто пздц. В топку. Оставлю морфинг - рагдолл не нужен.
Второй день маюсь - ну просто пичаль, ненависть, ярость, агрессия, фрустрация, безысходность, депрессия. |
Ответ: [TrueHorror] - разработка
Вложений: 1
Я упертый\упоротый - вот все мои исходники скелетки.
Расчет вершин по скелету Код:
if ( node->skinned ) Код:
for( int i = 0; i < numMeshes; i++ ) Код:
btTransform & CalculateGlobalTransform( SceneNode * n ) [E] - анимировать объект |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
̶В̶о̶о̶б̶щ̶е̶ ̶м̶н̶е̶ ̶н̶у̶ж̶н̶о̶ ̶п̶о̶н̶я̶т̶ь̶ ̶ч̶т̶о̶ ̶я̶ ̶д̶е̶л̶а̶ю̶ ̶и̶ ̶з̶а̶ч̶е̶м̶.̶ ̶П̶о̶к̶а̶ ̶ч̶т̶о̶ ̶я̶ ̶в̶о̶о̶б̶щ̶е̶ ̶н̶е̶ ̶д̶о̶г̶о̶н̶я̶ю̶ ̶ч̶е̶ ̶к̶ ̶ч̶е̶м̶у̶.̶ ̶П̶ж̶л̶с̶т̶а̶ ̶р̶а̶з̶ж̶у̶й̶т̶е̶ ̶в̶с̶ё̶.̶ |
Ответ: [TrueHorror] - разработка
̶Х̶м̶.̶ ̶М̶о̶ж̶е̶т̶ ̶д̶е̶л̶о̶ ̶в̶ ̶э̶к̶с̶п̶о̶р̶т̶е̶р̶е̶?̶ ̶Н̶а̶р̶о̶д̶ ̶с̶к̶и̶н̶ь̶т̶е̶ ̶с̶в̶о̶й̶ ̶с̶к̶р̶и̶п̶т̶ ̶д̶л̶я̶ ̶э̶к̶с̶п̶о̶р̶т̶а̶ ̶с̶к̶е̶л̶е̶т̶к̶и̶ ̶и̶з̶ ̶м̶а̶к̶с̶а̶.̶ ̶А̶ ̶т̶о̶ ̶я̶ ̶у̶ж̶ ̶и̶ ̶н̶е̶ ̶з̶н̶а̶ю̶ ̶н̶а̶ ̶ч̶т̶о̶ ̶г̶р̶е̶ш̶и̶т̶ь̶.̶
|
Ответ: [TrueHorror] - разработка
Ура! Все работает. Спасибо АВТЭ за напоминанеи про умножение на матрицу трансформации самого объекта.
В общем теперь продолжаю делать игру. ( сколько нервов извел просто из-за тупого нежелания понять как работает - просто гуглил готовое решение и ничего :facepalm: ) |
Ответ: [TrueHorror] - разработка
Вложений: 3
Теперь по самой игре.
Сделал инвентарь с возможностью комбинирования предметов. В игре будут такие задания - типа чтобы взорвать стену тебе нужно найти детонатор, взрывчатку, провода к детонатору, взрыватель. Потом все это соединить в правильном порядке и установить на стенку. Затем отойти подальше и использовать детонатор. Ну в таком духе. Скриншоты прилагаются. |
Ответ: [TrueHorror] - разработка
вот это жестокий у тебя бамп
|
Ответ: [TrueHorror] - разработка
А на сколько рационально делать так Код:
IDirect3DVertexBuffer9 * vb; |
Ответ: [TrueHorror] - разработка
Нужна геометрия на цпу - держишь копию на цпу.
Нужно её рендерить видяхой - держишь копию в дх буферах. |
Ответ: [TrueHorror] - разработка
Цитата:
Даже если указать её не редактируемость, в случае потери девайса dx данные из чего то восстанавливает, следовательно где то существует копия всех данных, которые должны быть в vram. И разве Lock/Unlock будет давать больший оверхед, если изменяется только часть буфера, чем копировать ВСЕ данные из другого нового буфера (и всёравно делать Lock/Unlock)? В доках написано, что если меняется только часть буфера, то по шине на карту будет передаваться только эта измененная часть. По сути если ты что то читаешь из буфера, то читается из того что находится в раме, и производительность не падает. Если ты что то записываешь, сначала это тоже записывается в буфер в раме, потом дх сравнивает с тем что в видеораме и только та часть буфера в которой есть изменения, передается в тот буфер который в видеораме. |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
я не любитель просто хранить копию врамы в оперативке, оперативка ещё пригодится, и лостдевайсы обрабатывать тоже не фанат. на дх10+ их и вовсе нет, на дх9 делаем borderless окно и не паримся. |
Ответ: [TrueHorror] - разработка
Игры должны сворачиваться, причем игра должна знать что сворачивается и ставиться на паузу, например, чтобы не нагружать цп.
Надо быстрей на дх11 переходить. Там правда всё равно есть случаи когда надо реинициализировать. Цитата:
|
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Вложений: 1
Цитата:
Данные экспортируемые скриптом, движком напрямую не используются - сначала проходят через конвертер. |
Ответ: [TrueHorror] - разработка
Продолжаю добавлять графоний.
Сделал FXAA. Просто и быстро - стырил шейдер отсюда . Но есть артефакты на изображении в виде замыленных черных точек( скрин ( png )). FXAA применяю на финальную картинку после деферреда( или надо на диффуз только? ). Откуда эти точки? Что я делаю не так? ![]() |
Ответ: [TrueHorror] - разработка
Случаем не пишешь в ту же текстуру, из которой читаешь?
|
Ответ: [TrueHorror] - разработка
Неа, создал отдельную текстуру. В нее рисую квады деферреда. Потом ставлю бэкбуфер в качестве рендертаргета и в него рисую квад с полученной текстурой с FXAA пиксельным шейдером.
|
Ответ: [TrueHorror] - разработка
Вложений: 1
Хз, у меня работало. Может кривой шейдер скопировал? Прилагаю точно рабочий, не самой последней версии вроде, но можешь понять в шейдере трабла или в его использовании.
|
Ответ: [TrueHorror] - разработка
Нашел причину. Там, откуда брал шейдер чел написал - "чтобы втиснуть шейдер в ps_2_0 я заменил tex2Dlod на tex2D". Я собрал шейдер с ps_3_0 и поставил обратно tex2Dlod на место tex2D и всё, точки исчезли. А еще заметил что очень сильно на результат влияет тип фильтрации текстуры. Кароч такой вопрос - насколько неактуально использование шейдеров ниже 3 модели?
|
Ответ: [TrueHorror] - разработка
Я бы не заморачивался по 2_0 сегодня.
|
Ответ: [TrueHorror] - разработка
Пока был на даче, программил только на мелком говне( EEE pc будь он не ладен ) с GMA 3150( программная обработка вершин, аппаратный пиксельный шейдер 2_0 ). Умудрился добиться от сего говна 14 фпс при 30к поликов и 10 источников света - деферред творит чудеса :-D
И да - там нет MRT. Пришлось три прохода делать - Гбуфер заполнять. К тому же не тащит флоат текстуры. Пришлось делать все текстуры A8R8G8B8 и паковать глубину в 4 байта. И к тому же добавил Octree для статичной геометрии. В каждой ноде по 256 вершин. Хотя BSP было бы лучше. |
Ответ: [TrueHorror] - разработка
Цитата:
|
Часовой пояс GMT +4, время: 06:43. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot