w23 / xash3d-fwgs

Vulkan Ray Tracing fork of Xash3D FWGS engine. Intended to be merged into master at some point in the future.
160 stars 16 forks source link

Rendering water correctly #160

Open 0x4E69676874466F78 opened 2 years ago

0x4E69676874466F78 commented 2 years ago

Наводная и подводная часть. Про подводную:

Liquid textures can be 64x64 or 128x128 in size, and are designated as liquids by placing a “!” before their name, thus !texname.bmp is automatically understood by the engine to mean a water brush. Fog color is handled by certain color registers in the texture: a color register is a palette location. Color register 0 is the first color of the palette, color register 255 is the last. Fog color is handled by color register 3 in a water texture, and the fog density is handled by color register 4. The density value is drawn from the R value of that register (G and B are ignored), so pure red is the densest fog and black is the least dense fog.

Для PBR эти параметры можно настроить в материале.

Связано: #159

0x4E69676874466F78 commented 1 year ago

На водных поверхностях не работают нормали.

0x4E69676874466F78 commented 1 year ago

Связано: #289, #264, #15

0x4E69676874466F78 commented 1 year ago

Нету прозрачности у воды: VK image GL image

0x4E69676874466F78 commented 8 months ago

@w23 нужен рендермод для воды.

w23 commented 8 months ago

@w23 нужен рендермод для воды.

Поподробнее, пожалуйста.

  1. Нужен отдельный специальный тип материала для воды, который значительно отличается от "обычной" прозрачки, например, стекла, просто с особенными параметрами (френель там, коэффициент прелолмления)?
  2. Нужно уметь назначать какие-то параметры материалов именно воде? Подразумевает, что вода не распознаётся только по текстуре воды.

Сейчас вода, вроде, должна назначаться translucent material mode, просто он тёмный слишком пока. И ему недостаёт некоторых параметров потенциально.

0x4E69676874466F78 commented 8 months ago

Рендермод нужен чтобы для конкретно воды сделать специальную логику в шейдере отличную от стёкол и кристаллов. У нас проблема с тем чтобы задатектить явно воду: Есть поверхности с текстурой !имя это мы можем по текстуре понять что перед нами жидкость. Есть отдельно func_water и не обязательно на таком объекте будет именно текстура с жидкостью. При этом необязательно что объект с текстурой !имя будет иметь func_water. К тому же хотелось бы иметь глобальные настройки для всех жидкостей которые уже по необходимости доводить отдельно (по имени текстуры).

0x4E69676874466F78 commented 8 months ago

func_water с чужой текстурой (не !жидкости) работает странно, текстура не анимируется, сабдивов с волнами у браша нет, но при этом если мы попадаем в браш он ведёт себя как вода, но тумана нет. В теории такие браши могут быть низкие типа луж, звук от них есть, т.е. в теории такое может быть использовано.

w23 commented 8 months ago

Короче для всей шевелящейся воды, которая SURF_DRAWTURB* и идёт через отдельную рендер-модель, могу сделать MATERIAL_MODE_WATER или что-то такое, если она прозрачная.

0x4E69676874466F78 commented 8 months ago

Короче для всей шевелящейся воды, которая SURF_DRAWTURB* и идёт через отдельную рендер-модель, могу сделать MATERIAL_MODE_WATER или что-то такое, если она прозрачная.

Она может быть и не полупрозрачной, но быть водой.

w23 commented 8 months ago

Тогда это не через material mode, ибо его предназначение в разделении типов прозрачки-непрозрачки. Через битик или параметры в материале какой тащить только.

0x4E69676874466F78 commented 8 months ago

Тогда это не через material mode, ибо его предназначение в разделении типов прозрачки-непрозрачки. Через битик или параметры в материале какой тащить только.

Тогда надо подумать, пока не горит.

0x4E69676874466F78 commented 6 months ago

https://github.com/w23/xash3d-fwgs/issues/56#issuecomment-1800172781