*Shoker* 322 Опубликовано 13 Мая 2014 (изменено) 1) Я возможно тут ошибусь в терминах, но возможна ли переделка стандартного сталкерского DOF-а (ЧН\ЗП) чтобы он выглядил как эффект Боке, то-есть округлял бы источники света. (или блум от них) И если возможна, то насколько затратна. (при условии что дело ограничится одними шейдерами) Или хотя бы просто сделать его (DOF) более "чистым" как DOF из ENB: http://images.gameru.net/image/f2f0c981a8.jpg http://images.gameru.net/image/c56bf68909.jpg http://images.gameru.net/image/e21551267b.jpg Может мне конечно кажется, но сталкерский DOF больно "грязный" какой то. Он как будто зашумляет картинку. Возможно где то в шейдерах можно покрутить параметры "качества"? 2) По шейдеру мягких теней: http://www.ogse.ru/wp-content/uploads/2014/04/56ee191d89.jpg 1) На скриншоте выше видно что тень от лампы как будто обрезается на середине. Возможно ли отключить обрезание, чтобы тень отрисовывалась целиком, просто её дальние части были бы почти прозрачными? Или же текущая прозрачность тени рассчитывается не от реального размера тени, а от каких то зарание забитых значений? 2) Возможно ли сделать дальние участки тени не сужающимися а наоборот расширяющимися? Чтобы тень вдалеке от источника света казалась чуть более толстой, но при этом более прозрачной и гораздо более размытой по краям? Сейчас тень ближе к концу сужается и округляется. 3) Возможен ли его перенос на ЗП (с учётом 10\11-го рендера) силами блокнота и сравнения двух файлов, или же потребуются более глубокие знания? Требует-ли он правок движка? Если да, то можно ли ими пожертвовать? Добиваюсь эффекта на подобии: http://www.gamedev.ru/files/images/06penumbratexture.jpg (угол между прозрачной и тёмной тенью может быть меньше) http://i.imgur.com/BVnkGOV.png Сейчас тени в ЗП это просто прямая линия, со слабым размытием по краям. Возможно достаточно покрутить стандартный ЗПшный шейдер чтобы добиться подобного эффекта? --------------------- Ну или фиг с краями, просто сделать простое затухание теней + расширение в зависимости от расстояния, без особой работы с краями тени. Изменено 13 Мая 2014 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Поделиться этим сообщением Ссылка на сообщение
*Shoker* 322 Опубликовано 13 Августа 2014 (изменено) Может кто нибудь уточнить, в deffer_ шейдерах получаю цвет пикселя через tex2D(), в каких пределах он возвращает цвет каждого канала? То-есть например tex2D().g находится в пределах от 0 до 1 или от 0 до 0.25 (+\-)? Почему-то мой полностью зелёный пиксель он где то в районе 0.25 возвращает. В самой исходной текстуре пиксель имеет цвет ровно (0, 255, 0), компрессия его вроде бы не съела - пере-открывал текстуру и проверял его цвет. В этом пикселе точно находится зелёный цвет, поскольку специально выводил его на всю текстур и он был зелёного цвета. (хотя насчёт его оттенка ничего сказать не могу) ------------------------------- Я вообще правильно ли думаю что tex2D( s_detail, float2(0, 0)) всегда вернёт цвет самого первого пикселя в "текстуре" s_detail? ********************************Разобрался с "проблемой", вообщем чтобы получить первый пиксель в текстуре мне пришлось использовать конструкцию вида: tex2D( s_detail, float2(0.0006, 0.0006)) float(0, 0) вместо первого (верхний левый) пикселя возвращает правый верхний. float(1, 1) вообще вылетает о_О Есть ли более человеческий способ получить цвет нужного пикселя, и желательно по его "целочисленному" индексу, а не по непонятному float, который небось ещё и не заработает на текстуре другого размера. *********************************Я ничего не понимаю: S.base.rgb = tex2D( s_detail, float2(0.0, 0.0) ); Выводит чистый зелёный на всю поверхность, но при попытке сделать хотя бы: S.base.g >= 0.5 возвращает false Изменено 13 Августа 2014 пользователем *Shoker* 1 Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Поделиться этим сообщением Ссылка на сообщение
*Shoker* 322 Опубликовано 19 Сентября 2014 fog_of_war в переводе это туман войны - то, что в стратегиях закрывает не разведанные участки карты. Либо компания-разработчик (признана нежелательной)* хотели делать стратегию на рентгене, либо это просто такое название тумана 1 Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Поделиться этим сообщением Ссылка на сообщение
*Shoker* 322 Опубликовано 14 Ноября 2014 @HellRatz, пойщи в папке шейдеров waterconfig.h или как то так. Там были эти параметры правда хз много ли через них можно добиться. ---------------------------------- Вот такой вопрос, конкретно в шейдерах есть возможность произвести обрезку и ресайз текстуры? Где можно посмотреть примеры если таковые есть? Суть есть текстура в разрешении экрана, нужно превращать её в квадрат, при необходимости просто отрезая бока. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Поделиться этим сообщением Ссылка на сообщение
*Shoker* 322 Опубликовано 15 Ноября 2014 (изменено) Ответ подсмотрел у Meltac-а // Одна координата (float) float zoom(float input, float factor, float offset) { return (input-0.5f+offset) / factor+0.5f-offset; } // Две координаты (float2) float2 zoom2(float2 input, float factor, float2 offsetXY) { return float2(zoom(input.x, factor, offsetXY.x), zoom(input.y, factor, offsetXY.y)); } // float4 float4 zoom4(float4 input, float factor, float2 offsetXY) { float4 result; result.xy = zoom2(input.xy, factor, offsetXY); result.z=input.z; result.w=input.w; return result; } Зум изображения: I.tc0 = zoom2(I.tc0, 2.f, float2(0, 0)); (Увеличение в 2 раза) Растяжка по нужной координате: I.tc0.x = zoom(I.tc0.x, 1.77f, float2(0, 0)); (растяжка по бокам на 70%) В шейдерах текущее разрешение экрана можно получить объявив в шейдере uniform float4 screen_res; .... screen_res.x - ширина, screen_res.y - высота Само собой под "зумом" подразумевается простая растяжка картинки\текстуры. Изменено 15 Ноября 2014 пользователем *Shoker* 1 Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Поделиться этим сообщением Ссылка на сообщение
*Shoker* 322 Опубликовано 17 Ноября 2014 (изменено) @dromundus, на примере ЗП, в папке shaders\r2 ищи файл common.h, там найди функцию: combine_bloom и модифицируй её например так: half4 combine_bloom (half3 low, half4 high) { low *= 2; return half4(low + high*high.a, 1.h); } Это для R2. Получишь общую картинку в два раза ярче Эта настройка влияет только на яркость картинки, но не на яркость интерфейса. Вместо 2 можешь писать 1.5, 3 и так далее. Также можно конкретно нужный цвет усиливать\ослаблять, например: low.r *= 0.5; -> Ослабить красный в два раза. Но вообще крутить такое в шейдерах плохое решение, имхо. По попзунку яркости в опциях учти что он работает только в полно-экранном режиме, т.к это просто настройки монитора. Изменено 17 Ноября 2014 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Поделиться этим сообщением Ссылка на сообщение
*Shoker* 322 Опубликовано 25 Декабря 2014 (изменено) @tatarinrafa, ну для начала как твоя игра должна догадаться что ей нужно запустить moy_shader.ps и при этом применить его ко всему экрану. Вызов новых шейдеров прописывается либо в движке, либо, для моделей, в СДК. (ну грубо говоря) Конкретно если ты хочешь окрасить весь экран в красный, то тебе нужно открыть шейдер постпроцесса экрана (combine_2_ххх,ps, их там два больших, не помню какой точно нужен, по моему combine_2_naa.ps), который движком вызывается, и там уже модифицировать код по своему желанию. Только учти что, по крайнем мере в ЗП, в этом файле много закоментированного (отключённого) кода ( /* ... */ ) Туда писать ничего не надо. Изменено 25 Декабря 2014 пользователем *Shoker* 1 Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Поделиться этим сообщением Ссылка на сообщение
*Shoker* 322 Опубликовано 25 Декабря 2014 (изменено) а если в какой нибудь файл вставить #include "moy_shader.ps" Как уже ответил @Viнt@rь, шейдер соберётся но код внутри него нужно вызвать вручную, посмотри на dof.h Изменено 25 Декабря 2014 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Поделиться этим сообщением Ссылка на сообщение
*Shoker* 322 Опубликовано 24 Января 2015 (изменено) С учётом наличия исходников какими способами можно тестировать сталкерские шейдера на скорость выполнения \ оптимизацию? А точнее конкретно нужный шейдер протестировать. Изменено 24 Января 2015 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Поделиться этим сообщением Ссылка на сообщение