Пятница, 24.01.2025, 11:48
| RSS
F.O.R.U.M.
Главная | Имитация намокания дороги во время дождя - Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Имитация намокания дороги во время дождя
frontДата: Вторник, 13.10.2009, 22:12 | Сообщение # 1
Admin
Группа: Администраторы
Сообщений: 152
Репутация: 229
Статус: Оффлайн
В целом опишу принцип:
Есть у нас погода где прописан дождь, есть текстура #small которая подсвечивает уровень и есть красный канал в bump.dds текстурах, который реагирует на #small.

Погода -

Путь - \gamedata\config\weathers
Файлы - default_groza.ltx, default_pasmurno.ltx и _rain.ltx

В конфигах погоды где есть дождь прописать (желательно свою) текстуру, т.е. сделать свой кубемап.dds + к ней #small.dds

Пример для [default_weather_rain_01]: sky_texture = sky\sky_test_cube_day

Что получим? получим ошибку при запуске игры она будет просить текстуру. Значит идём делаем текстуру.

Текстура -

Путь - \gamedata\textures\sky
Файлы - наш_кубемап.dds, наш_кубемап_#small.dds

Кубепам.dds по сути может быть любым, однако достаточно выгодно смотрится c чистой серой заливкой (имхо),
#small.dds желательно делать чуть больше чем остальные #small в игре.
К примеру для #small.dds - 768х128px. Почему больше чем остальный? это позволит ввести в текстуру достаточную детальность.
Требования к #small.dds - не должна быть цветной (т.е. ЧБ).
Правила для #small.dds -
а) тёмные пятна не отражаются в игре, светлые - отражаются.
б) Чем сильней светлый участок в текстуре, тем сильнее данный участок будет отражен.
в) Сильный контраст текстуры плохо сказывается на картинке в игре.

Что получим? УРРАААААА Есть намокание! Т.е. получим запуск игры, однако, в зависимости от того что изображено на вашей #small.dds и контрастности изображения, мы получим во время дождя отражение некоего "типа" на всём подряд (в частности на руке ГГ) выглядит не очень.... Пожалуй нужно это исправить! Чтож... всё считается в шейдерах, значит идём пытаться править шейдеры!

Шейдеры -
Путь - \gamedata\shaders\r2

Находим файл с именем: sload.h и делаем его дубликат. но изменяем имя к примеру на... ммм... на sload-2.h

Покопавшись внутрях видим вот такой кусок -
#ifdef USE_PARALLAX
surface_bumped sload_i ( p_bumped I)
{
surface_bumped S;
half height = tex2D (s_bumpX, I.tcdh).w;
height = height*parallax.x + parallax.y;
float2 new_tc = I.tcdh + height*normalize (I.eye);
half4 Nu = tex2D (s_bump, new_tc);
half4 NuE = tex2D (s_bumpX, new_tc);
S.base = tbase (new_tc);
S.normal = Nu.wzyx + (NuE.xyz - 1.0h);
S.gloss = Nu.x*Nu.x ;
S.height = NuE.z ;

И после строки S.normal = Nu.wzyx + (NuE.xyz - 1.0h); ставим:
S.normal = half3(0,0,0);


 
frontДата: Вторник, 13.10.2009, 22:12 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 152
Репутация: 229
Статус: Оффлайн
Идём дальше.
Находим файл с именем - deffer_base_bump.ps и так же делаем его дубликат, имя даём - deffer_base_bump_2.ps
В нём меняем в самом верху строку #include "sload.h" на наш дубликат #include "sload-2.h"
Находим файл: deffer_base_bump-hq.ps и в нём ставим :
#define USE_PARALLAX
#include "deffer_base_bump_2.ps"

Всё значится. Что мы имеем в итоге? В итоге мы имеем динамическое "намокание" во время наступления дождя на всём кроме худа и НПС.
Однако есть проблема которую пока не решили - дело в том, что отключив в шейдерах отражение с рук и с НПС, мы получили вроде приемлемую картинку для улицы, но вот в подвале И руки И нпс будут чёрными. Почему? Потому что свет, по условию которое сделала GSC, ДОЛЖЕН отражаться от предметов для которых просчитан параметр Gloss, данный параметр есть по сути в каждой текстуре для каждого объекта, он берётся из текстуры_bump.dds из красного канала, чем ярче красный канал, тем сильнее отражать будет текстура.

P.S. Вполне вероятно возникнет много разговоров и споров в отношении данной информации, но, ребят, так или иначе мы все делаем одно - стараемся улучшить Игру которая так сильно нас "зацепила", стараемся приблизить Игру к тем мечтам и пожеланиям которые имеет каждый из нас, из кто ждал и играет в неё.
Не стоит говорить о том, что кто-то и что-то у кого-то взял/украл/изъял - всё это не так. Все из тех, кто может причислить себя к модостроителям, по сути реализовывает то, что уже давно придумано ДО него (безусловно бывают исключения).

К чему вообще всё написанное по имитации намокания? К тому, что будет хорошо подключить ещё СТО, ТЫСЯЧИ голов, для доведения данного эффекта до... ну может и до совершенства.

P.S.S. Сейчас ещё раз по написанному пробегусь и проверю нет ли ошибок. Сильно прошу меня ногами не пинать. Чуть позже прицеплю файлы уже подправленные. В том числе и пример текстур.

Ещё кой-что добавлю по имитации - поле для творчества ОГРОМНО! начиная "рецептом" болеее интересной текстуры #small, подбором оптимального освещения в погоде и заканчивая полётом мысли в шейдерах.

Вот ссылка на изменённые файлы + текстуры + погода (на основе АМК) -
http://rapidshare.com/files/117061936/test_reflect.zip
http://ifolder.ru/6689733


 
  • Страница 1 из 1
  • 1
Поиск:

Для добавления необходима авторизация

Copyright Front Сайт оптимизирован под браузер Opera © 2025