На верхнем скрине выглядит HDR (якобы) по мнению ATi (стебнутая ремикс версия). Есессно ни о какой адаптации глаза и речи там не идет.
Оригинал можно посмотреть в RenderMonkey файл с названием HDR.
На нижнем скрине bloom который я себе представляю и всегда представлял. При этом я НЕ использовал ни rgba_float текстуры, ни half_float, даже фигов downsampling я тоже не использовал. Изображение-оригинал рисуется в обычную GL_RGB текстуру, затем тупо перерисовывается в двое уменьшенную (никаких шейдеров). Далее грозное название хайпасс состоящее из одного if'а. Далее блюр и tonemapping, а фактически простой (color + blur) * exposure.
И вот скажите мне - зачем ATi, humus так грозно называют все это HDR, ведь у АТИ пример больше похож на glow только с большим засветом, а у хумуса мало того что идет привязка к hdr скайбоксу (то есть светится будут только некоторые части скайбокса), так еще и сцена настолько замылена, что ощущение что блюр применяется ко всему. Зачем нужно пудрить голову всякими half_float, clampcolor, rgba16f и прочим хламом? Зачем делать hdr текстуры для скайбоксов? А если я хочу чтобы у меня было как в Half-Life2 Ep* - чтобы светились все пиксели любых текстур значения которых выше заданных? Нафига вообще нужен этот повышенный диапазон яркости если монитор реально не может отобразить яркость выше 255,255,255 ???
Я понимаю, видимо я чето не фкурил. Но скрины явно говорят о подставе )))
Ты когда-нить снимал на камеру? Когда выходишь из тёмной комнаты на свет или из тоннеля, то происходит перенастройка диафрагмы. Когда светлые части занимают мало места на экране, они пересвечены, зато видно то, что в тени находится, когда светлые части занимают больше пространство, то они становятся лучше видны, а тёмные уходят в чёрное пятно. И обратно :) Когда ты сидишь перед, например, свечкой, то ты не видишь, ничего на дальней тёмной стене, однако отойдя от свечки — можешь разглядеть. Человека в тени ты можешь не заметить из светлой части, а подойдя ближе — увидишь, причём хорошо, даже цветную текстуру на одежде. Такое возможно только с широким диапазоном цвета для текстуры.
Первая картинка — просто glow. Дело в том, что для более достоверного эффекта HDR добавляют подобный bloom. Сам по себе он не является HDR, но считается, что наводит на мысли :)
Видимо, когда мониторы смогут обеспечить динамический диапазон, соответствующий реальности, в этих эффектах пропадет нужда - они будут рождаться в глазу, как и в реальности.
Во всех примерах по HDR, что я видел (ATi, nVidia, humus, steps3d, codesampler), вся эта GL_FLOAT_ФИГНЯ не дает ничего такого о чем написал wat.
Это заговор и происки маркетологов )
NULL_PTR
чайник можно отдалить и нацелить на солнце. Будет почти тоже что и в заметке. Да и то с мелкими глюками - солнце, например, неравномерно засвечивает чайник. Это все придирки конечно. Смысл не в этом был.
наксолько я знаю float нужен только для того чтобы точность вычисления не падала с каждым новым проходом (downsample, blurx, blury и т.п.) иначе будет серьезный алиазинг, особенно когда используется адаптация глаза/камеры... но дело не только в этом, допустим у нас сильно засвечена сцена в некотором участке, например там 5 источников света, и есть участок сцены где "тьма тьмущаяя", свет от этх 5ти источников будет далеко не (255,255,255) или (1.0f,1.0f,1.0f), а по сравнению с освещенностью неосвещенного участка его освещенность составила-бы (100.0f,100.0f,100.0f) к прмеру... а после тонемаппинга будет заметен ощутимый контраст между этими двумя участками, в случае когда мы используем RGB8 текстуру контраст будет менее выражен и будут большие ошибки дискретизации... bloom и подобные эффекты здесь только добавляют реализма при работе с HDR диапазоном, и саму суть HDR не передают...
NULL_PTR
да, пример из рендер манки - чистый фейк и подстава, там вобще не HDR, весь процессинг там производится с RGBA8 текстурами, причем накой-то хрен включена автогенация мипмапов
а зачем врать-то тогда, могли-бы сразу сделать адаптацию... хотя думаю средствами RM это нереализуемо, надо сменять\чередовать рендертаргеты от кадра к кадру, а скриптов RM вроде не поддерживает...
Nikola Tesla > а зачем врать-то тогда, могли-бы сразу сделать адаптацию... хотя думаю > средствами RM это нереализуемо, надо сменять\чередовать рендертаргеты от кадра > к кадру, а скриптов RM вроде не поддерживает...
В рендерманки возможно сделать динамическую адаптацию без использования всяких там скриптов и чередования рендер таргетов. Все что нужно сделать - это у текстуры в которую мы записываем новый уровень адаптированной яркости отключить очистку, а на следующем кадре в качетве текстуры LastFrameAdaptation использовать эту же самую текстуру. То есть получается такое вот колесо, мы записываем результат в текстуру, рассчитанный из разницы между текстурой на данном кадре и этой же текстурой но в предыдущем кадре. При отключенном очищении результат с предыдущего кадра сохранится и все будет работать. Но будет один побочный эффект такого подхода - при нажатии и отпускании ЛКМ на рабочем окне рендера текстура таки будет очищаться нолем, что повлечет за собой эффект резкой вспышки. А в остальном - как в песне поется - "все хорошо все хорошо". В качестве пруфа могу скинуть проэктик, если интересно.