Welcome, guest. You can be a Login или register
Author
Topic title
Берсеркер
Offline
Суровый челябинский программист
2229 posts
Karma 198
C.Z.R
Where vertexes limit? In BSP, models?
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
C.Z.R
Offline
98 posts
Karma 2
Берсеркер
in models. before I had 20 000 vert. models and no error. In newest version of Bers@wolfSP i have error "max verts limit 10240" or something like that when I try load map with my new models. Please make higher limit in next version, because I dont want to change all models to more low poly in my REMAKE MOD. :)
Берсеркер
Offline
Суровый челябинский программист
2229 posts
Karma 198
C.Z.R., check it:
http://www.filedropper.com/berssp
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Берсеркер
Offline
Суровый челябинский программист
2229 posts
Karma 198
Новые билды Q3Bers, Q3Bers_mme и Bers@RTCW:
https://cloud.mail.ru/public/HLNB/ewScmWMgP
Обещанные полные паки выложу попозже, ибо ночь и спать охота %))

Что нового:
1. Подчистил и оптимизировал код загрузчиков текстур, движок может искать и загружать текстуры в таком порядке: DDS, TGA, JPG, JPEG, PNG, PCX, BMP.
Внутренние форматы:
DDS: RGB, RGBA, DXT5, BPTC.
TGA: greyscale, 8-bits w/palette (Indexed), 16/24/32-bits, also RLE compression supports, also row-inverted supports.
JPG/JPEG: greyscale and RGB-images.
PNG: greyscale, 8-bits w/palette (Indexed), RGB8 and RGB16 (loads as RGB8), also interlaced supports.
PCX: greyscale and 8-bits w/palette (Indexed).
BMP: uncompressed, 8-bits w/palette (Indexed), 16/24/32-bits, also row-inverted supports.

Подробнее про DDS текстуры:
а) должны содержать mipmaps, загружаются сразу в видеопамять, поэтому этот формат самый быстрый для загрузки.
б) если текстура сжата в DXT5, и если это карта нормалей, то:
- если нет альфа-канала (карты интенсивности микробампа), то предварительно произвести swizzle цветовых каналов: GGGR (т.н. DXT5_NM)
- если есть альфа-канал (карта интенсивности микробампа), то предварительно произвести swizzle цветовых каналов: AGAR
в) если текстура сжата в DXT5, и если это карта высот, то необходимо произвести swizzle цветовых каналов: GGGR (т.н. DXT5_NM)
г) Не участвует в кэшировании (про кэширование текстур см. ниже...).

2. Убрал "зоопарк" форматов сжатий, оставил только BPTC и DXT5. Эти форматы совмещаются с DDS.
Загрузчик для color/specular maps автоматически выбирает BPTC сжатие, для normal/height maps - DXT5. Если какой то формат сжатия не поддерживается, то выбирается другой формат. Если оба формата не поддерживаются, то сжатие отключается.
Удалил цвары: r_ext_compressed_textures, r_ext_compressed_normalmaps, r_ext_compressed_heightmaps, r_roundImagesDown.
Сжатие текстур позволяет заметно сэкономить видеопамять, сжатие 4 к 1.

3. Новые цвары:
r_compressImages (вместо r_ext_compressed_textures) def = 1, archive, latch
r_texture_compression_bptc def=1, arch, latch - при 0 запрещает BPTC сжатие.
r_texture_compression_s3tc def=1, arch, latch - при 0 запрещает DXT5 сжатие.
r_imageCache def=1, arch - включает кэш текстур.
r_debugImages def = 0 - при 1 выводит диагностическую информацию о загрузке и кэше текстур.

4. Про кэширование текстур.
Этапы загрузки текстуры:
- чтение с диска и получение raw-данных. Распаковка из JPG/PNG форматов может занять заметно много времени. Кэширование устраняет эту задержку.
- если текстура имеет размеры не кратные степеням двойки, то требуется приведение размеров текстуры к ближайшим степеням. Кэш уже содержит текстуру с правильными размерами.
- получение пирамиды mipmaps. Кэширование пропускает этот этап, т.к. готовые мипмапы уже в кэше.
- если разрешено сжатие текстур, то при заливке в видеопамять raw-данных, драйвер производит сжатие в BPTC или DXT5. Это тоже занимает какое то время. В кэше могут храниться уже сжатые текстуры, загрузка в видеопамять очень быстрая.
Кэш текстур создается в папке Cache.
Текстуры с Image Programs также кэшируются, что также ускоряет загрузку.
Внимание: если r_picmip не нулевой, то кэш работает в режиме read onlу!

5. DXT5 хранит цветовые каналы с разным качеством. Максимальное качество у Альфа-канала. Похуже у Зеленого, и ещё хуже (на 1 бит) у Красного и Синего каналов. Следовательно, при хранении карт нормалей и высот, применяется DXT5_NM хак. Качество практически идентично несжатым текстурам.
Для color/specular maps без альфа-канала также могут быть применен swizzle BRBG: Альфа канал в DXT5 имеет максимальное качество, поэтому туда помещаем Green канал, как наиболее чувствительный для человеческого глаза. Red канал помещаем на место зеленого (в DXT5 зеленый канал имеет на 1 бит больше чем красный и синий), т.к. в Quake много красного цвета. Синий канал помещается на место красного и синего, чтобы уменьшить артефакты сжатия.

6. Новая команда showimage <textures/basewalls/wall0> <время в сек.> загружает и показывает текстуру на экране. Имеет статус cheat.

7. Для RTCW увеличил лимит вершин на батч в 10 раз:
SHADER_MAX_VERTEXES = 102400
В вольфе модели скелетной анимации (MDS) обсчитываются на CPU, поэтому требуется увеличение лимита.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
C.Z.R
Offline
98 posts
Karma 2
Thank You Berserker for higher verticles limit :)
Берсеркер
Offline
Суровый челябинский программист
2229 posts
Karma 198
Новый билд (все три проекта), чутка допиленный:
https://cloud.mail.ru/public/81eu/ycQfuVu1B

Команды, полезные для разработчиков материалов:
showimage имя_текстуры <numTiles> рисует в 2D режиме текстуру, количество повторений
numTiles (не обязательный параметр).
showMaterial имя_материала <numTiles> - рисует 3D куб с указанным материалом, количество
повторений numTiles (не обязательный параметр).
showShader имя_материала <numTiles> - синоним для showMaterial.
stopShow - отключает режим отображения текстуры и материала.
Эти команды полезны для наглядного просмотра создаваемых текстур и материалов, объекты имеют статус временных, не кэшируются, и выгружаются из памяти по команде stopShow (команды showShader и showImages без параметров имеют такой же эффект).
Редактируемые материалы должны быть помещены в особый файл: materials/$temporary.mtr
Расширение .shader было специально заменено на .mtr чтобы загрузчик проигнорировал материалы из этого файла.
В случае надобности можно оперативно отредактировать материал в этом файле и заново отобразить на экране. Vid_restart не требуется.
Если файла $temporary.mtr не существует, либо запрошенный материал взят из общего списка материалов, то оперативно редактировать материал не получится без vid_restart.
Временные текстуры и материал отображаются в конце списков imagelist и shaderlist.

Новая команда: materiallist Команда-синоним для shaderlist. Печатает список материалов.

Мелкие багфиксы....

По просьбе v1o2v3a4n5:
В архиве кроме билдов содержатся общая документация, доп.файлы, ретекстуренная и релайченная карта shiz_q1dm2 (моя любимая со времен Ку1), примеры guides, и пр.
К доп.файлам остается докачать ретекстур камрада GT-Agressor со страницы: http://berserker.quakegate.ru/q3bers/



Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Берсеркер
Offline
Суровый челябинский программист
2229 posts
Karma 198
Вечер добрый
выложил полный пак, однако всё проверить физически невозможно.
Проблема такая: у материала "textures/base_floor/diamond2" проросла трава )))
Решаем так:
в файле quake3/baseq3/materials/zzzzzzzzzz.shader
в самом начале есть материал textures/base_floor/diamond2
вот в нём и есть травка )) мои садоводческие эксперименты.
Как выкорчевать сорняк:
удалить или закомментрировать строку: q3map_foliage models/objects/colombia/jungle/tree02_rmg.md3 0.5 128 0.1 2
Спасибо тов.q3tse за острый глаз.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
C.Z.R
Offline
98 posts
Karma 2
Привет Берсерк! Можно ли добавить clip / collision к текстуре materials? Например, для деревьев формируется из FOLIAGE. (google translate)
Берсеркер
Offline
Суровый челябинский программист
2229 posts
Karma 198
Hi C.Z.R.,
no, any foliage couldn't interact with any objects.

In RTCW:ET foliage are compiled from map to bsp, to SF_FOLIAGE. In theory, q3map2 compiler can generate collision info for trees.
Quake2 and RTCW maps don't have SF_FOLIAGE, so engine must to generate trees-collisions in the loading map stage. I don't know how do it.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
C.Z.R
Offline
98 posts
Karma 2
I saw in Quake III shader manual keyword "surfaceparm playerclip", but didn't work in RTCW. Maybe RTCW have the same option but hidden with another keyword.


PS. And If you could someway disable DOF for sky in next version, because sky with DOF looks bad :)