learnopengl. Урок 1.6 — Текстуры / Habr

Прошу перечислить, кому не сложно, команды для улучшения качества текстур, я конечно понимаю, что чаще всего просят команды для ухудшения качества тек

команды которые влияют на текстуры

read.png 19815

0 Пользователей и 1 Гость просматривают эту тему.

Похожие Темы

Похожие Темы

Форум Natus Vincere

Загрузка и создание текстур

Перед тем как начать использовать наши текстуры нам требуется их загрузить в наше приложение. Текстурные изображения могут храниться в безграничном количестве форматов, в каждом из которых своя структура и упорядоченность данных, так как же мы передадим наше изображение в приложение? Одним из решений является использование удобного нам формата, к примеру .PNG и написать собственную систему загрузки изображений в большой массив байт. Хоть написание собственного загрузчика изображений не представляет собой неподъемную работу, все-таки это довольно утомительно, тем более если вы захотите использовать много форматов файлов.

Другим решением является использование готовой библиотеки для загрузки изображений, которая бы поддерживала множество различных популярных форматов и делала много тяжелой работы за нас. К примеру SOIL.

SOIL

SOIL расшифровывается как Simple OpenGL Image Library, поддерживает большинство популярных форматов изображений, легка в использовании и может быть скачана отсюда. Также как и большинство других библиотек вам придется сгенерировать файл .lib самостоятельно. Вы можете использовать один из их проектов, располагающихся в папке /projects (не волнуйтесь, если версия их проектов будет ниже версии вашей VS. Просто сконвертируйте их в новую версию, это должно работать в большинстве случаев) для создания на его основе собственного. Также добавьте содержимое папки src в свою папку include. Также не забудьте добавить SOIL.lib в настройки своего линковщика и добавить #include <SOIL.h> в начале вашего кода.

Для текущей текстурной секции мы будем использовать изображение деревянного контейнера. Для загрузки изображения через SOIL мы используем функцию SOIL_load_image:

int width, height;unsigned char* image = SOIL_load_image(“container.jpg”, &width, &height, 0, SOIL_LOAD_RGB);

Первый аргумент функции — это местоположение файла изображения. Второй и третий аргументы — это указатели на int в которые будут помещены размеры изображения: ширина и высота. Они нам понадобятся для генерации текстуры. Четвертый аргумент — это количество каналов изображения, но мы оставим там просто 0. Последний аргумент сообщает SOIL как ему загружать изображение: нам нужна только RGB информация изображения. Результат будет храниться в большом массиве байт.

Генерация текстуры

Также как и на любой другой объект в OpenGL, на текстуры ссылаются идентификаторы. Давайте создадим один:

GLuint texture;glGenTextures(1, &texture);

Функция glGenTextures принимает в качестве первого аргумента количество текстур для генерации, а в качестве второго аргумента — массив GLuint в котором будут храниться идентификаторы этих текстур (в нашем случае это один GLuint). Также как любой другой объект мы привяжем его для того, чтобы функции, использующие текстуры, знали какую текстуру использовать.

glBindTexture(GL_TEXTURE_2D, texture);

После привязки текстуры мы можем начать генерировать данные текстуры используя предварительно загруженное изображение. Текстуры генерируются с помощью glTexImage2D:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);glGenerateMipmap(GL_TEXTURE_2D);

У этой функции довольно много аргументов, поэтому давайте по порядку:

  • Первый аргумент описывает текстурную цель. Установив значение GL_TEXTURE_2D мы сообщили функции, что наша текстура привязана к этой цели (чтобы другие цели GL_TEXTURE_1D и GL_TEXTURE_3D не будут задействованы).
  • Второй аргумент описывает уровень мипмапа для которого мы хотим сгенерировать текстуру, если вдруг мы хотим самостоятельно сгенерировать мипмапы. Поскольку мы оставим генерацию мипмапов на OpenGL мы передадим 0.
  • Третий аргумент сообщает OpenGL в каком формате мы хотим хранить текстуру. Поскольку наше изображение имеет только RGB значения то и в текстуры мы также будем хранить только RGB значения.
  • Четвертый и пятый аргументы задают ширину и высоту результирующей текстуры. Мы получили эти значения ранее во время загрузки изображения.
  • Шестой аргумент всегда должен быть 0. (Аргумент устарел).
  • Седьмой и восьмой аргументы описывают формат и тип данных исходного изображения. Мы загружали RGB значения и хранили их в байтах (char) так что мы передаем эти значения.
  • Последний аргумент — это сами данные изображения.

После вызова glTexImage2D текущая привязанная текстура будет иметь привязанное к ней изображение. Правда текстура будет иметь только базовое изображение и если мы захотим использовать мипмапы, то нам придется таким же образом задавать изображение просто инкрементируя значение уровня мипмапов. Ну или мы можем просто вызвать glGenerateMipmap после генерации текстуры. Эта функция автоматически сгенерирует все требуемые мипмапы для текущей привязанной текстуры.

После окончания генерации текстуры и мипмапов хорошей практикой является освобождение участка памяти, выделенного под загруженное изображение, и отвязка объекта текстуры.

SOIL_free_image_data(image);glBindTexture(GL_TEXTURE_2D, 0);

Весь процесс генерации текстуры выглядит примерно так:

GLuint texture;glGenTextures(1, &texture);glBindTexture(GL_TEXTURE_2D, texture);// Устанавливаем настройки фильтрации и преобразований (на текущей текстуре)…// Загружаем и генерируем текстуруint width, height;unsigned char* image = SOIL_load_image(“container.jpg”, &width, &height, 0, SOIL_LOAD_RGB); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);glGenerateMipmap(GL_TEXTURE_2D);SOIL_free_image_data(image);glBindTexture(GL_TEXTURE_2D, 0);

Применение текстур

Для последующих глав мы будем использовать четырехугольник отрисованный с помощью *glDrawElements из последней части урока про Hello Triangle. Нам надо сообщить OpenGL как сэмплировать текстуру, поэтому мы обновим вершинные данные, добавив в них текстурные координаты:

GLfloat vertices[] = { // Позиции // Цвета // Текстурные координаты 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // Верхний правый 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // Нижний правый -0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // Нижний левый -0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f // Верхний левый};

После добавления дополнительных атрибутов нам снова придется оповестить OpenGL о нашем новом формате:
Новый формат вершинных данных.

glVertexAttribPointer(2, 2, GL_FLOAT,GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)(6 * sizeof(GLfloat)));glEnableVertexAttribArray(2);

Заметьте, что мы также скорректировали значение шага прошлых двух атрибутов под 8 * sizeof(GLfloat).

Затем нам потребуется изменить вершинный шейдер для того, чтобы он принимал текстурные координаты в качестве атрибута а затем передавал их фрагментному шейдеру:

#version 330 corelayout (location = 0) in vec3 position;layout (location = 1) in vec3 color;layout (location = 2) in vec2 texCoord;out vec3 ourColor;out vec2 TexCoord;void main(){ gl_Position = vec4(position, 1.0f); ourColor = color; TexCoord = texCoord;}

Фрагментный шейдер также должен принимать TexCoord в качестве входной переменной.

Фрагментный шейдер также должен иметь доступ к текстурному объекту, но как мы передадим его во фрагментный шейдер? GLSL имеет встроенный тип данных для текстурных объектов, называемый sampler у которого в качестве окончания тип текстуры, тоесть sampler1D, sampler3D и, в нашем случае, sampler2D. Мы можем добавить текстуру фрагментному шейдеру просто объявив uniform smpler2D к которому мы позже передадим текстуру.

#version 330 corein vec3 ourColor;in vec2 TexCoord;out vec4 color;uniform sampler2D ourTexture;void main(){ color = texture(ourTexture, TexCoord);}

Для сэмплирования цвета текстуры мы используем встроенную в GLSL функцию texture которая в качестве первого аргумента принимает текстурный sampler, а в качестве второго аргумента текстурные координаты. Функция texture затем сэмплирует значение цвета, используя текстурные параметры, которые мы задали ранее. Результатом работы этого фрагментного шейдера будет (фильтрованный) цвет текстуры на (интерполированноый) текстурной координате.

Осталось только привязать текстуру перед вызовом glDrawElements и она автоматически будет передана сэмплеру фрагментного шейдера:

glBindTexture(GL_TEXTURE_2D, texture);glBindVertexArray(VAO);glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);glBindVertexArray(0);

Если вы все сделали верно то получите следующее изображение:

Результат с одной текстурой

Если ваш четырехугольник полностью черный или белый значит вы где-то ошиблись. Проверьте шейдерные логи и сравните ваш код с исходным.

Для получения более цветастого эффекта мы можем смешать результирующий цвет текстуры с вершинным цветом. Для смешивания мы просто умножим цвета во фрагментном шейдере.

Color = texture(ourTexture, TexCoord) * vec4(ourColor, 1.0f);

У вас должно получиться нечто такое?

Результат со смешиванием

Текстурный блок

Возможно вы задаетесь вопросом: “Почему sampler2D переменная является uniform, если мы ей так и не присвоили никакое значение с помощью glUniform?”. С помощью glUniform1i мы можем присвоить значение метоположения текстурному сэмплеру для возможности использования нескольких текстур в одном фрагментном шейдере. Местоположение текстуры чаще называется текстурным блоком. Текстурный блок по умолчанию — 0, который означает текущий активный текстурный блок для того, чтобы нам не требовалось указывать местоположение в прошлой секции.

Основная цель текстурных блоков это обеспечение возможности использования более чем 1 текстуры в нашем шейдере. Передавая текстурные блоки сэмплеру мы можем привязывать несколько текстур за один раз до тех пор, пока мы активируем соотносящиеся текстурные блоки. Также как и glBindTexture мы можем активировать текстуры с помощью glActivateTexture передавая туда текстурный блок, который мы хотим использовать:

glActiveTexture(GL_TEXTURE0); // Активируем текстурный блок перед привязкой текстурыglBindTexture(GL_TEXTURE_2D, texture);

После активации текстурного блока, последующий вызов glBindTexture привяжет эту текстуру к активному текстурному блоку. Блок GL_TEXTURE0 всегда активирован по-умолчанию, так что нам не требовалось активировать текстурные блоки в прошлом примере.

OpenGL поддерживает как минимум 16 текстурных блоков, которые вы можете получить через GL_TEXTURE0GL_TEXTURE15. Они объявлены по-порядку, поэтому вы также можете получить их следующим образом: GL_TEXTURE8 = GL_TEXTURE0 + 8. Это удобно, если вам приходится итерировать через текстурные блоки.

В любом случае нам все еще требуется изменить фрагментный шейдер для принятия другого сэмплера:

#version 330 core…uniform sampler2D ourTexture1;uniform sampler2D ourTexture2;void main(){ color = mix(texture(ourTexture1, TexCoord), texture(ourTexture2, TexCoord), 0.2);}

Финальный результат — это комбинация двух текстур. В GLSL встроена функция mix которая принимает два значения на вход и интерполирует их на основе третьего значения. Если третье значение 0.0 то эта функция вернет первый аргумент, если 1.0 то второй. Значение в 0.2 вернет 80% первого входного цвета и 20% второго входного цвета.

Теперь нам надо загрузить и создать другую текстуру; вы уже знакомы со следующими шагами. Удостоверьтесь, что вы создали еще один объект текстуры, загрузили изображение и сгенерировали финальную текстуру с помощью glTexImage2D. Для второй текстуры мы используем изображение лица во время изучения этих уроков.

Для того, чтобы использовать вторую текстуру (и первую) нам надо будет немного изменить процедуру отрисовки, привязкой обеих текстур к соответствующим текстурным блокам и указанием к какому сэмплеру относится какой текстурный блок:

glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D, texture1);glUniform1i(glGetUniformLocation(ourShader.Program, “ourTexture1”), 0);glActiveTexture(GL_TEXTURE1);glBindTexture(GL_TEXTURE_2D, texture2);glUniform1i(glGetUniformLocation(ourShader.Program, “ourTexture2”), 1);glBindVertexArray(VAO);glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);glBindVertexArray(0);

Заметьте, что использовали glUniform1i для того, чтобы установить позицию текстурного блока в uniform sampler. Устанавливая их через glUniform1i мы будем уверены, что uniform sampler соотносится с правильным текстурным блоком. В результате вы должны будете получить следующий результат:

Результат со смешиванием

Вероятно вы заметили, что текстура перевернута вверх ногами! Это произошло, поскольку OpenGL представляет координату 0.0 по оси Y снизу изображения, но изображения зачастую имеют координату 0.0 сверху по оси Y. Некоторые библиотеки для загрузки изображений, типа Devil имеют настройки для инвертирования Y оси во время загрузки. SOIL такой настройки лишен. У SOIL есть функция SOIL_load_OGL_texture, которая загружает текстуру и генерирует текстуру с флагом SOIL_FLAG_INVERT_Y, который решает нашу проблему. Тем не менее эта функция использует вызовы, недоступные в современной версии OpenGL, поэтому нам придется остановиться на использовании SOIL_load_image и самостоятельной загрузкой текстуры.

Для исправления этой небольшой недоработки у нас есть 2 пути:

  1. Мы можем изменить текстурные координаты в вершинных данных и перевернуть Y ось (вычесть Y координату из 1)
  2. Мы можем изменить вершинный шейдер для переворачивания Y координаты, заменив формулу задачи TexCoord на TexCoord = vec2(texCoord.x, 1.0f — texCoord.y);..

Приведенные решения — это маленькие хаки, которые позволяют перевернуть изображение. Эти способы работают в большинстве случаев, но результат всегда будет зависеть от формата и типа выбираемой текстуры, так что лучшее решение проблемы — решать ее на этапе загрузки изображения, приводя ее в формат, понятный OpenGL.

Как только вы измените вершинные данные или перевернете Y ось в вершинном шейдере вы получите следующий результат:

Перевернутый результат со смешиванием

Если вы увидели счастливый контейнер, то вы все сделали правильно. Вы можете сравнить свой код с исходным, а также вершинный и фрагментный шейдеры.

Упражнения

Для лучшего усвоения материала прежде чем приступать к следующему уроку взгляните на следующие упражнения.

  1. Добейтесь того, чтобы только вершинный шейдер был перевернут, с помощью изменения фрагментного шейдера. Решение
  2. Поэкспериментируйте с другим методам натягивания текстур, изменяя текстурные координаты в пределах от 0.0f до 2.0f вместо 0.0f до 1.0f. Проверьте, сможете ли вы отобразить 4 улыбающихся рожицы на одном контейнере. Решение, Результат
  3. Попробуйте отобразить только центральные пиксели текстуры на четырехугольнике так, чтобы единичные пиксели были видны при изменении текстурных координат. Попробуйте установить режим фильтрации GL_NEAREST для того, чтобы было видно пиксели более четко. Решение.
  4. Используйте uniform переменную в качестве 3 параметра функции mix для изменения коэффициента смешивания двух текстур на лету. Используйте кнопки вверх и вниз для регулирования смешивания. Решение, Фрагментный шейдер

Контроль (управление)

Команда Значение
+forward Движение вперед
+back  Движение назад
+moveleft Шаг влево
+moveright  Шаг вправо
+movedown Двигать игрока вниз
+moveup Двигать игрока вверх
+left  Повернуться налево
+right  Повернуться направо
+jump  Прыжок
+duck  Присесть
+use  Использовать предмет или оружие (пример:”use weapon_hegrenade”)
+attack  Атаковать (стрелять, резать ножом, кидать гранаты)
+attack2 Альтернативная стрельба / дополнительная функция оружия
+reload  Перезарядка
+klook  Включение клавиатуры для обзора
+lookdown Смотреть вниз
+lookup Смотреть вверх
+speed Вынуждает игрока ходить, если включено “always run” или вынуждает игрока бегать, если “always run” – выключено.
+showscores Показ очков игрока и его пинг
+strafe  Используя клавиши поворотов позволяет смещаться в соответствующих направлениях.
bind  Назначает клавишу команде или alias’у
unbind  Снять назначение с клавиши
unbindall  Убрать назначения со всех клавиш
alias Для выполнения нескольких задач при нажатию одной кнопки
slot1-10  Выбирает оружие группы 1-10
cancelselect  Отменить
changeteam Отображает меню смены команды игрока
centerview  Центрует вид изображения игрока
changeclass Отображает меню смены класса игрока
messagemode  Сказать всем игрокам
messagemode2 Сказать игрокам своей команды
radio1-3  Первая-третья группа радиокоманд
toggleconsole Открыть/закрыть консоль
chooseteam  Выбор команды, за которую хотите играть
+showscores Показ статистики
drop  Выбросить текущее оружие 
nightvision  Включить/выключить очки ночного видения
impulse 201 Нарисовать логотип
impulse 100  Включить/выключить фонарик
invprev Переключиться на предыдущее оружие
invnext  Переключиться на следующее оружие
invlast Переключиться на последнее оружие
kill  Умереть
buy  Включить меню покупки
buyammo1 приобрести пули для основного оружия
buyammo2 Приобрести пули для пистолета
buyequip Купить дополнительное снаряжение
+voicerecord  Говорить в чат
+commandmenu  Показать встроенное VGUI меню
showbriefing  Показать брифинг к карте
snapshot  Сделать скриншот
screenshot Берет текущее изображение на экране и сохраняет в каталоге игры
cl_anglespeedkey Устанавливает скорость изменения угла вида, при повороте
cl_backspeed  Устанавливает скорость движения игрока назад (число не может быть больше, чем разрешено на конкретном сервере)
cl_forwardspeed  Установка скорости движения игрока вперед
cl_sidespeed  Установка скорости движения игрока в бок
cl_movespeedkey  Установка скорости передвижения
cl_upspeed Скорость подъема игрока (например, на лестнице)
cl_yawspeed  Устанавливает скорость поворота (не может быть больше, чем на сервере)
messagemode  Показывает сообщение всем другим игрокам на сервере
messagemode2 Показывает сообщение только игрокам своей команды
say  Послать сообщение всем другим игрокам на сервере
say_team Послать только игрокам своей команды
setinfo ah  В режиме подсказки, игроку в ходе игры выдаются сообщения (например, что нужно делать, чтобы спасти заложника)
setinfo dm  Выводить краткую информацию по карте, при ее загрузке
setinfo ghosts  Показывать призраков в режиме обсервера
setinfo _pw  Ввод пароля для доступа к админке под AMX
setinfo vgui_menus  Визуальное меню при скупке
setinfo _vgui_menu  То же, что и вышенаписанное
con_color  Цвет текста (консоли)
sv_aim  Вкл / выкл автонаведение оптических прицелов (1/0)
cl_timeout  Время, через которое неактивный клиет будет кикнут с сервера
cl_dynamiccrosshair Вкл / выкл динамический прицел (при беге и любых передвижениях) (1/0)
cl_lw Все эффекты и действия, связанные с оружием, просчитываются на стороне клиента (2)
cl_lc  Компенсация лагов на стороне сервера (1)
rate  Устанавливает скорость потока клиента
cl_cmdrate  Количество пакетов в секунду от клиента к серверу
cl_updaterate  Количество пакетов в секунду которое вы получите от сервера
ex_interp  Интерполяция фигуры в секунду времени (lan – 0.01 / inet – 0.1)

Аудио

Команда Значение
hisound Включает режим качества звука: 1=22kHz, 0=11kHz
nosound  Выключает (1) или включает звук (0)
s_2dvolume Максимальная громкость 2d звука (0-1)
s_a3d  Поддержка A3D
s_automax_distance  Устанавливает дистанцию для максимальной громкости
s_automin_distance Устанавливает дистанцию для минимальной громкости
s_buffersize Устанавливает размер буфера в байтах
s_disable_a3d  Выключает a3d
s_distance  Чем больше значение, тем ближе все слышно
s_eax  Поддержка EAX
s_enable_a3d Включает a3d
s_geometry  Геометрическое разбиение (только для a3d 2.0)
s_max_distance Максимальная дистанция, когда игрок еще слышит звуки
s_min_distance  Минимальная дистанция, когда игрок начинается слышать звуки
s_numpolys  Количество полигонов, обрабатываемых в a3d
s_occfactor  Проницаемость материала, то есть насколько материал заглушает звук (0-1)
s_refdelay Минимальная дистанция между источником и ближайшим отражением
s_verbwet  Контролирует “сухость” звуков.
speak Если в параметре указаны некоторые ключевые слова, то вы их услышите, например speak hello
stopsound  Прекращает проигрывать текущий звук
ambient_fade  Устанавливает дистанцию, на которой будет слышен звук, вшитый в карту (например музыка на cs_arabstreets)
ambient_level  Устанавливает громкость для встроенных звуков (смотрите выше)
_snd_mixahead  Устанавливает величину опережения звука,устраняет эффект “опаздывания” у звуковых карт (0.1)
displaysoundlist Включить / выключить показ всех загруженных звуков
play Проиграть .wav файл
volume  Устанавливает громкость звука в игре
bgmbuffer  Устанавливает размер буфера для аудио диска (4096)
bgmvolume Включить / выключить звук

Речь (микрофон)

Команда Значение
voice_loopback  Подбор оптимальной громкости и расстояния от рта до микрофона (1)
(Как вы услышите себя в наушниках, также вас услышат другие.)
voice_scale x  Данная команда устанавливает громкость голоса всех игроков, в том числе и вашего
voice_overdrive N  Понижает все звуки (стрельба и т.д.) в N раз, когда кто-то говорит. Оптимальное значение от 2 до 4
voice_overdrivefadetime x.xxx  Время снижения звуков (см. предыдущую команду). Оптимально 0.4
voice_maxgain x Сглаживает голоса, тех кто говорит. Пробуйте от 1 до 5. Поэкспериментируйте в онлайне
voice_avggain x  Сглаживание голосовой волны (удаление шума). Рекомендуется 0.5 – 0.1
voice_fadeouttime x.xxx Устанавливает время затухания вашего голоса в секундах. Оптимальное значение около 0.1

Мышь

Команда Значение
+mlook  Допускает поднимать прицел вверх, вниз
m_filter Разрешение на сглаживание мыши
m_forward Устанавливает множитель чувствительности скорости движения вперед
m_pitch  Устанавливает чувствительность мыши при движении вверх и вниз, отрицательное значение даст invert
m_side  Задает скорость стрейфа мыши
m_yaw  Задает коэффициент чувствительности мыши при движении влево, вправо
sensitivity Чувствительность мыши
zoom_sensitivity_ratio  Чувствительность мыши при зуме
lookspring  Включает автоматическое центрирование вида при активированном “mlook”
lookstrafe Включает режим смещения при движении при активированном “mlook”

Интерфейс

Команда Значение
adjust_crosshair  Меняет цвета прицела
bottomcolor  Задает “нижний” цвет у модели игрока
drawradar Включить радар
hideradar  Выключить радар
force_centerview  Фиксирует взгляд игрока прямо вперед
graphheight Задает ширину графика r_netgraph
graphhigh Задает максимальные лимит, который показывает график
hud_centerid  Отображает имя игрока в центре (1) или внизу (0)
hud_deathnotice_time Задает время, в течение которого будут показываться фраги вверху экрана в секундах
hud_fastswitch  Позволяет быстро менять оружие
hud_saytext_time  Устанавливает время отображения чата на экране
net_graph  Отображает FPS и параметры соединения
net_graphpos  Задает позицию информационного окна на экране
net_graphwidth  Ширина окна.
r_decals  Лимит деталей, которые видны на карте
r_drawviewmodel  Позволяет скрыть модель оружия
r_netgraph  Отображает информацию о соединении (1) или информацию о посылке сетевых пакетов (2)
r_shadows  Тень игроков
scr_centertime  Задает время, в течение которого сообщения сервера остаются на экране
scr_conspeed  Устанавливает скорость открытия консоли
scr_printspeed  Скорость печати сообщений на экране
sizedown Уменьшает разрешение, повышая при этом FPS
sizeup  Увеличивает разрешение, понижая при этом FPS
topcolor  Задает “верхний” цвет для модельки игрока
viewframe Автивирует wireframe режим (для OpenGL)
cl_observercrosshair  Включает прицел в режиме обсервера (свободный обзор и режиме камеры)
cl_showfps Отображает FPS в левом верхнем углу
cl_shownet  Отображает параметры сетевых пакетов
cl_slist Задает количество серверов, которые видно при использовании команды slist
cl_solid_players Показывает модели в режиме “солид”.
cl_waterdist  Расстояние в воде
cl_adaptive Отображает время, процент потерянных пакетов, средний лаг, скорость передачи/приема потока и количество кадров в секунду (FPS)
cl_himodels  Активирует режим высокого качества моделей игроков
cl_messages Отображает сообщения сервера
cl_bob  Задает, насколько сильно колеблется изображение у игрока при беге
cl_bobcycle Задает частоту колеблется изображение у игрока при беге
cl_pitchdown Задает максимальный угол просмотра вниз (89)
cl_pitchspeed Скорость изменения угла просмотра (225)
cl_pitchup Задает максимальный угол просмотра вверх (89)
cl_righthand Смена руки
clear Очистить сообщения в консоли
clearlist  Очистить список серверов
clientport  Задать порт на клиенте для соединения с сервером
force_centerview Фиксирует взгляд игрока строго вперед
vid_config_x  Задает разрешение экрана по горизонтали 
vid_config_y  Задает разрешение экрана по вертикали
vid_d3d  Активирует поддержку Direct3D
vid_describemode Отображение установки видеорежима
vid_mode  Установка видеорежим
vid_stretch_by_2  Активировать растяжку видео (для чресстрочных разверток)
viewsize Задает видимый размер
cl_hidefrags  Не показывать фраги/смерти игроков (кроме вас) в таблице счета
cl_weather 1 Включить/выключить погоду

Видео

Команда Значение
gl_playermip  Эффективность визуальной видимости игрока
gl_picmip  То же самое, что и выше
gl_max_size  Лимит максимального размера текстуры (меньше значение – размытые текстуры)
gl_texturemode Задает режим визуализации [type]: gl_nearest_mipmap_nearest, gl_linear_mipmap_nearest (эти параметры касаются билинейной фильтрации) и gl_nearest_mipmap_linear, gl_linear_mipmap_linear (эти параметры касаются трилинейной фильтрации)
gl_polyoffset  Смещение декалей относительно поверхности
gl_cull Активирует режим визуализации только видимых объектов
gl_dither  Режим сглаживания
gamma Установка гаммы
lightgamma Установка гаммы освещения
brightness Установка яркости
gl_ztrick  Для карт 3DFx необходимо поставить 1 для ускорения
gl_zmax Задает максимальный размер Z-буффера
gl_alphamin Видимость прозрачных текстур
gl_monolights При значении 1 карта становится светлой
violence_ablood Отображение крови/мяса
violence_agibs Отображение крови/мяса
violence_hblood Отображение крови/мяса
violence_hgibs Отображение крови/мяса
r_drawentities При значении 0 не видно объектов, в том числе и игроков
r_dynamic Включает / выключает фонарик и динамическое освещение 
r_shadows  Тени предметов и игроков
r_mmx  Включает поддержку инструкций ММХ
r_decals Количество декалей в игре
fastsprites Качество дыма
max_shells Количество одновременно видимых гильз
max_smokepuffs Количество одновременно видимых дымков от пуль, при попадание в стены
_vid_default_mode Задает видеорежим по умолчанию (разрешение экрана)
_vid_default_mode_win Задает оконный видеорежим по умолчанию (разрешение экрана)
_windowed_mouse  Использование мыши в оконном режиме
gl_overbright  Режим максимальной яркости
gl_round_down Задает величину округления (чем больше число, тем быстрее визуализация, но хуже качество)
gl_smoothmodels Режим сглаживания моделей
gl_spriteblend  Задает уровень детализации моделей игроков

Подключение

Команда Значение
allowupload  Закачка/загрузка на сервер деталей и моделей (Вкл / выкл)
cmdlist  Отображает список команд
cvarlist Отображает список переменных
connect  Подключается к сереру по айпи 
disconnect Выйти с сервера
echo  Выводит текст в консоли
enableconsole  Включение / отключение консоли
exec  Запускает конфиг
fullinfo  Отображает информацию о пользователе
fullserverinfo Отображает информацию о сервере
getcertificate Получает сертификат от WON
getsv  Отображает IP каждого сервака и общее число серверов
hideconsole  Закрыть консоль
motd  Совет Дня и motd.txt файла на сервере
pingsv Проверка пинга да сервера
quit  Быстрый выход из игры
reconnect Перезайти на текущий сервер
retry  Повторно зайти на данный сервер
serverinfo Отображает информацию о сервере
toggleconsole Открыть/закрыть консоль
wait  Задает паузу в скрипте, бинде и т.д. (приблизительно 1/20 – 1/25 секунды)

Демо

Команда Значение
appenddemo Записать демо и сохранить его под определенным именем
listdemo  Отображение информации о демо
playvol  Устанавливает громкость звука при проигрывании демки от 0 до 10
record Начинает запись демки и сохраняет ее под определенным названием
setdemoinfo info  Добавляет к демо информацию, например, название
startdemos demo1, demo2 …  Проигрывает демки в заданном порядке, когда заканчивается последняя, начинает проигрывать все демки сначала
demos  Выполняет цикл записанных демок, указанных в startdemos
stop  Останавливает запись демо
stopdemo  Останавливает воспроизведение демо
swapdemo  Меняет позиции сегментов в демке
timedemo  Воспроизводит демку с максимальным значением fps и показывает средний fps
playdemo  Воспроизвести демку на обычной скорости
viewdemo  Воспроизвести демку с возможностью выбора скорости
startmovie name fps  Делает заданное количество снимков в секунду (bmp формат)
endmovie  Прекратить делать снимки
dem_speed Скорость воспроизведения демки (1)
dem_jump  Промотка демки, время в секундах, вперед, при отрицательном значении – назад
dem_pause  Приостановка воспроизмедения демки

Прочее

Команда Значение
cmd name  Изменить имя серверу
crosshair  Установить / убрать прицел
default_fov  Задает область обзора в градусах по умолчанию (меньшая величина угла – меньшая область будет видна)
discard  Выбросить неиспользуемые боеприпасы
disconnect  Выйти с сервера
exit  Закрыть игру и выйти в windows
fullserverinfo  Отображает информацию о сервере
info Отображает информацию об игроке
menuselect  Выбор предмета в соответствующем меню
model Позволяет сменить текущую модель игрока
name  Сменить свой ник
nosound Вкл./выкл. звук
pause  Пауза
quit  Закрыть игру и выйти в windows
reconnect Переподсоединиться к текущему серверу
shortname Показывает короткое имя клиента
sizedown Уменьшает размер экрана и увеличивает fps
sizeup  Увеличивает размер экрана и уменьшает fps
skin Устанавливает скин модели игрока
spectator  Устанавливает скин модели
timerefresh  Отобразить средний fps в окружающей обстановке игрока
user  Отобразить цвет модели, имя, внешний вид для указанного игрока
+ip xxx.xxx.xxx.xxx  Указать айпи адрес
version  Версия игры
developer  Включает режим вывода дополнительных параметров на экран
listmaps  Список доступных карт для смены уровня на сервере
fps_max  Максимальное число FPS, при developer 1 будет больше 100
fps_modem  Максимальное число FPS клиента LANModem

В завершении хочется пожелать вам настроить ваш клиент C S 1.6 с помощью этих консольных команд таким образом, чтобы играть было максимально комфортно и приятно.

Материал опубликован 20.06.2019. Любое копирование без нашего ведома строго запрещено!

Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...