![]() |
Ответ: [TrueHorror] - разработка
Меня не слышно!
Музыка и вообще все звуки очень громкие, ну зашкаливает аж... Я уже писал про это... Вот новый взгляд, ну тут её тоже не всегда слышно и да! она реально, поднимала мышь вверх над столом...:-D |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
|
Ответ: [TrueHorror] - разработка
Респект таким посонам, которые даже несмотря на олимпиаду, политиков и церковь делают игры. А что юнити не взял? Обидно, что столько времени просрано на написание того, что уже давно реализовано в любом движке. В юнити такая игра кодится за день.
|
Ответ: [TrueHorror] - разработка
Движок как обычно вызов себе самому - да и писать его интересней чем игру.
|
Ответ: [TrueHorror] - разработка
Можешь попробовать использовать HDR+Bloom, он будет подгонять экспозицию под низкое освещение пещер, а лампочки на фоне будут выглядеть чрезмерно яркими. Таким образом будет ощущение что в пещере действительно темно, но глаза как будто привыкли, и их слепит яркий свет ламп. Например включил зажигалку, она осветила то что близко, но глаза уже не видят то что дальше 5 метров. Выключил и какое то время нужно для адаптации, затем становится светлее, но не слишком: нужно сбалансировать так чтобы было достаточно комфортно передвигаться, но не слишком ярко чтобы рассматривать детали, иначе функция зажигалки станет бесполезной. Также когда диапазон освещения смещается в самый низ (там где больше всего чувствительность) можно добавить зернистость как пост эффект, такое бывает когда снимаешь на дешевые камеры в темноте, к тому же такой эффект сопутствует хоррорам.
ЗЫ: Посмотри еще Alan Wake - отличный пример работы с объемным светом. |
Ответ: [TrueHorror] - разработка
2mr.DIMAS
Теперь по игре: Но хорошем конфиге 60 фпс везде, и в этом случае скорость игры выглядит вполне адекватно, нормальная скорость бега и всё такое. Так что подумай, может сделать синхронизацию по времени, а не по фпс. На первом уровне бумажку не заметил, может быть она успела провалиться до того как я ее должен был найти. Кстати физические движки плохо работают с плоскими объектами, рекомендуется выставлять пропорциональные размеры по всем осям, или же делать составной объект. По крайне мере так рекомендовали в физиксе, у тебя буллет? - там незнаю есть проблемы с этим или нет. Кстати сам на днях опробовал буллет - хороший двиг, может быть заменю им физикс, потому что у того проблемы с некоторыми компиляторами и средствами разработки отличными от msvs... Тоннели - скучно. имхо лучше делать комнаты в которых есть что исследовать и поделать, а тоннели использовать разве только как переходы, для того чтобы временной промежуток заполнить. Встречаются большие комнаты, как например с детонатором, где свет зажигалки не доходит ни до одной из стен и ориентироваться сложно - приходится вдоль стены бежать. Я уже по этому поводу где то в середине темы писал что нужны точки света на экране по которым можно ориентироваться в пространстве, даже если под ногами ничего не видно. Пост эффекты с кровяком хорошо, но повторять столько раз не надо - начинают раздражать. Стену взорвал, но там еще стена... На самом деле хорошо, потому что есть большой прогресс. Особо критиковать нет смысла потому что ты и сам видишь что нужно делать. 2Wegox Да нужно громче, причём значительно, приглуши звук игры, обработай голос чтобы чётче было (дарт вейдера можешь оставить - нормально). И главное то что ты рассказывал и показывал в течении 18 минут можно сократить до 2-х, уважай время тех кто смотрит, иначе они не будут уважать тебя :) |
Ответ: [TrueHorror] - разработка
Цитата:
Ты такой смищьной: задаёшь вопросы, а потом тебе не нравятся "неудобные" ответы. |
Ответ: [TrueHorror] - разработка
Цитата:
И Я не обзорщик! Не в коем случае, у меня на этом форуме другие цели... Если уж так фанатеешь с моего творчества, отписывайся о нём там, где этой информации самое место, на моём канале естественно W.E.G.Ox.:crazy: И не надо писать мне, о очевидном! если голос, не слышно, значит так оно и должно быть!..:-D |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Потихоньку рисую модельки. Модель прожектора - заместо уёбищной модели светильника из первой карты. Текстуры временные. Сразу вопрос к моделлерам - как затекстурить лучше: разверткой или отдельными текстурами на грани( как сейчас )?
![]() |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
ЗЫЖ таршер крут! |
Ответ: [TrueHorror] - разработка
Вложений: 1
Ребятушки, я тут психанул и запилил Deferred Shading. Но вот в чем проблема - при маленьком разрешении все рисуется шустро, с увеличением разрешения начинаются тормоза причем они мало зависят от количества источников света. Для Render Target'ов использую текстуры с форматом D3DFMT_A16B16G16R16F. Причем если взять формат потолще типа D3DFMT_A32B32G32R32F тормозов еще больше - это впринципе понятно - больше прокачиваемый объем данных по шине и через видюху. Деферед делаю по тутору Борескова.
Вот простыня кода дефереда. http://pastebin.com/TSirNkbe Как используется http://pastebin.com/qRXRDr7y В аттаче демка. Вопрос - как увеличить производительность? |
Ответ: [TrueHorror] - разработка
Цитата:
заценивай как пакуют гбуффер реалне пацаны: http://www.slideshare.net/TiagoAlexS...sis-3-gdc-2013 ----- в кратце: positionMap не нужен - достаточно хранить глубину и потом в шейдере восстанавливать из неё позицию. нормали жмутся в 2.5 8-битных канала. на альбедо не нужно больше 8 бит - в крайенжине ещё и пакуют в 2 канала мутным способом (но это перебор уже имхо). также тебе пригодятся reflectivity/glossiness. у меня сейчас в рабочем проекте вот такой гбуфер: RGBA8: normals, glossiness, reflectivity RGBA8: albedo, IOR R32F: depth И R11G11B10 хдр текстура, в которую уже ведётся работа с гбуфером. Из-за многопассовости (лайты складывать в РТ) дефер также может тормозить. Щас курю как круче сделать tiled deferred (ранее уже делал tiled forward с генерацией тайлов на цпу). |
Ответ: [TrueHorror] - разработка
Вложений: 1
Посмотри ксорсовский деферред .
Когда поругался с шейдер программистом решил все переписать сам и сразу скажу что паковать нормали обязательно , производительность очень сильно повысилась . Ну и в общем всего 3 текстуры хватило для всех материалов , 1 диффуз 2 нормаль и глубина в альфу и 3 -сила спекуляра и яркость . |
Ответ: [TrueHorror] - разработка
Вложений: 1
Пока наколдовал вот такую штуку
http://pastebin.com/0MT4fJ2f Глубина в D3DFMT_R32F, Нормали и Диффуз - D3DFMT_A8B8G8R8. При разрешении 1366х768 было 12 кадров в секунду, сейчас 50. ( фрапс показывает ) При моем разрешении 2560х1440 было 1-2 кадра, стало 15. В общем пока не айс. И да - на сцене 50 источников света. В аттаче новая версия. Как че дальше оптимизировать? |
Ответ: [TrueHorror] - разработка
У меня 5-6 кадров при 1336х768 (Мой деферред выдает 35фпс если смотреть на весь свет одновременно при 25 лампах )
|
Ответ: [TrueHorror] - разработка
:''((Ну как же так то а? Блин научите меня делать все правильно. :-D
|
Ответ: [TrueHorror] - разработка
А хрен его знает как правильно , я поглядел разные игры и можно увидеть что в кадре динамического света очень мало (1-10) редко где больше 10 светильников было .
|
Ответ: [TrueHorror] - разработка
Цитата:
Например на дневной локации будет только один источник света - солнце. Те же пещеры (то что я замечал), делают с учётом того что бы в одной части не больше 2-3 источников, остальное скрыто. То бишь из просторной пещеры вошёл в "кишку", дальше опять большое пространство. В каждой такой части и будет не больше 2-3 источников. Свет активен только в той части где игрок, + совмещают с картами освещённости. И ещё дизайн локации, то есть две части пещеры не на одной линии, что бы из одной части нельзя было видеть что в следующей. По большей части это мои предположения. |
Ответ: [TrueHorror] - разработка
Народ ну чё за ботва. Подкиньте идеек по оптимизации.
|
Ответ: [TrueHorror] - разработка
Куча лайтов с пересекающейся зоной влияния - много овердро. Куча отдельных маленьких - должно норм пахать. А, Ну дак у тебя на каждый лайт фулскрин квад рисуется! Надо кваду ограничивать зону влияния, иначе тут в любом случае жутчайший овердро. Известные способы (не мешающие друг другу): 1. Рисовать не фулскрин квад, а квад поменьше, в который вписывается зона влияния лайта. Часто лайты не влияют на весь экран. 2. Рисовать грубый меш по форме зоны влияния лайта (лоуполи сферу для поинта, конус для спота). Рисовать его только в стенсил (не в глубину, не в цвет). Юзать настройки стенсила, как со стенсильными тенями в Depth Fail методе (2 раза не надо только волум рисовать, есть хардварный two-sided stencil): http://en.wikipedia.org/wiki/Shadow_volume Это даст тебе помеченные в стенсиле пиксели, куда влияет лайт (где он пересекается со сценой). Дальше рисуешь экранный квад, но настраиваешь стенсил так, чтобы он проявлялся только в помеченых волумом местах. Стенсил тест идёт до выполнения шейдеров. Это точнее, чем вариант 1, который не учитывает пересечение с збуфером, но вариант 1 тоже не помешает, чтобы сократить число пикселей квада, тестящих стенсил. --- По мелочам из кода: Цитата:
Цитата:
SetVertexShaderConstantF SetPixelShaderConstantF необязательно по имени брать константы из шейдера, можно замаппить их напрямую в нужные регистры типа const float4x4 MatWorldViewProj : register(c0); const float4x4 MatWorld : register(c4); с# - номера констант, они измеряются в float4, это нативный формат видюшной константы (на самом деле флоаты и флоаты2/3, это все равно неполные флоаты4 или их части). Но если у тебя там не тысячи объектов, это всё мелочи - просто так удобнее, быстрее, контроллируемее, имхо. |
Ответ: [TrueHorror] - разработка
Спасибо ОГРОМНОЕ! Как сделаю, так сразу отпишусь о результате.
|
Ответ: [TrueHorror] - разработка
Вложений: 5
Раньше никогда не работал с буфером трафарета и вот наткнулся на грабли. Вроде все работает как надо - да вот только когда попадаешь в несколько ограничивающих сфер сразу( у меня точечные источники света ) - фпс падает в 2 раза. Причем если источники стоят не пересекаясь между собой - то все норм - фпс 60 ( при разрешении 2560х1440 ). Все норм и при взгляде на всю сцену.
Гляньте код( особенно где трафарет настраивается ) - Mr_F_ я взываю к тебе :-D http://pastebin.com/FxUaau8D Демка в аттаче - 60 источников света. Комменты к скринам: 1 - камера в нескольких ограничивающих сферах одновременно. 2 - там же, взгляд в пол. 3 - вся сцена из далека. 4 - в сцене между источниками света( не попадаю ни в одну ограничивающую сферу ) |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
Вместо этого, когда рисуешь обрезаемый стенсилом квад с шейдингом лайта, ставь ему STENCILPASS = D3DSTENCILOP_ZERO, он тогда автоматически собой затрёт только в нужном месте. Цитата:
Так ты мог и без стенсила обойтись, а сразу рисовать шарик с шейдером лайта. А идея со стенсилом в том, чтобы пометить только пиксели, с которыми соприкасается (!) шарик. В которые он въехал. Где intersection с z-буфером. Тогда неважно, если ты внутри шарика. По сути задача получить реальную 1-битную маску конкретно освещения от лайта. Могу перепутать что-то местами (incr/decr), но вроде суть такова (псевдокод): TwoSidedStencilMode = TRUE CullMode = None StencilFunc = Always StencilZFail = D3DSTENCILOP_DECR CCW_StencilFunc = Always CCW_StencilZFail = D3DSTENCILOP_INCR Представь, что рисуешь шарик, нанизанный на столб. Где внутри шарика не виден столб - там за фронтфейсами всегда видны бекфейсы. Где фронтфейсы и бекфейсы не пересекаются с тем, что в збуфере - ничего не меняется (ZFail не вызывается). Где и те и другие где-то под землёй/в стене - одни делают +1, другие -1, ничего не меняется. А вот там, где у тебя в шарике столб, только бекфейсы вызовут ZFail, в результате столб внутри шара пометится чем-то отличным от 0. Дальше рисуешь квад с шейдингом лайта с StencilFunc = NotEqual нулю, получается только этот столб осветится, а не целый шар на экране. |
Ответ: [TrueHorror] - разработка
Тоесть Z-буфер не очищать после первого прохода, только запрещать в него запись. Затем для каждого источника света рисовать шарик и проверять, где он не прошел тест глубины, тогда получим силуэт реально освещенной части объекта, находящийся в буфере трафарета. А затем уже рисуем экранный квад с отсечением по трафарету. Так?
|
Ответ: [TrueHorror] - разработка
|
Ответ: [TrueHorror] - разработка
Вложений: 1
Цитата:
Вот код http://pastebin.com/3x732dwj Работает все очень шустро - в любом месте 60 фпс. Демка в аттаче ( 60 источников света ) 2Mr_F_ Просто огромное спасибо за разъяснения. То чувство, когда пришло прозрение. |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
для дебага можно тупо один цвет вывести в шейдере лайта - сразу будет видно на каких пикселях считается лайт, убедиться что всё как надо. |
Ответ: [TrueHorror] - разработка
Вложений: 1
Цитата:
|
Ответ: [TrueHorror] - разработка
хочу просто сказать, что после закрытия приложения выходит ошибка:
![]() |
Ответ: [TrueHorror] - разработка
Хех , 60фпс , а как такого эффекта добиться ?
С моим деферредом 60 фпс при 10 светильниках :( |
Ответ: [TrueHorror] - разработка
на самом деле способ со стенсилом ещё далеко не самый быстрый ;)
на directcompute можно ещё круче наворотить (чем сейчас и занимаюсь) |
Ответ: [TrueHorror] - разработка
Как я понимаю там сферы рендерятся ?
|
Ответ: [TrueHorror] - разработка
выше всё описано.
|
Ответ: [TrueHorror] - разработка
Эх , често не знаю как нарисовать энтити в стенсл буфере .
|
Ответ: [TrueHorror] - разработка
а у тебя там ксорс, не свой двиг?
ты можешь все стейты стенсиловские и другие указывать в FX шейдерах, внутри техники. |
Ответ: [TrueHorror] - разработка
Решил немного оптимизировать рисование шариков света - рисовать своими шейдерами:
Вершинный Код:
"float4x4 g_worldViewProjection;\n" Код:
"float4 main( ) : COLOR0\n" Код рендеринга тот же самый - только заменил дефолтные шейдеры на свои и передал матрицу. В тоже время если включить запись в буфер цвета - там все норм - шарики отрисовываются. Я что-то упустил в шейдерах? Сижу уже полдня баг ищу. |
Ответ: [TrueHorror] - разработка
шейдеры как шейдеры, видимо где-то ещё косяк.
|
Ответ: [TrueHorror] - разработка
В буфер глубины пишут?
|
Ответ: [TrueHorror] - разработка
Цитата:
----- ладно вернул как было - задобало разбираться - ибо есть чем заняться. я так понял, на этот подход с использование буфера трафарета плохо ложаться тени - у нас рисуется область только ограниченная шариком света? как быть с тенями вообще? если у меня мало поликов на сцене и много точечных источников света, имеет ли смысл использовать stencil shadow volumes? |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
в играх очень редко больше ~8 тенеотбрасывающих реалтайм источников бывает. насчёт стенсила, имей в виду, что он по филлрейту очень жруч, хотя может показаться что это не так. тебе на самом деле надо кучу точечных источников с реалтайм тенями? что за игру ты делаешь? |
Ответ: [TrueHorror] - разработка
Реально много источников с тенями не нужно. Просто хочется пощупать технологии чтоли. Вот деферед раньше считал что не смогу сделать, а оказалось все просто( не без твоей помощи конечно ).
А для игры, свет с тенями нужен будет только для spot-light'ов ( например фонарик ). Точечные источники прожорливые по теням( это если шадоумапы использовать ) - поэтому их буду использовать для освещения уровня, где тени особо не нужны. |
Ответ: [TrueHorror] - разработка
Вот здесь есть еще несколько полезных примеров где можно deferred shading применять.
|
Ответ: [TrueHorror] - разработка
Цитата:
недавно я их использовал в проекте с требованиями, похожими на твои - очень простая сцена (мир из кубиков), но десятки лайтов - поинты, споты, и полная динамичность, при этом на сглаживание было пофиг (не реализм ни разу). вот выяснилось, что не так уж и мало даже стенсильные жрут (хоть на экране тени занимают немного, сами волумы реально довольно огромные, и они все дрочат стенсил), пришлось их для говнокомпов со встроенным гпу рендерить в 2 раза меньший РТ и потом через жопу апсемплить, чтобы не палилось. А лайтмапы ты не любишь? =) Делай лмапы + пяток спотов с шадоумапами - будет норм скорость и качво. |
Ответ: [TrueHorror] - разработка
Лайтмапы хороши - но блин уже 2014 год на дворе - хочется разнообразия.
Еще один затык пришел - как быть с системами частиц? У меня есть и туман - который подвержен освещению и огонь, на который свет не влияет. Как совместить деферед и системы частиц? ( с г-буфером дефереда можно сделать мягкие частицы, поэтому совместить нужно ) |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Прозрачность и частицы вроде отдельно всегда рисуют, после основного прохода.
|
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
|
Ответ: [TrueHorror] - разработка
Цитата:
http://the-witness.net/news/2010/03/...uted-lighting/ и вообще весь раздел engine-tech посмотри. |
Ответ: [TrueHorror] - разработка
Цитата:
сделал отдельным проходом, как сказал pax |
Ответ: [TrueHorror] - разработка
Цитата:
- стоит дважды (а лучше и ещё несколько раз) подумать, прежде, чем приступать к этому, т.к. реализация непростая, и лайтмапы запечь тупо и быстрее и качественнее может выйти. нужно точно понять, насколько тебе нужно действительно динамическое ги. - тени от индиректа добавляют нехилой нагрузки - насколько я помню, в релизе крайзиса 2 они отключены, а без них индирект светит сквозь всё. - всего 4 РГБ коэфициента сферических гармоник юзают крайтеки - это маловато для точного описания дифуза - получается менее выраженная направленность отражённого света, он более со всех сторон лезёт. печь 9 ргб коэфов - непрактично. дак тут тупо чуваки рендерят радиосити игровым рендером - из каждой точки лайтмапа камеры ставят и фигак. вариант весёлый конечно, и я так пробовал: http://ndotl.files.wordpress.com/201...5-13-04-37.jpg но работало оно не быстрее офлайновых запекателей, а то и медленее) офлайновые запекатели умеют всякие хитрости делать, вроде адаптивности, или ноизом раскидать семплы а потом интерполировать, в упомянутом же случае мы просто херачим регулярной сеткой. плюс надо учитывать всякие швы на развертке и. т. п... это куда больший гемор, чем кажется. |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
Вообще это проект Джоната Блоу, который всем известный Braid сделал. Мне больше их дизайн нравится нежели программирование, но они подробно всё расписывают, что радует. |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Ну технически лайтмапы, но просто когда ты рендеришь картинку ты фиксируешь весь диапазон освещения который падает на поверхность как есть. Если же рендерить с помощью абстрактных лучей и сторонних средств, то они могут не все вещи учитывать.
Вот можно привести такой пример: какой-нибудь эффект, отбрасывающий свет генериться движком в реалтайме, то есть пока движок в процессе отображения сцены не нарисует картинку с этим эффектом, его нельзя будет достичь другими методами, таким образом у сторонних средств не будет нужных ресурсов чтобы корректно рассчитать лайтмапу. |
Ответ: [TrueHorror] - разработка
ну разве что у тебя какие-то особо сложные процедурные эффекты в PS на всех поверхностях - тогда может быть да.
а так дифузы/отражения/эмиссив - они и в рейтрейсере дифузы/отражения/эмиссив. |
Ответ: [TrueHorror] - разработка
Решил запилить мягкие частицы так как после дефереда есть текстура с данными о глубине. И вот тут затык: как в пиксельном шейдере отрисовки частиц получить координаты текущего фрагмента для выборки из карты глубины? Ведь в D3D9 нет SV_Position - пищаль
Ах, да. Я знаю про семантику VPOS, но мне нужно уложиться в ps_2_0 |
Ответ: [TrueHorror] - разработка
Цитата:
в любом случае, не забывай, что то, что ты выводишь из вертексного шейдера в POSITION - это не что иное, как позиция точки на экране в диапазоне [-1, 1]. Так что ты легко получаешь экранные текскоорды из них: ScreenSpaceUV = OUT.Position.xy*0.5+0.5; ----- также, смещение на пол-пикселя не забудь: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx |
Ответ: [TrueHorror] - разработка
Вложений: 2
Сделал. Не уверен что самым лучшим образом, но оно работает.
Вот код: http://pastebin.com/CKABUej7 Скриншоты - обычные частицы и мягкие. |
Ответ: [TrueHorror] - разработка
нормально) хотя я тупо без distance и восстановления позиции делал, на разнице глубин партикла и дептхмапы.
|
Ответ: [TrueHorror] - разработка
объясните мне пожалуйста: почему, если не запаковать нормали в отрезок [0;1]( при записи в текстуру ) и не распаковать их впоследствии( второй проход ), свет считается отстойно? это как-то связано с тем что мы пишем в D3DFMT_A8B8G8R8 где на каждую компоненту приходится по 1 байту?
|
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
в ргба8 хранится по байту на канал (0-255) (в шейдерах выглядит как флоаты 0-1) |
Ответ: [TrueHorror] - разработка
тоесть в подобных форматах хранится беззнаковое целое? Всегда думал что со знаком хранится.
и еще - тени ( шадоумапы ) рисовать отдельным проходом получается( тест трафарета мешает использовать в одном проходе)? использовать значения глубины для сравнения с глубиной шадоумапы из г-буфера? |
Ответ: [TrueHorror] - разработка
Цитата:
Там внизу расписано по категориям signed, unsigned и ieee (то бишь float) форматы. Например аналог D3DFMT_A8R8G8B8 со знаком будет D3DFMT_Q8W8V8U8. Однако не все из них поддерживает устройство - нужно проверять. |
Ответ: [TrueHorror] - разработка
ладно, с тенями разберусь позже.
вот проверьте промежуточный графон в игре. добавил бамп. https://www.dropbox.com/s/d8s3ps3ngkdgwip/release.rar |
Часовой пояс GMT +4, время: 06:43. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot