forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   [TrueHorror] - разработка (http://forum.boolean.name/showthread.php?t=17293)

mr.DIMAS 03.11.2014 18:21

Ответ: [TrueHorror] - разработка
 
Посчитал среднюю яркость. Теперь как мне лучше считать экспозицию? Единственное что приходит на ум: GetRenderTargetData для тексы 1х1 и вытащить из нее яркость. И затем по яркости делать интерполяцию экспозиции. Но везде пишут что GetRenderTargetData тормозная. Че как там ГПУ можно заставить все считать?

Mr_F_ 03.11.2014 18:40

Ответ: [TrueHorror] - разработка
 
Цитата:

GetRenderTargetData для тексы 1х1 и вытащить из нее яркость.
Nooo, это медленно.
Можешь читать 1х1 текстуру и писать в другую текстуру, да хоть рисовать цвет текущей текстуры слабо полупрозрачным квадом поверх текущего используемого значения экспозиции каждый кадр, альфу множить ещё на дельтатайм, или ещё как.
Кстати, сегодня на глаза попалась старая статейка про разбор рендера обливиона, там ппц конечно полный, но с адаптацией вполне обычно всё сделано, можешь читнуть http://www.gamedev.ru/community/game...?id=718&page=2

mr.DIMAS 03.11.2014 19:36

Ответ: [TrueHorror] - разработка
 
Не допер немного. Вот есть после тонмапа у меня текстура со средней яркостью - 1х1. Я создаю еще одну текстуру такого же размера, затем перед тонмапом делаю выборку из текстуры со средней яркостью за прошлый кадр и эту выборку домножаю на альфу и записываю в новую тексу 1х1. Затем при тонмапе я передаю эту текстуру в шейдер тонмапа и вычисляю там экспозицию по яркости полученной ранее. Чет я запутался. Можно все по пунктам пжлста.

Mr_F_ 03.11.2014 19:54

Ответ: [TrueHorror] - разработка
 
ну типа как-то:
Инит:
1. создаёшь цепь для 4х даунсемплинга, сойдёт в принципе наверное 256х256, 64х64, 16х16, 4х4, 1х1.
2. создаёшь 1х1 текстуру с интерполированной накопленной яркостью, R32F. Назовём её Х.
Рендер:
3. Рендеришь содержимое экрана в 256х256 текстуру.
4. Усредняешь 4х4 пикселя её, рендеришь в 64х64 и т. д. до 1х1. Получается средняя яркость за кадр.
5. Рисуешь её в текстуру Х. Не стираешь прошлое содержимое. Ставишь обычный альфабленд и альфу = (скорость адаптации * дельтатайм). Скорость адаптации маленькое число, гораздо меньше 1. Рендертаргет флоатовый, чтобы альфа < 1/255 сработала.
6. Юзаешь текстуру Х в тонмаппинге. Как её нормально в экспозицию преобразовать - точно не скажу.
В любом случае, получаем плавную смену средней яркости.

mr.DIMAS 03.11.2014 23:34

Ответ: [TrueHorror] - разработка
 
В общем сделал. Видео записывать не буду ибо уже есть демка в которой весь новый графоний. Почти им только и занимался. Что изменил\добавил.

1) Тени от спотлайтов ( без PCF - да я ленивая жопа )
2) Кривые жручие тени от поинтов - не рекомендую их включать, ибо я их еще не допилил как следует.
3) HDR с адаптацией.
4) Отвязал многие действия от ФПС.
5) Сохранения\загрузка - кое-где работает криво но в целом играбельно. Автосохранений пока что нет( хотя при запуске говорится обратное :-D )
6) Мелочи

Клавиши действий можно настроить в меню. Там же настраивается графоний. Разрешение из игры не сменить - его можно поменять в файле mine.cfg

СКАЧАТЬ

ARA 03.11.2014 23:42

Ответ: [TrueHorror] - разработка
 
Довольно прикольные эффекты! Молоцца.
Единственное, тонемаппинг странно работает. Все пересвеченные белые места превратились в серые. Так не должно быть. Такое ощущение что ты тонемапишь LDR. Либо адаптивно затемняешь картинку после тонемаппинга, т.е уже после того как изображение превратилось в лдр.

tirarex 03.11.2014 23:55

Ответ: [TrueHorror] - разработка
 
https://www.dropbox.com/s/qi5z3wr9vm...52.53.png?dl=0

2 Раза проходил и все одно и тоже , в воздухе за километр.

mr.DIMAS 04.11.2014 00:01

Ответ: [TrueHorror] - разработка
 
баг не углядел. нажми кароч F9( быстрая загрузка ). и будешь там где надо

Цитата:

Такое ощущение что ты тонемапишь LDR
Просто тонмап видимо кривой.

Код:

        "sampler hdrTexture : register( s0 );\n"
        "sampler avgLum : register( s7 );\n"

        "float4 main( float2 texCoord : TEXCOORD0 ) : COLOR0{\n"
        "    float exposure = tex2D( avgLum, float2( 0.5f, 0.5f )).r;\n"
        "    float3 texColor = tex2D( hdrTexture, texCoord );\n"
        "    float key = 0.1f;\n"
        "    texColor *=  key / ( exposure + 0.034f );\n"
        "    texColor /= ( 1.0f + texColor );\n"
        "    return float4(texColor,1);\n"
        "};\n";


Mr_F_ 04.11.2014 00:27

Ответ: [TrueHorror] - разработка
 
чёто не могу поиграть в игру. говорит - MSVCP110.DLL не найден, хотя он у меня лежит в system32. положил в папку с игрой - unable to start correctly. попробовал поставить последний редист 2012 - говорит уже всё и так свежее, не ставится.
протупил - стоял х64 редист, нужен был х86

Mr_F_ 04.11.2014 00:47

Ответ: [TrueHorror] - разработка
 
Вложений: 3
недурно для игры на своём двиге.
после того, как шахта обвалилась, и пошла загрузка, я заспавнился где-то за пределами коридоров в небе и стремительно упал вниз.

текст в начале не успел прочитать - думал, что он не исчезнет, пока я кнопку не нажму, и расслабился, отвлёкся пару раз.

меню выглядит криво, возможно потому что у меня квадратный монитор.

быстро нажимая пробел, можно спокойно улетать в небо, игнорируя гравитацию.

в пещере фонарик вообще практически не светит, всё чёрное. и где ж адаптация?

тонмаппинг херовый - всё и правда серое. заюзай анчартовый, например.

от фонарика в моей руке падает тень, и это довольно смешно, т.к. от меня самого её нет.

статический источник света темнее, чем сам свет от него - это довольно бредово

mr.DIMAS 04.11.2014 00:57

Ответ: [TrueHorror] - разработка
 
Цитата:

я заспавнился где-то за пределами коридоров в небе и стремительно упал вниз.
Цитата:

баг не углядел. нажми кароч F9( быстрая загрузка ). и будешь там где надо
Вот что бывает если выпускать демку полностью не пройдя игру самому. Понадеялся на то что все работает. Игру можно в любой момент продолжить. Выходишь из игры - сохраняется. Заходишь - клацаешь "Продолжить" - и ты в том месте где закончил.
да тонмаппинг корявый ибо я его не настроил толком, и вообще да возьму другой.

Попробуй хотя бы до третьего уровня дойти.

Mr_F_ 04.11.2014 01:38

Ответ: [TrueHorror] - разработка
 
Испугался мигающего красного экрана и убежал из игры

mr.DIMAS 04.11.2014 01:49

Ответ: [TrueHorror] - разработка
 
:-D

На третьем уровне за тобой еще и бегать будут. А ты будешь убегать роняя кирпичи.

Хотя слиться от того товарища довольно просто и у него анимация глюченая :-D.

Mr_F_ 04.11.2014 01:52

Ответ: [TrueHorror] - разработка
 
Не люблю такие игры, сорри =/

mr.DIMAS 04.11.2014 01:58

Ответ: [TrueHorror] - разработка
 
Я понимаю. Жанр на любителей пощекотать нервы.


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

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