Static Prop Combine
Static Prop Combine, или говоря неформально "автокомбайн", - функция в VBSP  Counter-Strike: Global Offensive. Она позволяет VBSP объединять вместе множество статичных пропов в один, либо автоматически, либо по указанным пользователем правилам. Это снижает общее количество статичных пропов на карте и количество запросов на отрисовку. Чтобы включить эту функцию, запускайте VBSP с параметром
 Counter-Strike: Global Offensive. Она позволяет VBSP объединять вместе множество статичных пропов в один, либо автоматически, либо по указанным пользователем правилам. Это снижает общее количество статичных пропов на карте и количество запросов на отрисовку. Чтобы включить эту функцию, запускайте VBSP с параметром -staticpropcombine.
 Совет:В
Совет:В  Source производится один запрос на отрисовку на каждый материал на каждой модели. Объединяя модели, которые используют одинаковые материалы, Вы снижаете количество запросов на отрисовку, что сильно помогает оптимизации. Со слов Valve производительность на карте Nuke повысилась на 40% после использования Static Prop Combine.
 Source производится один запрос на отрисовку на каждый материал на каждой модели. Объединяя модели, которые используют одинаковые материалы, Вы снижаете количество запросов на отрисовку, что сильно помогает оптимизации. Со слов Valve производительность на карте Nuke повысилась на 40% после использования Static Prop Combine.
 Примечание:В связи с непостоянностью этой функции в VBSP, возможно более хорошим решением может стать использование Примечание:В связи с непостоянностью этой функции в VBSP, возможно более хорошим решением может стать использование TeamSpen's Hammer Addons. Помимо того, модели статичных пропов можно объединять вручную. TeamSpen's Hammer Addons. Помимо того, модели статичных пропов можно объединять вручную.
Действие
Static Prop Combine проводит следующие действия:
- Нахождение пропов, которые будут объединены.
- Это делается на основе правил, указанных spcombinerules.txt, или автоматически на основе использования моделей.
 Примечание: Примечание:- -staticpropcombine_considervis- полезная команда, которая делает так, чтобы при работе Static Prop Combine брал в расчёт видимость.
- Сканирование исходного файла QC с целью взять определённую информацию.
- Это включает имена и положения основного и физического мешей, вертикальную ось модели, её скейл и является ли она вогнутой.
- QC находится при помощи параметра модели qc_path, который всегда считается относительным папке игры - даже если это полный путь!
 Примечание:К этому шагу относится множество ограничений, смотрите Использование для деталей. Примечание:К этому шагу относится множество ограничений, смотрите Использование для деталей.
- Использовать эту информацию вместе с неполным QC, чтобы сгенерировать свой QC
- $contentrootrelative, $appendsource и $addconvexsrc - новые команды, добавленные специально для Static Prop Combine. Последние две команды позволяют "добавить" геометрию к модели с каким-либо сдвигом, поворотом и изменённым размером.
- Вызвать StudioMDL, чтобы скомпилировать этот сгенерированный QC в комбинированную модель.
- Комбинированные модели всегда будут иметь _autocombine_в своём названии.
- Запаковка комбинированных моделей через BSPZIP
 Совет:Использование -keepsources отключит автоматическое удаление сгенерированных QC и распакованных файлов модели. Совет:Использование -keepsources отключит автоматическое удаление сгенерированных QC и распакованных файлов модели.
Использование
Параметры VBSP
Смотрите VBSP.
Настройки в Hammer
Пропы, отличающиеся по указанным ниже параметрам, НЕ будут скомбинированы, если не будет указан подходящий параметр VBSP:
- Render in Fast Reflections (-combineignore_fastreflection) (отражаться в быстрых отражениях)
- Ignore Normals (-combineignore_normals) (игнорировать нормали)
- Disable Shadows (-combineignore_noshadows) (отключить тени)
- Disable Vertex lighting (-combineignore_novertexlighting) (отключить повертексное освещение)
- Disable Flashlight (-combineignore_noflashlight) (отключить фонарик)
- Disable Self-Shadowing (-combineignore_noselfshadowing) (отключить самозатенение)
- Disable ShadowDepth (-combineignore_disableshadowdepth) (отключить глубину теней)
В добавление, Вы можете отключить Static Prop Combine для определенных пропов, используя параметр Disable Prop Combine.
Подготовка пропов
Чтобы использовать проп со Static Prop Combine, Вы должны иметь исходные файлы модели.
 Примечание:Чтобы использовать модели от Valve, Вы должны рекомпилировать их под другим названием - иначе версия модели, запакованная в VPK-архив игры заменит Вашу версию модели.
Примечание:Чтобы использовать модели от Valve, Вы должны рекомпилировать их под другим названием - иначе версия модели, запакованная в VPK-архив игры заменит Вашу версию модели.QC модели должен быть скомпилирован из папки контента игры. Для  Counter-Strike: Global Offensive это
 Counter-Strike: Global Offensive это SteamApps/common/content/csgo/. 
 Совет:На самом деле, место, в котором происходит поиск контента всегда будет
Совет:На самом деле, место, в котором происходит поиск контента всегда будет ../../content/[название -game], относительно папки bin. Это может быть полезно для моддеров.
Есть немало ограничений, включающих:
- Будет распознан только первый параметр $body.
- $modelне распознаётся.
- $appendsourceи- $addconvexsrcне распознаются.
- Значение $upaxisможет быть только Z или Y.
Подготовка правил
Правила для Static Prop Combine объявлены в scripts/hammer/spcombinerules/spcombinerules.txt. Это стандартный KeyValues-форматированный текстовый файл. Каждый ввод следует этому формату:
	"example_combined" // Имя группы комбинирования, будет использовано для модели в игре
	{
		// Это неполный QC, который будет использован, чтобы генерировать комбинированные модели
		"qc_template_path"	"scripts/hammer/spcombinerules/qc_templates/example.qc"
		
		// Максимум моделей в одной комбинированной модели
		"cluster_limit" 8
		
		// Не комбинировать модели, которые находятся на большем, чем это, расстоянии
		"distance_limit" 12
		// Это модели, которые можно скомюинировать
		"peers"
		{
			"models/examples/example_A.mdl" ""
			"models/examples/example_B.mdl" ""
			"models/examples/example_C.mdl" ""
		}
	}Если Вы не хотите утруждаться созданием правил, вы можете запустить  -staticpropcombine_autocombine. Однако, это может вызвать проблемы, если у Вас нет исходных файлов для моделей, которые попробует скомбинировать VBSP.
 Баг:Пути в списке "peers" должны быть написаны с передними слэшами (/)!  [нужно проверить в ?]
Баг:Пути в списке "peers" должны быть написаны с передними слэшами (/)!  [нужно проверить в ?]Неполные QC
Неполные QC - это файлы QC или QCI, которые содержат основу для QC, сгенерированных Static Prop Combine. В целом, они должны включать в себя только:
- $cdmaterials
- $surfaceprop
- $staticprop
- Любые скины, использующиеся моделями.
 Совет:
Совет:
- Static Prop Combine не объединяет модели, использующие разные скины.
- Так как объединенные модели нельзя указать в lights.rad, можно указать параметр $casttextureshadows, чтобы позволить этой модели отбрасывать текстурные тени.
Пример неполного QC
$cdmaterials models\props\de_venice\venice_window_3
$staticprop
$surfaceprop "Plaster"
$texturegroup venice_window_3 {
	{ "venice_window_3" }
	{ "venice_window_3_lit" }
}

























