w23 / xash3d-fwgs

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

materials: easily add fields in code #582

Open 0x4E69676874466F78 opened 10 months ago

0x4E69676874466F78 commented 10 months ago

Простое добавление полей для материалов чтобы легче было играться с новыми шейдерами и материалами.

w23 commented 10 months ago

Как добавлять поля в материалы:

  1. Добавить поле в xvk_material_t в vk_materials.h: https://github.com/w23/xash3d-fwgs/blob/1f82f352f96dc35451d5197427cda590fcc5dc82/ref/vk/vk_materials.h#L5-L17
  2. Добавить значение этого поля по-умолчанию в https://github.com/w23/xash3d-fwgs/blob/1f82f352f96dc35451d5197427cda590fcc5dc82/ref/vk/vk_materials.c#L14-L26
  3. Добавить парсинг поля в https://github.com/w23/xash3d-fwgs/blob/1f82f352f96dc35451d5197427cda590fcc5dc82/ref/vk/vk_materials.c#L179C4-L199 если это текстура, то надо дополнительно ещё:
  4. Добавить поле в struct Material в шейдере, бдя паддинг: https://github.com/w23/xash3d-fwgs/blob/1f82f352f96dc35451d5197427cda590fcc5dc82/ref/vk/shaders/ray_interop.h#L76-L94
  5. Добавить передачу поля в https://github.com/w23/xash3d-fwgs/blob/1f82f352f96dc35451d5197427cda590fcc5dc82/ref/vk/vk_ray_model.c#L39-L48
  6. Далее можно тупо в шейдере читать из Material как обычно всё остальное.